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