######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
###############WMMxnnn##@nnnnnnM######################################################################################################################
###############Wxxz#####WzzzzzzM######################################################################################################################
###############Wxxz##*##WzzzzzzM######################################################################################################################
###############MnnzzW###W+#++*+x######################################################################################################################
################@x@W####@M:;zx@##@nnM#################################################################################################################
##############@############*M@###@nnnW@###############################################################################################################
#########################@zx@#####Wn*zW@##############################################################################################################
#########################@W@@#####@WW#MW##############################################################################################################
###################################@@MW@##############################################################################################################
##################@@W@@##############@@###############################################################################################################
#################@WMxMW@####@@W@@#####################################################################################################################
#################WMnnnxW@###WMxMW@####################################################################################################################
################@MnzzzzxW##@xnnnnM@###################################################################################################################
######@@@WW@####@xzzzzznM@@Wnzzzzx@###################################################################################################################
######MMMMMW####WxzzzzzzxWWxzzzzzxW###################################################################################################################
######MMMMMW####WnzzzzzzxMMnzzzzzxW###################################################################################################################
######@@@WW@####Wnzzzzzznnnzzzzzzx@###################################################################################################################
################WxzzzzzzzzzzzzzznM@###################################################################################WMMMMMM@##xxxMWW@###############
################@xzzzzzzzzzzzzznxW####################################################################################MzzznzzW##i;izxxW###############
#################MnzzzzzzzzzzzznM@############################################################################Mzzzzz@###@+***W###@MxxW@###############
#################@Mnnzzzzzzzzzzx@####@@#######################################################################x##*#W#####M#*M######@##################
##################@Mnzzzzzzzzznx@###@xM@######################################################################n+++n@######Mz##########################
##################@MnzzzzzzzzznM@###@MW@######################################################################@WM@@###################################
##################@MnzzzzzzzzzzxW#####@@#######################################################################################@@@@###################
#################@WxzzzzzzzzzzznM@###################################################################################@@W@#####@WMxMW@#################
################@WxnzzzzzzzzzzzznM@#################################################################################WMxxxM@##@MnnznxW#################
###############@WxnzzzzzzzzzzzzzzxW@###############################################################################@MnzzznW@@Wnzzzzzx@################
##############@Mxnzzzzzzzzzzzzzzznx@###############################################################################@xzzzznxWWxzzzzzzxW####@WW@@@@#####
#############@MxnzzzzzzznnnzzzzzzznW###############################################################################@xzzzzznxxnzzzzzznW####Mnnx@@@#####
###########@WMxnzzzzzznxMMMxnzzzzznW################################################################################WnzzzzznnzzzzzzzxW####MzznW#######
##########@WMnzzzzzzznxW@@@WxzzzzznW################################################################################@MnzzzzzzzzzzzznM@################
##########@xnzzzzzzznxW@###@MxnzzznW##########################################################################@Wz@###@xzzzzzzzzzzznxW#################
#########@MnzzzzzzznxW@#####@Wxnnnx@##########################################################################WMz@###@xnzzzzzzzzznMW##################
#########WxzzzzzzzznM@#######@WMMMW@#################################################################################@xnzzzzzzzzznM@##################
########@MnzzzzzzznM@##########@@@@#################################################################################@MnzzzzzzzzzznxW@#################
########WxzzzzzzzzxW###############################################################################################@MnzzzzzzzzzzzznxW@################
#######@MnzzzzzzzxM@################################################################@@##########@@################@MnzzzzzzzzzzzzzzznMW@##############
#######WxzzzzzzznM@#############################################################################@#################WnzzzzzznnnnzzzzzzznxM@#############
######@MnzzzzzznM@##########################################################@zxW##################################WnzzzzznxMWMxnzzzzzzznMW@###########
######@xzzzzzznxW######################################################@W@@#############################W@@#######WnzzzznM@###@MxzzzzzzznnM@##########
######WnzzzzzzxW@####################################nnnnnnnxxxxx#####@@#@############@@@@@@@@@#########@WWW######@xnnnxW@#####@WnzzzzzzzznM@#########
#####@MzzzzzznM@################@x@@################@z#####znnnnnW####@@@@#######@@WMxxxxxxxxxxMMW@######WWWW######@WWW@@#######@WxnzzzzzzznW@########
#####@xzzzzzzx@#################@####################+++##+nxnnnzzW###########@@WMxnnzzzzzzzzzzzznxMW######@@########@###########@Wxzzzzzzzzx@########
#####WnzzzzznW@######################################@x+ii*nnnnzz,`+########@@WxnzzzzzzzzzzzzzzzzzzzxW@#####@#####################@MxzzzzzzznM@#######
#####Mnzzzznx@#####@MMxxM#############@@@@@@@#########@xnn#nzzzzz,;n#######WMxnzzzzzzzzzzzzzzzzzzzzzznx@####@#######################WxzzzzzzznW#######
####@xzzzzznW@####M+#n##z@########@WWMMMMMMMMWW@@##########n*#znW;n@####@@Wxnzzzzzzzzzzzzzzzzzzzzzzzzzzx@###########################@WxnzzzzzzM@######
####@xzzzzzx@#####z+zn+zW@#####@@WWMxxxxxxxxxxxMWW@@########@Mzx#@@####@WxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzM@#####@@@@WMxxx##############WxzzzzzznW######
####WnzzzznM@####@znn#MWW#####@WMxxxxxxxxxxxxxnnnxxMW@########@######@WMnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzxW##############@z+nn@#########WxzzzzzzM@#####
###@MnzzzznW#####Mnznn@#####@WMMxxxxxxxnnnnnnnzzzzznxMMW@###########@WxnzzzzzzzzzzzznnxxxMMMMMMMMMMMMxxnxW@#############@MMWW@WMW@#####@MnzzzzznW#####
###@xzzzzzx@####@Mnz#@####@WMMxxxxxnnnzzzzzzzzzzzzzzzznxMMW@######@WMnzzzzzzzzzzznxxMMWWWW@WWW@WWWW@@@WWW@@@@#################x#+#x@####@MnzzzzzM#####
###@xzzzznM@####@@@@@###@@WMxxxxxnnnzzzzznnxxxxxxxxxxxnnnnxMW@@@@@WxnzzzzzzzzznnxMMWWWWWWWWWWWWWW@@####@WWxMMMMMMMMMWW@#######@Mnz*x#####Wxzzzzzx@####
###WnzzzznW#############WMxxxxxxnzzzzznnxMWWWWWWWW@WWWWMxxxxxxMMMMxxnzzzzzzznxMMWWW@@WWMMMMMMMMMWW@@@WWMxnzzzzzzzzzznnMW@#####@Wnnnz@####@MnzzzznW####
##@MnzzzzxW####@#######@WMxxxxxnzzznnxMW@@@@@WWWWWWWW@@@@@WMMxxxMxxxxnnzznnxMWW@@WWWWMMxxxxMMMW@@@@WxnnnzzzzzzzzzzzzzzznM@#####@Wxnxx#####Wxzzzznx@###
##@xnzzzzxW####@######@WMxxxxxnzznnxMW@@WWMxxxxxxxxxxxMMWW@@WWMMxxxxxxnnnxMWW@WWWMMMMxxxxMMMW@@@WMxnzzzzzzzzzzzzzzzzzzzznxW@####@MMx*@####@Mnzzzzx@###
##@xzzzzzxW####@####@WWMxxxxxnznnMWW@@WMMxnnzzzzzzzzzznnxxMW@@@WMMxxxxxxMW@WWWMMMMxxxxxMMWW@@@WMxnzzzzzzzzzzzzzzzzzzzzzzzzxW@####WWn+@#####WnzzzznW###
##@xzzzzzxW########@WMxxxxxxnnnxM@@@WMxnnzzzzzzzzzzzzzzzzznxMW@@WMMxxxMWW@WMMMxxxxxxxxMWW@@@WMxnzzzzzzzzzznnnxxxxxxxxnnnzzznM@###@WWzx@####WxzzzznM@##
##@xzzzzzxW####@##@MMxxxxxxxnxM@@@WxxnzzzzzzzzzzzzzzzzzzzzzznxMWWWMxMxMWWMMMxxxxxxxxMWW@@@WMnzzzzzzzzzznnxMMMWWWWWWWWWMMxxnnnM@###@Wz#n@###Wxzzzzzx@##
##WxzzzzzxW###@@#@WMxxxxxxxxMW@WWxnnzzzzzzzzzzzzzzzzzzzzzzzzzznnxxxxxMMMMMxxxxxxxxxMW@@@WxnnzzzzzzzznnxMWMxnzzzzzzzznxMWWWWMxxW@###@nnnW###Wxzzzzzx@##
##WnzzzzzxW####@@WMxxxxxxxxM@@WxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnnnxxxxxxxxxxxxMMW@@WxnzzzzzzzzznnxMMxnnzz###++*i;i*#zxMWWWWW@###@xxxW###WxzzzzzxW##
##WnzzzzzxW####@WMxxxxxxxxM@@MxnzzzzzzzzzzzzzzzzzzzzzzzzzzznnnxxnnzzznnxxxxxxxxxMM@@@MnzzzzzzzzzznxWWMn**#nxxxxnn#*:..,:;*zxMWW@###@WMxW###WxzzzzznW##
##WnzzzzzxW###@WMxxxxxxxxMW@MnzzzzzzzzzzzzzzzzzzzzzzzznxxMMWWWWWMxnzzzznnnnxxxxMW@@@MnzzzzzzzzzznMWWx+ii#MW@@@@@@Wx#;.```.:;+zxW@###@MxW###WxzzzzznW##
##WnzzzzzxW###WMxxxxxxxxxWWMnzzzzzzzzzzzzzzzzzzzzzznxMMW@@@@@@WMxnzzzzzzzzznnnxxW@WxnzzzzzzzzznxMWMzi;*zM@########@Mz;.` ``.,;*zM@##@MMW###WxzzzzznW##
##WnzzzzzxW##@WxxxxxxxxxxMMnzzzzzzzzzzzzzzzzzzzzznxMW@@@WWMMMMxnnnzzzzzzzzzzzznxxMxzzzzzzzzzznMWWx#:,inW@@WW@@#####@Wz;.``` ``,;#M@#@WW@###WxzzzzznW##
##WnzzzzzxW##WMxxxxxxxxxnnzzzzzzzzzzzzzzzzzzzzznxMW@@@WMxnnxxnnnnnnnnnnnnnnnnnnnnnzzzzzzzzznxMWMx+,.:#W#WxznxW#######Wz;.``   ``:+M@@@@####WxzzzzznW##
##WnzzzzzxW##WMxxxxxxxxxnzzzzzzzzzzzzzzzzzzzznxW@@@WWMxnnxMWWMMMMxxxxxxxxxMWWWWMxnnzzzzzzznxMWMzi,`,*M@#x*:izW#######@W#;.`     `:+M@@@####WxzzzzznW##
##WnzzzzzxW##WMxxxxxxxxnzzzzzzzzzzzzzzzzzzznxM@@@WMxnnxxMMMMxnz#+++*i;;ii*+zxWWWWWMxnzzznxMWMx#;.``:z@#@n;,;zW##@WW@##@x+,`      `:zW@W@###WxzzzzznW##
##WnzzzzzxW##WMxxxxxxxxnzzzzzzzzzzzzzzzzzznxW@@WMxnznxMMMxzzzzzzzz#*:.```.,;*+zxMWWWMnnnxMMMz*:.` .ix###x#*+x@#Wn#zM@##@n;.`      .+M@W@###WxzzzzznW##
##Wnzzzzzx@##WMxxxxxxxxnzzzzzzzzzzzzzzzzznM@@@MnzznxMWMnz###zxW@@@@M#;,``````.:i+zMWWMxMWMn+;.`  `:+M###@WMM@#@n*:i#M###M+,`      `*M@W@###WxzzzzznW##
##Wnzzzzzx@##@MxxxxxxxxzzzzzzzzzzzzzzzznxW@@WxnzznMWWx#+#xWW@@#####@Mz*:.``  ```.:+xW@@Wx#i,`    .;zW#####@###Wz;.:*x@##Wz:``     .+M@W@###WxzzzzznW##
##Wnzzzzzx@##@MxxxxxxxnzzzzzzzzzzzzzzznMW@@MxnzzxWWMz++zxWW@@#######@Wx#i:.`     `:+x@@n*,.`     .*nW####@####Wz;,:+x###@ni.``    ,#W@@####WxzzzzznW##
##Wnzzzzzx@##@MxxxxxxxnzzzzzzzzzzzzzznM@@WMnzzzxWWx+i*zMWMnzx@########@Wn*:``     .ix@M*,`       ,+x@###WxxW##@x+i*zW###@xi.```  `;x@@@####MnzzzzznW##
##WnzzzzzxW##@WMxxxxxnnzzzzzzzzzzzzzxW@@WxnzzzxW@x*,;zM@M#ii#M###@@@@###Wz*,`     .*xWz:`        ,+x@##@x++x@##WxnnM@###@xi.````.:#W#@@###@MnzzzzznW##
##WnzzzzznW##@WMxxxxxnzzzzzzzzzzzznxW@@MnzzznxW@x*..*x@@x*,:*x@##WMxxW@#@M#;.`    .+MM*.        `,+M@##@x*izW###@@@@####@xi.```,;#M@#@####@xzzzzzznW##
##WnzzzzznM##@WxxxxxxnzzzzzzzzzzznMW@WMnzzznxWWx*,`.+M@@x*:;#M@#@x#*+zM@#Wn+,``   .#Wx;`        `,+x@###Mz#zxW##########@M*:,,;+nW@##@####@xzzzzzznW##
##WnzzzzznM@#@WMxxxxxnzzzzzzzzznxM@@WxnzzznMWWx+,``:#M##Mz*+nW##Wz;,:+x@#@M#;.`   ,zWn:`        `,*nW###@Wxz#n@#########@Mz+*+zM@##@@@####WnzzzzzznW##
##Wnzzzzznx@##WMxxxxxnzzzzzznnxW@@@WxzzzznxWWn*,` .izW##@MnxW###Wz:.,*n@#@Wni.`` `;nM#,`         .izW####@M+i+W########@@WMMMW@@##@@MW####WnzzzzzznW##
##Wnzzzzzzx@##WMxxxxxnzznnxxMW@@@WMnzzznxMWMzi,`  .*nW###@@@@###@ni::+x@##Wx*,`` .ixM+,`         `:#M####@M#i+M@######@@@WWWW@@###WMxW####WnzzzzzznW##
##WnzzzzzzxW##@MxxxxxnznxWW@@@@WMxnznnxMWWx#;.`   .*nW#####@WW@##Mz++zM@##@M+:`` .*MM+,`     ``  `.*x@###@WnznW@@#@@@@WWMMMMMW####Mnn@###@MnzzzzzznW##
##WnzzzzzzxW##@MxxxxxnznM@@@WMxxnnnxxMMWMn+:.     .*nW####@xznM@#@MxxM@###@M#:```:#WM#;.``````````.inW@#@@WMWW@@@@WWMMxxnnnnM@###@Mnx@###@MzzzzzzznW##
##WnzzzzzznW##@MxxxxxnznxMMxxnzznxMWWWMn#i,`      .*nW####Wz*+x@###@@@####@W#;..,*x@Wx+;:,,,...,,:;+nMW@@@@@@@@WWMxnnnzzzzznW####WWW@####@xzzzzzzznW##
##WnzzzzzznW##@MxxxxxnzzzzzzzzznxW@WMn+i,.`       .*nW####Wn#zxW@##########Wn*;;+nW@@WMnz##++++##zzxMWW@@@@WWMMxnnzzzzzzzznM@####@@W#####WnzzzzzzznW##
##WnzzzzzznW##@MxxxxnnzzzzzzzzznxW@@Mzi.`         .izW####@MxzzxW##########@MnzzxW@WMMWMMMMMMMMMMWWWWWWWWMMMxnnzzzzzzzzzzxM@#############WnzzzzzzznW##
##WnzzzzzznM@#@MxxxxnzzzzzzzzzzzxMW@Wx+;,``       .izM####@@M#*zM@#########@@WWW@@WxnxxMMWWWWWWWWWWWMMMxxnnnzzzzzzzzzzzznM@@#@#####@####@MnzzzzzzznW##
##WnzzzzzznM@#@MMxxxnzzzzzzzzzzzznxWWWMn#i,.`    ``:+x@####@M+;#M@#########@@@@WWMnnzzznnnnnnnnnnnnnnnnzzzzzzzzzzzzzzzznM@@WWW@#########@MzzzzzzzznW##
##WnzzzzzznM@#@MMxxxnzzzzzzzzzzzzzznxxMWMx#*:.`````.izW#####WnznW@########@WWMxxnnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznM@@WMxxM@########@MzzzzzzzznW##
##Wnzzzzzzzx@#@WxxxxnzzzzzzzzzzzzzzzznxMMWWxz+i:.```:+M@####@WWW@######@@WMxxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznM@@WxnzznM@#######@xzzzzzzzznW##
##Wnzzzzzzzx@#@WMxxxnzzzzzzzzzzzzzzzzzzznMWWWMn#*;::;+x@####@@@#####@@WWMxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznxxMWWWxnzzzzx@#######WxzzzzzzzznW##
##WnzzzzzzznW##@MxxxnzzzzzzzzzzzzzzzzzzzznnxWW@WMnz##zx@########@@@WWMxnnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnxMW@@Wxnzzzz#zx@#######WnzzzzzzzznW##
##WnzzzzzzznW##@MxxxnzzzzzzzzzzzzzzzzzzzzzznnxMWWWWWMMM@#####@@WWWMxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnnxMWWWWMxnzzzz#znM@#######WnzzzzzzzznW##
##WnzzzzzzznW@#@MxxxnnzzzzzzzzzznnnnnnnnnnnnxxxMMWWWWWWW@@@@@WWMxnnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnnxMWWWWWWMxnzzzz#zzznW########MnzzzzzzzznW##
##WnzzzzzzznM@#@MxxxnzzzzzzzznnxMMMWWMMMMMMMWWWMMMMMMMMMMMMMMxxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnxxxMMMW@@@WMxxnzzzz##zzznM@#######@MzzzzzzzzznW##
##WnzzzzzzzzM@#@MxxxnzzzzzzznxMW@@@@@@@@@@@@@@@@@WWMMxxnnnnnnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnxxxxMMWW@@@@WMMxxnzzzzz####zznM@########@MzzzzzzzzznW##
##WnzzzzzzzzM@#@MxxxnzzzzznxM@@WWWMMMMMMMMMMMMWWWW@@WWMMMMxxxxxxnnnnnnnxxxxxxxxxxxxxxxxxxxxxMMWWW@@@WWWWMMMxnnzzzz######zzzxM@#########@xzzzzzzzzznW##
##Wnzzzzzzzzx@#@MxxxnzzzznxW@@WMxnnnnnnnnnnnnnnxxMWWWWWW@@@WWWWWWWWWWWWWWWWWWWWWWWW@@@WW@WWWWWWWWWWWMMxnnnnzzzz#######znxxMW@##########WxzzzzzzzzznW##
##Wnzzzzzzzzx@##MxxxnzzznMW@WMnnzzzzzzzzzzzzzzzznnnxxMWWWWWWWWWWWWWWWW@@@@@@@@@@@@@@@@@@@WWWWMMMxxnnnnzzzzzzzz#####zznxMWW@############MnzzzzzzzzznW##
##WnzzzzzzzzxW##WMxxnzznxW@Wxnzzzzzzzzzzzz####zzzzzzznnnnxxxxxxMMMMMMMMMMMMMMMMMxxxxxxxxxxxnnnnnzzzzzzzzz#zzzzzzzzznxMW@@@@###########@xzzzzzzzzzznW##
##WnzzzzzzzznW##WMxxnzzxW@Wxzzzzzzzzzzzzzz###########zzzzzzzznnnnnnnnnnnnnnnnnnnnnnnnnnnzzzzzzzzzzzzzzzzzzzzzzzznxMW@@WMMMW@##########@xzzzzzzzzzzxW##
##WnzzzzzzzznW##@MxxzznM@@Mnz##zzzzzzznznnzzzzz###############zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnxMMW@@WMxnnnxW@###@W###@MnzzzzzzzzzzxW##
##WnzzzzzzzznM##@WxxnznM@Wnz###zzzznnnxxMMxxxxnnzzzzzzz##################################z###zzzzzzzznnnxxxxMMW@@WWMxnzzzznx@###@####@xzzzzzzzzzznx@##
##WnzzzzzzzzzM###WxxnznM@Wnz###zzzznnxMW@@@@@WWMMxxnnzzzzz#############################zzzzzzzznnxxxxxMWWWWWWWWWMxnzzzzzzznxW###@###@MnzzzzzzzzzznW@##
##WnzzzzzzzzzM###WxxnznM@@xnz##zzzzznnxMMWW@@@@@@@@WMMxnnnzzzzz####zzzzzzzz#######zzzzznnnnnxxxMWW@@@WWWWWWMMxxnnzzz##zzzznM@#######Wxzzzzzzzzzzzn@###
##WnzzzzzzzzzM@##WxxnzzxMWWMnzz##zzzzzznnxxxMMWWW@@@@@WWWMMxxxxnnnxxxnxnnnnnnnnnnnxxxMMMMWWWWWW@@@@@WWMMxxnnnnzz#######zzzxW#######@Mnzzzzzzzzzzzx@###
##WnzzzzzzzzzM@##WxxnzzzxMWWMxnzzzzzzzzzzzzzznnnxxMMW@@@@@@WWWWWWWWWWWWMMMMMMMMWWWWWWW@@@@@@@@@WWMMxxnnzzz###zzz#######zznW@#######WnzzzzzzzzzzznW####
##Wnzzzzzzzzzx@##WxxxnzzznMW@WMxnnzzzzzzzzzzzzzzzzznxxMMMWW@@@@@@WWWWWWW@@@@@@@@@WWWWWMMMMMMMMxxnnzzzzz#zz####zz##zzzzzznM@#######WxzzzzzzzzzzzzM#####
##WnzzzzzzzzzxW##WMxxnzzzznxMW@@WMxnnzzzzzzzzzz###zzzzzznnxxMMMMxxxxxxxxMMMMMMxxxxxxnnnnnzzzzzzzzzz####z#####zzzzz#zznnxW@######@WxnzzzzzzzzzzzxW#####
##WnzzzzzzzzznW##WMxxnzzzzzznxMW@@@WMxxnnzzzzzzzzzzzz###zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz##########zzzzzzzzzzzzzzzznnxxMW@@######@WxzzzzzzzzzzzznM@#####
##WnzzzzzzzzznM##@MxxnzzzzzzzznxMW@@@@WWMxxxnnnnzzzzzzzzzzz#######zzzzzz###############zz#zzzzzzzzzzzzzzzzznnnnnxMWW@@@@@@###@@Mnzzzzzzzzzzzzzx@######
##WnzzzzzzzzzzM@#@MxxnzzzzzzzzzznnxMW@@@@@@WWWMMxnnnnzzzzzzzzzzzzzzzzzzzzzzz##zzzzzzzzzzzzzzzzzznnnnnnnnnxxMMWWW@@@@@WWMxM@#@WnnzzzzzzzzzzzzznW@######
##Wnzzzzzzzzzzx@#@WxxnzzzzzzzzzzzzznnxMWW@@@@@@@WWWWWMMxnnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnxxMMMMWWWWWWWWW@@@@@WWMMxxnnznW#WxzzzzzzzzzzzzzznM@#######
##Wxzzzzzzzzzzx@##WxxnzzzzzzzzzzzzzzzzznxxMMMMWW@@@@@@@WWMMxxnnnnnnnnnnnnnnnnnnnnnnxxMMMMMMWWW@@@@@@@@@@@@@WWMMMxxnnzzzzznW@WnzzzzzzzzzzzzznM@########
##@xzzzzzzzzzznM@#@MxxnzzzzzzzzzzzzzzzzzzzzzznnxMMMWWWW@@@@WWMMMMMMxxMMMMMMMMMMMMMMWWW@@@@@@@@@@WWWWWWWWMMMxxnzzzzzzzzzzznW#WnzzzzzzzzzzzznM@#########
##@xzzzzzzzzzzzx@#@MxxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnxMWW@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WWWWMMMxxxnnnnnnnzzzzzzzzzzzzzzzzx@#MnzzzzzzzzzznxM@##########
##@MnzzzzzzzzzznW##WMxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnxMWWWWWWWWWWWWW@@@@@@@@WWMMxxxxxnnnnnzzzzzzzzzzzzzzzzzzzzzzznxMW##MnzzzzzzzzznxW@#####@#####
###WnzzzzzzzzzznM@#@WMxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnxxxxxxxxxxxxxxxxxxxxnnnnzzzzzzzzzzzzzzzzzzzzzzzzzzzzznxMW@@@##WnzzzzzzzznxW#############
###WnzzzzzzzzzzzxW##@WWWxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnMW@######@MnzzzzzznM@##############
###@xzzzzzzzzzzznM###@@#@WMnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznxW@@###@@W@##WxzzzzznM@###############
###@Mnzzzzzzzzzzzx@#######@WMxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzxMW@@##@WMxnxM@#@WxzznxW@################
####WnzzzzzzzzzzznM@##@@####@WMnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznxMW@###@WMxnzzzxW##@WMMW@##################
####@xzzzzzzzzzzzzxW##@@@@####@WxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznxW@@##@@WMnzz##zznM@###@@########@WMMMM######
#####MnzzzzzzzzzzznM@##@WWW@####@WxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznMW@@##@WMxnzz#####zzxW#############@MMMMM######
#####WxzzzzzzzzzzzznM@##@WMxM@###@@WMnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzxMWW@###@Wxnnzz#######zznM@#####@Wnz#n@WMMMMM######
#####@MnzzzzzzzzzzzzxM@##@MnnxM@####@WMxnzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnxMW@###@@Mxnz###########znM@#####@z.,#zzW############
######@xzzzzzzzzzzzzzxW@##@xz#zxW@####@WMnnnzzzzzzzzzzzzzzzzzzzzzzzznnnnnnnnnnnnnnnxxxxxxxxxxxMMW@#####@Wxzz###########zznW@######@zi;zMM@############
######@MnzzzzzzzzzzzznnMW#@xz##zzxW@####@@WMxnzzzzzzzzzzzzzzzzzzzznxMWWWWWWWWWWWW@@@@@@@@@@@@@@######@Wxzz#####z#######zzx@######@@M##x###############
#######WxzzzzzzzzzzzzzznM@@Mz####znxM@#####@@WMMxxnnnzzzzzzzzzznxWW@@@############################@WMnnz##############zznM@######@@###################
#######@MnzzzzzzzzzzzzzzxW@Mz######znxMW@######@@WWWMMMxxxxxxxMW@#######################@@@@@@@@WMMxz#################zzzx@@##########################
########@xzzzzzzzzzzzzzznW@Wz#########znMW@@@##########@###@########@@@W@@@@@@@@WWWWWWWMMMMMMMxxnzz####################zznxM@#######WWW###############
#########WxzzzzzzzzzzzzznW@Wn##########zzznxWW@@@################@@Wxxnnnnnnnnnnzzzzzzzzzzzzzzzzz#######################zzznxW@#####W@@###############
#########@WxzzzzzzzzzzzznW@@n#####zz######zznnnxxxMMWWWWW@@@@@@@WMnnzzzzzzzzzzz############################################zznxW@###@#################
##########@MnzzzzzzzzzzznM#@xzzz##zz#####zzz####zzzznnxxxxxMMMMxnzz#zz#######################################################zzxW@####################
###########@MnzzzzzzzzzznM#@Mzzzzz#######zzzz#############zzzzzzz###z##########################################################zxW####################
####@#######@MnzzzzzzzzznM#@xzzzzzzz#####zzzzz##################################################################################zxW###################
#############@MnzzzzzzzzxW#@nzzzzz#######zz#zzzz#################################################################################zx@##################
##############@Mnzzzzzzzx@#@n####################################################################################################zzM@#################
##############@WxnzzzzznW@#@n#####################################################################################################znW#################
##########@W@###Wxnzzzzx@##Wz#####################################################################################################zzx@################
##########WxM@##@WMnzzxW@#@xz######################################################################################################znM@###############
#########@MznMW@#@WMxxM@##Wz#######################################################################################################zznW###############
#########Wx#znxW@#@@WW@@#@xz########################################################################################################zzM@##############
#########Mz##zzxW@#######Wn##########################################################################################################znW##############
########@xz####znM@#####@xz##########################################################################################################znW##############
########Wn#######nxW@##@Mn###########################################################################################################znW##############
########Mn########zx@##@nz###########################################################################################################znM##############