;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::
:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::;;;;;;;;;;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::;;;;;;;;;::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::;;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::::::;:::
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::;--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:;:;;;;;;;;;;;;;;;;::::;;;;;::::::::::::::::::::;--;;;;;;;;;;;;;;;;-;--;;;;;;;;;
::::;:::::::::::::::::::;:::::::::::::::::::::::----;;;;;;;;;;;;;;;-;-;;;;;;--;;
:::::::::::::::::::::::::::::::::::::::::::::::;;-;;;;;;;;;;;;;;;;;;;--;;;;=--;;
:::::::::::::::::::::::::::::::::::::::::::::::;;;;;--;;;;;;;;;;;;;;;;;;;;;;--;;
::::::::::::::::::::::::::::::::::::::::::::::;;;--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
::::::::::::::::::::::::::::::::::::::::::::::;;-=-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
:::::::::::::::::::::::::::::::::::::::::::::;;;==?SSSSSSSSSSSSSSSSSS%%SSSSSS%SS
:::::::::::::::::::::::::::::::::::::::::::::;;-=?#############@@@SSS%SS#@@@####
::::::::::::::::::::::::::::::::::::::::::::;--=+######@######@@@@SSSSSS%%%%????
:::::::::::::::::::::::::::::::::::::::::::;-=-=S###@@@@@@@@@@@@@@SS%?%SS@@@@###
:::::::::::::::::::::::::::::::::::::::::::;---%##@@@@@@@@@@@@@@@@%%%????*%#@@@@
::::::::::::::::::::::::::::::::::::::::::;--;?##########@@@@@@@@@%%%??%%S?+?#@@
::::::::::::::::::::::::::::::::::::::::::--;+######@@@@@@@@@@@@@@%?%%?SS@@#?+*#
:::::::::::::::::::::::::::::::::::::::::;===S########@@@@@@@@@@@#%?????S@@@@#%+
::::::::::::::;::::::::::::::::::::::::::===S###@@###@@@@@@@@@@@@@??***?%@@@@@@S
::::::::::-+******=;::::::::::::::::::::;=-?#@#@#@@@@@@@@@@@@@@@@@?*????%@###S*+
::::::::-*??????????*-:::::::::::::::,::;-+########@@@###########@??***%%#@S+=??
:::::::=*??????%??????+::::::::,:,,,,,,;-=S#########@#############?%%%%%%S+-=+:,
::::::-*?%%%%%%S%%%%%%?+:::::::,,,,,,,,;-%############S###########SS%=-==;::,+=-
::::::*?S%%%#S%SSS%S%%%%;:::::::,,,,,,,;?############SS#############S-;;:::::-++
:::::;%%SSSS#SS##SSS%%SS+::::::,,,,,,,,=%%%%%%%SS%%%???%??S?*%S***+-----;::;%*?*
:::::-%SSSS#SS#S###SS##S%=-+*+++==-;;;;;;;;;:::-%*=--=*+=*S-=--=-:,,;-;::,,;@*%?
:::::;?%SS############S%%??*+?????????????*???*?%?***=***+%?*+-::--:;-;:;::-#*%?
::::::+SS#####SSSSS%%%%%??%%?*?????????????*????%?%%%?*?%?%%%%%%*=;=?-;:-::+#?%?
::::::;%###S%%%%%%%?%%%?%?%%??*?%%%??%%%%%%*%%%%%%%%%?*??%%%%%%%%%%==-;:-::+#***
;;;;;;;=%?%%%?%%%??%%%%%%%%?%S%?%SSS%%%%%%%??%%%%%%%?%%*%%%%%S%%%%%?--;==::+#*+*
;;;;;;=?*?%%?%%%%?%%%%#S%%SSS%S%%%SSSSSSSSS%*%%%S%%%%S%*SSSS%S%SS%%S#=:S*-*%#?++
;;;;;=%????%?%%%%?%%%%##SS%S##S%%SSSSSSSSSSS?%SS%SSS%SS*SSSSSSSS%SS%*-;??*###%*+
;;;;;*??%%%%%%%%%%%%%%S####SSSSSS%S#SS######S?###SS###S*S###SSSSS##**+?%*?###%*+
;;;;-%SS%%%%SS%%%%SS%%%@#####SS##S%##########?SSS##S#SS%%S########%??*S%*%#@#S*+
;;;;-%S%S%%%SS%SSSSSSSS@@@@@@@@@##S?@@@@@@@@@S%@@@@@##@%S#######SSSS%*%%??S%#S?+
;;;;-%SSSSSSSSSSSSSS###@@@@@@@@@@@@%%@@@@@@@@@?S#SS%?%S%%S??S%?SSS%#%+%S%S%%@#%+
-----%##SSSSSSSSS#####@#%SS####SS%%S?%%??%##@@#%###SS%S#####S@@@@###@?%%++??##%+
SSSSS%#############@@@#S#####@@##SS@%?%??S#@@##S#@#@@@#SS%S#%?S@@@@@S*-*+?#SSS%+
S@#S%?%#####@@@@@@@@@%?%?%%##S##SSS#SS%%%##@@##S###@@#*?%SS#SS?SS@@@@%;+=+#S#S?+
%@#%%%?%S@@@@@@@@@@#%%%S?S###S########S##S#@#@##SS#@#SS##@@##S+?+#@@#%-*=?#@S#%+
????????%S@##@@@@##SS##S%%%S@@@@##S#@@@@@@@@@@@@@@@#?SS##@@##S+?+S@@#%;=?%@@#@S*
###SS@@@@###S######S######@@@@@@@@@@@@@###SSSS%%S#@#%SSS@@@#S%+*+S@@#?;+??@@@@S*
@@@@@@@@@@@@@@##S##S#######%%%%%???%%%%%%???????%S#S?%%%#@@#S?+*=S@@@?;=?#@@@@S*
#@@@#??????*??%SSS%%%%%%?????%%%%%%%?%%%%%%????%%%%%SSS##@@@@#+?=%@@@%;=####@#S?
##@@S????????????????%%%%%%%%SSSSSS################SSSSSSSSSSS+?=**+++==++++++++
@@@S????%%%%%SSSSS#########@##########SSS%%???******++++++++++++=+*++===++++++=+
@@@@#@@@@#########SSSSS%%%%??????*************+=--===++++++++*****?*?******?****
##SSS%%%???????***************************************?*?????*****?????????????*
?*****************************************?***?********?***????????*???????**+++
**********?*****?********++++***+**?***?????**?*++****????**?????????*???????***
??????????????????****????**???*???????????????????************++++++===========
???????????????????????????**??*????????******+++=====+=======+===========++++++
?????????????????????????*?*****+++++++==++======================+++++++++++++++
?????????*******+++++==+==+==++=====================+++==++++++++++++***+*+++++*
++++++=+========+=========================++++++**++++++++++++++++++**++********
===============+++==++==+=++++++++++++++++++++++**+++==+++++++++++++*++++++*??**
+++=========+++++*+++++++++++++++===============+++++++++++++****++*++++++++++++
??**+***+++***++++++=++===========================++++++++++++++++++++++++++++==
*+++++++++++++++++++++*+++++++++==++============+=+++++++++++++==++++++++=======
++++++++++++++++++++++++++++++++++++++===++++==++++++++++++++++==-==============
++++++**+++++++++++++++++++++++++++++++++++++++++++++========-==================