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