########################################################################@@@@@WWWWW@@@@############################################################
##################################################################@WMxxnnnnnnnnnnnnnnnnnxW@#######################################################
###########################################@#znW###############WMnnnnnnnnnnnnnnnnnnnnnnnnznnxM@###################################################
###########################################n***+z@##########@xnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnM@################################################
##########################################@#*****#znxxM@##WxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnznnM@#######WMn###n@##############################
##########################################M+***********+zxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnM@###Mz+******#@#############################
##########################################n**************+#nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnM#x+*********n#############################
##########################################z****************#nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnxn+*********+xxxxxxMM@####################
###########################@WMMxMMM@#####@#*****************#nnnnnnnnnnxxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz#+***+****znnnnnnnnM###################
########################@MxnnnnnnnnnxM@##W+******************znnnnnnxxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn#++##+**+nnnnnnnnnx@#################
######################@MnnnnnnnnnnnnnnnM@W+******************+nnnxxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnzzz#+**znnnnnnnnnx@################
####################@Mnnnnnnnnnnnnnnnnnnxx+*******************nnxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnxnzz++#nnnnnnnnnnx################
###################@xnnnnnnnnnnnnnnnnnnnnn+******++**********+nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnxzz##xnnnnnnnnnnM###############
##################Wnnnnnnnnnnnnnnnnnnnnnnn+*****+zz*********+nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnxnz#znnnnnnnnnnn@##############
#################@nnnnnnnnnnnnnnnnnnnnnnnn+****+zzz+*******#nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnxz++#nnnnnnnnnnx##############
################@xnnnnnnnnnnnnnnnnnnnnnnnn#***+#zzz+*****+#nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn+#xnnnnnnnnnnW#############
################xnnnnnnnnnnnnnnnnnnnnnnnnxn#+*+zzz#*****+nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnxnz#+#nnnnnnnx#############
###############Wnnnnnnnnnnnnnnnnnnnnnnnnnn++#+#zzz#***+zxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnxxn#+**#nnnnnnW############
##############@nnnnnnnnnnnnnnnnnnnnnnnnnnn#*+zzzzz++#znnnnnnnnnnnnnnnnnnnnnnnnxxnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnxzz+**+#nnnnx############
##############Mnnnnnnnnnnnnnnnnnz#++******+##znnnnnnzznnnnnnnnnnnnnnnnnnnnnnnxxnnnnnnnnnnnnnxnnnnnxxnnnnnnnnnnnnnnnnnnnnnxnzz+***+#nnn@###########
##############nnnnnnnnnnnnnnnz#+***********+zznnzzzzzznnnnnnnnnnnnnnnnnnnnnnxMxnnnnnnnnnnnnnMnnnnnxMxnnnnnnnnnnnnnnnnnnnnnxnzz+****+#nW###########
#############Mnnnnnnnnnnnnnz#*************##znnxnnzzznnnnnnnnnnnnnnnnnnnnnnxMxnnnnnnnnnnnnnxMxnnnnxMMxnnnnnnnnnnnnnnnnnnnnxxzz#******+#nW#########
#############Mnnnnnnnnnnnn#**************+zzznxnnnxxxxnnnnnnnnnnnnnnnnnnnnxMMxnnnnnnnnnnnnnxMxnnnnxMMMxxnnnnnnnnnnnnnnnnnnnxz#+*********+n########
#############nnnnnnnnnnnz+***************#zzznxnnnnnxnnnnnnnnnnnnnnnnnnnnxMMxxnnnnnnnnnnnnnxMxxxnnxxMMMxxnnnnnnnnnnnnnnnnnnx#***********#@########
############@nnnnnnnnnnn+****************zzzznxnnnnnxnnnnnnnnnnnnnnnnnnnnxMMxxnxxxxxxxxxxxxxMMxnxxxxnMMMxnnnnnnnnnnnnnnnnnnnz**********#@#########
############Wnnnnnnnnnnn#***************+zzz#znxnnnxnnnnnnnnnnnnnnnnnnnnxMMxxxxxxxxxxxxxxxxxMMxxxxxx*zMMxxxxxxxxxnxxxxxnnnnnn+********+x##########
############Mnnnnnnnnnnnn+**************+zz#+zzxnnnxnnnnnnnnnnnnnnnnnnxxMMMxxxxxxxxxxxxxxxxxMMxxxxxx+inMMxxxxxxxxxxxxxxxxnnnx#********zn@#########
############nnnnnnnnnnnnx#+*************+#+**nznnnxnnnnnnnnnnnnnnnnnxxxxMMxxxxxxxxxxxxxxxxxxMMxxxxxn+;ixMMxxxxxxxxxxxxxxxnxnxz*******+nn@#########
###########@nnnnnnnnnnnxxxz+****************+nznnnxnnnnnnnnnnnnnnnxxxxxMMMxxxxxxxxxxxxxxxxxzMMMxxxxn#;;*xMMxxxMxxxxxxxxxxxxnnn*******nnn@#########
###########Wnnnnnnnnnnnxxxxz+***************#zzznnxnznnnnnnnnnxxxxxxxxxMMxxxxxxxxxxxxxxxxxx*xMMxxxxnn;;;#MMxxxMxxxxxxxxxxxxxnn+*****+xnn@#########
###########MnnnnnnnnnnxxMxnnn#**************zzzzxxnznnnnnnnnxxxxxxxxxxMWMxxxxxxxxxxxxxxxxxzixMMxxxxxn;;;;nMMxxxMxxxxxxxxxxxxnx+****+nxnx@#########
###########xnnnnnnnnnnxMMnnnznz************+nzzznxnznznnnnxxxxxxxxxxxxMWMxxxxxxxxxxxxMxxxni;nMMxxxxxx:::;*xMMxxMMxxxxxxxxxxnnx#***##+znx@#########
###########nnnnnnnnnnnxMxnnnnnn#***********zzzzznxnzzznnnxxxxxxxxxxxxMWMxxxxxxxxxxxxMMxxx#;;zMMxxxMxx:,:;;#MMxxMMxxxxxxxxxxnnxn###+**+nn@#########
##########@nnnnnnnnnnxMMxnnnnnzz+*********+##zzznxznzznnnxxxxxxxxxxxxWWMxxxxxxxxxxxMWxxxni;;zMMxxxMxn:..:;ixMxxMMMxxxxxxxxxxnxxnz+****#nW#########
##########@nnnnnnnnnnxMMnnnnnn++z+********#*+zzznnznzzznxxxxxxxxxxxxMWWxxxxxxxxxxxxMMxxx#;;;#MWxxxMxx;...:;#MMxMWWMxxnxxxxxxnnxzz+*****zW#########
##########@nnnnnnnnnnxMMnnnnn#**+#+******#+**+zznnzzzzznxxxxxxxxxxxxMWMxxxxxxxxxxxMWMxxni;;;#MWxxxMMxi....:ixMxxMWMxxxnxxxxnnnxzz+*****+M#########
##########WnnnnnnnnnnxMxnnnnn****+#+***+z+***+#znnzzznzxxxxxxxxxxxxMWWMxxxxxxxxxxMMWMxx*;;:;+MWxxxMMxi..`.,;zMMxxMWMxxnnnnxznnxnz******+x#########
##########WnnnnnnnnnnMMxnnnn#******#####+*****#znnzznnnxxxxxxxnxnxxMWWMxxxxxxnxxxMWWMxz;;:,:+MWxxxMMx*..``.:*MMxnxMMxxnnnnnnnnxn#*****+zW#########
##########WnnnnnnnnnnMMxnnnn+********++********zxnnnxnnxxxxxxxnnnxxMWWxxxxxnxnxxMWWWxxi;:,.,*MWMxxMWx*..``..;nMxx+MWxxxnnnnnnxxn+****+nnW#########
##########MnnnnnnnnnnMMnnnnz*******************#xnnxxxxxMxxxxxnnxxMWWMxxxxxnnxxMMWWMx#;::..,*MWMxxxWx+..```.,#MMx*nMMxxnnxnxnxxn+****zxnW#########
##########MnnnnnnnnnnMMnnnn#*******************+nnxxxxxxMxxxxnxnxxMWWMxxxxxxnxxMWWWMni;:....iMWxxxzWM+..````.iMMx++MMxxnnxxxnxxz****#xxnW#########
##########MnnnnnnnnnnMMnnnn+*******************+nxxxxxxMxxxxxxxxxxWWWMxxxxxnxxMWWWWx*;:,.`..;MWxxx+MM+..```..:nMx+ixMMxnxxxxxxxz***+nxxxW#########
##########MnnnnnnnnnnMMnnnz********************+nxxxxxxMxxxxxxxxxMWWWxxxxxxxMMWWWWM#;;,..`..:xWxxx*MM+..````..#Mx+;zMMxxxxxxxxxz***zxxxnW#########
##########MnnnnnnnnnnMxnnnz###++***************+xxxxxxxMxxxxxxxxxMWWMMxxxxxMMMWMxWxi;:..```.,xMxxziMM+..````..iMM#;*MWMxxxxxxxxz**zxxxxn@#########
##########WnnnnnnnnnnMxnnnnnnnnnz#*************+xxxxxxMMxxxxxxxxxMWWMMxxMMMMMWMzMM+;:..````.,MMxx#;MM#..````..,xM#;;xMMxxxxxxxxn+zxxxxxn@#########
##########Mnnnnnnnnnnxxnnnnnnnnnnxn#+**********#xxxxxxMMxxxxxxxxMWWWMMxxMMMMWM#nMz;:..````..,xMxx*;MM#..`````..zM#;;zMWxxxxxxxxxnxxxxxxx@#########
##########WnnnnnnnnnnxxnnnnnnnnnxMMMxz++*****+#xxxxxxxMxxxxxxxxMMWWWMMMMMMMWMz+Mxi;,``````..,xMxxi;MM+..`````..#M+,;+MWMxxxxxxxMxxxxxxxx@#########
##########WnnnnnnnnnnxxnnnnnnnnnMMMMMMMxnnnnnxMMxxxxxxWxxxxxxxxMMWWWMMMMMMWMzinM+;,.```````.,xMxx;;MM+..`````..*M+,:iMMMxxxxxxxMxxxxxxxx@#########
##########@nnnnnnnnnnxxnnnnnnnnxMMMMMMMMMMMMMMMMxxxxxMMxxxxxxxxMMWWMMMMMWWWni+Mz;,.````````.,xMxn,:MM+..``````.;M+.:;nMMxxxxxxxMxxxxxxxx@#########
##########@nnnnnnnnnnxxnnnnnnnxxMMWMMMMMWWWWWWWWxxxxxMMxxxxxxxxMMWWMMMMWWMniinni,..````````.,xMxz,:MM+..``````.;x+.,;#MWMxxxxxxMxxxxxxxx##########
##########@nnnnnnnnnnxxnnnnnxxxxMWWWWWWWWWWWWWWWMxxxxWMxxxxxxxxMMWWMMMWWWz;;#x*:.``````````.,xxx#,;MM+..``````.:x*..:+MWMxxxxxxMxxxxxxxx##########
##########@nnxnnnnnnnnxnnxnxxxxMWWWWWWWWWWWWWWWWMxxxMWMxxxxxxMMMWWWMMWWMni;;x+:..``````````.,xxx*.;MMi..``````.:x*..,iMMMxxxxxxMxxxxxxxx##########
###########nnnxxxxxxxnxxxxxxxxxMWWWWWWWWWWWWWWWWMxxxMWMxxxxxMMMMWWWWWWMz***##:..............,xxx;.;MM;..`.```..,xi...;xMMxxxxxxMxxxxxxxx@#########
###########nnxxxxxxxxxxxxxxxxxxMWWWWWWWWWWWWWWWWMxxxMWMMxxxMMMMMWWWWWM#;:,iz*i:,............,xxx:.;MM:.........,x+;..:nMMxxxxxxxxxxxxxxx@#########
###########nnxxxxxxxxxxxxxxxxxxMWWWWWWWWWWWWWWWWMxxxMWMMMMMxMMMMWWWWM+:,.,#:..:;*+#+*ii;:;ii:xxz,.;Mx,...,::iii*n:...:#MWxxxxxxxxxxxxxxx@#########
###########xnxxxxxxxxxxxxxxxxxxWWWWWWWWWWWWWWWWWMxxMWWMMMMMMMMMMWWMni,...*:.......,;i*+###+;:xn+..;Mz....:i+i,.,z....,+MWxxxxxxxxxxxxxxx@#########
###########xnxxxxxxxxxxxxxxxxxMWWWWWWWWWWWWWWWWWMMxMWWMMMMMMMMMMMx+:....;:..................;xni..ix#..`.......,#..`..*MWxxxxxxxxxxxxxxx##########
###########xnxxxxxxxxxxxxxxxxxMWWWWWWWWWWWWWWWWWMMMMWWMMMMMMMMMxz;...``,;..`````````..,,,,,,;xn:..*x*..`..,,::.,+..`..iMWMxxxxxxxxxxxxxx##########
###########MxxxxxxxxxxxxxxxxxxMWWWWWWWWWWWWWWWWWMMMMWWMMMMMMMMxx:...```...``````````:;;:;i+#*xz...*x;.``.,:*i..,i..`..;MMMxxxxxxxxxxxxxx##########
###########MnxxxxxxxxxxxxxxxxxWWWWWWWWWWWWWWWWWWMMMMWWMMMMMMMMxx,..`````.```````````......,izx+...+n,....;*,...,,.``..:MWMxxxxMxMxxxxxxx##########
###########WxxxxxxxxxxxxxxxxxxWWWWWWWWWWWWWWWWWWMMMMWWMMMMMMMMxx,..``````````````````.......+n;...#+..``.i........```.iMWMxxxxMMMxxxxxxx##########
###########WxxxxxxxxxxxxxxxxxMWWWWWWWWWWWWWWWWWWMMMWWWMMMMMMMMxn,..`````````````````........+z,...z;..``....````````..#MWMxxxxMMMxxxxxxx##########
###########WxxxxxxxxxxxxxxxxxMWWWWWWWWWWWWWWWWWWWMMWWWMMMMMMMMxn,.`.....................::,.#+....#..```..........`..,nMWMxxMxMMMxxxxxxx##########
###########WxxxxxxxxxxxxxxxxxMWWWWWWWWWWWWWWWWWWWMMWWWMMMMMMMMxn,...:,...,;:,,,,,,,:;ii;:...#;...:i..```.,i;:,,.....::xMWMxxMxMMMxxxMxxx##########
###########WxxxxxxxxxxxxxxxxxMWWWWWWWWWWWWWWWWWWWMMWWMMMMMMMMMxn,..;nxz*i::;;iiii;;::::::...#,.`.;,.````.:,:;iii;:izniMWWxxxMMWMxxxxMxxx##########
###########@xxxxxxxxxxMxxxxxMWWWWWWWWWWWWWWWWWWWWMMWWMMMMMMMMMxn,...;xWWWMMxxxnnnnxxxMMxi..,*..`.:..````.,znz##znMWWx#MMWxxxMMWMxMxxMxxx##########
###########@xxxxxxxxxxMxxxxMMWWWWWWWWWWWWWWWWMMMMMMWWWMMMMMMMMxn,...iMM##nMMMMWWWWWWWWWMz+,::.``..``````.+MWWWWWWWMWMnWWWxxxMMWWxMxxMxxx##########
###########@xxxxxxxxxxMxxxxMMWWWWWWWWWWWWWWMzi;i+xMWWWMMMMMMMMxn,..iMni;;;#+ii*nnxxnnxxx#:.:..````````..,ii+z#**nxnxMMWWMxxxMMMWMMxxMxxx@#########
###########@xxxxxxMxMMMxxMMMMWWWWWWWWWWWWWM*,...:xMWWWMMMMMMMMxx,.;xni;;::*....;nxM#:n#:*#i...``````````...;+,.:nxznxMWWMxxxMxMWMMxxMxxx@#########
###########@xxxxxMMxMMMMMMMMMWWWWWWWWWWWWW#,....,xMWWWMMMMMMMMxn,,#W+;,.``*:...;nWWz*n+...:..``````````.`..:zi::nx#nnMWWMxxMMxxMMxMxMxxxW#########
###########@xxxxxMMxMMMMMMMMMWWWWWWWWWWWWM;..*+++xMWWWMMMMMMMMxn:,xW#:````in*i*#nWWzzn*....```````````````.,nnxxnx+nzMWWMxxMMxxMWxMxxxxxW#########
###########@xxxMMMMMMMMMMMMMWWWWWWWWWWWWWM:.:i;;inMWWWMMMMMMMMxx:;zMn.````,nnzz#zWx+#n;..`````````````````.,xzxM#x*z#MWWMxxMxxxxMMMxxxxxW#########
###########@xxxMMMMMMMMMMMMMWWWWWWWWW@@WWM,.,:;;;nMWWWMMMMMMMMxx:,,#M:````.+nz#++z#+#n,..`````````````````.,x##+#n*inWWWMxxMxxxxMMxMxMxxM#########
###########@xxMMMMMMMMWMMMMMWWWWWWWWW##WMM:.,:;;inMWWWMMMMMMMMxx:..,+*`````,nz#++ii+z+..``````````````````..n#iiz#::xWWWxxMxxxxxxMxMxMxxM#########
###########@xxMMMMMMMWWMMMMMWWWWWWWWW###MM:..:;;+#MWWWMMMMMMMMxx;....;`````.:z#+++*#z,..``````````````.`....zz++x;:;MWWWxxMxxxxxxxMMxMxxM#########
###########@xxMMMMMMMWWMMMMMWWWWWWWW@####M*..::;**MWWWMMMMMMMMMxi......,:.`.;+#++***:..````````````````.....*xnn+;:*MWWWxxMxxxxxxxxMMMxxM#########
###########@xxMMMMMMMWWMMMMMWWWWWWWM######z..,:;*+MWWWMMMMMMMMMx*........:............```````````````````...,:::,,,zMWWMxMxxxxxxxxxMMMxxx#########
###########WxxMMMMMMMWWMMMMMWWWWWWW@######@:..;;;zMWWWMMMMMMMMMx*.....................```````````````````.........,xMWWMxMxxxxxxxxxxMWWxx@########
###########WxxMMMMMMMWWWMMMMWWWWWWM########n..,*;*xWWWMMMMMMMMMx+...................`````````````````````.........,xMWWMxMxxxxxxxxxxMM@xx@########
###########WxMMMMMMMMWWWMMMWWWWWWWW########@i..;i;xWWWWMMMMMMWMx#...................````````````````````..........,xMWWMMxxxxxxxxxxxxM@MxW########
###########MxxMMMMMMWWWWMMMWWWWWWWW#########M,..i;nMWWWMMMMMMWMxz,....................````````````````.`..........,nMWWMMxxxxxxxxxxxxW#WnW########
###########MxMMMMMMMWWWWMMMWWWWWWWW##########n,.,*zMWWWMMMMMMWMxn,................`...````````````````............,#MWWMMxxxxxxxxxxxxW#@xM########
###########xxMMMMMMMWWWWMMMWWWWWWWW###########z,.;nMWWWMMMMMMWMxn,..................`.````````````````.;...........*MWWMMxxxxxxxxxxxxW##MM########
##########@xxMMMMMMMWWWWMMMWWWWWWWW############z,,*xWWWMMMMMMWMxx:..................``````````````````.,...........iMWWWMxxxMxxxxxxxxW##Wx########
##########WxMMMMMMMMWWWWWMMWWWWWWWW#############n::xWWWMMMMMMWMxx;.................```````````````````...``........;MWWWMxxMMxxxxxxxxW###x@#######
##########MxMMMMMMMMWWWWWMMWWWWWWWM##############MinWWWMMMxMMWMxxi..................``.`````````````````...........:MWWWWxxMMxxxxxxxxW###WW#######
##########MxMMMMMMMMWWWWWMMWWWWWWWM###############@MMWWWMMxMMWMxx*..................``````````````````````.``......:MWWWWxxMMxxxxxxxxW####M#######
#########@xxMMMMMMMMWWWWWMMWWWWWWWM################@MWWWMMxxMWnxx+.................```````````````````````.....`...;MWWWWMxMMxxxxxxxxW####W#######
#########WxM@xMMMMMMWWWWWMMWWWWWWWW################@MWWWMMMMMWznxz................````````````````````````...```...iMWWWWMxWWxxxxxxxxW############
#########Mx@#xxMMMMMWWWWWWMWWWWWWWW@################MWWWMMxxMWzzxn,..............```````````````````````````````...#MWWWWMMWWMxxxxxxxW############
########@xx##xxMMMMMWWWWWWMWWWWWWWW@################WWWWMMxxMWn+xn,..............`.`````````````````````````````..:xWWWWWMMWWMxxxxxxxW############
########WxW##xxMMMMMWWWWWWMWWWWWWWW@################@MWWMMxxMWxixx;..``......`.`.``````````````````````````````...+MWWWWWMMWWMxxxxxxx@############
########Mx###xxMMMMMWWWWWWWWWWWWWWW@#################MWWMMxxMWM;xxi..``````````````````````````````````````````..iMWWWWWWMMWWMxxxxxxx@############
########xW###MxMMMMWWWWWWWWWWWWWWWWW################@xWWWMxxxWM#xx*..`````````````````````````````````````````..;xMWWWWWWMMWWMxxxxxxx@############
#######@x####MxMMMMWWWWWWWWWWWWWWMWM################x#WWWMxxMWM*zx#..```````````````````````````....`````````..,xMMWWWWWWMWWWMxxxxxxx@############
#######MW####WxMMMMWWWWWWWWWWWWWWxWM##############xx#iMWWMxxxMM*+xn,.``````````````````````````..;...`````....,z#WWWWWWWWMWWWMxxxxxxx#############
#######M#####WxMMMMWWWWWWWWWWWWWW#MM#############xxx;:zMWMxxxMM+inx*..````````````````````````..i*...```.`...;x##WWWWWWWWMWWWMxxxxxxx#############
######W@#####@xMMMMWWWWWWWWWWWWWM#WM@###########MMxz::+MWMxxxMW#;zx+i,..`````````````````````..+:,*,..``...,+W###@MWWWWWWMWWWMxxxxxxM#############
##############xMMMMWWWWWWWWWWWWWM#WMW#########@MxMxz::;xMMxxxMMz;+x+;*:..````````````````````.,+;.,*;.....iM#####@MWWWWWWMWWWMxxxxxxM#############
##############MxMMMMWWWWxWWWWWWWM@@MW#########MxMMMn:::zMWxxxMMn;inz;;i;....`````````````````...ii..;i..;x#######@MWWWWWWMWWWMxxxxxxW#############
##############WxMMMMWWWWxWWWWWWWM@#MM########MMMMMMx;::*MWMxxMMxi;#n;;;;*:...``````````````````..:i..,+z@########@MWWWWWWWWWWMxxxxxxW#############
##############@xMMMMWWWW@WWWWWWWM@#WM######@MMMMMMMxi:,:nMMxxxMMi;ini;:;;i;,...````````````````...,*,.,#@########@MWWWWWWWWWWMxxxxxx@#############
##############@xxxMMWWWW@WWWWWWWM@#@x@###@MxMMMMMMMx+:,:+MMxxxMM*;;#+;;;:;;;,.....`````````````...;xx:.;#M########MWWWWWWWWWWMxxxxxx##############
###############MxxMMWWWW@@WWWWWWM@##MW#@WxxMMMMMMMMx#:,,;xMxxxMM+;;iz;;:::;;::i:.....````````...:n@##Mi*iz@#######MWWWWWWWWWWMxxxxxM##############
###############WxxMMWWWW@@WWWWWWW@##MWMxxMMMMMMMMMMxn:,,:+MxxxMMz;;;#;;;:;::;;;+zi,...........:z@#####@#+*x#######MWWWWWWWWWWMxxxxxW##############
################xxMMWWWW@#WWWWWWWWWMxMxxMMMMMMMMMMMMxi:,,;xMxxMMxi;;ii;;:;;;;;i#*:*z*;,.....,*W########@ni#W######WWWWWWWWWWWMxxxxx@##############
################WxxMMWWW@#@WWWWWWxnnnMnnxxMMMMMMMMMMx+:,,:+MxxMMM#i;;;;:;;;:;;++::+xxxn#*i;*x###########@*,z######MWWWWWWWWWWMxxxxx@##############
################@xxxMWWWW@WMWWWWWxnnnMnnnnxxMMMMMMMMMn:,,,:nMxxMMi**;;:;;::;;***::#MMMMMMMxW#############;.*######MWWWWWWWWWWxxxxxM###############
#################WxxMWWWMxnMWWWWWxnnnxxnnnnnxxMMMMMMMx;,,,:*MxxMM*:;+i;;;::;i++;::zMMMMMMMMMMW###########*.i######MMWWWWWWWWMxxxxxW###############
#################@xxxWWWWxnxWWWWWMnnnxxnnnnnnnMMMMMMMx+:,,,:zMxMMz:::i*i;;;;+**:,:zMMMMMMMMMxnxW#########+.;@#####MWWWWWWWWWMxxxxx@###############
#################WxxxMWWWxnxMWWWWMnnnnxnnnnnnnxnxMMMMxn:,,,:;xxMMn:,,,:i*i;i+*:,,:zMMMMMMMMxnnnnxW@#######.:@#####MWWWWWWWWWMxxxxx@###############
################WnxMxMWWWMxnxWWWWMnnnnnnnnnnnnxnnnxMMMxi:,,,:*xxMM;:,,,::+;+#i:,,:zMMMMMMMxnnnnnnnxxW####z.,W####@MWWWWWWWWWMxxxxM################
###############WnnnxMxMWWMxxxMWWWMnnnnnnnnnnnnxnnnnxMMM#:,,,,:#xMM*:,,:+i*inz**,,:zMMMMMMMxxnnnnnnnnnxW@#x.,M####@MWWWWWWWWWMxxxxW################
##############@nnnnxMxMWWMxxxxWWWWxnnnnnnnnnnnxnnnnnxxMx;:,,,,:zMM#:,,i;:i##::*:,:#MMMMMxxxxnnnnnnnnnnnnxx,.x####@MWWWWWWWWWMxxxx#################
##############MnnnnnxMxMWMxxxxMWWWxnnnnnnnnnnnxnnnnnnnxx#:,,,,:ixMn:,,*:,:n;::i;,:+MMMMxxxxxnnnnnnxxxnnnnn:.n@###@MWWWWWWWWWMxxxM#################
#############@nnnnnnnxMMWMxxxxxMWWxnnnnnnnnnnnxnnnnnnnnnn;:,,,::#MMi::+:,:+:,,ii,:*MMxxxnxxxxnnxxxxxxxxnnn;.#nM##@MWWWWWWWWWxxxx@#################
#############MnnxxnnnxxMMWxxxxxMWWxnnnnnnnnnnnxnnnnnnnnnn#:;ii;;ixM+:;*,,,;i,,;i,,ixxxxnnxxxxxnxxnxnnnnnnn;.+nnx@WWWWWWWWWWMxxxM##################
#############xnnnnnnnnnxMMMnxxxxMWMxnnnnnnnnnxxnnnnnnnnnnnzznnnnzxMn;+:,,,:*:,:*,,:nnxxnnxxxxxnxxnnxxxnxnn*.*nnnxMWWWWWWWWWMMxx@##################
############@xxnxxnnnnnxxMMxnxxnxMMxnnnnnnnnnxxnnnnnnnnnnnn##zzznxMMz+::,,,::,:*,.,nnnxxxxxnxxxxnxxxxxnxnn+.;xxnxMWWWWWWWWWMxxx###################
############WnxnxnnnnnxnxxMxnnxxxMMxnnnnnnnnnxxnnnnnnnnnnnn####znxxMxn#;:,,,,,,*..;xxxxnznnxxxxxnxxxxxxxnn#.;xxxxxWWWWWWWWWMxx@###################
############WxxxxnnnnnxxxnxxnnxxxxMxnnnnnnnnnxxnnnnnnnnnnnz###zxxnznxz#zi:,,...i+#zznnz####zxxxxxxxxnnnxxnz.,xxxnxMWWWWWWWWxxM####################
############MxxxxxxxxxxxxxxxnnnxxxxMxnnnnnnnnxxnnnnnnnnnnnn##zxxn###xn##z*...,*z##zxnz#####zxxxxxxxxnnnxxnz,,nnxxxMWWWWWWWMxx@####################
############xxxxxxxxxxxnxxxxnxnxxxxMxnnnnnnnxxxnnnnnnnnnnnn#znxz####zxznnnn##z###zxn######nxxxxxxxxxxxxxnnn,,nnxxxxMWWWWWWMxW#####################
###########@xxxxxxxxxxxnxxxxxxxxxxxxxxnnnnnxxxxnnnnnnnnnxnxznxz######nxnz#n##n##znnz####znxnxxxxxxxnnnnnnnn:.#nnnnxMWWWWWWxM######################
###########@Mxxxxxxxxxxxxxxxxxxxxxxxxxnnnnxxxxxxnnnnnnnnnnxxxz######nxn###n##n##nnz####znxnzxxxxxxnnnnnnnzz*i#nnnnxxWWWWWMx@######################
###########@Mxxxxxxxxxxxxxxxxxxxxxxxnxxnxxxxxxxxnnnnnnnnnnxxn######nnz####nz#n#zxn#####nxn##xxnxxxz#*;:,,....,,;i#nxMWWWWM@#######################
###########WMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxnxxxxn######nnz#####zz#zznxz####zxn###xnxn+;,...............,izMMMMW########################
###########WMxxxxxxxxxxxxxxxxxxxxxxMxxxxxxxxxxxxxxxxxxxxxxxz#####nxzzzznnnxn#zznnzzz#znnz###xz+i;:......,,:::,......,;nMW#########################
###########WMMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMxxxxxxxxxxxxxxxn#zznxnnzz####nxn#zxnnnnnnnnnnzzn+;;;;:,;i*iii;;;iiii*ii:,.,n##########################
###########WMMxxxxxxxxxxxxxxxxxxxxxxMxxxxxxMxxxxxxxxxMxxxxxxnnxxn#######nxnxzzz#########znzi;;;i***;,.............:i**i+##########################
###########WMMxxxxxxxxxxxxxxxxxxxxxxxMxxxxxMxxxxxxxxxMxxxxnzznxn#######zxxzxnxz##########zi;i+#*:....................,;+M@########################
###########WMMxxxxxxxxxxxxxxxxxxxxxxxxMxxxxMMxxxxxxxxxxxxz##zxn########nxzzxnxz##########n*#+i;:........,,:::::::,......,*W#######################
###########WMWMxxxxxxxxxxxxxxxxxxxxxxxMxxxxMMxxxxxxxxxxn###znxz#######nxn##xnx###########n#i;;;;.,:i*++######+####+*:,....*#######################
###########WMWMxxxxxxxxxxxxxxMxxxxxxxxxMxxxMWMxxxxxMxxz####nxn#######zxxz##xnn##########z*;;;;i*#z##++++++++++++++++##i,..i@######################
###########WMWMxxxxxxxxxxxxxxxxxxxxxxxxxMxxMWMxxxxxxxzz###zxn########nxn###z;#nnnnnnnnzzi;;;*#nnnn#++++++++++++++++++++#*,;@######################
###########WMMMxxxxxxxxxxxxxxxMxMxxxxxxxxMxMWWMxxxxxxz####nxz#######zxxz####:*xxxxxxxxxi;;iznnnnnn#++++++++++++++++++++++#i@######################
###########@MWWMxxxxxxxxxxxxxxMxMMxxxxxxxMMMWWMxxMxxxnz##zxn########nxn###z*:;n####zzznii+nxnnnnnn#++++++++++++++++++++++zn#######################
###########@MWWMxxxxxxxxxxxxxxMxxMMxxxxxxxMMWWWMMxxxxxz##nxz#######zxxz###zi::########z*+xnnnnnnnnz#+++++++++++++++++++++z@#######################
###########@MWWMxxxxxxxxxxxxxxMMxMMMxxxxxxxMWWWMxxxxxxxzzxn########zxn####z::,iz######z#nnnnnzi,,:;iiii*+++#+++++++++++++z########################
############MWWWMxxxxxxxxxxxxxMMMxMWMxxxxxxMMWWWMxxxxxxnzxz########nxz#####,.,:z#######nMnnnz,............,z+++++++++++++z########################
############MWWWMMxxxxxxxxxxxxMMMxMWWMxxxxxMMWWWMxxxxxxxxxz#######zxxz###z;```,*z#######xnn#,............,iz+++++++++++++z########################
############MMWWMMxxxxxxxxxxMMxMMMMMWMMxxxxxMWWWMxxxxxxxMnz#######nxn####z.```.:n#######nnz,..........,;+z#++++++++++++++#########################
############WMWWWMxxxxxxMMMMMMMMMMxMWWMMMMxxMWWWMxxxxxxxxxz#######nxn####*`````:znnnnnz#nz:.....:iii*###+++++++++++++++++#########################
############WMWWWMMMMxMMMMMMMMMMMMMMWWWMMMMMMMWWMMxxxxxxxxnz#####zxxz###z,`````;iznxxxxnz,....,#nnn++++++++++++++++++++++#########################
############@MWWWWMMMMMMMMMMMMMMMMMMMWWWMMMMMMWWMMxxxxxxxxx######zxxz###*.`````i:;z#zzn#,....:znnnn#+++++++++++++++++++++#########################
#############MWWWWMMMMMMMMMMMMMMMMMMMMWWWWMMMMWWMMMMMxxxxxxzz####zxn###z:`````.*,,+##z#,....:znnnnn#+++++++++++++++++++++#@#######################
#############MWWWWWMMMMMMMMMMMMMMMMMMMWWWWMMMMWWMMMMxMMMMxxxz####nxn##zzi`````,i,,:zz+,....,znnnnnn*i+##+++++++++++++++++#@#######################
#############WWWWWWWMMMMMMMMMMMMMMMMMMMWWWWWMMWWWMMMMMMMMxxxzz###nxz##z:*,````i:.,,*+......*nnnnzi,...,i##+++++++++++++++#@#######################
#############WWWWWWWMMMMMMMMMMMMMMMMMMMWWWWWMMWWMMMMMMMMMxxMnz#zzxxz#z;,,*.``.*,..:+,.....;nnn#;,........:*###+++++++++++#W#######################
##############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WWWW@@WM;```,:```,`+,:.````,;i;:....```````````,nWWWMMMMMMWWW########################