######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
######################################################################################################################################################
#####################################@@@@@@@@#########################################################################################################
#####################################@@@@@@WW@@#######################################################################################################
####################################@@@WWWWMMWW@######################################################################################################
################################@@@@@WWWMMxxxxWW@#####################################################################################################
###############################@@@@WWMxxnnzzzznW@#####################################################################################################
###############################@@@WWMxxzz##+###x@#####################################################################################################
###############################@@WWWMxnzz#++#++#W#####################################################################################################
###############################@WWWMMxnz#++*****x#####################################################################################################
###############################@WWMMMxxn#++***i*######################################################################################################
#############################@@@WWMMMxnnz+**ii***W####################################################################################################
############################@@@@WWMMxxnnz+**iiiiix####################################################################################################
############################@@@@WMMMxxnzn#*iiii;i#####################################################################################################
###########################@@@@@WMMxxxnzz#+i;;ii#nW###################################################################################################
###########################@@@@@WMMxxxMMxn#+iii*##M###################################################################################################
############################@@@@WMMxn##nnz#zi;i***n###################################################################################################
###########################@@@@@WWMn#+#znzzz*;*#+*x###################################################################################################
##########################@@@@WWWMxzzxz#zxxx+inxMnW###################################################################################################
##########################@@@WWWMMnnMMMMWMxMn##@x#W###################################################################################################
##########################@@WWMMMxznWW@xMxnnMn#zz+x###################################################################################################
#########################@@WWWMxxz#zMxnnnzzzMxz+**+###################################################################################################
#############@@@@@#######@@WWMMxnznzzzz##zz#xMxz*;;x##################################################################################################
#############@@@@@@#####@@@@WWMxxxxn##++##+#zxMn+i;+##################################################################################################
############@@@##@@@#####@@@WWMMxxnnz+**+++#znWx#i;i##################################################################################################
############@@@@###@####@@@@WWWMxxnzz#*****#xnxxz;;;@#################################################################################################
############@W@@@#####@#@@@@@WWMMxnzz#+*i**xxznxzi;;@#################################################################################################
#############W@@@###@@@@@@@@@WWMMxxnzz#*ii*MnxWWni:;@#################################################################################################
##############@@W@##@@@@@@@@@@WMMxxnnz#+*;ixz#zn+i;;@#################################################################################################
###############@@@@@#@@@@@@@@@WMxxxxnz#+*;i+++*i;i;;@#################################################################################################
###############@@@@W@@@@@@@@@@WMxxxxxnz+i;+##+*iii;;##################################################################################################
################@@@W@#@@@@@@@@WMxxxxxnz+ii+##++**ii*##################################################################################################
#################@@W@@@@@@@@@@WMMxnnnnz+*+##z#+++**+##################################################################################################
##################@WWW@@WW@@@@WMMxnnnzz+###znn#+#z*+##################################################################################################
###################@WWWWWWWW@WWWMxxzzz####zxxn##z#*+##################################################################################################
#######@@##########@W@@WWWWWWWWWMxnzzzz+*znnnn#+**i+##################################################################################################
######@@W@@####@@##@M@@WWWWWWWWWWxnz#zz#*#zzzz#**ii###################################################################################################
#####@@WxMW@##@@@@#@W@@WWWMMMMMMMMxnzzz#+#z##++iii;n##################################################################################################
#####@Wxz#nW@#@@W@@@z@@@@WWMMMMMMMxxnnz#####+*i;;;;W##################################################################################################
####@@Wz####x@@WWWMxn@@@@WWWWMMMxxxxxnnnzzz#+ii;::;@##################################################################################################
####@WMz#++*#MWWWWMxx@@@WWWWWMMMMxxxxxxxxnzz#*i;:;;n##################################################################################################
####@WMnz#+ii#MMMnzn+x@@WWWWWMMMMMMxxxxxxxxnz#*iii:,@#################################################################################################
###@@WMxn##*i;+nxxzz**zWWWWWMMMMMMMMMMMxxxxnnz+*i:..+#################################################################################################
###@@WWxz+****;#xxnn+**#MWMMMMMMMMMMMMMMxxxzz#i;,.`..@################################################################################################
###@@WWMz#+i*iiizxnn+*i*+xxMMMMMMMWWMMMxnnz#+i:::....n################################################################################################
##@@@@WWxz#*ii;;#znn+#+*::##MWMMMWWMMxnn#+#**i;;:,...+################################################################################################
#@@@@@WMxzzi;;;;+zzx+zz#::.:;xWWWMMMxnn#iz**i;;:,,`..i################################################################################################
@@@@@@WMnz+i;:;:;#nxznn*;i,,,:#nMMxz#z#*+z*i;:::,....:################################################################################################
@WW@@@@WWMn+*i;:;;*zzz#*++::,;:::i++#+ii*+*i;::::.....@###############################################################################################
#@W@@@@@WWn#+*;;:;:+++**++i;;::;:,::i;;::;;;;:,,,..,.,@########################################################n#@####################################
##MW@W@@WWxz**i;:::;#*i*+***i::;,,,::,,,::,:;,,,..,,..z#######################################################xi,M####################################
##MnMM@@@Mxx#+*i;:::;****i*+;:i;,:,,:...,,..,..,`.,,..,n#####################################################W#;;#####################################
##WxWMW@@Wxxxn**i;::,;i*i**+iii::;:,;:.,.,..,,,..,.,..,,M###################################################@xz;;#####################################
##@xWWW@#@WMMxz#ii;::,:i***++i;;;i:,:;:.,.....:..::,,,,.:x@#################################################Mxz;,@####################################
###MWWW@#@WMMMxz+*i;::,,;****i;;;i;,;i:,,,.,,.,,,:;:.::,.,ix@##############################################W#n#i+#####################################
###W@nMW#@WWMMMnz+i*i::,,,*+*;i;;;:;;i;,:,,,,,,..,,,.::,..,Mx@#############################################x#n*,z#####################################
#####xnM@WMWMxzznz#+i;;;:,:*ii**i;;i;i;:i::,:,.,,,,..:,,..:WWx############################################Wzzn*,x#####################################
#####M+n@Wn@Wx#+*##+iii:::,,;++iii;ii;:;i;i;,:,,,,,.:,:,..:WWMx################################MnM#######@##zn*:n#####################################
#####@*#WWz@@Mn#i*+***i:::,.,i+++#+*i;;;i;*i;,:i;:,,:,:,,..MWW#W@#############################Wi;ix######n*i#n*,n#####################################
#####@#ix@##@WWn+*;**ii;:,,,.,,inxz*i;;;***+n:*;;:,;:::,...nWMxWW@############################n;:,+#####W#+;nn*,M#####################################
#####Wx;#W*#@@WWn+iiii;;;:,,:.,.,##i#x*#M@nz#i*;::,i::,,...+MzWWWW@############################;:.i#####Mxxnxzi,@#####################################
######x++M*#@#@WMn*i;:;i;:,,:,....,*M#ixWW*z*i*;:;ii::,,...,#nxMWWW@#########################@#;:.i####@MM#:n#;,W#####################################
######Mzzni#W##@WMn+**i;;::::,,.....,zM@@z#+*#;;:ii::,,.,...#MWWWWWW@########################@+;;,+###@MMM+,z#;,@#####################################
######Wnnni#W###@WMxz+**ii;:,,,.......,:i#i;xi:,,,;::,..,..,#@@@WWWWW@#######################W#zz;x##@xMMx#,z#;:######################################
######WMMz;WM###@WWxxnz+**i;;:,,,,..,....,,,,:,,;,.::,,,,...,W@@WWWWWW@######################WznM#@##Mxnxxz:++;;######################################
######WMW*inx####@Wxxnn###+*ii::,,,.,.,,.,,,,,,;:.,:.:,,,`,..z@@@WWWWW@######################Mz#xz#@MxxxMxz::;i*######################################
######WMWii+x####@@Mxxnnnn#zz+**;;;:.........,.,,...::....,.,*W@@WWWWW@######################xn##nMxxMxMMxni,;;;######################################
######@@@+#iM####@@WMnxzz*##+*iii;;;i,,..,......,.,.:,.,..,,,,W@@WWWWWW#####################@xxnzzxMWMxMxxni,;+i@#####################################
########@+z;W####WnWW@Mnn++#+i*i;i;,:,,...````,.,,.,.:,.,.:,,.x@@@@@WWW@####################WxxxMMMMWMxMxnx*:;*z######################################
########M*ziW####W+nzW#@xni*;;**:;:,,,.,;:,,``.,,`,:..,.:.,,,.#@@@@@@W@@####################MnnnxMMMWMMMxxx#::n@######################################
#########+xnx######+iz##@Mn*iii;;;:,,.,,:i;::.,.`.,..`:;;,.,;.i@@@@@@W@@####################nzz##znxWMMMxMni:,W#######################################
#########zxnz@####Mii*W#@MWnz***i;;;;:,...,:*;,``,..`.,:..`.i..W@@@@@@@@###################@nz#++++#xMMMxMxi::########################################
#########zxznM####@+*;n#WnMxznxz+*i;::,,.,,;i,..,:,.,,,:,......*@@@@@@@@###################Wnz+**+nnMMMMxMxi:;########################################
#########zx+xn#####+n;+#@#nx+iM*:*z*ii*i:;*,::,,::i;..,,:.```.,:@@@@@@@@###################WxnxMMWWMMMMMzz+i,*########################################
#########nx*Wn#####nx**@#n*+*:z+,,;++i**::i*;**;,:,,,..`:,.```,:@@@@@@@@@##################WxxMMWWWMMxnxzii;,x########################################
#########MM*#z#####x@+ix@x*n;:zx:,.;i:izxxn+xM+:.::.,...,,.```,:@@@@@@@@@##################WxxxMMMxnzz+*#;;;*#########################################
#########@W##z#####n#zi#@@#z;,;x::,;;i;iz#M@xx#:,::.,`...:,```.,W@@@@@@@@##################Wxnzzzzz#+#**i;;*@#########################################
#########WMz@n#####MWnii@#x+*:;*;;;,;#;;#Wx#nxn:,*i,,`..`,,.``.,x@@@@@@@@@##################xxnz#zn#++**i;iW##########################################
#########Wxxn@#####@xxi;@#x+*;;ni:i,:x+:zznWx@x:::+:,...`,,..`..#@@@@@@@#@##################xnnnznn#++**i;z###########################################
#########Mnn@#######W@*;W#W*++;+*i;;:+n,x#i#MWz,*;+:,..,.::..`..i@@@@@@@#@##################xnnnnxnz++*i;*@###########################################
######@MxMzW##########+iM##+*z*;**:;;**,z#n+#nx,i:+::..,,.,,`..`;@@@##@@#@#################@xnnxxxxn#+*i*W############################################
#####@zx@#xM##########**n##nizz;i+;i;i+,:x+xM+x,;;;;,,,..`:,..`.:@@@###@#@@################WxxnxxMMxnz+*M#############################################
#####@@###Mx##########n+n##xizW;:*i;*i*:.z@Wnz*,i;:*,,,..`,,..`.:@@@###@##@@###############MxxxxxMMMxn+x##############################################
##########@z##########xzM@#@++#nin#:;:#..znM*W*,:;,*;,,,,....``.,W@@@@@@###@##############WxMxxMMMMxn+z###############################################
###########n##########nn@@@#n*@@;+x:*;i:.z*;n@W::;:;;:.,:...,````M@@@@@@###@#############WMxxxxMMxn#*i@###############################################
###########W##########Mx###@n+M#z:Mi;*#:,i:i@@@::;,;;:.:;,`.,.```n@#@@@@###@@###########@MxMxxxnn#+i;*################################################
######################@@###@xn*@W,zz:n;x:,#z@@W,*:;:::,;i:`...```z@@@@@@@###@###########WMxxnnzz#*i;;z################################################
###########################@xxiM#*ix:n,@i,izW@W;:,:,i,,;:.....```*@@@@@@@###@@#########@Wxnnnz##+*i;;W################################################
############################xM*n@x:x,n,zi:+i@@@i;;;:;.,,,:,`.`` `,W@@@@@@###@@#########@Wxnzz+++*i;;z#################################################
############################@Win@@,n:+:#;::i@@@+**+,,:,,,i:`,``  .x@@@@@@###@@@#######@Wx#zz#++**i;*@#################################################
###########################@@@+n@#;*,+;#*:zM@xMzi+:;+*;,,#,`.``  `#@@@@@@###@@@#######@Mx*zz#+**i;;+##################################################
#######################@@##@@@@z@#*,:nin#;+@@WMxi#:#Wzz;,x:`.``` `*##@@@@####@@#######WMxi+#+**i;:i*@#################################################
#######################@@@@@@@@@@@*.;Mixn:M@@#@nnzxM@W@niM;,. ``  :##@@@@####@@@######Wxxn*#***i;:n###################################################
#########################@@@@@@@@zW,;x*M+:zW@@@#M;x@@@@@x#*:,` `  `W#@@@@#####@@######Mxnnnxz;i;:*nM##################################################
##########################@@@@@@@@@z.#Mxz,+@@@@z@#x@@@@@@z#i,` ````##@@@@@@@###@@####@Mnz+nMxi,ii;n###################################################
#########################@@@@@@@@@#M,+@nn,W@W@##W+##@@WW@WWz;``````;#@@@@@@@@########@M+#+*#z**#i+####################################################
#########################@@@@@@@@##@:+@n#;*W@@#n@*@@##@@@WWWn``  ` :@@@@@@@@##########@+++**i*+*######################################################