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