######################################################################################################################################################
##############################################################################################Wxnx@###################################################
############################################################################################Wnz###z@##################################################
###########################################################################################Wnz###z+#@#################################################
##########################################################################################@n##zzzz+*z@##@@############################################
##########################################################################################W#+#nMz*+++n#M#+z@##########################################
##########################################################################################@zzn@#M#++++z####x##########################################
############################WxM@#########################################################@MxMW@##Wz#+*#+*+zxM@########################################
###########################@xnnM########################################################Wz##+++#nnz+*++++#nz##nW######################################
####################@@#####MzzxM#######################################################Mz###++++***i*+**+n#**+#zM#####################################
###################WnzM####nnzxM######################################################x####z+***iii*++**##*i*#zzxW####################################
##################@zznnx@#Mznxx@#####################################################Mz#zznz+++***i*+***n#**#zzznxW###################################
##################xzznnzzz+#zzx#####################################################@#+#x@#@Wxz#**+#+**#zz#+z#+znzzW##################################
#################@nznxnz+**+++M#####################################################@#zx@######M#+#z#*#n###zz**+nz#n@#################################
#################Mzzxnnz+*+**+nW@WMW##################################################@#########Wzz#znn++++z#i*####zx#################################
################@n#zn+###+++**#nnxnnM############################################################x#*****i**++i*z###znM################################
################@n#xz##zz###+*+nnxznM############################################################M+***iiii*#**+z##znz#W###############################
################Wzzznznznnzzz++zxz#nM############################################################M+***iiiii+**zz++zn++zW##############################
################x+#zz#zznnnnz###n##z@############################################################x+**iiiii++**nnz#zz*+#zW#############################
################n+#xzzzzzznnnz#zz##x############################################################@z+**iiii*+*+#zzzzn++**+nW############################
###############@z#zxzznzzznnzznn#+z@############################################################x#+**ii**+#+#n#zzz#+**##zxW###########################
###############Wz#MMnnzzzzzzz##znnW##############################@WMMW@########################M++++****++zxxnz#+++*ii+++zxW##########################
###############MzzMxxnzznzzzz#+#zx@###########################@WMxxxxxxMW####################@x+*i*++++##zzxxz###+#**iii*#nxW#########################
###############xznnnznnznzzzz#++#n@##########################WMxxnnnnnnxxM@#################Wz+*ii*+##znxM@##Mzzn+#+ii;i**#znW########################
###############xzWzzz##zxnz##z++#n@#########################WMxnnzzzzzznxxMW###############M##****+zxW@#######Mxz#+**ii*;i++zx@#######################
###############WWxnz#z+#znz#+##+#zW########################Wxxnnz#####zznxxM@#############M###+++zM@##########@x#+##+**i;*+##zM@######################
##############WMxnnz+#zzzznz#+#++#x#######################Wxnzzzz#+++###znnxM@###########M##+##zM@#############M##+##+ii**##zznM@#####################
#############@MMxnnz++#znnxxz##+#zx######################Wxnz##++++++++##zznxM@###########+++#n@###############@nz#+#+**ii*+++#nx@####################
#############MMn#zzzz+##z#zxWxz#zzn@####################@xnzz#++*+**++++++#znxW##########z++#n@#################Wxnn+#*+**iii*##xM@###################
############MMx##+##zznnnzzM##@xnznW####################Wxnz#++**********+##znM@#########WznW####################xnzz##+*iii*+*#zxx###################
###########MMx###zzznznnnzn@###@nnzn####################Wxnz#++****ii****+##znxW#################################@xxn+##+*i**i+#nznM##################
##########@MMz##znnznnnnxxM#####Mzzz@###################Mxz##++++++**++++++#zzxM##################################Wxz#+##+*i*+#z#+#nM#################
##########WMnz###znnnxnnxx@#####@nzzM###################Mxz##+++++***+++++###zxM###################################Mnnzz#***#+z#**#nxW################
#########@Mxz##+nzznnnnxxW#######xz#n###################Mxz###+++******++++#zzxM@##################################@xnnnz#++*###++nnxM@###############
########@MMz####nnnnxnxxM@#######@xnW###################Mxnz#++**iiiiii***+#znnx@###################################Wxnn###+***###zzznM@##############
########WMxz##znnxnnxxxMW#########################@#####Mxnzz#+**iiiii***+#zznnx@####################################Wxnnz#+**+#++**+zMM##############
#######@Mxz###znnxnnxxxM@########################@xW####MxMMxxnnz++*+#zznxxxMxnx@####@@##############################@Mnnzn#++*iii**+zxxW#############
######@WMzz##zzxxnnnxxMM@#########################WW####xnMnzznxxx#++znxMnzznxnx@###@MW###############################Wxxz+++++iiii*#zxnM#############
######WMMz###nzznnnnnxMM@########################@MnzxWMxznnxxxzzzz++z##zMnxnzzn@##@MW@###############################@xzz#+##+*ii*+#nznMW############
######MMnz##znnznnnnxxxM@#########################W@x#+#xz#nnzn++#z+#z++*z#zz+#nWMn#zMW################################Wnnz#+#+***+*+#+zxM@###########
#####@WMz##zznnxnnnxnxxMW############################@Mzxz####+++#z+#z#++++###znz+zxW##################################@xxnz###z++i*###nnnM###########
#####@Mxz##znxzxnxnxMxxMW@@############################@xn##++++z#***+##+++++#znxM######################################Mnxxnn##+**+++#+#zx@##########
#####WxMz##zn#zxnxxxxMxxnnnxxMW@@######################@xn#+++zzz+iii+##z++++#znM#######################################Wxnnn#+##*++***++#xW##########
####@Wxxz###nznxnxxxMxnzzzzznnnnnnMMW@@################Wxn##+#zz#+***+###z+++#znx########################################xnnzz###+*+***+#znWW#########
####@MWxz###zMMxxnnxxz#########zzzznnxnxxMW@@##########Mxn#####zzz#+#zzn###+##znn@#######################################Mnnnn#++##***+##zxMMW########
####WMWnzz###nnxxnxxz##############znMxnnnxxMMMMM@@####Mxn##+##znnnzznnzz##+##znn@#######################################@xnz#++++#*++**+znnMW@#######
####WMMnzzzznnnnxxz##++++++++++++###nxMxxxnxxxxnnnnMW@#Mxnz#++#+zzzzz#zz+#+++#znn@##############################@@@@@@WWWWxzz##+++##++**###nxMW#######
####MMxxnznnnnnnn##+++++++++++++++++##z##z##nxnzzzzznnMMxz##++###+#+++++++**+#znn@##############@@WWWMMMMMMMxnnnnnnzzzzzzzxnznzz#++##+##++zzxMM#######
####Mxxxnnzzzzz###+++++++*****++**++++###+##xz######zzzxxzz#+**znnz#zzzz#+**+#znn@#########WMxxnnzzzzzzznnzzz######++++###znzzzzz##+##+###nnnnx@######
####Wxxnnzz####+++++++++************+++++++nn++#+#####znxnz#++#nxnz#nnnnz#+*+#znnWWW@@##Wxnzzzz#########z##++++++++*+**+++#znnz##++++#++++zzznxM######
####@xxnnz#####+++++++++*************++++++#++++++++###zxnz#+#nnnnzznnnnnn#*+#znnxnnnnxxnzz####+++++++###++++*************+#znnnzzzzz+++#z++#znx@#####
#####Wxxnzz####+++++++++++++**********++++++*+++++++++##xnz#+nnzz+**i*#zznn++#znxxzznnnnz###++++++***++++******************+#zz##zzzz##+++++#znxW#####
######Mxnzzz#####+++++#++++++*********+*++*+**++++++++##nnz#zxzzn#+**+#zzznz+#znMnzznnzz###+++++****************iiiiiiiii****#z##+++++++++++#zznx#####
######@Mxnzzzz##########++++++********++++*********++++#zxnznnzzzz##+###zzzn#zznMzzznzz###++++************iiiiiiiiiiiiiiii****++++++++++++++##znn@####
########Wxnnzzzz##########++++******+++++++*********+++##nnnn#zzzzzzzzzzzz#nnzzxxzznzz###++++****iiii*****iiiiiiiiiiiiiiii******+++++++++++++#znn@####
#########@Mxnnzzzz###zzz####++++****+##++++*********++++#xxxn##znxxxnznnzzznxznMnzn#####++++***iiiiii****iiiiii****iiii*i****i*******++++++++#znM#####
###########@WMxnnzzz##zzzz####+++++++###++***********+++#xxxxzzzzxxxn#zzzznxxzxxz#n#####++****iiiiii********i*************************++++++##nM@#####
##############@WMxnzzzzzzzzz###+++++++zz#++***********+++nzMMxnzzzzzz###znxMnnxz#zz###++*****iiiiii************************************++++##zM@######
#################WMxnnzzzz##z##+++++++#z#++************++nznMWMnzznnz##zzxMxxxn#+n###++****iiiiiii***+*******+*+++*********************+++##zM########
###################@Mnnzzzz#######+++++z#++**************znznMWMnnnxxzznxMWxnzz+zz++++***iiiiiiii***+++*****+++++++************+****++++++#zM#########
#####################@Mnnzz#########++#zz#+**************+M#znxxxxxMxnnnnMxnzz+#n++++***iiiiiiiii**+++++++++++++++**********++++++++++++##nW##########
#######################@xnnzz########+#zz#++**************nn+zzzznxMxxnnnz###++n+++****iiiii;iii**++++++++++++++++*********+++#########zzxW###########
#########################@xnzzzzz######zn#+***************zM##z##zzxWxz#+++#++x#+++***iiiii;;ii**++++++++++++++++*+***+*++++##zzzzzzznnxW#############
###########################@Mnzzzznzzzznn#++**************zn++z#+###z#++++++*nn*******iiiii;ii**+++*+++++++++**+++++++++++##zzznnnxxxM@###############
#############################@xxnxMMMxnnn#+++************+Mn++##++++++++++**+n#******iiiiiiiii*+++*+++++++++++++++++++++###zznnxMWW@##################
###############################@WWWWWMMxxz+++************#Mn++++++*++++*****zx+******iiiiiiii**+++**+++++++++++++++++++###zznnM@######################
####################################@@WMxz#+++**********+xnz****************zx+****iiiiiiiii***++++++++++++++++++++++##zzznxW@########################
#######################################@Mz#+++**********+Mz#+***********ii**zn+***iiiiiiiiii**++++++++######+++++++##zznxxW@##########################
########################################Wz#++++*********zxn+****iiiiiii*****nx***iiiiiiiiiii**+++######z#####++####zznxM@#############################
########################################@n##++++********nxn+*****iiii***i***nx**iiiiiiiiiiii**+++#z#zznnnzz######znnMW################################
########################################@n###++++******+nnz+****iii*i******+nn***iiiiiiiiii***++#zzznxxxxxnzzzzzzxW@##################################
#########################################nz##+++++*****#nxn+*****i*********zzn***iiiiiiiiii***++#znnxxMMMxxnnnxM@#####################################
#########################################xz###++++***#zxxxzz**************+nnz**iiiiiiiiiii***+#znnnxMMMW@@###########################################
#########################################Mz###+++++*#xznnnzz#*************znx*iiiiiiiiiiiii**++#nxxxnnxW##############################################
#########################################Mzz###+++**#xnzzxzzn#***********##nnz*iiiiiiiiiii***+#zxxxnnnx@##############################################
#########################################Wzz###+++***zxnznnz*zz+++++#+*+zz+nnn*iiiiiiiiiii***+#znxnnnnM###############################################
#########################################Wnzz##++++***+x#zznz#*i*i***#nz+zzn#zz+iiiiiiiii****+#znnnnnnW###############################################
#########################################Wnzz##+++*****##nzx#*iiii*ii+###zzzznn*iiiiiiiii***++##nnzznx@###############################################
#########################################Wnzz##++******#zznz**iii*iii*+nnzzznz+iiiiiiiiii****+##znzznM################################################
#########################################Wnzz##+++***+#+#zn+i**iiii*+**zzzzn*iiiiiiiiiii****++z#zzzznW################################################
#########################################Wnzz##+*****#+++nz+iiiiiiii***zn#n*iiiiiiiiiiii****+###zzznx@################################################
#########################################Wnnnn++*****+#++##+**i*++**i*+n#++iiiiiiiiiiii*****++##zzznM#################################################
#########################################Mnxxn#******+++#***ii**##****#n+#+iiiiiiiiiiii****+++##zzznW#################################################
#########################################Mnxzz#****i*+#*++zzz#**z+*****##++iiiiiiiii*******+++##zzzxW#################################################
#########################################Mnxnz+***ii**+#*++**+zzz#nxnn#++++iiiiiiii*******+++###zznx@#################################################
#########################################Mnxnz+****ii+**+#+*i*zz#n+###++++*iiiiii********++++##zznnx@#################################################
#########################################Mnnnz++**iiii**z##+*+zz#n++++*++#*iiiiii*+++****++++##zznnM##################################################
#########################################Mnzz#++**iiii*########nzz++zz#++*iiiiii*+#z#+***++++##zzznW##################################################
#########################################Mnz##++***iiiz+*++###zzzzzn#zz*iiiiiiii*#zzz+**++++###zznx@##################################################
#########################################Wxzz#++***ii#++++*+#zz#n###z###iiiiiiii*#znz+**++#####zznx###################################################
#########################################Wxnz##++**iiz+****#z#++z#xz#++ziiiiiiii*+###+*++#####zzznW###################################################
#########################################@xnz##++***#zz+**#z##+*###***+z*iiiiiiii*++**+++#####zznx@###################################################
#########################################@xnzz#+++#nznznzzz+ii**znz+**+ziiiiiiiii*****++######zznM####################################################
##########################################xnzz#znnxzxn#*z#+*iiii*+nz##zziiiiiiiii****+++#####zznxW####################################################
##########################################Mnzz#Mxnxxz**iz##+**i***zzzz#x*iiiiiii*****++#####zzznM#####################################################
##########################################Mnzz#nx#x+****nz#+#+++##z#in#zniiiiiii****+++#####zznxM#####################################################