*********++++++++++;;;;;;;;;;;;;;;;+*?*******?%??****+;;;;+++;;;;+++++****************?****++*******
********++++++++++;;;;;;;;;;;;;;;;;;++++;;;;;;;;;;+;;;;;+*??????%%%%%????????????????????***++******
******++++++++++;;;;;;;;;;;;;;;;;;;;;;;;++;;;;;++*?*****??%%%%%%%S#SS?????????????????????*+++******
***+++++++++++;;;;;;;;;;;;;;;+**++++++**?*******???????????????%%%SS%%%%%%%%%%%%%%%%%????*++++******
***++++++++++;;;;;;;;;;;;;;;+*???**???**+++++++++;*S*+++++++**???%%%%SSSSSSSSS##SSSSS%?*++++++++****
****++++++++;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;S@?;;;;;;;;;;+*?%SS###########SSS%%?**++++++++****
****++++++;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;%###?;;;;;;;;;;++**********++*********++++++++++***
*****+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;%###S%?+;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++++***
***++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;%#@@#SSSS?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++;;;+++++++**
++*+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:*##@##@###%;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++**
+++++++++;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*??%#####@#?+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++**
*++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+%????S##@#*:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++**
++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*?*?%S#S?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++
+++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+??????+::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++
+++++++;;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*??%???+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++
++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*?%%???????*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++
++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;%%%%%%%%%%????+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++
++++++;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;:;;;;;;%SSS%%%%%%%%%???+;;;;;;;;;;;;;;;;::;;;;;;;;;;;;;;;;+++++
++++++++;;;;;;;;;;;;:::;::::::::::::::::::;+%SS##%%%%%%%%%%%%*;:;;:;;::::::::::;::::;;:;;;;;;;;+++++
+++++;;;;;;;;;;;;;::::::::::::::::::::::::;SS%%%##S%%%%%%%%%%%?;:;;;;:;::::::::::::;;::;;;;;;;;+++++
+++++;;;;;;;;;;;;;::::::::::::::::::;:;:::+%%%%?%###SS%%%%%%%%%?;:;;:::::::::::::::::::;;;;;;;;+++++
+++++;;;;;;;;;;;;;:;::::::;:::::;::::::;;:;++*?%%##SSSSSSSS%%%%%+:;::::;::::::::;;:::::;;;;;;;++++++
+++++++;;;;;;;;;;;::::;:::::::::::::::::::;;%%*+;S#SSSSSSSSS%%%%+::::;:::::;;::::::::::;;;;;;;++++++
++++;;;;;;;;;;;:;:::::::::::::::::::;;::;;;;+%?;:?#SSSSSSSSS%%%%+::::::::::::::::::::::;;;;;;;++++++
+++++;;;;;;;;;;:;:::::::::::::::::::::::::;::::::+##SSSSSSSSSS%%*:::::::;::::::::::::::;;;;;;;++++++
++++;;;;;;;;;;:;:::::::::::::::::::::;;:::;::::;:+##SSSSSSSSSSS%?;:::::::::::;::::::;;;;;;;;;;++++++
++++++;;;;;;;;;;:::::::::::::::::::::::::;;::::::+##SSSSSSSSSSSS%;:::::::::::::::::::::;;;;;;;;+++++
++++++;;;;;;;;:::;:::::::::::::::::::::::::::::::%##SSSSSSSSSSSSS;::::::::::::::::::::::;;;;;;++++++
+++;;;;;;;;;;;:;::::::::::::::::::::::::::::::::+####SSSSSS#####%;::::::::::::::::::::::;;;;;+++++++
+++;;;;;;;;;;;:::::::::::::::::::::::::::::::::;*S##SSSSSS######?::::::::::::::::::::::;;;;;;;;+++++
+++++;;;;;;;;;:::::::::::::::::::::::::::::::::;*S##SSSSS#####SS?::::::::::::::::::::::;;;;;;;;+++++
++++;;;;;;;;;;:::::::::::::::::::::::::::::::;::*####SSSS###SSS%?;:::::::::::::::::::::;;;;;;;;+++++
++++;;;;;;;;;:::::::::::::::::::::::::::::::::::+#############?;:::::::::::::::::::::::;;;;;;;;;;;++
++++;;;;;;;;;:::::::::::::::::::::::::::::::::::?#############+::::::::::::::::::::::::;;;;;;;;+++++
+++;;;;;;;;;;;:::::::::::::::::::::::::::::::::;S############%::::::::::::::::::::::::;;+??*********
++++;;;;;;;;;::::::::::::::::::::::::::::::::::*#S####SS####S;::::::::::::::::::::::;+**?S?????%%%%S
+++;;+;;;;;;;::::::::::::::::::::::::::::::::::%SS####S####%;::::::::::::::::::::::;+*?%S?+;+**?%%%%
+++;;;;;;;;;;;:::::::::::::::::::::::::::::::::+S####S####?:::::::::::::::::::::::::;;+*+++++;;;++++
++++;;;;;;;;;;::::::::::::::::::::::::::::::::::?###SSS##S?::::::::::::::::::::::::::::;;;;+++++++++
++++++;;;;;;;;:;::::::::::::::::::::::::::::::::+SSSS%S##SS*:::::::::::::::::::::::::::;;;;;;;++++++
+++++;;;;;;;;;;;;::::::::::::::::::::::::::::::::%#S%??%###%;:::::::::::::::::::::::;;:;;;;;;;;;;+**
+++++;;;;;;;;;;;:::::::::::::::::::::::::::::::::+%%?+;+SSS*::::::::::::::::::::::::;;;;;;;;;;;;;+++
+++++++;;;;;;;;;;::::::::::::::::::::::::::::::::::;*+;;+*+;:::::::::::::::::::::::::;;;;;;;;;;;;;+?
++++++;;;;;;;;;;;;::::::::::::::::::::::::::::::::::+*+;;*+;;::::::::::::::::::::::::::::;;;;;;;+?#@
++++++;;;;;;;;;;:::::::::::::::::::::::::::::::::::::++;;++;;:::::::::::::::::::::::::::;;;;;;*%#@#@
+++++++;+;;;;;;;;;:::::::::::::::::::::::::::::::::::++;;++;;:::::::::::::::::::::::::::;;;+?S#@##@@
+++++++;;;;;;;;;;;:::::;+**++++++;;;;;;;;;;;;:::::;;;;++;;**+;::::::::::::::::::::;::::;:+?#@@##@@@#
++++++++;;;;;;;;;;;:::::;;*??**********++++++++++;++++++++**++;;;:::::::::::;;;;;:::::;+?#@@#@@@@#%?
*++++++++;;;;;;;;;;:;::::::;**?%%*?%%??%%?????**?**?***+++++++++++;;;;;:::::;+++;;:::;*S@@#@@@@#%**?
*++++++++;;;;;;;;;;;;;:::::::;?%??%%%?%%%?%%%%?%%??%%%??%%?*%?*??*******++++++++++++?S##@@@@@S?*+*%S
**++++++++;;;;;;;;;;;;;:::::::;*??????????%%%%%%%%%%%%%%%%?%%%%%%%%%%%%%%%????++***?@@@@@##SSS%%???S
**++++++++++;;;;;;;;;;;:::::::::;:::;;**?????????????%?%%%%%%%%%S#SS%%SS%%%%%%*+?%%%S#@#SS%%S%SS%SS%
****+++++++++;;;;;;;;;;;;;::;;;:;:::;;;;;;+++++++***???%%%%?%%%%%%%%%%%S#S%%%%?*?%%%%SSS%%%SS%%#%SSS
****+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++************?????%%%SSS%%%%%%%SSSSSS%%SSSS##SS##
*****+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++++++++++***???%%%%%%%%SSSSSSSSSSSSSSSSSS###