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