######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
#######################################MM@############################################################################################################
#####################################@xznW############################################################################################################
##################################W#@zzzM#############################################################################################################
#####################@##Mx#@@n@#@x@@z##x##############################################################################################################
####################@zWz+nz+WM#@zM@z##n###############################################################################################################
#####################+M@z***#@@#zWz+#z@###############################################################################################################
###################x#@###@n*+nW+Mz++#W################################################################################################################
##################@*#n*#@##n#znnn+++M#################################################################################################################
##################xi**ix###W#M*x+*+n@@################################################################################################################
#################@*i*iiM####zW****#Wn#################################################################################################################
#################xii*#iz####xx****xzn##@##############################################################################################################
##################iii#zizMxz**iii+#*x#WW##############################################################################################################
################Wiiiii*n#z*iiiiii***W@z@WW############################################################################################################
################niiiiii+nM*iiiiiii*+WnzWzn############################################################################################################
##########M######i;iiiiiiiiiiiiiiii*+**zWx#M##########################################################################################################
#########Mz#####+;ii;iiiiiiiiiiiiiii****#WMM##########################################################################################################
########@*x#####i;;;;iiiiiiiiiiiiiiii**+++W@##########################################################################################################
########niW#####i;;;;;;;iiiiiiiiiiiiizWWM#+@Wz@#######################################################################################################
#######@*i######i;;;;;;;;;iiiiiiiiiii*znz#*zMz########################################################################################################
#######x;+######i;;;;;;;;i+iiiiiiiiii#MW#M+*#W########################################################################################################
#####@xi;n######+;;;;;;i#xi;;iiiiiiiiiiM@#W++n########################################################################################################
####ni;;;W######n;;;;;;W@*;;;iiiiiiiiiz####M+z@#######################################################################################################
##@+;*zMW#######M;;;;;;M#;;;;;;iiii++ix#####n+W#######################################################################################################
#@+*M###########@;;;;;;**;;;;;iiiiizniz#####x#########################################################################################################
#+*@###########@#*;;;;;;i+;;;;;;iii*#+ix@@x#xx########################################################################################################
z#@##############z;;;**;;;;;;;;;iiii*#+i*i##nW########################################################################################################
#################M;;;+x+;;;;;;;;;iiiii#nz*#zM#@#####@#################################################################################################
@#############@##@i;;inn*;;;;;;;;iiiiiii++*z##@####MW#################################################################################################
##############@###+;;;*z*;;;;;;;iiiiiiiiii+@##@###@z@#################################################################################################
#############@@###x;;;;;;;;;;;;;;iiiiiiii*M###W@@@xW##################################################################################################
####x#zM#@@@@#@###@i;;;;;;;;;;;;;;iiiiiiiz@@@@@Wx@####################################################################################################
##@#;;;;z@#@@######Mi;;;;;;;;;;;;iiiiiii#@####@W###W##################################################################################################
#W+;;;;;;+##@#######W+;;;;;;;;;;;iiiiii+@#########@z##################################################################################################
Mi;;;;;;;i@####@######M#i;;;;;;;;iiiii+@########@#nz##################################################################################################
i;;;;;;;;;M##@#@########@xz+ii;iiiii#x@#########nW+z##################################################################################################
i+xMMz*;;;z###@@@W###########@WMMMWWMW####@@@Wn#+#+z##################################################################################################
W######Wx#n###@#@x#W@#########Wxz+**#@###z********+###################################################################################################
##############@#@@+i*n@@xnz#*iiii*+*M##@#iiiii****+###################################################################################################
##############@@#@W*i;i++*;;;;ii***W##x*iiiiii***++###################################################################################################
###############@@#@Mii;;i*+*iii*i+W#@#iiiiiiii***++z##################################################################################################
################@@##ni*i;;i**#+#n@#x*iiiiiiii***+++z##################################################################################################
#################@@##xii*;;;*+#@##WMxz#+iiiii***+++x##################################################################################################
#################@@@#@W#in*;*zxnn*iiiiiiiiiii****++W##################################################################################################
##################@#@@@@x*MMzi;*iiiiiiiiiiiii***++n###################################################################################################
########################@W#W@@ziiiiiiiiiiiii***++z@###################################################################################################