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