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