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