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