;;;;;-------------------------------------%##SS*;=-+=-*SSS?****?%%+-------------
;;;;;;-----------------------------=++***?###SS=-=+*==?S?*+***?*??*=------------
;;-;;;;--------------------------+%SSSSSSS#####%???*?*S?+=**??%%???+=-----------
;;;;;;;------------------------+%S##S###########@##SS#%*=*+=++*%S%?*%*----------
-;;:;;-----------------------=%#############@@@@@@#S##*=++--==?%SS?S?@?---------
-;::;;;---------------------+S#######@@@@@#@@@@@#####S+-*+;-+*SS%#?S?@@?--------
-;;:;;---------------------=S#######@@@@@@@@@####S####+-++--+?%%SS%S%@@@=-------
;;;;;----------------------S#@#####@@@@###SSSS######@@*+=*++**?SSSS?#@@@?-------
;;;;;---------------------?#@@@@@####S%%%%%SS#######@@S+=+?*?%SSS%S%@@@@S-------
;;;;;--------------------=S@@@@@##S%?**?%SS#####S##@@@@S***??%%%S%%@@@@@#-------
;;;;---------------------*#@@@@##?+=--=+*%SS#######@@@@@#%?%%S%%%%S@@@@@S-------
-;;----------------------%#@@@@S+-;;;;;-+?%SSS####@@@@@@@@@#S%%#@#S@@@@@?-------
-;;---------------------=S@@@@#=;;;:::;;-+?%SSS###@@@@@@@@@@@SS@@%%@@@@@*=+=----
;;----------------------=#@@@@+;;::::::;-=*%SSS####@@@@@@@@@#+?@@++##SSS%?SS=---
;;----------------------+#@@@S;;:::::::;;-=*%SS###@@@@@@@@@@S+*#@??SS?%SSSS?----
------------------------+##@@+;::::::::;;--+?S####@@@@@@@@@@@%S@@#%SSS##S%%*----
------------------------*##@S;;::::::::;;--=+?S##@@@@@@@@@@@@##@@@@#S###S%?=----
----------------------;-+##@*;;::::;-=++****+*?S##@@@@@@@@@@@@@@@@@@#SS#S%S?=---
--------------------;;;-+###?*=;::;+**++=+*?%%??%S#@@@@@@@@@@@@@@@@@#S%%SS##S*--
-------------------;;;;-+##S**+-::;==-;;-==+**???%S#@@@@@@@@@@@@@@@@SS**?%?SSS+-
------------------;;;;;-=S#%----;:;--===+******??%%#@@@@@@@@@@@@@@@#S%%S?*+*S%?-
----------------;;;;;;;-=##%+---;:;-=??%%SS%?****?%S#@@@@@@@@@@@@@@S??SS%%SSS%+-
----------------;;;;;;--=?##S?*-;:--+SSS?SS%*++**?%S#@@@@@@@@@@@@@#SS%??%SSSS%+=
-;---------------;-;;;--;=S#%%*-:;-;-++++*+===+*??%S#@@@@@@@@@@@@#SS+*S###S%S?+-
-;;-------------;;;;;;--;;?%+=-;;--;:;;;;;;--=+*?%S##@@@@@@@@@@@@SS%*S####S%SS%=
-;;;-------;;;;;;;;;;;--;;--;;::---;::::::;-=+*?%%S#@@@@@@@@@@@@##%S#####SS?SSS*
;;;;;;;;--;;;;;;;;;;;;;-;;-;:::;===;:::::;--=+*?%SS#@@@@@@@@@@@@#S?%###SS%%+SS?=
;;;;;;;;;-;;;;;;;;;;;;;-;;;;:::-+++;:::::;-=+*?%%S###@@##@@##@@@SS%?###S%%%%?%*-
--;;;;;;;;;;;;;;;;;;;;;;-;;;:;-++++=::::;--=+*?%SS############@#S%%?%S#SS%%%==--
--;;;;;;;;;;;;;;;;;;;;;;--;;:-+%%**+:::;;-==+*?%SS#####SSSSSS@@@@#%%?#SS%%%?----
--;;;;;;;;;;;;;;;;;;;;;;;;-;;:-+==+;:::;--==+*?%S#####S%%SSS@@@@@@#SSSS%%%?+----
;;;;;;;;;;;;;;;;;;;;;;;;;;--;:;;;-;;::;;--=++*?%S######SS#@#S@@@@@@##S?*%?*-----
;;;;;;;;;;;;;;;;;;;;;;--;;--;;--=-;;;;;;--=++*?%S########@@??#@@@@@@@@S*+=------
;;;;;;;;;;;;;;;;;;;;;-+-;--===?%%?*=-;---==+*??%S###S####@@??@@@@@@@@@S---------
;;;;;;;;;;;;;;;-----+?%???=+SSSS?*?%*----=++*?%%S##SS####@@S%@@@@@@@@#=---------
;;;;;;;---==+*??%%%%%%%?=;;*##?*++*+=---==+*??%SSSSSS####@@??@@@@@@@S=----------
;;=++*??%%SSSSSS#SS%*=-;-=*??**%??*=---==+**?%%SSSSS#S###@@%?@@@@@@?------------
==+SSSSS#######SSS%=;--++=-;;-+**=----==+**?%%%%%SSSSS##@@@S?@@@#%=-------------
*?*####SS%??*+=--*===++=;;;;;;=+=----==+*??%%%%%SSSSSS###@@S*#%*=---------------
+*+**+=--;;;;;;;==+**-;;;-==;;-++====+**???%%%%%SSSSSSS####S+=------------------
;;;;;;;;;;;;;;;--+?*-;;;-++*=;;=*+++**???%%%%%%%%%%%%SS###?==-------------------
;;;;;;;;;;;;;;;-+*+-==-;+**?-;;;=+**++==%%%%%%%%%%%%%%SS##%+*+*?%%--------------
;;;;;;;;;;;;;;--=-;-====*?%*;;;;;;;;;;;;?%%%%%%%%%%%%%SS##@@#S%%SS=-------------
;;;;;;;;;;;;;;;;;-=--===+*?-;;;;;;;;;;;;+?%%%%%??????%%SS###???%%S+-------------
;;;;;;;;;;;;;;;;--;;=+++****+-;;;;;;;;;;=?????????????%%SS?***??%S?-------------
;;;;;;;;;;;;;;;-;;-=*?????*?=;;;;;;;;;;;-*???????*????%%*++++**?%S%-------------
;;;;;;;;;;;;;;;;;=*%%%?%%=;;;;;;;;;;;;;;;***??******??*====+++**?SS-------------
;;;;;;;;;;;;-;;-+?SS%%%%%-;;;;;;;;;;;;;;;+***********=---====++*?S#=------------
;;;;;;;;;;;;---=?%SSS%%%?;;;;;;;-----=-;;**********+;;;----===+?###+------------
;;;;;-;;;;;;---+?%SSS%%%*;;;;--=+=-=*=-;;?*******+-:::;;----=+%S###*------------
;;;;;;;;;;;;;--=*%%SSS%%+;-===+---+?=+;;;%?*****+;:::::;;;--*%SS###*------------
;;;;;;;;;;;;;---+?%%SS%%+=++=---=*%*=+;;;%S?***=::::::::;;=*%%SS###%------------
;;;;;;;;;;;-----+?%%SS%?+++*+-=+?%%-*=;;;%S%?*=::,,,::::;=*??%SSS##S------------
;-;;;;;;;;=+=---+*?%%%%+==++*+?%S%==*-;;;%#S?-:,,,,,,::-=+**?%%SSSSS??*=--------
;-;;;;;-;;+++=-=+*?%%%*==:;=?%S?=+-**;;;;%#%-:,,,,,,,:-==++*??%%???*%%?%*=------
;-;-;;;;;:+**+--=+?%%%?=;;+?%%+;;=+?+;;;;%S-:,,,,,,,:--==++****??**%?*??%S*-----
;---;;;;::=**+--=+*?%%%=:+?%?=;;-=*?=-;;;?-::,,,,,,:---=++++++****??*++??%S%=---
;---;;;:,,-**=--=+*?%%?+-??*-;;;=+??--;;;;:::,,,,,;---==++++=??****+=+++??%SS*--
;;;;;;::,,,+*+==+*?%?*++*?*-;;-=**??--;;:::::,,,:;;;--=+++==;+%***=+*+=*+??%SS?=
;;--;::,,,,-?*+++***++++*+-;;-+%*???--;;::::,,,:;;;;--=====-;=*?*+--==++-+?%%SSS
;;;;::,,,,,,+??*+++++++++-;;-+%%?%%*-;;:::::,,:;;;;;----==-;:;-++=-;-*+==+**%SSS
----:,,,,,,,:?*==+++++++-;;=*%S%%%%+;;;::::,,;;;;;;;-------;::-=*=-;;;--+*???%%S
;-+-,,,,,,,,:-===+++++++--=*%S#%%%%=;;::::,:;-;;;;;;;---;;;::;++=-;;;;+?%*++??%S
-+=-,,,,,,,:;-=++++++++*=+?%S#S%%%+-;;:::::--;;;;;;;;--;;;:::====:=+-+%S?-;-?%%*
++=-:,,,,,:;-==+++++++*?+?%SS#S%?+-;;:::::--;;;;;;;;----;;::-=-=;:=;=%S%+;:-?%?=
==-;;,,,,:;-==++++++*????SSS##%??=;;:::::---;;;;;;;;---;;::;==-=-::-?SS?-::;*??=