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