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