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