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