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