@n****+#******************************************************************************************************#+*##*********************+**+*##*++*++z
@M#***+#+*****************************************************************************************************#+*#+***********************+*+#+*++++#n
@@z****#+*****************************************************************************************************#+*#+**********************+*+z++++**+nx
WWn****+#*****************************************************************************************************#+*#+**********************+*#z+*+*++#xx
MMx+****#+****************************************************************************************************#*+#+*********************+*+z#**+*++zxx
MMMz****#+***************************************************************************************************+#*+#*********************++*##+*++*+#xxM
MMWx+****#***************************************************************************************************+#*+#*********************+*+z++*++*+nxxx
nnxn+****#+**************************************************************************************************+#*+#***********************##+**+*+#nxxx
+###+****++*************************************************************************************i;;:,,,,:;i**##*##**********************+z#*****+nxxxM
***++*****#**********************************************************************************i:,.```    ``.,;*+*##*+********************+z+**+++#xxxxM
***++*****++*******************************************************************************;,`            ` `.,;##*********************+##***+++nxxxMM
*+++++****++*****************************************************************************;,`          `  ``  ``.;*i********************+#+*+*++#nxxMMM
++++++***i*+****************************************************************************;,`      ```........````.,;**************+*****##**+**+nxxxxMM
++++++*****+**************************************************************************i:,`     ``.,,:::::,,,..```.:i******************+#+*****#nxxxMMM
++++++****i++*************************************************************************;,.`    ``,,::;;;::,,,......,:i*****************+#****++zxxxxMMM
+++++#+***i++************************************************************************;,..    ``.,::;;;;;::,,,,..,,,:;i****************##*+**++nxxxxMMM
+++++++***i+#***********************************************************************;:,.`   `.,,::;;;;;;;::::,,,,,::;i***************+#+*****#nxxxMMMM
+++++++*****+*******************************************************************+**i:,.`   `.,::;;;;;;;;;;::::,,,::;;i************+**##*****+nxxxxMMMM
+++++++***i*#********************************************************************+*:,.`   `.,::;;;;;;;;;;:::::::::;;i***+************#+*****#nxxxxMMMM
+++++++*****#+******************************************************************+*;,.`   `..,::;;;;;;;;;;;;;;;;;;;;i**+*************+z**+**+znxxMMMMMM
+++++++*****++**+************************************************************++**;,..    `.,::;;;;;;;;;;;;;;;iiiiiii**+******+**+++*##**++*+nxxxMMMMMM
++++++#+****+++*+**************************************************************+i,.``   `.,,::;;;;;;;:::;;iiiiii****+*+*************z+**+*+#nxxxMMMMMM
++++++#+****+############+#####################################################+;,.`   ``,:::;;;;;;;;;::;;ii********+*++++++++++++++#*****+znxxxMMMMMM
++++++++*****************************+****+++++++++++++++++++++++++++++++++++++i:..````..,::;;;;;;;;;;;;;;ii*******+++++#############***+*+nnxxMMMMMMM
++++++++*****************************************i*****************************:,.````.,,::;;;;;;;;;;;;iiii********+++##n+************+*++#xxxxMMMMMWM
++++++++**********************************************************************i:......,,:;;;;;;;;;;;;iiiii****++++++##znn+************+*++zxxxxxxMMMMM
++++++++**********************************************************************;,.`..,,,:;;;;;;;;;;;;;iiii*****++++##zznxx+************++*+nxnxxxxMMMMW
+++++++#********************************************************************+*:,,,,,:::;;;;;;;;;;;;;;iii******++++#zznxxx+**********+++++#nnxxxxMMMMWW
+++++++#+******************************************************************i*;:,,:::::;;ii;;;;;;;iiiii*******+++##zznnxMx+*********++++++znxxxxxMMMMW@
+++++++#+*i********************************i***********iiiiiii;;;;;::::::::,:,,::::;;;;iiii;;;ii;iiiii********+##zznxnxMn+*********+++++#nnxxxMMMMMW@@
++++++##+****************************ii*****iiii;;::::,,,,..........````.`.`.,::;i;;;iiiiii;;iiiiiii*****+++++##znnnnxMMz*+********+++##znnxxxMMMMMW@@
++++++###*************************i:...,,::,,,,....`````````````````     ```.::::;ii;ii*iiiiiii;iii*****++++++##znnxxxMx#*******+*+++##znnxxxxMMMMW@@@
++++++###************************;,`  `  ````````       ``  `````````````.`.,::;;;i***i;iiiiiiii********++++++##zznxxMMz+******+++++###znnxxxxMMMM@@@@
+++++####*********************i*i.  ``           `````````...`...........,,:::::iiii****iiiii*****++***++++++##zznnxxMx#******+++++###zznnxxxxMMMW@@@@
+++++####**********************i, `..``````````..........,,,,,,,:::::::::::;:::;i:;;i**++*****i**+++**+++++++#znnnxxMWn+*+****++++####znnxxxxMMMW@@@@@
+++++####**********************:``.,.,.......,,,,,:,,,,,,::::::::;;;;i;;;;ii;;;;;,,.,;***+++++***+++**++++++##znxxxxMMz+*****+++++####znnxxxxMMMW@@@@@
+++++####*******************i*i.`.,,:::::::::::::;;:::;:;;;;;;;;;ii;iiiiii*:,::;i;:,,:i***+++++#++++++++##+##znxxxMMWM+******+++######znnnxxxMMW@@@@##
+++++####+******************i*:..:::::;;;;;;;;;;;;;;;;;;;iiiiiiiiiii******i:::,:i*;::;::i+++++++###++####++#zzxMMMMMWn+**+***++######zznnnxxMMMW@@@@##
++++#####+*******************i,,:;;;;;;iiii;;;;iiiiiiii;iiiii*************ii;,,,;*+*i;:::;*+#++##++###++#zzznnMMMMMMn**+****++#######zznxxxxMMW@@@@@##
++++#####+*******************i::;;iiiiiiiiiiiiii*iiiiiiii**********+++**+*;ii:::,:*++i;::;;i+z###++#++#zz##znxxMMMx#****+*++++#######znnxxxxMMW@@@@@@#
++++#####+*******************;:;iiiiiiiiiiiiiiiii****************+++++++++;i**i;,.:i++i;:;iii+z++##+*##+*znxxMMxxn#+zn+++++++#######zznnxxxxMM@@@@@@@@
++++#####+*******************;:;iiiiiiiiiii****i************++++++++++++++i*+#+;:,,:;*+*iiiiii*###+*##++##xMMMMxnnnxMx++########z#zzzznxxxxxMW@@@@@@@@
++++#####+******************i:;;iiiiii*************+*******+++***++*++++++*+i#z+i::,:;+#*iiiiii+zz*##*++;:*nMMxxMxxnnz+#########zzz#znnnxxxxM@@@@@@@@@
++++#####+**********i*******i;;ii***********ii**********************++++**+;.;+z#;:;;;*++*i;iiii+zz#+++;:izxMxxMMMxzzz+##z######zzzzznnnxxxxW@#@@@@@@#
++++#####+*******************ii***********************+**************+++**+:..:#n#iii;ii++*iii*ii*zz++i:;#xxxnnxxMxzzz###zzzzzzz#zzzznnnxxxM@##@@@@@@@
++++#####+******************i*******************+++++*************i*******+;,..:++**i;;ii*+*i;iii;*nz*;;*zxnnnnzxWMznz#zzzzzzzzzzzzzznnnxxxM@##@@@@@@#
+++++#####+++++++++++++++++******************+zxxMMMMxnzz#+++*iiiiiii*******;:.`,,;++i;;iiii**iiii;*z*;;+nxnnnnnxxxnnzzzzzzzzzzzzzzznnnnxxxM@@@@@@@@##
++++######################+****************+#xMWWMMMMMMMMMxxxnz##+**ii****i++i:,:::i++i;i;;;;iii;;i;**ii+nnnnxMxnnxxxxxnnnnnnnnnnnnnnnxnxxxM@@##@@@@@#
+++++######################++++******+*+**+nMMWWWWMMMWMMMMMMWWWWMxxz###+***+++*;i;;:;++i;;;:,::;;;iii***#nnnxxxnnnxxMMMMxxxxxxxxxxxxxnxxxxxM@###@@@###
+++###########################+++++++++++#nMWW@@WWWWWWMWMMMMMMMMMMMWWMMMxxn+:;****i;;;i+*i;::;;;;;;iii**+nnnxxxnnnxMMMMMMMxxxxxxxxxxnnxxxxxM@##@@@@###
++#############################+++++++++zxWWWWW@@WWWWWWWWWWWWWMMMMMMMWWWWWW+..:#++*ii;;;;i;;;ii;;;;;iii*+nnnnnnnzxWMMMMMMMMMxxxxxxxxxnxxxxxM@@#@@@@###
++###################################+#nxxxxxxMW@@WWWWWWWWWWWWWWWWWWWWWWWWW+:,.:i++*i;:::::;i*iiii;;iiii*nxnxnznxMMMMMMMMMMMMxxxxxxxnnxxxxxM@@#@@@@@##
+++#########################zzzz######znnznnnxMMMMWW@WWWWWWWWWWWWWWWWWWWWWW+i:,,:i++*i;:::;iiiiiiiii*ii;i#xxxMMMWWWWMMMMMMMMMMxxxxxxxnnxxxxM@@#@@@@@##
++#########################zzzzzzzzz##zzznxnxxMxnxxMMW@@@@WW@WWWWWWWWWWWW@M+*ii;::;*i;::;;;;iiiiiiiiiiiii*nxxMWWWWWWWMMMMMMMMMMxMxMxxnnxxxxM@@#@@@@@##
+++#######################zzzzzzzzzzz#zznxxxxMMxxnnnxxM@@@WWW@@WWWWWWWWW@@W+**+i;;::;:;iiiiiiiiiiiiiiiii**#xnM@WMWWWWWMMMMMMMMMxMxxxnnnxxxxMW@@@#@@@@@
+++#######################zzznnnzzzzzzznnxxxMMMxxxxnnnnxM@@WWW@@WWWWWWWWW@@n#*##**i;;:;iiiiiiiiiii*ii****+#xnW#@WWWWWWWMMMMMMMMMMMxMnnxnxxxMW@@##@@@@#
+++#####################zzzzznnnzzzzzzznnxxxMMMxxnxxnnnnnxMWW@@@W@@WWWWWW@@Mz++##i;;;;;iiiiiiiiiiiiiii**+#zxx@##@WWWWWWMMMMMMMMMMMxMxnxxxxxMW@@##@@@@#
+++####################z#zzznnnnnz##zznxxxxxMMxxxxxxnnnzzznxMWW@@@@WWW@@@@@Wz#+#z*iiii*iiiiiiiiiiiiiiii*+#zxM###@@WWWWWMMMMMMMMMMMMMxnxxxxxMW@###@@@##
+++##################zzzzzznnnnnz#zznnxxxxxxMMxxxxxxnnnnnnzzznMW@@W@@@@@@@@Wzz##z#*i*****i**iiiiii**iii*+#zM@#####@@WWWWWMMMMMMMMMMMxnxxxxxxW@###@@@##
+++##################zzzzzznnnzzznxxxxMMMMxMMMxxxxxxxnnnnnnznznxMW@@@@@@@@@@nxxnzn#+**iii***iiiii*ii*ii*+#zW########@@@WWWMMMMMMMMMMxxxxxxxxW@####@@##
++##################zzzzz##znnnxxMMMMMMMMMMMMMxxxxxxxnxnnnnnnzzznxW@@@@@@@W@xznnxxz+**iii*****iiiiiiiiii++#W###########@WWMMMMMMMMMMxxxxxxxxM@###@@@##
##########################zzznxMMMMMMMMMMMMMMxxxxxxxxxxxxxxxxxxnnnnxM@@@@@@@M#+#zxn#++*ii******iiiiiiiii*+#W############@@WMMMMMMMMMxxnxxxxxM@###@@@##
#################zz######znznxxMMMMMMMMMMMMMMxxxxxxMMMMMMMMMMMMMxxnnnxMW@@@@Wz###zxz#+*********iiiiiiiii*+#W##############@WWMMMMMMMxxxxxxxxM@###@@@##
+++##########zz##z######znnznxxMMMMMMMMMMMMMMMxxMMMWWWWWWWWWWWWWWWMMxnnxM@@@@M#znzzxz+*+++******iiii**ii**+x########@@@@@@@WWWWMMMMMxxxxxxxxM@###@@@##
+++##########zz##########z#znxxxMMxMMMMMMMMWMMMMMWW@@@@@@@@@@@@@@WWWWWMxxxMM@@xnxnnxn#+++#++****iii**iii***n@#####@@@WWWWMMMMWWWMMMMxxxxxxxxM@###@@@##
+++##########zz####zzzzz####zznnnnnnxxxxMMMWMMMWWW@@@WWWWWWWW@@@@@@@WWWWWWMMMMMxnnxxxn#*+++++****ii**i*****z@####@@WWWWWMMWMMMMMMMMMxnxxxxxxM@###@@@#@
#################zznnnnnnnzzzzzzzznnnnxxxMWWMWWW@WWWWWWWWWWWWWWWWWW@@@@@@@@@WWWMMMMMMMn+++#++++************#M@@@@@@WWWWWWWWWMMMMMMMMxxxxxxxxx@#@#@@@##
########z#######znxxxxxxxxxxxxxxnnxxxxxxxW@WMWWWWWWWWWWWMWWWWWWWWWWWWWWW@@@@@@@WW@@@@@Wx###++++*************zW@@@@@@@@@@@WWWWWWWMMMMMMxxxxxxx@#@#@@@@#
####zzzzzzz####znxxxMMMMMMMMMWMMMMMMMMMMMW@WWWWWWMMMMMMMMMWWWWWWWWWWWWWWWWWW@@@@@@@@@@@Wx#++++***++*++*****i#x@@@###@@@@@@@@WWWWWWWWWWMMxxxxxW@@#@@@@#
zzzznnnzznz###znxxxxMMMMMWWWWWWWWWWWMMMMW@@WWWWWMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWW@WWWW@@@@Wn#+++*i**+++*******+zW@W@@@#@@@@@WWWWWWWWWWWWWWMMMxMW@@##@###
xxxxxxxxxnzznznxxxxMMMMMMWWWWWWWWWWWWWWW@@@WWWMMMxxxxxxxxxxxMMMMMMWWWWWWWWWWWWWWWW@@@@@@@Wx##+**i**++*++*****+x@WWW@@@@@@@@@@WWWWWWWWWWWWWMMW@##@@####
MMMMMMMxnnznnznxxxMMMMMMWWWWWWWWWWWWWWWW@@@WMMxxxxnxxxnxxxxxMMMMMWWWWWWWWWWWWWWW@@@@@@@@@@Wnz#++***+++++++***+zW@@@@@WWWWMMMWW@@@@WWWWWWWWWWW@##@@####
xxxxxxnzzznnzzznnxMMMMMMMMWWWMWWWWWMMWWW@#@MxxnnnnnnnnxxxMMMMMMMWWWWWWWWWWW@@@@@@@@@@W@@@@@Wxz#++***+++++++*++#MWW@WWWWMMMMMMMMMW@@@WWW@@WWWWW@#######
xnzzz####zzz#zzznxMMMMMMMMMMMMMMMMMMMWW@##WxxnnnnnnnnnxxxxMMMMMWWWWWWWWWWWWWW@@@@@@@@@@@@@@@Wxz++*i*+++++++++znxMMWMMWWWWWWWMMxxMWWWW@@@@@@@WW@@@@####
zzzz#########znnxxxMxxxxxxxxxxxxMMMMWW@@#@WxnnnnnnnnnnxxxxxxxxxMMMMMMMMMWMWWWWWWWWWWWWWWWWWWWWx#+ii*++++####nxMMMWWWWWWWWWWWMMMMMMMMW@@@@@@@@@@@@@####
xMMxnzzz######zzzzznnnnnnnnnxxxMMWWWWW@##@MnnnnnnnnnnnnnnnnxxxxxxxxxxxxMMMMMMMMMMMMMMMMWWWWWWWMn#***+++##zznMWMMMWWWWWWWWWWWWMMMMMMMWW@@@@@@@@@@@@####
nMMxnnnnnnnnzzzzzzzznnnnxxMMMMMWWWWWW@##@WxnnnnnnnnnnnnnxxxxxxxxxxxxxxMMMMMMMMMMMMMMMMMMWWWWW@Wn#+++####zxMMMMMMxMW@WWWWWWWWWMMMMMMMMMW@#@@##@@@@#####
#znxxxxxxMMMMMxxxMxMMMMMWWWWWWWWWWWW@@##@MnnnnnnznnnnnnxxxxxxxxMMMMMMMMMMMMMWMMWWMMMMMWWWWWWMMxzzzz###znMWWWMMMMxMMWWWWWWWWWWWMMWMMWWWWW@@##@#@@@@####
xnzxMxxMMMMMMMMWWMMWWWWWWWWWWWW@@WW@@@#@WxnnnnnzznnnnnnxxxxxxxxMMMMMMMMMMMMWWWMMMMMMMWWWWWWWnnxnzzz#znMWWWWMMMMMMMMWWWWWWWWWWWWMMMWWWWWMW@##@@@@@@####
MxxxMMMMMMWWWWWWWWWWWWWWWWWWW@@@@W@@@@#@MxnnnzznnnnnnnxxxxxxxxxxMMMMMMMMMMMMWMMMMMMMWWWWWMWxzx@xzzznxMWWWWWWMMMMMMMMWMWWWWWWWWWWMMWWWWWMMW@@#@@#@#####
MMMWWMMMMMWWWWWWWWWWWWWWWWWW@@@W@@@@@@@WMnnzzznnnnnnnxxxxxxxxxxMMMMMMMMMMMMMMMMMMMMWWWWMMMWMW@@xznxWWWWWWWWWMMMMMMMMMMMWWWWWWWWWWWWWWWWWMMW@@@@@######
xMMMWWWWMMWWWWWWWWWWWWWWWW@@@@@@@@@@@@@MnzzzzznnnnnxxxxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWMMWWWWMWWWWWWMMMMMMMMWWWWWW@WWWWWWWWWWWWWMMMW@@@@#@@@@@
nxMWWWWWWWWWWWWWWWWWWWWW@@@@@@@@##@@@#WxnzzzzznnnxxxxxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWMMMMMMMMMWWW@@@WWWWWWWWMWWWWMWMMW@#@#WMMMM
xMMWWWWWWWWWWWWWWWWWWWWW@@@@@@@##@@@##WxnzznnnnnnxxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWW@WWWWWWWWWWWWWMMMMMMMMWW@@WWWWWWWWWMMMWMMMMMMMW#@#Wxxnn
MMMMWWWWWWWWWWWWWWWWWWWW@@@@@@###@@###MnnzznnnnnxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWMMMMMMMMMW@@@WWWWWWWWMMMMMMMMMMMMW@@#Mzzzz
MWWWWWWWWWWWWWWWWWW@@@@@@@@@@###@@###@MnnznnnnnnxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMW@@@WWWWWWWWMMMMMMMMMMMMMW@#Mzzzz
MWWWWWWWWWWWWWWWWW@@@@@@@@@@###@@####@xnnnnnnnxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMM@@@@@WWWWWWWMWWWWWWWWWWMM@@xz###
MWWWWWWW@@WWWWWW@W@@@@@@@@@##########WnnnnnnnnxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWMMMMMMMMMM@@@@@@@@@@WWW@@@WWWWWWWWW@@n####
MWWWW@WW@@@WWW@@@@@@@##@@@##########@MnnnnnnnxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWMMMMMMMMMW@@@@@@@@@@@@@@@@@WWWWMMMWWn####
WWWWW@@@@@@W@@@@@@@@##@@@##########@WnnnnnnxxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMWWWWWWWWWWWWWMMMMMMMMMMMW@@@@#####@@@@@WWWWWMMMMMWn####
WWWWW@@@@@@@@@@W@@@####@###########WMnnnnxxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWMWWWWWWWWWWWWWWMMMMMMMMMxW@@#@@@@WWWWWWWWWWWMMMWWWWn####
WWWWW@@@W@@@@@@@@@####@MW@@#####@@WMnnnnxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWMMWWMMMMW@@WWWWWWWWWWWWMMMWWWWWWWWz###+
WWWWWW@@@W@@@@@@######@WMW@@@WWWMMMxnnxxxxxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMWWWWWWWWWWWWWWWWWWWMMWWMMMMWWWWWW@@@@@@@@@W@@@@@@WWWWz###+
WWWMMM@@@W@@@@@W@@####@WWWWMMMMMMMxnnxxxxMMMMMMMMMMMMMMMMMMMMMWWWWMMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMWWWWWWWW@@@@WW@@@@@@@WW@M###++
WW@xWMWM@WM@MWWWWW@###@WMMMMMMMMMxnnxxMMMMMxMMMMMMMMMWMMMMWWWMWWWWMMMMMMMMMMMMMMMMMMMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMWWWWWWWWWWWWWW@@@@@@@@W@M#####
WWWM@@MM#WM@WW@@@W@###@MMMMMMMxxxxxxMxMxxxxxMMMMMMMMWWMMWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMWWWWWWWWMWWWWWWWWWWWWWMWWWWMMMMMWW@@WWWMMWWWWWWWW@@@@@W@x#####
WMMM@@MW#WMWWWWW@WW##@MxMMMMMMMMMMxxxxxxxxxxMMMMMMWWWWWWWWWWWWWWWWWWWWWWWWWMMMWWWWWWWMMWWWWWWWWWMMWWWWWWWWWWWWMMWWMMMMMMMWW@@WWWMMWWWWWWWW@@WWWWn+####
WWWW@@@@#@@@@#@@WMW@@WMxxxxxxxMxMMMxxxnnnxxMMMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWWWWWWWWWWWWWWWMMMMMMMMWWWWWWMMMMMWWWWWWWWWWW####+#
@@@@@@@###@@@@@WMMMMWMxxMxxxxxMxWMxnnnnnxxMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWMMMWMMMMMWWWWWWWMMMMMWWWWWWWMM####+#