######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
##############################################################xxxMxnxnnMMMMMMxnxnxMxxxxxxMMMMMxxx#####################################################
##############################################+##############nxMMMMMxMMMWWWWMMMxMMMMMMMMMWWWWWMMxz####################################################
#############################################++++++++##++++####+#@zi;i*x####W#i;i+Wx++++#@###@#++nn###################################################
############################################++++++++##++++++++*:;*;;;;;;###x;;;;;;i+;ii;;M###M:;*xx###################################################
###########################################+++++++++#++++++##+*;;;i#n+;;;nW;;;*zz*;;;in:;#####;;xxx###################################################
###########################################++++++++#+++++++##+*;;iW###x;;i+;;#####z;;iW;;i@#@;;i@xx###################################################
###########################################+++++++#++++++++##+*;;x######;;;;i@####@i;i@#;;x#n;;n#xx###################################################
###########################################++++++#+++++++++##+*;;W#####x;;;;+######+;i@W;;+@*;;@#xx###################################################
###########################################+++++##+++++++++##+*;;W#####x;;;;+######+;i@#*;;M;;###xx###################################################
#############################################++###+++++++++##+*;;x#####+;;;;i@####@i;i@#x;;i;;W##xx###################################################
##################################################+++++++++##+*;;iM###n;;*#;;+@##@+;;i@#@i;;;+###xx###################################################
##############################################++###++++++++##+*;;;;+#*;;;xW;;;i##i;;;i@##z;;;x###xx###################################################
#############################################+++++##+++++++##+*;;*;;;;;;n##Mi;;;;;i+;i@##M;;i####xx###################################################
############################################+++++++##++++++##+*;;Mn*i*#W####@z*i*n@xzz@##z;;n####xx###################################################
###########################################++++++++###+++++##+*;;M######################@i;i@####xx###################################################
############################################++++++++##++++++++*;;W######################n::z#####xx###################################################
#############################################+++++++###+++++#+*:;M######################WMM@#####xx###################################################
##############################################*###i######**##zzzzMMWWWWWWWWWWWWWWWWWWWWWMMMWWWWWWnM###################################################
##############################################################Mnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnx#####################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################