######x#############x#x##x#x##x#x##x#x##x#x##x#x##x#x##x#x##x#x##x#x##x#x##x#x########################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
##x###x###############################################################################################################################################
#####x#x#x############################################################################################################################################
#########x##############x####x####x####x##############################################################################################################
######M###############################################################################################################################################
######MMMM############################################################################################################################################
#M#M###M#M############################################################################################################################################
######################################################################################################################################################
##############M####M##################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
############M####M####M####M####M####M##M#M##M#M##M#M##M#M##M#M##M#M##M#M##M#M#nnnzi##xn##############################################################
#######M###M####M#####M####M####M####M####M####M####M####M####M####M####M####MnMMMxMxn++zzWx*;;iiiii****+x############################MxMM############
###########M##M#M##M#########################WMMxxxxxxxxxnxxnnnnnnnnnnnnnnnnnxMxxnnzzxn#xMWn;:::::;;;:::;+xxxnnnxxMM##################MxWM############
########################M####M####M####M####WMxxxxxxxxnnnnnnnnnnnzznznnzzzzzznMzz#+#zMMMxxMn**;;;;iiiii;i#xxxnz##zz+#zzxM############xxxWW############
###########M####M####M#MM#M#MM#M#MM#M#MM#MWWMxxxxxxxxxxxxnnnnnxxxxxxz#+++****+nnnnxznxxxzxWMz#+*++*++##++nW@xnzzzznMxMMWW############xWWWW############
###########MMM##MMM#MMMMMMMMMMMMMMMMMMMMMMWnnnnzzzzz#zznxxxxxxxxxMx#ii;:::::;i#nz#nxxxxWMWWMxxxnnnnnnnxnnx@#@WWWWW@@@@@@Wx##M####M##xxM#xW#M####M####M
###########M#MM#M#MM#MMMM#MMMM#MMMM#MMMM#Mzzzzzz##+++#zxz#+##zznnxn+,,....,:;*#xzznMxnnnzznzzz#z#znzzzzznxMW@WWWWWWWWWxn#i+zMxxxxxxMMMxMWWW###########
############M####M##MMMMMMMMMMMMMMMMMMxnxxnnzzzz#####zn#++++##zxxxxz++++++++#znzz#xxn###+*++###++#####zzzxxxxzzznnznnx#z###znzzzznznMxnMWWWM##########
#########M#M#MMMMnnz#z###++#nMMMMxxnzzznxxnnzzzzznnxnz#+##znzzxxMxn#++#####+#zzzzzxxz+*++++++*****++++++#xxWWWMMMMWWWWMMMMWW@WWWWWWWWWWW@@@M##########
########xxnz##++**iii*****ii*#z####++#zznxnz####znnnnzznnzznnnzzn##+*+zzznnzzznnxnnx#*ii*****iii*****+++#xM@@@@@@@@@@@W@W@@@@@@@@@@@WW@@@@@###########
######WMz+ii;;;;;;iii**i**+++++*++*++zzzzxnz####znnnnnn###zzzz####z#+#xzzzz#zznnxnxxz*i*+####zzzzzzzzzzzzMW@WWMMMMMMMWW@@@@@WWWWWWWWW@WWW#############
######MM#****iii;i******++++++#+*+++##znzxnz#####zzzznzz#zz#zz+#z+zz#znnnnnnnnnxnxxxn+++zxMMMMMMMWMMMMMMW@@W#############MWW##########MMM#############
######xMz+*i**iiii***++++++*++++++####znzxnnzz###zz#zzn#+z#+####z#nnnnnnnnxxxxxMMWWMnzzxMWWWWWWWWWWWMMMM##############################################
######xMn#*;ii*iii****++*++++##++++++##zzxnnnnnnnxxxMxMMMxxxxnnnxMxxxMxxWMMWMMMM###WWMWWW#############################################################
######MMx#**ii**i***ii++*****++++***+##znMWWWWWWMMMWMM@WWM#MMzxnnxxnnxxxMWMMMM#M######################################################################
#######MM#i***i;ii****++++******+++#zzxMWWWMnnnnnxxxxMWMWWMWM+nzxxnzxnxxxWMMMWWW######################################################################
#######Mx#i***iii*****+++******+#znxMWWW#WWMnz###znzzxWxWWWW#+zzxxzzxnnxnWMxWWWW######################################################################
#######MMz++**iiiii*++*******+znMMW#WWWWWWWWxzz###znMMWWxWWWWzMMnxnnnnnnzMMnWWWW######################################################################
#######MMnz+*****ii*+++**++#nxW#W#WW#W#WW#W#xzzz#znWWxMMMxxnznW#MxnznnxznxMxMW#W######################################################################
#######xWxn#+**+******+#zxxWWWW#WWWW#WWWWWWWnz#znnMWWWMxxxxxMWWWWnn#znxnznMnxWWW######################################################################
#######MMn#++***+**+#nxMWW#WWWW#WWWW#WWWWWWMz##znxMWWWWWWWWWWWWWWxxz#nnnxzMxnWWW#WW#W#WW#W#WW#W#WW#W#WW#W#WW#W#WW#W#WW#W#WW#W#WW#W#WW#W#WW#W#WW#W#WW#W
#######WMn#**+*+##nMMWWWWWW#WWWW#WWWW#WW#W#x###znxWW#WW#W#WW#W#WWWxzzznxnzxMxMWW######################################################################
#######WWxz###znMWWWWWWWWWWWWWWWWWWWWWWWWWWn##+#nMWWWWWWWWWWWWWWWWxnzznnnnzMxnWW######################################################################
########WMxxMMMWWW#WW#WWWW#WWWW#WWWW#WWWWWMz##+zxWWWWWWWWWWWWWWWWWxxzznnnn#xxnxW######################################################################
########@WWW@W#######WW#W#WW#W#WW#W#WW#W##x####nMW##W#W##W#W##W#W##xnzznxnzzxnnW###W####W####W####W####W####W####W####W####W####W####W####W####W####W#
###########WW#W#WW#W#WWWW#WWWW#WWWW#WWWW#Wnz###nMW##W#W##W#W##W#W##xxz#nnnn#nxzx######################################################################
######################W#W##W#W##W#W##W#W#Mnz##zxWW##W#W##W#W##W#W##Mxnzzznnn#xnzM#####################################################################
###########W#WW#W#WWWWWW#WWWW#WWWW#WWWW#WMnn##zxW#W#WW#W#WW#W#WW#W#Wxxz#nnnnzzxzz#####################################################################
##########WWWW#WWWW#WWWWWWWWWWWWWWWWWWWWWWMnz#zx#WWWW#WWWW#WWWW#WWWWMxnzznnzn#nxzn####################################################################
###########W##W#W##WWWWWWWWWWWWWWWWWWWWWW#WWMxMMWWW#WWWW#WWWW#WWWW#WWxxzzznnzn#xxnz###################################################################
###########W#WW#W#WWW#WWWW#WWWW#WWWW#WWW#WWWW#WWWW#WWWW#WWWW#WWWW#WWWWxn##nznzzznnzz##################################################################
#############W####W#WWWWWWWWWWWWWWWWWWWWW#WW#W#WW#W#WW#W#WW#W#WW#W#WW#Mxz#znzznzznnz#n################################################################
###########W##W#W##W#WWWW#WWWW#WWWW#WWWW##WWW##WWW##WWW##WWW##WWW##WWW#xxzzzzzznznnxnzx###############################################################
###########W#WW#W#WWWWWWWWWWWWWWWWWWWWWWW#WWWW#WWWW#WWWW#WWWW#WWWW#WWWWWnxz#znnnnnnMnnx###############################################################
###########W#WW#W#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWxnnzznnnxzxnMxx###############################################################
###########W#W##W#W#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWxxnzznxnMxxxM################################################################
###########WWWW#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWnxnzznMxnxM#################################################################
#####################WW#W#WW#W#WW#W#WW#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWzxnzxxxxxM#################################################################
##########WW#W#WW#W#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWzxxxxnxM##################################################################
###########W#WW#W#WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWnxMnMM###################################################################
##########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@nnMMM###################################################################
###########@#@@#@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@xxM####################################################################
###########@#@@#@#@@#@##@#@##@#@##@#@##@#@##@#@##@#@##@#@##@#@##@#@##@#@##@#@##@######################################################################
###########@#@@#@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################################
##########@@#@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################################
####################@@@@@@@@@@@@@@@@@@@@@#@#@@#@#@@#@#@@#@#@@#@#@@#@#@@#@#@@#@#@######################################################################
###########@##@#@##@#@@#@#@@#@#@@#@#@@#@#@@@@#@@@@#@@@@#@@@@#@@@@#@@@@#@@@@#@@@@######################################################################
##########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################################