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