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