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