+++++++++++++++++++++++++++++++++++++++?++++++++++++++++++++++++++++++++++++?+++
++++++++++++++++++++*+??+++++++?++++++??++++++++++++++++??+++??=%&&&&%=?++++?+++
++++???+++++??++++?=%%%&&%?+++?=?++++??=++++++++++++++++?=%?=%$&&%&&$$$$=====+++
++++??%?+++==%??%&%%%&%&&&$$&=$%&+++?%??++++++++++++++++?=&&&%&%===%&$$$$#$=%+++
++++??%$&%&&=#$&%%====?%%%&$$##&&$&&&%==*+++++++++++++++?%%%%%%?++?=%&$%##$=%!++
++++?=%$$$&&=#$%===??=?==%&&&$#&&##$$%?%*+++++++++++++++?&=%%=?*!!*??=&%##&%=!*+
++++?%=$&&&&?$&=???++???=%%&&$$&%##$$&?=!+++++++++++++++=%%===?*;!*??=&%#&%&=+*+
++++?%?&&$&&?$%?++**++++?=&%&&$%&###&??+;*************++$=$=???+;;*++?%=&%&$=?++
++++?%%=&%%&?%%?++*!*+++??=%&&$=$###$?%?!+*++*+++*++++++&%%%=??+;;**+==&%%$==+++
++++?%&?&&&&%=&?+**!!*+++??=&&&?###$%?$?*+++++++++++++++%$?&=?=?+!*+?==&%&&?+!++
++++?%&&?%%%&?%=+*!!!*+**?+=&&%=##$$?&$?;+++++++++++++++%$=+?=???++?%=%?%==?!**+
++++?&&$==&%%==%?+**!!+**++%&$?&#$$%=&&?;***********+++=%#&**?+++?===?+=??%!==*+
++++?&&$%=%%%=+%=++*!*++*?=%&%+%##%==&%?!;***********++?%&#%+***+=%==+++?%==%?++
+++==%&$$===&%??%+++!*+++?=%&?%##&%%&#&%?*++++++++++++++&&&#$?*+?=%%=+*?&#$$++++
+++?$&=$$%%?=%=+%=?+++????=&&+&$%=&$#&=%%*++++++++++++++=$%%+!%=?&=&=?==+$#&**++
++++&$=?&$%=?=%?=%++***+?=%&==$&=%$#$??%?*+++++++++++++++&===??$#&+%##&?%$&?;+++
++++%$$+?&=%?=?=+%=?++++=%%&?&%%%&%$???=!++++++++++++++++?&?????%?+%&&%==%%!++++
++++?$$&*?=+%+??+==?++??%&&=+===&=%=?%++!**+++++++++++++++%$&===??*?%&&=%&?*++++
+++??$$$?!*??%*=%+%=?=?=%&%+&=+%???+=**!+*!***************?&$$&=!+!??%$$#&?*++++
+++%%$##&****+=++??%???=%%?=+?=?+??==;+%&!++++++++++++++++=&$$&?!;:!*%$&#$%!++++
+++%%&##$%?**++?!+??%?=%%??+!=++++?%*+%%?!**!!!!!!!!!!!!**??=%%?*;:!+%$&$#%;++++
+++=$=&$###&?!!***??%=?%???*+**+%$#$%##&?+++++++++++++++++=&==%?+*!*?%&&$$*+++++
++++&$&&$$##$&?!*+?%%&=&=%+++*=$##@##$%?+******************+%?%=???=%$$&$+++++++
++++=$$$%&$%;!&&=?=&&&?&%%??=%$=?&###&=?!*******************+?%%??*+%$&%++++++++
+++++%$$==%&!:+*&$$$$=*%$&&#&*+;+$$$&&=;+++++++++++++++++++++*%%?*;*?&%+++++++++
+++++?%$??==%?+?&###%??%$#@@$?+=&&$%%?-!++++++++++++++++++++*!+=%=?=&%*+++++++++
++++++=$=+?=?=====%&+?+%%$$$&%==%&=?%!!*********************!*++?=%%=+++++++++++
+++++++%$=?+????+?=++++?=%&%%======&%;***********************+++++++++++++++++++
+++++++?$#&=?++==??=?*!+=&%%&%??=%$%!*++++++++++++++++++++++++++++++++++++++++++
++++++++#@@#$$&==?**%*;*$?%&&&$$#$&$?*+++++++++++++++++++++++?+?=%%&%=?+++++?+++
++++++++$##@@$&&=*;;!+;?++?%$$$$#$#$%*++++++++++++++++++???++%&&&&&&$$$%=++?=+++
+++++++=&&$##$$%=*;:-:-;;*?%$$$$#&##%!*+++++++++++++++++?=&&&%&%%%=%&$$#&$&%=+++
+++++++&%&&&&$&%?*;:---:;*?%&$%#$###&!!+++++++++++++++++?%&&&%%=??==%&$&$#$%&*++
++++++?&%%%&&$&=?*!::::;!*?%&$%#$###$*!+++++++++++++++++?%=%%%=+**+?=%&%##$=&!++
++++++?&%==%%&&=?+!!;;:;*+?%&$%$$###%:!+++++++++++++++++?%%==%?!;!*??=&=#$%%%**+
+++++++=$%=%&%&==?+*!!;*+?=&&$%$$##$+!++++++++++++++++++&=&??=?*;;*++?%%$&%$%=++
++++++++%#&=%%&&&&===%%%%%&$#$?%&&%+;*******************%==??++*;;**+?==&%&$=?++
++++++++=##$&%&&=?+**+++??%&$$?$$%?=*+++++++++++++++++++%$?&=?=?!;**?==&=%$=?*++
++++++++=##@#$&&&%=?+++?=%&$#$%#=%#%!+++++++++++++++++++=$=?==?+?+++%===%%%?***+
++++++++%$####$%%=?*;::;*?%$$#$&=&&?;****************++?%$&**?+=???==?===?=?+=++
++++++++%$&$#@@$&=?*;::;*?%&#$&$@##%;++++++++++++++++++?%&$=**+*+%=%=++??==*&?++
++++++++%$&%$#@@$%=?***+?=%$$$@@@##%!+++++++++++++++++++&&$#&+!*+=%%?+**=$%$=+++
+++++++!%$%%%&$#@#&%===%%&$#@@@@##$$!!++++++++++++++++++?$%&=*=??%%&=??%%$#$+*++
++++++*!$$&%=%&$####$$$$##@@@@@####$=-+++++++++++++++++++%%==*+$$$?%$$&+?$$%:+++
++++++:!$$&&==%&&$####@@@#@@#@######%~!++++++++++++++++++?&??=%=%=?%$$%%%%%*++++
+++++*~*=&&&===%&&$#########@@######=:~+++++++++++++++++++=$%??==++?%&%?=&=*++++
+++++-;??=%&%=?%&%&$$$######@#####$&%+,;++++++++++++++++++?#@#&=*?!?%%$$$&?*++++
++++!-+==+*?%%==&%%%%&&$$####$#$#&%%&%:,++++++++++++++++++=&$#&?!;;**%$&$&%!+***
+++*;+=%=+;:;+==&%%%?+%&$$##$&$%??%&&&?:;+++++++++++++++++%%&&&?*;:!+%$%&&%:****
+!;!*?===+!-,~:!?&%%=+?&$$$$=+!!*=%&&$&?!;*+++++++++++++++=&=&&?*!;*?%$&$$+*++++
;!+**+=??+*;-,,;:;+%%+?%&$?!!!;!+?%%&$&%=+;;+++++++++++++++?&&&%=???=&%=&+******
++*!;;*?***!;-:;;:~=%?+%&%~*+***+?=%&&%==%=*:!+++++++++++++++&&%=???%&&&?+++++++
+!;:-~~-!!!*!!!;;:-=%=?%&?:++***++?=%=??==%%?;;*++++++++++++++&%?*;*?&&+++++++++
!;:-~,,,~;!!+?*;;;;*&%?&&!+??*=%?++?+*+++?==%%+-:!*++++++++++++%=?+=%%++++++++++
:-~~,,,,,-*=%+*;::!:&%=%%;?++*=%&&=*;;!!!*+?=%%=;:::;*++++++++++=%%%%+++++++++++
~,~~,,,~;=%%+?!:.,:;*&%&!*+***?%=&$&?;::;;!*+?=%%??+*:-::;*+++++++++++++++++++++
~,,,,-!=%=?+*!---,.~-%%=;*!!**;+?%%&&&?!:::;!*+?????=??+!:~~:!++++++++++++++++++
~,~;?%%=?*!!;;;:---~,!%;;!!!!!***++=%$$$%*;::;;::!*+??=????+*:-;++++++++++++++++
!+%=%=+!;;:-~~~~------*;;;:;:::;;!!**?=&&&&?!::~,~~-;!+++?=?%%?:~*++++++++++++++
%%=?+!;:-~,,......,~:-*;:~~,~~~~--:;!**+?%&&&?;-~,..,~::;*++?=%=!,;+++++++++++++
=?!;:-~,,...'''''''.:-*--......,,~~-:;;!***=&&*:--,,,~,',:;;*?=%=*,;++++++++++++
?;:-~,,...''''''''''-~!~-''''''..,,~~--:;!!*%?;:::::--,,,:-~:!+=%%*,;+++++++++++
**:~,...'''''``'''`'-,!,~'``'''''..,~~~--;!??%%=+*:---:-~~~~~:*?=%=!,!++++++++++
+?;-...'''''``''''''~,!,~'''`'''''..,,~~-;*=?%%%=%%=?!::-----:!+=%&=-~*+++++++++
*+*-,.''''''``''''''~.!.~``'`''''''..,,~:;+??%%%==%%==%=?*::::!*?=&&+,;+++++++++
=*!:-.''''''````````~.!.~'```''''''..,,~;!++====%%=%%%%&%&%;;;!*?=&&%:,*++++++++