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