######################################################################################################################################################
##############@WxnnxxxxMMxMM@WMMMMWWWWWMMMMxxxxnnnnxxxnzzzznnnnnnnnnnnnnnnnnnnnnnnnzznnnnnnnnnnnnnnxxxnnnnnnnzznnnnxxxxMWWW@####@@@###################
@####@@@@@@@@@Wn#+++##znnzzxWxnnnxMMxxnnnnzzz##+++##++*****++#######z###+++*****ii********************ii*********+++###nxMW@@@@@@WW@##################
####@@@@@@@@@@Mz++++#zzzz#zx@xznxMMxxxnxnnzzz#+++##*iii***++++++*****+++********iiii******ii****iiiiii**++++++++++++###nxM@@@@@@@@WW@#################
####@@@@@@@@@Wn#++++#nnzz#zWWzznMMxnxxxxxnnz#+++##+*iiii********iii*iiiiiiiiiiiiiiiii*****i;i*******++##zznnnnzz#++++##nxW@@@#@@@@@MW@################
@##@@@@@@@@@@Mz+*+##znnz##nWMzzMMxnxxxxxnnzz####++**iiiiii*+++****+***************************++##zzzzznnxMMMMxnzz#####zxW@@@@@@@@@WxW################
@#@@@@@@@@@@@n#+*+##znnzzzxMxznMMxxxxxxnnnzz####+**ii*****++++++##z#####++++***************+++#znnxxxMMMMMWWWMWMxnznz##zxW@@@@@@@@@@Wx@###############
@@@@@@@@@@@@@z#+*+zzxxxxxMxMxxxxxMWxxxxxxnzz###+****++##zzzzznzznnnxnnznz###+******++******++#znxxMMMMWWWWWWWWWWWMMxz##zxW@@@@@@@@@@@@@@###@##########
@@@@@@@@@@@@Wz+**#zzMxxxnMxMxxxxMMMMMxxxxnzz##++**++#znnxxxMMMWWWMMMMxxnnzzz#++************+#znxMMxMWW@WWWWWWWWWWWMxn##znW@@@@@@@@@WW@@@@##@##########
@@@@@@@@@@@@M#+*+#z#zzznzzxxznxxMMMWMxxxnzz###++++##zxMMMMWWWWW@WWWWWMMMxnzzz#+************+#znxxMMWWWWWMMxxxMMMMWWMxn#znW@@@@@#@@@@W@@@@@############
@@@@@@@@@@@@x+*+######zz##nn#nxxxMMMMxxnnzz##+++###zxMMWWW@@@@@@WW@@WWMMxxnnzz#+*********++##znxxMMMMMMxnz##zzzznxMMMxzznW@@##@MWWW@WWMW@@@###########
@@@@@@@@@@@@z+**+++###zn##zz#xxnxMMxxxxnzz##++++#znxMWWWWWWWWWW@@WWWWWMMMxnnzz#++*******+++##zzxxxxxxxnz#++++++++#znxMz#nW@@##@@@W@MxWMMW@@@##########
@@@@@@@@@@@@z+*+#zz#++#z#+zz#xxnnMMMxxnnz##++++#zxMMWWWMMMMMxxxMMWWWMMMMxxnnzz#+++****+++++###znnnnnzzz#++********+#znnznW@@@@@@@@@@xzWnnW@@##########
@@@@@@@@@@@Wn#*#znz+++#n#+###xxzxMMMxxnz##+++++#nxMWWMMxxnnnzzznnxxxxxxnnnnzz#+++++++++++++###zzzzzzzz##++*********+#zzznW@@@@@@@@@@@@MxnM@@@#########
@@@@@@@#@@@Mx#*#nn#**+#n#*++zMxzxMMMxnnz#+++++#znxMMMxnzz######zzznnnnzzzznz##++++++++++++++###zzzzzzzzz######++**+++###nW@@@@@@@@@W@@WMMzxW@@########
@@@@@@@@@@@MM#*+zz+**+zn#*++zMnznMWMxnz##+++++znxxxnnz##+++++###zzzzzzzzzzz##+#++++++++++++####zzznnnxnnnnnnzzz#++++++##nW@@@@@@@@WW@@@@MMMxW@@@@#####
@@@@####@@@xx#+#zz#+++zn#**+zMnzxMWMxnz#+++++#nnnnzz####++#####zzznnnnnzzzz####++++++++++++###zznnxWWWWWWWWWMxnzz#+++++#nW@#@@@@@@@@W@@@WMnznM#;x@####
@@@@###@@@@xz++zn#***+znn+*+#xnzxMWMxnz#++++##znnnz########zzzznnxxxxxxnnzzz###+++++##++#####zznxW@@WWWWMMWWWWMnzz##+++#nW@#@@@@@WWW@@@@@@W@MxnM@#####
@@@@@@@@#@@n#++nn+iii+#zz+**+nnzxWWMxz##++++###zzz######zznnxMMWWWWWWWMxxnnnz###++++###+####zznMW@@@WMn##++#nMMMnnz##++#zM@#@W@@@W@WW@@WW@W@@W@@######
@#@@@@@@#@Wz++#nz*;;*zzz#++*+znzxWWMxz##++++##########zznMMWMMMMWWWWWWWWMxnnnzz###++++++###znxMW@@@Wxz#++**i*#nxxnzz#+++zM@@@MW@@W@@WW@@W@@@@@########
@#@@@@##@@x+*+#z+i:;#zzz+++**#nzxWWMnz##++++########znnxMMxz##+#zxMWWWWWWMMxxnnzz##++++++#znxMW@@WWWMMMxxnz+++#nxnzz##++#xW@@WW@@@@@@@@WMW@@@@########
@#@#@@##@@#*++zz*;;+nznz##+*i#x#nWMxnz#++++++#####zznxxMxnz##+++#znMWWWWWWWMxxnnzz#++++++#zxMWW@@WW@@@@@@WWxz###nnzz#+++#nWW@@@@@@W@WW@W@@@@@#########
@###@###@n+z#+z#i;*zxzz###+*i+xzzMMxnz#+++++++###zznxxxxnz##++##znxxMWWWWWWMMxxnnz#+****+#nMWWW@WMxxMWWWMMMMMxn##z##+++++zMW@@@#@#@@@@@@@@@@##########
@######@x*+x#+z*;i#nxz###+**i*xzzMxxnz++++++++##zznnxxnnz###znMMWWWWWWWWWWWWMxxnnz#+**ii*+nMWW@WWxnzzxxxnznxMMxnz###+++++#xWW@@@@#@@@@@M@@@###########
@@###@@M+*#M#++ii+znnz####**iinn#xxnz#++**+++###zzznnnnnzznxMWWWWWMMWW@@WWWWMMxnz#+**ii;i+zxW@@WWMxnzzzznznnnnnnz##++**++#nMW@@@@#@@@@#WW@@@##########
@###@@M**++n#+*i*#zznz##z#**i;zx+nMxn#++**++++###zzzznnxMxMMMMMxnnnnnMWW@WWMxnnz##+*ii;;i*+nxMMxnzznnzzznnnzzzzz#++****+++zMW@@@##@@###WW@####@#######
@###@x*+#z#+++**##zzz####z+**;*n##xnn#+*++++++####zzznnxMMWMMnzzzzznxxxxMxnnnzz#+++*i;;:;i*znnnnnnnnnnzznnzzz###+*******++zMW@@@##@@##@@@##@@@@#######
@##@x**z#xMz++*#zznnzzz###+**i+zz+nnz#*****+++++###zzznxxxxxxnznnnnxxxnzzzzznz#+++**ii;;;;i+nnnnnnnnnnnnnnzz##++********++#xW@@@@@@@@@@@@@####@#######
@#@M+i#WzWWM+*+z#zxnz##z##*****n#*#z#+*******+++++###zznnnnnnnnnnnnxxxnnnnnnzz#+**iiiii;;;i*#nnnnnnnzzzzzzzz##+***iii***++#nW@@@@@@@@@@@@@@@##########
@#@M#i*x#M@M++zz#nxnzzznz#****inM#*##+*********++++++##zzznnnnnnnnxxxxxnnzzzz#++*i;;iiii::;i*#zzzzzzzzzzzzz##+**iiiii***++#nW@@@@@@@@@@@@@@@@@###@@###
@##@Wz#+*zWx+znzznxnzzznn#+*++i#Mx++#++************+++##zzznnnnnnnnnnnnz##zz#+++*i::iiii;:;i**###zzzzzzzzz##+**ii;ii****++#nW@@@@@@@@@@@@@@@@@@##@@###
@@@#@@@Wz#z#+znnnnnnzzzzxz**+#*+Mx#*++***************+++#zzzznnnnnnnzz#+##z#+++**i:,;iii;:;iii*+++++++++++***ii;;;;ii***++#nW@@@@@@@@@@@@@@@@@@@###@##
@@###@@@@Mz+#zznnnnnzzzznn+*+z#*Mxz+*******************++##zzzzzzzzz##++##++++**ii;;iiiii;;ii*ii*********ii;;;;;;;;ii**++##xW@@@@@@@@@@@@@@@@@@@###@@#
@@###@@@@@z+#zznzznnzzzzzz**+z#*xxn#+++**********i*******++++####++++++++++*****ii;;;iiiii;ii**i;iii**iii;;;;;;;;;;ii***+#zM@@@@@@@@@@@@@@@@@@@@@##@@@
@@####@@#W##zzzzzzxMn###z#**+zz*nxnz#+**********iiiiii****************+++++****iii;,;iiii;iiii*i;;;iiiii;;;;;;;;;;;ii***+#nW@@@@@@@@@@@@@@@@@@@@@####@
@@###@@@@x#zzzznznnMM#++##++#zz+#znz#++++*****iiiiiiiiiiiiiiiiii**********++***iii;:;iiii:;iii**i;::;;iiii;;;;;;;;ii***++#nW@@WWWWWWWW@@@@@@@@@@@####@
@@###@@#@n#nnzzzznnM@z#+++*+#nx++nxz#++++******iiiiiiiiiiiiiiiiiiiii******++**iiii;:;iiii::iii****i;;;;;iiiiii;;iii****+##xW@@xx@WW@@@@@@@@@@@@@@####@
@@###@@@@zzzxzz#znnx@x#+***#znx##MMn#i*+********iiiiiiiiiiiii;iiiiiiii*****+**iiiii;iiii;::iii*****ii;;;;iiiiiiii*****+##zMW@W*#@@@@@@@@@@@@@@@@@@###@
@####@@@@znxxz#*#xznWM#++**+znxz#MMxz###+++******iiiiiiiiiiii*iiiiiii*********iiiiiiii;;;::i*********iiiiiiii******++++##zM@@@nn@@@@@@@@@@@@@@@@@@@@@@
@####@@@WznWz#+izWzzMW#++**+znxn#MWxz#####++******iii**iiiii***iiiii****++*****iiiiiii;;;;:i***********i*********+++++++#zM@@@W@@@@@@@@@@@@@@@@@@@@@@@
@#####@@WznWzzi*n@xzxMz+****#znn#xWMnz####++******i*************i*******+++**iiiiii;iiiii;;ii*******************+++++++##nM@@@@@@@@@@@@@@@@@@@@@@@@@@#
@@####@@@znxzzi+nWWznxn#***++##z#xWMxz####+++*************************++++++*iiiii;;iii;;;:;ii*++***************+++++++##nM@@W@@@@@@@@@@@@@@@@@@@@#@@#
@@#####@@nzzn#*#nM@xzznz+*++#++#zxWWMnzz##++++**********************++++++++**iii;;;;iiii:::;i*+++**+***********++++++##zxM@@xW@@@@@@@@@@@@@@@@@@##@@#
@@##@###@Mz#z+#zzM@Wz#nn#+++###zzx@WMnzzz#++++++++**++++++++*+*****++++++++**iiii;;;;i;;i;;:;ii*+++*************+++++++#zMWW@nMW@@@@@@@@@@@@@@@@###@##
@###@@###@n#z#nzznWWz#nMz++###znzxWWWxzzz#++++++++++++++++++++****+++++++++*iiiiiiiii;;:;i;;;ii*+++***********++++++####nM@WWzx@@@@@@@@@@@@@@@#@######
@@##@#####M##nMzzznn##nMz+###zzzzxMWWMnzz##+#+++++++++++++++++++++++++++++*i;;iiiiiiiiiiiiiiiii**+++*++******+++++++####nW@@@zx@@@@@@@@@##@####@@@@###
@@#######@@n#xWzzz###zWMzzz######xMMWMxzz####+++++++++++++++++++++++++++++i;;;iiiii******iiiii***++++++*****+++++++####zxW@@@nx###@@##@@#######@@@@###
@@#@@@@@#@#M#M@nzzz##znzzxxz####zxMMMMxzzz########+++++++++++++++++++++#+*iiiiiii**********ii*****+++*******+++++######zMW@@@nx#########@#####@##@@@@#
@@@@@@@@##@x#M@nzz###zz#zxxxnz##zxMMMMxnzz#########++++++++++++++++++++++**ii**********************+++******++++######znMW@@@nM###########@###@##@@@@#
@@@@#@@@##@n+n@x#####z##zxMMxnz#zxMMWMMxnz#########++++++++++++++++#+++#++***********++++******+++*++******+++++####zznxW@@@@xx@############@@@#######
@@@@@@@@@@@z+n@x#+##z+:+nWWMxn##znMWWWMMnnz###########+++++++++++++++++##+++++#++++++++++++**++##+**++****+++++#####zznMW@@@@MxW@##########@@@@@######
@@@@@@@@@@@n#M@M#+nxx#;+M@WMz#####xWWWWMxnzzz##########+++#+++++++++#######zzznn####+++++++++#zz#+********++++#####zzznM@@@@@MxW@###########@@########
@@@@@@@@#@@n#W@M+#MWWWnzWWxzzxn#++zMWWWMxnnnz##############+++++++++#####zznnxMWWxz##########nxnz+*******+++++#####zzznW@@##@WMW@############@########
@@@@@@@@#@@M+M@x#zWMx@nnWxzxWWnz###nMWWWxnnnzzzz##zz######+##+++++++#####znnxxMMWWMnzzzzzzzzxxxn#+*******++++++####zznxW@@##@WW@@####################@
@@@@@@@@@#@W+nWz#nWWnMznxxnW@Wn####zxWWMMxnnzzzzzzzzz#######++++++###++##zznxxMMMMMMnzzzzznMMnz#+*******++++++####zzznMW@@#@@nx@@####################@
@@@@@@@@@##@##x#zx@@xn#zxWM@@Wz#+##znWWWMxxnnzzzzzzz######+++++++#+++++++##zznMWWWWWMnnnnxWWxz#++**i*****+++++####znnxMW@@@@@n+@@####################@
@@@@@@@@@@#@x+##zM@@Wz#n@MM@@Mz++++#zMWWMxxxnzzzzzz########++++++++++++++++###zxWWWWMxxxMxxxzz##+**iii***+++++###znnnxMW@@@WWMzW@##########@@@@######@
@@@@@@@@@##@@z#znM@@@n#M@MM@Wx#++++#zxWWWMxnnnnzzzzz#####+#+++++++++++***++##zznxWWWWMxxxxxxxnz#++*iii***+++++##zznnxMW@@##@@WnMW#######@@@@@@@#######
@@@@@@@@@@##@@zznxM@@z#nWxM@Wx#++++#zxWWWMxxnnnnzzzz#####++++++++++++***++#znnxxxMMWMMMMMMWMxnz##+***ii**++++++#zznnxMW@@@@@@@WW@#######@@@@@@########
@@@@@@@@@@###@xznxnMMzzzznW@Mx#+*+++#nWWWMMxxnnnnzzz######+++++++++++++++##znnxxxxMMMMMWWWMMxxnzz#++++***+++++##zznnxMW@@@@@@@@@@@###@################
@@@@@@@@@@@##@Mzxxz#++##+znxxn#+++++#nMWWMMxxnnnnzzzz####++++++++++++++##zznnxxxxxMMMMWWWWMMMxnnnzzz##++++++++#znnxxxMW@@@@#@@@@@@@##@@@##############
@@@@@@@@@@@@@@@MMxnz+++++z++zx#+++++#nMWWWMxxnnnnznzzz###+++++++++++++#zzzznxxxxxxxxxxMMMMMMxxxxxnnzz#####++###znxxxxWW@@@@#@@@@@W@@@@@@@@@###########
@#@@@@@@@@@@###@@WWxz###nxz#nnz#++++znMWWWMxxnnnnznzzz####+++++++#####znnnnnnnxnnxxxxxxMMxxxxxxxxxnnnzzzzz####znnxxxxWW@@@@@#@@@@@W@@@@@@@@@@@########
@#@@@@@@@@@@@###@@@Wn#znnxzzz###+++#znMWWWMMxnnnnnnnzzz###++++++#zzzzznnnnnzznnz#zzzzzznnnnnxxnxxxxxnnzzzzz#zznnnxxxMW@@@@@@@@@@@@@W@@@@@@@@@@@####@##
@#@@@@@@@@@@@##@@##@xzxMxxzz##++++++#nMWWWMMMxxxnnnnnzz#########zzzzznnnnzzz###++****++#++###zznnnnnnnnnnzzzzznxxxxxMW@@@@@@@@@@@@@WW@@@@@@@@@@#@##@@#
@#@@@@@@@@@@@##@##@@M#MMxMnz##++++++#nMWWWMMMxxxxnnnnnzz#######znnnnnnnnnzz#++++++++***++++++####znnnnnnnnzzzznxxxMxM@@##@@@@@@@@@@@W@@@@@@@@@@@###@##
@#@@@@@@@@@########@MzMMxMMxnn++++++#zxMWWMMMxxxxxxxxnzzzz#####znnnnnnnnz######zzznz#++##zz#######znnnnnnnnzznxxxxMMWW@@#@@@@@@@@@@@@@@@@@@@@@@@######
@@@@@@@@@@@######@@#MzMxnxMMWn++++++#zxMWWMMxxxxxxxxxnnzzz####zznnnnnnnnz##zznnxxxxxxnnxxxxnnnnz##zznnnnnnnnnnxxxxxMW@@##@@@@@@@@@@@@@@@@@@@@@@@@@####
@#@@@@@@@@@#######@#WzMznxxM@n+**++#+znMWWMMMxxxxxMMxxnnnzz####znnnnnnzzzzznxxxMMMxxxxxxMMMMxxxnnzznnnnxxnzznxxxxMMWW@@##@@@@@@@@@@@@@@@@@@@@@@@@@####
@@@@@@@@@@@##@@###@@WznznnzW@n+#++*+*+znMWMMMMxxxxMMMxxxnnz###znnnnnnznnnxxxMWWW@WWWMWWWWWWWWWMxxnnxnnnxxxnnxxMMMMMW@@##@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@##@@####@@z##xzzW@n++*+***:#zxWWWWMMMxxMMMxxxnzzz#zznnnnnznnxxMMWWMMxxMMWWWWWMxnznxMWMMxxxxnxxnnnxMMMMMWW@@@##@@@@@@##@@@@@@@@@@@@@@@@@@@@@
@###@@@@@@###@@####@@n+#nzxWWz+*i*+#+;#zxWWWWMMMxxMMMMxxxnnzzzznnnnnnnnnnnnnzzz###znxxxnz#+*+#zzznnnnnxnxnnxxMMMMMWW@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@
@##@@@@@@@###@@@###@@n+z#nM+xz++;#*i**+znMWWWWMMMMMMMMMxxxnnzzzznnnnnnnzz########++++++*****++++##znnxxxxxnxxMMMxMWMW@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@
@##@@@@@@@###@@@@##@@n##zMMxxz+++;++;zn#zMWWWWWMMxMMxMMMMMxnzzzznnnnnnnzz########++*******+*+++####znnxnnnnxMMWMMMWWW@@@@@@@@@@###@@@@@@@@@@@@@@@@@@@@
@#@@@@@@@@###@@@@@@@@#+#nMx@Wz++++z#+#+#zxW@@WWWMMMMMMMMMMxnnzzzznnnnnzz##zzz###+++*******++*++####znnxxnnnxMMWWMMMMW@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@##@@@##@@@M##zMxnWM#+nn+****+#zxMW@WWWMMWWMMMMMMMxnzzznnnxnnz#####z##++++####++++**++++##zznxxnnxxMMWWMWMxW@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@#@@@@#@@@@z##zWxnxx#++******+#znxM@@WWWMWWMMWMMMMxnnnnnnxxnzz#z######++######z###++++++#zzznxxxxxxxMWWWWxnW@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@
@#@@@@@@@@#@@@@@@@@M##zzWxznx#+++*****+#znxMW@WWWMWWWWWMxMxxxxxxxxxnnzzzz########zznnnxxxnz#+++++#zznnnxxxnxxMW@@Wxx@@@@@@@@@@@W@#@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@W@@@@@n##xnMnzMM#+++*****+#znxMW@WWWWWWWWWWMMMMxxxMMMxnnzzzz######zznxMWWWWWxnzz++++##znxxxMxxnMWW@@Wxx@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@
@#@@@@@@@@MW@@@@@@W##z@Mnnn@M#+++*****++#nxMW@@WWWWWWWWWWMMMMMMMMMMxnzzz######znnxMWWWWWWMxxz#+++##znxxxxMxnxWWW@Mnx@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@
@#@@@@##@@W@@@@@@@n##M@Wzzx@x#++++****++#nxMW@@@WWWWWWWWWWWWWWMMMMMxnnzz#####zznxxMWWWWWWMMxnz#####znxMMxMMxMWWWWxzx@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@##@@@@@@@@@Wz+#W@WzzM@n+++++**++++#znxWWWWWWWWWWWWWWWWWMMMMMxxnnnzz####znnxxMWWWWWWMMxnz#####znxMMMMMMMWWWWxzx@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@##@@@@@@@@@x#+n@@MzzWWn++++++**+++#znxMW@@@WWWWWWWWWWWMMMMMMxxxnnnz###zznnxxMWWWWWMMxnzz####znxMMMMMMMMWWWMnzx@@@@@@@@@@@#@#@@@@@@@@@@@@@@@@@@@@
#########@@#####@xznW#@xxnWWxzzzzzzzzzzznnxMWW@@@@@@@WWWWWWWWWWWWWWMMMMxxnnnnxxMMMW@@@@WWWWMxnnnnxxMMMWWWWMMWWWWMxxM@#######@@###########@@@@@@@@@@@@@