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