;;;;;;;;;::;;;;;;==----;;;;==+==+++=+++++**+*?%?%*%SS?%%SS%%%%%=-;;;;;;;-===;-;;
;;;;;;;;;;;;;;;;=-====-;;;;;--;=====-=++=*+*+?%%???SS%%%SSS%%%%?--;--;;;;;--;;;;
:;;;;;;;;;;;;;;=-=++==-;;;;;-;----==-=+==++++?%S%%?SSS%%%SSS%%%S*-----;:::;;;;;;
::;;;;;;;;-;;;-==++++=--=--=-==--====++-=+=++?%SS%?SSSSSSSSSSS%%%=--;;;::::::;;;
:::;;;;;;-;;;-=++++++=-++==*===+====+*+=++=+*%%SSS?SSSSSSSSSSS%%%?--;:::::::;;;;
::::;;;;;-;;;=++++++==+*++?*==++++++?**++++*?%%SSS%#SSSSSSSSSSS%%%+;;:::::::::;;
:::::;;;-;;;-+++*++++++**??*+++++++??*+*+**??S%SSS%#SSSSSSSSSSS%%%=+::::::::::;;
:::::;;;-;;;+=+**+*+++***??***+++**%??*?**?%?S%SSSS#SSSSSSSSSSSS%%+-=;:::::::;;;
::::::::-;;=+=**+**++***???*?**+**?%%?????%%%SSSSSS#SSSSSSSSSSSSS%?;=-::::;;;;;;
::::::::;;-+=***+?*++***%????**?%?%%%????%S%SSSSSSSS#S##SSSSSSSSSS%-;=;:;;-----;
::::::::;;++=?*+*?*+*?*?%%?????%%%%SS?%%%%S%SSSSSSSSSSS#SSSSSSSSSSS?--=:;---;;;;
:::::::;;=++*?**??***??%%%?%?%%%%SS%%?%%%S%SSSSSS#S?#S###S###SS#SSS%=:-;;;;;;;;;
:::::;;;;*++??**??**?%%S%%%%%%%%SSSS%%%SS%S#SSSSS#S*#SS##SS##SSSSSSS*:;=;;;;;;;;
::::;:;;-**+?*+?S??*%%%SS%%%%%%SS%S%%%SSSS#SSSSS?S%+SSSS##S###SS#SS%?;;+;;;;;;;;
::::;;;;=*+??**%S%??S%SSS%%%%%%SSS%?%SSSSSSS#SS?*S?+?SSSS##S###S#SS%%-;-=;;;;;;;
::::;;;;=*+?***%#S%%SSSSS%S%S%*%S%*%SSSSS%SSSS?+?S*+*S%%%S#####S#SSS%+;;*;;;;;;;
::::;;;;===***?S##SSSS%%%SS#S?%S%*?%SSSS?S%?%?++S%??%SS?%?#######SS%S?-;*;;;;;;;
;::::;;-===+**%S####S%?S%??%####%?%????*?*++++?S####S%SSS%%@####SSS%S%=;*-;;;;;;
;;;::;;=++****SS#@#SS**++++++*??SSSS*+++++++%S#S%?*++++++*?###@#SSS%S%+-+=;;;;;;
;;;:;;;++??**?#S%+?##+++++**?********++++++*?******?***+++*##S%SSSS%S%+==-;;;;;;
;;;;;;-+++++*?SS+=-S#==+*%####SS%?+++++++++++**%%S####%?+++#S***SSS%%%*+=;;;;;;;
;;;;;;;----=*%#S*%??S;-?####@#@@@%*++++++++++*?###@@@#@#%++S??%?%SS%S%?+=;;;;;;;
;;;;;;;;;;;-+%#S*???S;-*#S*?##@##S?++=--=++++*SS@@@#S*%#S?*S?%?%%SS%%%%+=;;;;;-;
;;;;;;;;;;;;-+%*=++?S-:;*%++??%%?+*==;::-++++***SS%%*+%S?**S%?*?%SS%S%%+;;;;;;;;
;;;;;;;;;;;;;;;;;-+?S+;;=+?+=**+--;:::::-++++++++*?**%%?***S%***SSS%%%%+;-;;;;;;
;;;;;;-;;;;;;;;;;-=??*;--===++=;;:::::::;=++++++++*????****%%?*?SSS%%%%=-;;;----
;;;;;-+-;;;;;;;;;--+?*--=====-;;::::::::;=++++++++*****?**?%??*SSSS%%%?=-;;---;-
-;;;;;++---=+-;;;;--*%--======-;;:::::;--=+++++++****??***%%??%#SS%%%%?--;===-;-
-;;;::=?***?*=--*??==*=;-=====--;::::;-=+*+++++++*********?**%#SSS%%%%*--;-==-==
=-;;;;;?+???%*?SSSSS=++;--------;;:::-+*?*+++++++*******+???%#SS%%%%%?+;;;-===++
=--;;;;=+???S%?SSSSS%+*-;;------;;;::-****+++++++++****++%?%##S%%S%%?=--;;;;=++=
=;;;-;;-==??%S?%SSSSSSS*;;;;;;;;;;;;:;++**++++++++++++++*##SS#%%%S%*=-;;;;;-+=--
=----;;:=;+??%%%SSS%SSSS;;;;;;;;;;;;:::;=+++++++++++++++%#SSS%%%S%*--;;---;==---
=-;=-;:;---+*??%%S%%%%%%+;;;;;;;;;;:::::;=+++++++++++++*SS%%%%%%?+--;;--=++==--=
--;---;;;-;;;+++*?++*?*==-;;;;;;;;;;;;-==++++++++++++++%%%%??*+=;;;;;;;-=+======
;---------;;;;;--=+=;-;;;-;:::::;;;;-*%%%?++++++++++++??%?+==;;;;::;;;;-==-====-
--=-----=---;;;;;;;;;;;;;;;;;::::;;;**S#SS?++++++++++*=;-;;;;;:::::;;;------+=--
===---===-;-;;;;;;;;;;;;;;-;;;;;;;-++%S%??++++++++++?+;;;;;-;::::;;;--------=---
===----===;;::;;;;;;;;;;;;;;;;;;;;=+*SS??+++++++++*%%*=:;----;;:;;;--=---=+=----
;===-===+=;;;:;;;;;;;;;;;;;;-*+;;-**%S***++++++++?S%%?*-;;-;;;;;;;;-----===++*=-
;---==+++=---;:;;;;;;;;;-:+**?S*-+=?S+-+++++++++?%S%%*++;;;;;;;;;;;----=----=+=;
--==*+===++==-;-==-----=;:+**?S*?=?S?::=++++++*?*%S%%*+*+=--==========++===+++++
++==?++++++=+++=++====+=::=*?%S?++%#-:;-+++++??**%SS%*++????????????????%%*?????
**++*+**++++++++*++++=+:::;?%%S*+%S#+--=+++??****SSS?++++%??%%??????%???%%????%?
**++*+***++++++++++*++-:::;*%??+?SS**???????*****%%S?++++*%%%???????????%%%%%??%
*+++?+*+**+*+++++++++*;::::-??+*SS*-+**??********??%*+++++%%%%%%?????????%%%???%
**++?++++*+++++++==-;-:::::;*??SSS--++************??+++=++*????%%????????%%%???%
*?**?+++++*++++-;::::;::::::?**##?=-=++*****++****?*++==+++?***?S%%?????%%%%???%
?????+++++*+=-;;::::;:::::::??%SS++==+++++++++****?++++=+++*??*+*???%%%%%S?%%%?%
???***++*+-;:::;-;::;:::::::*%%S?++===+++++++******++++=++++?**++**++*?%SS?%%%%%
*?*****=;:::::::::::;:::::::;+**+++====++++++****?+++==+++++*?*+++*+++++*?%%%%%%
*??*+-:::::::::::::;:::::::::-+*+++--==++++++***?+==+==++++++?*+++++**+++++*?%%%
**+;:::::::::::::::;:::::::::;-+***-;===++++*****;;=+==++++++??++++++++++++++*?%
+;::::::::::::::::;::::::::;+=-+*+*+;--==+***+++;::+*+++=++++*?+*++++++++++++++*
::;:::::::::::::::;:::::::+S##?***++-;;;;-=++++;:::-??++++++++?+++++=++++++++*++
;::::::::;;::::::;::::::;%####S%%***+-;;;;;-=+-::=+%###%++++++**+++++++++++==++*
:::::::::;-;:::::::::::-S######%?++*++-;;;;;-=;-?#######S*+++++*+++++++++=======
::::::::::--::::;:::::-%#######S*+=**+=-;;;;=*?%#######S%%*++++?+++++++++=====+=
::::;;::::-=;:::;:::;+*?S####S##?*+**++=;;;=**?S######S**???+++**+++++=======++=
;:::;;::::-=-:::;::;+***?SS###S#S??**+++-;=****#S####S*+++*?%*++?++++=======+++=
;:::;-;:::-==;::::-****+**%%?%SSS%?***++==*+++%#S####?++++++*%?+?+++========+++=
;;::;--:::;=+-:::-*+++++++*%????%%+++**++*++++S#####%++++====*%?**++=======+++++
;;:;;--;::;=+=;:;-+++++=---*%??%%%*+++?+*++=+*####SS*+====--==+***+=-======+++=+
+-;;;;--::;=++=;::-+=-;::::;?%?%%S%++=+?*++++%###SS*+===-----=====---=====+++==+
-=;;;;-=;:;-==+=::::::::::::;?%%S%%%+=+?++=+S####%*++=;;----===--;;--====++++=++
;==;;;;=-;;-==++;:::::::::::::=*%%%%%*+?*??S##S%*+++=;::;-----;;;;;--===++++=+*+