??????**************+*+++++++++++++++++++++;+;;+++;;;;;;;;;;;;;;;;;;;;;;++++++++++*********???%%%SSS
********+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++*******??
********+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++;+++++++++*******
*****++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++*******
*******+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++******
*****+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+#%;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++*****
*****+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;%#@?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++****
*****+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;%#SSS?+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++****
**+*+*+++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;S@##S%#S+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++**
**++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*#@######*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++**
*++++++++;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;%%%S###@%*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++**
*+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+???S###S+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;+++++++**
++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+???%%%+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++*
+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+??%%%??**+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++
++*+++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*%SS%%%%%????*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++
++++++++;+;;;;;;;;;;;;;;;;;;;;;;;*%%%SSSSSSSSS%%%%%%?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++
+++++++++;;;;;;;;;;;;;;;;;;;;;+??%S#######SSSSS%%%%%%*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++
++++++;;;;;;;;;;;;;;;;;;;;;;+**?%S%?*+?#@##SSSSSS%%%%%+:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;;;+++++
++++++;;;;;;;;;;;;;;;;;;+++;;+*%*+;;;;;;?###SSSSS%%%%%?;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++
++++++;;;;;;;;;;;;;;;;;;;;;;;:;+;;;;;;;:;%SSSSSSSSSS%%%+:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++
++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+?%SSSSSSSSSS%%%*;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++
++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++?SSS%%%%%%%%%%?;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++**?
++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;+S%%%%%%%%%%%+:;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*??%
+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::+S%%%%%%%%%%%?::;;;::;;;;;++++++;;;;;;;;;;;;;;;;;;;+*????
++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:?#SSSSSSSSSSS%;:;;;::;;;;;;**??*+;;;;;;;;;;;;;;;;;;*%%%%%
++++;;;;;;;;;;;;;;;;;;;;;;::;:;;;;;;;;;;;;;%##SSS#SSSS#S%;:;;;::;;;;;;;;+****++;;;;;;;;;;;;;;;*%??%%
++++;;;;;;;;;;;;;;;::;;;:;;;:;;:;;;:;;;;;:;S##SSSSSSSS##%;::;;;:;::::;;::;;+*?**+++;;;;;;;+++++?????
+++++;;;;;;;;;;;;;;;;:;;;;:;::::::;::;::;:;######SSSSS#S+::::;;::::::;;;:::;;+????**++++++********??
++++;;;;;;;;;;;;;;;;;:;::;;;:;;::::;;:;;::;S###########%;::::;::;:;::::::;;:;;;++*???%%????????**???
++++++;;;;;;;;;;;;;:;;::;;;::;::::::::::::;S@##########*::::::::::;:::::::;:::;;+;;;++*????????**???
++++++;;;;;;;;;;;:;:::::::::;;::::::::::::;###########S;:::::::::::::::::::;::::;++;;;;;;;;;+*??????
+++++;;;;;;;;:;;;:;;::::;::::::::;::::::::*###########*:::::::::::::::::::::;:::::;*+;;;;;;;;;*?????
++++;;;;;;;;;;:;;::;:::::::::::;::::::::::?#S########*:::::::::::::::::::::::::::::;+*+;;;;;;;*%????
++++;;;;;;;;;;;;:::;:::::::::::::;;:::::::?S########*:::::::::::::;::::::::::::::::::+???**???????%?
++++;;;;;;;;;;;;::::::::::::::::::::::;;::;S###S###S+::::::::::::::::::::::;::::::::::*%%S%**?????%?
++++;;;;;;;;;;;;:::::::::::::::;:::;:::::::?#SSS%SSS%;:::::::::::::;::::::::::;::::;;;;;;**;;;+???%%
++++;;;;;;;;;;;:::::::::::::::::::;::::::::+#S%%*+##S;::::::::::::::::::::::::::::::::;;;;;;;;;??%%%
+++++;;;;;;;;;;::::;:::::::::::::::::::::::;*?*+;;?*+;:::::::::::::::::::::::::::;;;;;;;;++;;;;*??%%
+++++;;;;;;;;;:::::::::::::::::::::::::::::::;++;;;+;;:::::::::::::::::::::::::*%SSS%***+??????*+*%%
++++++;;;;;;;;::::::::::::::;:::::::::::::::::;+;;:+;;:::::::::::::;:::::::::+%####S??????????****??
+++++;;;;;;;;;;;;::::::::::::::::::::::::::::::+;;;++;::::::::::::::::::::;*S####@S;:;;+?%?%%?******
++++++++;+;;;;;;:::::::::;+++++++++++;;;;;;;::;+;;+?*+;::::::::::::::::::*S####@#%*+++;+%####S?***??
+++++++;;;;;;;;;::::::::::;+****++*++++++++;;++++++??*++;;;;:::;;::::::;%@@##@@%;;????????%%%%%?????
++++++;;+;;;;;;::;;:::::::::;+?????*??*???**??**+***++++;;:::,:+;;;:,:+S###@#S*;;*%%%%%%%%%%%%%??***
+++++++;;;;;;;;;;;::::::::::::;*%???????%??%??%??%%??*??*****++++++;+S#####S?+;+*??%%%SSSSSSSSSSS%??
+++++++++;;;;;;;;;;:::::::::::::+???????%%%%%???%%%?%%%%SS%%%%%?*+**%#@@#S%%???*?%*???%%%%%%%%?%SSS%
+++++++;;;;;;;;;;;;:::::::::::::::;;;;++***?????%%%%%%%%%%%%%%%%?+*?%%SS%%?%?%%S%?*??%%%%%%%%??%%%%%
+++++++;;;;;;;;;;;:::::::::::::::::::::::::::;;;;+++**????%%%%SS%??%%%%%%%%%%SS%%#S%%%%%%%%%%?#@##S%
*+++++++++;;;;;;;;;;;;;;::;:::::;;;;;;;;;;;;;;;;;;:;;:;;;;;;;++**???%%%%%%%%%%%%###SSS%%????%%##%?S#
*++++++++;;;;;;;;;;;;;::;::::;;;;;;;;;;;;;;;;;;;;;+++;;;;;;;;;;;;;;;;++**??%%%%%%%SS%%???*???%%SS??%
**++++++++;;;;;;;;;;;;;:::::::;;;;:;;;;;;;;;++;;;;+;;;;++++++++++++++++++++++********?*******???????
**+++++++++;;;;;;;;;;;;;;:;;;:::;:::::;;;;;;;;;;;;;;;;;;;+++++++++;;;++++++++++***************??????
****++++++++;;;;;;;;;;;;::;;;::;::::::;;;;;;;;;;;;+++++;;;;;;;;;;;;;;++++++++++++++++*********??????
****+*+++++++;;;;;;;;;;;;;;;:;;::::::::;;;;;;;;;;;++++;;;;;;;;;;;;;;;;;;;;++++++++++++*********?????
*****++++++++;;;;;;;;;;;;;;:;;:::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++++*********????