***********************************************************************************************************************************************++#++#+
*;i*******************************************************************+++++++++*************************************************************+***++*++*
***********************************************************************+++**++************************************************************************
+MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMxnxnnxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM+
+#######################################################################@MMxMW#######################################################################+
+################################@###################################################################################################################+
+####################################################################################################################################################+
+###############################################@@###################################################################################################+
+####################@@@xnxx@########################################################################################################################+
+######################Wznzn###########@##########@@@@@@@############################################################################################+
+#####################@nzzzn#########################################################################################################################+
+#####################xzzzzM#####################################################################@@@@##########################@#####################+
+####################M####zx@########################MzzW###################################@#####@nM################################################+
+####################xz##zx@######################Wxz#+##x########################################n#*W###############################################+
+####################@zzzM@########@WW@W@W@@@@W@WW**+++++#M######################################x#+################@################################+
+####@M@WWW@######WWMMznnMM@#MMWW@Mx++##nznnnn+zz*iiii*++zz#zxM#xnnxW############################z++MM@##############################################+
+#####@W@@@###@@###@@W@#@@@#@@W@#@@x##n##+z#nn+zz*iiii*+zzz@@@@@@@@@@@@@@@@@@@@@@@@@@############+#M#################################################+
+######MWMMM@#W@###@@MxWWWW#MMWM#W@x#*n#n#z*##*#n#+**;i#z+zWWMM##@@@Mx@@@@@@@@@@@@@@@@@@@@@@@@@@Wx@@@@@@@@@@@@@@@@@@W@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+
+######MWMWWWW#WWW###@MWMW#WWMM@###n*i+#n#n*nzi+#zn#z+**+i+zn#nM#####+@##############################################################################+
+######@@@@@@@#@@#####W@@@#@@@@@###M#*+ii;+;*ii*###+#i*+*ii+zzzz@###z#x@@#W@@@W@#####################@###############################################+
+######@MMMMWW#WW####@WWMWMW@@MM###M++++z++*+##+i**+z*i;iii#zzzzM#@@@n@@@@W@W@@@#####################################################################+
+######WWMMW@@@######@WWM@WWW######Wnnnnn++zz####+**++ii**+##zzxnz++x################################################################################+
+######@@@@@@@####@###@@@@##@@@####Wnnnn#***#****znz#+#z+++MMM#n*++*zn@##############################################################################+
+######@MMWWWWMW@@@##@@WMM@#WM@####Wnnnnz+**i****znnnnz#++##W*ii*i***#+zxxW@@@#######################################################################+
+######MWWMWW@WWW####@WWMWWWWM@#WW#Wnnznnn+**+#*+znnnnnnnnn##ii*++ii+++*z#z@M########################################################################+
+######@@@@@###@@####@@@@@#@@@@#@@@xnnnnnnziii*+#nnnnnnnnnn#n+#+##*++##+z+zz#zzx@@###################################################################+
+######WMWWWWW#@W@#@@MWWWW#@@WW#@W@MMMMMMMz***+#MMMMMMMMMMM#@xz++###+##+######+z#####################################################################+
+#########################################@+++zW#####@#####@zxWxzzznxWWz##z#+##nW##################@########@########################################+
+#######################@#################@#+zW############z**+#M#@####Wzzzz##+zn####################################################################+
+##########################################W@@#############xi++###nMxxxWMnzz+#z##xW@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@@@@@@@@@@@@@@@@@@@@@@@@W@@+
+#####@@@@@@##############################################@##++*+#+n#####@xzzzzznx@##################################################################+
+###########################################################x++*#+#########WMnzznW###################################################################+
+#######@@@@#########@####################################xn++*+############*nxzM####################################################################+
+######@#@@####@#@@@###@@#@@#@###@@@#@###################M++**++#z#########xnxMn#xMMWWMW#################################################x+z##@###@##+
+#####################################################x@#z**iii++zW@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@@@@@@@@@@@W@@@@@@@@@@@@@@@@@@@@@@@@@@@+*#WMWMWWWMW+
+####################@##############################Wn**+#*****++*+zWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWWWWWWWWWWMWWWWWWWWWWWWWMxWMWMMMMMMM+
+##################@@@@@############################@+i**x*#*+i+#+*z@@#W@@@@@###################################################################@####+
+##################################################@x*iii+#z+**ii+xMWW@WWWW@@##############@####@###@W################################@##############+
+###########@#######@##@##@######@#W########@#####Mznii;;i+MMxi###@###############################W#z*x##############################################+
+######@@@##@@@@@@#@##@@##@@##@@@@@@@@@@@#@#######xzz*i;**+n#@#x#n@###########################@#####M#nMW#MWWWWWW####################################+
+#####################@########@@M@@@############@zzz#;i*##zM#xzx@######@MMMM@#@xM@###########@#x@W@#@##@#@@@@#######################################+
+#######@##@#@@@@##@@############WWx@#############zzz+;iii++M##########MnnnnnnxMxMx@#############Wx@#################################################+
+#################@@@@@@#@@#@@@@@@@W@@@@@#@@@@#@@W#znz#+++*+M@+#######x+#nnnnnn#W#MW#########@##@WW@@################################################+
+##########################W@@@@@W@@@@@##########M##+#+z#zn+MMiiW####W#**znnnnn#x#x#######W@@@@W@@@@#################################################+
+################@@@#@##@##@@WW@WWW@@@@##@@@@##@#Mz+z#i+#@n+n@znWW@@Mxn#zznznnnnzM@########@WM@WWW@##################################################+
+################@@@@@@@@#@@WWWWWWW@@@@#@@#@@@@@@Mznzz##x@xzxWW@MMMWMxznnnn*zznnnWW#######WWMWWW@W@##################################################+
+#########################@WWMW@M@@###############Wzz###zM@W@######@MWnnnnnznnnnM@@#######@MM@@M@@############@######################################+
+################@@@#@##@#@@@@@@@@@@##@#####@######@nzz#n@#########z:;nnnnnnnnnn###########@@@################################################@######+
+################@@@@@@@@##@@@W@@#@@@@@#@@@@@@#@@@##Wnnnx##########z.,Wxnnznzzx#####################@################################################+
+##################################################################M+x##@x#nn@#######################################################################+
+################@@@#@##@##@###@###@##@####@####@##@############@########WM@xW############@##############################@###########################+
+################@@@@@@@@##@@#@@@#@@@@@##@@@@@#@@#@@@####################MW#WM#######################################################################+
+########################################################################@xMx########################################################################+
+################@#@#@##@######@###@##@####@##@############################@#################x#@#####################################################+
+################@@@@@@@@##@@#@@@#@@@@@#@#@@@@@@@@#@@@@@##@##################@###############+*####@#################################################+
+############################################################################################xznMW#MWMMWW############################################+
+################@###@##@#############@###@####@@##@##################################################################################@##############+
+################@@@@@@@@##@@@@@@#@@@@@##@@@@@@@@@@@@@@@@##@#########################################################################################+
+#####################################################@#########@####################################################################################+
+################@###@##@#############@##@#@##@@######@@#############################################################################################+
+################@@@@@@@@##@@#@@@#@@@@@#@@#@@@@@@##@@##############################################################@#################################+
+######@############################################@########@#######################################################################################+
+################@###@##@#############@##@#####@#####@#############################################################################################@W+
+################@@@@@@MW@#@@#@@@#@@@@@#@@@@@@@@@#@@@@@@##@#@##############################xn#######################################################@+
+##########@##########M+*W################################################################@**x#####################################################WW+
+################@#@#@##nMMW@xWxWMW###@########@@####@#####################################z+nWW#xWMWWW############################################@M+
+################@@W@@@@@@@@@@@@@#@@@@@#@##@@@#@@@@@@@##@@########@#########################@############################################@##########@+
+#####################################################Wn@#####@#######################################################################@##############+
+################@###@################@##@######@####@zin################@###########################################################################+
+################@@@@@@@@##@@#@@@#@@@@@#@@@@@@@@@@#@@#MzxWM#xWMWMW###################################################################################+
+######################################################@####@########################################################################################+
+################@###@################@#################@#####WMMMMMMMMMMxxxMMWMMMMMMMMM#############################################################+
+################@@@@@@@@##@@#@@@#@@@@@#@@@@@@@@@@@@@@##@@@@##M@@@@@@@@@@@@@@@@@@@@@@@@M#############################################################+
+##############################################@##############M@#@@@@@##@@#@@@@@@@@@###M#############################################################+
+###############@#@############@######@##################@####M@@@@@@@@@@@@@@@@@@@@@@@@M#########################x+W#################################+
+################@@@@@@@@@#@@#@@@#@@@@@#@@@@@@@@@@##@@@#######M@@@@@@@WW@W@@@@@@@@@@@@@M#########################ni+@@@W@#@@@########################+
+####################@########################################M@@@@W@@WWWxMW@@@@@@@@@@@M#####@####################MxWW@@WWWWW########################+
+################@####################@####@##################M@@@@@@@@@WMxn@@@@@@@@@W@M#############################################################+
+###########@xW##@@@@@@@@@#@@#@@@#@@@@@#@@#@@@#@@@@@@@@##@@###M@@@@@@W@WWn##WWW@WWWWWW@M####################@########################################+
+###########z+n###############################################M@#@@@@@@@@@@WW@@@@@@@WW@M#############################################################+
+###########z+nWWWMxMMMWW#####################################M@#@@@@@@@@@@@@@W@@@WWWW@M#############################################################+
+############@###@############################################M@@@@@@@W@@@@W@@W@WWWWWW@M#########################WW###############################@##+
+#############################@W##############################M@#@@@@@@WWWWWWWWWWWWW@@@M########################@**W#################################+
+#############################@M##############################M@#@@@@@WWWWWWWWWWWW@@@@@M########################@++zW@#M@W@WW########################+
+##########################@##################################M@#@@@@@@@@@@@@@@@@@@@@@@M#########################@M@@@#@@@@@@###############@########+
+##################################################@##########Mnnnnnnnnnnzznnxxnnnnnnnnn#######################################@#####################+
*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*