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