######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
##########################x+MMxn+xx###################################################################################################################
##########################WMMWMMMMW###################################################################################################################
#########@@#######W#######W##W##@###############@##@##################################################################################################
#########W@#x@#x##x#@M#@##M##x##W#W##x##x#@W#M@#n##W##################################################################################################
################################################@#####################################################################################################
###############@###@#####@#@########@####@@##W@W######################################################################################################
###############zW#@#M@#MWx#WM@#xxzWWnnW@znn@W#xW######################################################################################################
##############xz##n#M@@n@n#x@x#n#n#MMMMW#nx@x#xW######################################################################################################
###############n###n##M##M#xz##xxn##@n##@x@#@xW#######################################################################################################
###############W##@@#######@########@####@###@@#######################################################################################################
#########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################################################################
###########################@#####@@###################################################################################################################
##########################zzx###z*+W##################################################################################################################
############################x###n#####################################################################################################################
##########################xnW###xnxW##################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
##############################################################################@#########@M############################################################
##############################################################################n##n######MM##xW########################################################
##############################################################################z#+n######xxnzz#########################################################
###############################################################################+i@######nznx@#########################################################
#############################################################################@zi;######WMWMznMnM######################################################
#############################################################################Mx*iz#####n@@Wxxnn#######################################################
#############################################################################xn*;z#####n@WMnzMM@######################################################
############################################################################@nz*;n####WxWWxzz#n@######################################################
############################################################################MMz*;#####z@WMxnn@########################################################
############################################################################xW#ii####@nWWxn#M#########################################################
############################################################################xM+i*####nMMxn#@##########################################################
###########################################################################WMM+i+####zxzzzx###########################################################
###########################################################################zWx*i+###Mn##z#@###########################################################
###########################################################################n#n*;+###z#*#zz############################################################
###########################################################################xW*i;###x#i*+zn############################################################
##########################################################################@x#M:;####;;i+zx############################################################
##########################################################################@M#@z:+#M;:;i+zM############################################################
##########################################################################WM#Wn++@z,::;*#@############################################################
##########################################################################WM#Wz+#M*.:;;*z#############################################################
##########################################################################WM#Mz++#:.:;;+z#############################################################
##########################################################################MM#W#+++`.,;i+x#############################################################
##########################################################################@M#Wz+*+`.,;i*@#############################################################
###########################################################################x@Mz*+;`.,;*###############################################################
###########################################################################x@Mzix.`.,;*M##############################################################
#########################################################################@Mzn#*in``.,i################################################################
######################################################################@MMM@@Mn#*z``.,+M###############################################################
####################################################################xMW@WxWWMx#++ `.:#################################################################
##################################################################@#@@@xWWnxMxz+*``.*z################################################################
###################################################################:MWM@M:`,zz#*;,`.iW################################################################
##################################################################in#@@#**.;n++i;,`:i#################################################################
#################################################################MW##Wz@i;;z**ii:,.:,#################################################################
################################################################M@###@WWWxnn;i;;,,,,:@################################################################
################################################################x@@##@WMxMn;ii;:,,,,;W################################################################
################################################################+M#M##@Mnzx*;::::i:,*x################################################################
###############################################################Wxn####@Mn#zn::,::#;:*#################################################################
###############################################################M@@W###@Mz#zxi::;:++:**@###############################################################
###############################################################@W#n###Wn#+zxx:;i:*#**+x###############################################################
################################################################xW;@#@M#+#nxM+;i#zz#i#################################################################
#################################################################xi*zn+++zxMWziiWxz#++zW##############################################################
##################################################################Mii*+#znxMWM;#@Wn#+++z##############################################################
###################################################################@z*#znnMM##zW@nxz++*+W#############################################################
#####################################################################zznxxx#zxz#WxMn#+##z#############################################################
#####################################################################n+z#*xxxM@#xWMxz##z#@############################################################
#####################################################################+Mz*zW@W@##@WMxz##nnz############################################################
####################################################################WnWMz@#####@@@Mxz##zx#############################################################
####################################################################MM@M@########@Mnz++zxzW###########################################################
####################################################################n######@####@WM+#++#xnx###########################################################
###################################################################@z######W####@Wx*#++#nnx###########################################################
###################################################################xW######W@###@Mni#++#n#z###########################################################
###################################################################n######@z@###@M##+++#n#############################################################
###################################################################x#W###@M#####Wx*#*++#n:+###########################################################
###################################################################x#x##@WxW###@M#+#*+#zxii###########################################################
###################################################################xWW##@xx###@Wx+z+*+#nz#;@##########################################################
###################################################################nM##@Mnn##@Mx#z#+*+zn++:M##########################################################
###################################################################xWM#@Mzn@@Wxn+z+++#zzz,;###########################################################
###################################################################xMM@Wx+WWWMxn#+++#znzn,;+##########################################################
####################################################################zzWWxxMxxxnz#+++#nxn*:;i##########################################################
####################################################################nzxMxx+nnnz#+++#zxx*i:;:@#########################################################
####################################################################@#nnnn#z###+++#znn+:::;;n#########################################################
#####################################################################nzzz#*+#++*+#znnx::::;;*#########################################################
#####################################################################z+###;*+*++#znxn#;::,,:;@########################################################
#####################################################################x;*++i****##n#Wi*;,.,:;;x########################################################
######################################################################n*******+#+x*x*;,.:::;i+########################################################
#######################################################################x*****+###M*+i:.;;::;i;W#######################################################
########################################################################i**i+zz#zn#*;.;i;:::;;+#######################################################
########################################################################*++iznx+Mn+;:,*ii;:;;;;W######################################################
#######################################################################@z*zi+xnnx#i;:i+*i;:::;;+######################################################
#######################################################################MWxnn*zzMz*::,#+*i::::;;:M#####################################################
#######################################################################n@MixM;Mn+;:;#z+*i::,:::;*#####################################################
#######################################################################x@n*i#zn#i;:*nz#+i::,,,:;:M####################################################
######################################################################MWW+iiWx*i;:i;ii**i;:,,,::;*####################################################
######################################################################n@M;iW@M:;;z#*ii;:,,,,,,::;;x###################################################
#####################################################################@n@niW@Wni;xxz+*;;;;::...::;i*###################################################
#####################################################################MWWzM#Wx#+MMxn#*;;;;::,,:++*;;x##################################################
#####################################################################MWW#@@x##@WWxn#+i*;;::,,:+@xz+*@#################################################
#####################################################################@nM+#W#*M@WWxn#*i*i;::,,,#@Mz++z#################################################
######################################################################zx+#M++@@@Wxn#*#*i;::,,;M@Mn#++@################################################
######################################################################W*i@M#+@@@Wxn#*#*i;::::M#@xz#*+#################################################
#######################################################################x:MMz+@@WWxz*nz+i;::;W@@Wxz+*++@###############################################
########################################################################xnMz+@@WWMz+nz+i;:i@@@@Mn#+*+zn###############################################
########################################################################M#Mn#M@WWM*xnz+i;i@@@WMnz++*+zz###############################################
########################################################################z#Mn#WWWWzxxnz+i;@#@@Mnz#+++#zn@##############################################
########################################################################z*x++WWWM#Mxn#+in##@Wxz+++*+#nnM##############################################
#######################################################################@z+i,iWWMxnMxn#+:W##@Mz++***+#n#n##############################################
#######################################################################Wn#:,;WMM+xMxz+*;@##@M#+***++;:,###############################################
#######################################################################Wn#;::MM+nMxn#+i;###@x#+**+#::,,+###Mnn########################################
#######################################################################@#zi::+x#Mxxz#*i;##@Wn#+*++*::,,i#WnxM#########################################
########################################################################zn*:.*x+xnnz+*i:@#@Mz++*++i:,,,;znxMMMMxx@####################################
########################################################################Mn#:i*##nnz#+i;:@#@Mz+++++::,.,:zzzMW@@Mxx####################################
##########################################################################n*z#i#z##+*i;:M@Wxz+**#i,,,.,:+zM@@zzM######################################
#########################################################################W*xxz+i#++*i;::zWMx#+*+#*,,,.,:*+nW@@z@######################################
##########################################################################n@Mn#*;+*ii;::iWxnz+*+#i,,..,.,:*zW#Wn@#####################################
##########################################################################@x@xz+*;ii;;:::Mxnz***+i,,.,,.,:*zMW*nW#####################################
###########################################################################xWWn#**:::::::*xnz+i*+;,..,,,,:*zM@Mn######################################
############################################################################n@x#+**,::::;:#xnzi**i,.,,.,,:i+#x@Mx#####################################
#####################################################################@Mxnxxnx@Mz*+**:::;;;:xMx#i*+.,,:;,:ii+z+#zzx####################################
###################################################################@znW@@####@Mz**+++i,;;;;#WMzi*+,,:;@Mi#i#iz*@WM####################################
##################################################################W+WnMW@WWMxxn#+*;*+#+::;iW@@M#;#;,:x##@zzz##########################################
#################################################################@+n*#nnnnnz#++*#z##+***:+@#W@Mn##i,######xzn#########################################
#################################################################M++*+*#nznnnxM@#####@WW#MM@nMnz+z:z########@#########################################
#######################################################################################W+*xn*nz+#+z###################################################
#######################################################################################Wi;+#iz+i#n####################################################
########################################################################################@Mz#nnxW######################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################