??*********+++++++++++++;+;+++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++*?%?********???****??????
*********++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*???*********??????%%%%%
*******++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+**************+*****?????
******++++++++;+;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+**************++++++******
*******++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;**;;;;;;;;;;;;;;;;;;;;;;;;;;;+****++**********************
*****+++++++++;+;;;;;;;;;;;;;;;;;;;;;;;;+%#%;;;;;;;;;;;;;;;;;;;;;;;;++****++;;+*********************
****+++++++;+;;;;;;;;;;;;;;;;;;;;;;;;;;+%###?;;;;;;;;;;;;;;;;;;;;;;+++++;;;;;;;+*******+++**********
**++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;%#####*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+*?%%%?*+++*********
**+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;?#######*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++**?%%%*+++++*******
**++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;?#########?;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++****?%?++++++*******
**++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;+%S#######@@%;;;;;;;;;;;;;;;;;;;;;;;;;;;+++******++++++++++*****
**+++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++*?S#@#@@@@#+;;;;;;;;;;;;;;;;;;;;;;;;+++*****++;;;;+++++++*****
++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;*?????%S##@@@@S;;;;;;;;;;;;;;;;;;;;;;;;++*****++;;;;;;;++++++++***
++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;*?SS???%%%%#@S;:;;;;;;;;;;;;;;;;;::;::;+*****+;;;;;;;;;++++++++***
+++++++;;;;;;;;;;;;;:;:;;:::;;;;;;;+??*?**??*SS+:;::;;;;;;;:::;;;:::;;;:;;+****+;;;;;;;;;;++++++++**
+++++;+;;;;;;;;;;;;;;;;;;;;;;;;:;;:+*???%%???+;:::::::::::::::;;:::::;;:::;+***+;;;;;;;;;;;++++++++*
+++++;;;;;;;;;;;;::::;:::::::::::::;*?%%%??%*:::::::::::::::::::::::::::::;;****;;;;;;;;++++++++++++
++++++;;;;;;;;;;::::::::::::::::::::::+??%%?%%*+;:::::::::::::::::::::::::;;;***+;;;;;;;;;++;++++++*
++++++;;;;;;;;;;;::::::::::::::::::::;%S%?SSS%??*;:::::::::::::::::::::::;;;+***++;;;;;;;;;;+++++++*
++++;;;;;;;;;;;;;:::::::::::::::::::+#@SS#S%%%%???+:::;++++;;;;;;;;;;;;;;;;+++++++;;;;;;;;;;;+++++++
+;+;+;;;;;;;;;;;;;:::;;;;;::::::::::%@#S##SS##S%%%%*;:;;+?%???????????????????????******+++;;;;;+***
+++++;;;;;;;;;:::::::;;;++;;::::::::%@@SS@#####S%%%%?;::::+?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%??????%%?
++++;;;;;;;;:::::::::;;;;;;;;;:::::;S@@#%####S###S%%%?;::::;+++****???%%%%%%%%%%%%%%%S%SSSSSSSSSSS%%
+++;;;;;;;;;:::::::::::;;;;+**?*:::*S#@@SS##@@@@@@@#%S%+::::::::::::::;;;;;++++****???%%%%SSSSSSSSSS
+++;;;;;;;;::::::::::::::::;SSS#S%*S#@@@######@@@@@@@@#S*::::;;;;;;;;;;;;;;;;;;;;;;++++++****???????
+++;;;;;;:::::::::::::::::::*#####@@@@@@###SSS#@@@@@@@##S*;:;::::;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++
++;;;;;;;;;::::::::::::;;;;;:*%S########SS#####@@######SS%+:::::::::::::;;;;;;;;;;;;;;;;;;;+;;++++++
+;;;;;;;;;;::::::::::;;++++++++*S??SS####S#######S#@####S%?;:::::::::::::;;;;;;;;;;;;;;;;;;;;;++++++
;+;;;;;;;;;;::::::::;++**??**++*%%?#@@@######@#SS#@@@#SSSS%+::::::::::::::;;;;;;;;;;;;;;;;;;;;++++++
+++;;;;;;;;:::::::::;+++*+;;::::;%%%@@@@@@###@@@@@@@@@@#%%%+:::::::::::::::;;;;;;;;;;;;;;;;;;+++++++
+++;;;;;;;;;:::::::::::;;::::::::+#%SS%%?+;*S@@@##@###@@#%%+:::::::::::::::::;;;;:;:;;;;;;;;;+++++++
+++;;;;;;;;;;:::::::::::::::::::::++;::::::;%#@#######@@@#%+:::::::::::::::::::::;;::;;;;;;;;+++++++
+++;;;;;;;;;::::::::::::::::::::::::::::::::*#@########@@#S*::::::::::::::;;:;;::;;;;;;;;;;;;;++++++
++++;;;;;;;::::::::::::::::::::::::::::::::+%S##########@#S+::::::::::::::::;:;:;:;;:;;;;;;;;+++++*?
++;;;;;;;;;::::::::::::::::::::::::::::::::?%%##########@@#;::::::::::::::;::::::::;;;;;;;;;;;++++*?
+++;;;;;;;;:;:::::::::::::::::::::::::::::+S%?##########@#%:::::::::::::::::::::::::;;;;;;;;;++++++*
+++;;;;;;;;;::::::::::::::::::::::::::::::?#%?##########@#?::::::::::::::::::::::::::;;;;;;;;;++++++
++;+;;;;;;;;::::::::::::::::::::::::::::::%#??########@#?S+::::::::::::::::::::::::::;;;;;;;;;++++++
+++;;;;;;;;;;;::::::::::::::::::::::::::::%#S######@@@#*:;:::::::::::::::::::::::::::;;;;;;;;+;+++++
+++;;;;;;;;;;::::::::::::::::::::::::::::+#########@@@?:::::::::::::::::::::::::::::;;;;;;;;;+;+++++
++;;;;;;;;;;;:::::::::::::::::::::::::::;S######@##@@@?::::::::::::::::::::::::::::::;;;;;;;;+++++++
++++;;;;;;;;;:::::::::::::::::::::::::::%@#########@@#S;:::::::::::::::::::::::::::::;;;;;;;;;++++++
+++++;;;;;;;;;:::::::::::::::::::::::::+#@############%::::::::::::::::::::::::::::::;;;;;;;++++++++
++++++;;;;;;;;:::::::::::::::::::::::::*#@###########S+:::::::::::::::::::::::::::;;:;;;;;;+++++++++
+++++;;;;;;;;;::::::::::::::::::::::::::*###########%;,::::::::::::::::::::::::::::;;;;;;;++++++++++
++++++;;;;;;;;:::::::::::::::::::::::::::*@@#####@#*:,:::::::::::::::::::::::::::::;;;;;;;+;+++++++*
+++++++;;;;;;;;;::::::::::::::::::::::::::S@@@#####?::::::::::::::::::::::::::::::;;;;;;;;;++++++++*
+++++++;;;;;;;;;;:::::::::::::::::::::::::?@@@@###@#+:::::::::::::::::::::::::::;;;;;;;;;;;+++++++**
+++++++;;;;;;;;;;;;:::::::::::::::::::::::+@@@@@@##@%:::::::::::::::::::::::::::;;;;;;;;;+;+++++++**
++++++++++;;;;;;;;;;:::::::::::::::::::::::+?SS%S##S?;:::::::::::::::::::::::::;;;;;;;;;;;++++++++**
*+++++++++;;;;;;;;;::::::::::::::::::::::::::+??*???+;:::::::::::::::::::::::;;;;;;;;;;;;;++++++++**
++++++++++;;;;;;;;:::::::::::::::::::::::::::;??**??*;::::::::::::::::::::::;;;;;;;;;;;;;++++++++***
**+++++++++;;;;;;;;;;:::::::::::::::::::::::::+?*+??*+:::::::::::::::::::::;;;;;;;;;;;;+++++++++***?
**+++++++++;;;;;;;;;::::::::::::::::::::::::::+****?*+;::::::::::::::::::::;;;;;;;;+++++++++++***?S#
***+++++++++;;;;;;;;;:;::::::::::::::::::::;;+***+++**+;::::::::::::::::::;;;;;;;;++**+++++++++*%#@@