=;;+i+-:;;;;::::;oi;::::::::__________-----------++=~~~..........^^^^^^^^^^^^^^^^^^^
=+++o+_;;;;::::;=i+:::::::::____________---------+==~~~~..........^^^^^^^^^^^^^^^^^^
=++=i+:;;;;:::;+=+:::::::::::_____________-------=ii~~~~~............^^^^^^^^^^^^^^^
=++ii=:;;;;;;;;++;:::::::::::::_________-__------=oi~~~~~~..............^^^^^^^^^^^^
=+=i==;;;;;;;;+;;:::::::::::::::_______+===+;::-_ioo~~~~~~.....................^^^.^
=+=i+i;;;;;;;;;;::::::::::::::::___;+i**ooo**iio=ooi~~~~~~~.........................
===i+o;;;;;;;;;;;:::::::::::::::::=e!eoooooo*oooiiio=:~-~~~~........................
====+o;;;;;;;;;;;::::::::::::::;=*!!**eeeeeee*ooioooii+__~~~~.......................
====+o;;;;;;;;;;;::::::::::::;ie?!*ee!?%%????!e*=o*****o=-~~~~~~....................
====+o;;;;;;;;;;;:::::::::::;ie!e!??$OO$$%%%??!e*e!!eeo**=_~~~~~~~~.................
====+o;;;;;;;;;;;;:::::::::+io??O$O$#OOOO$$%%$%?!!!!!!!!!*o:~~~~~~~~~...............
===i=*+;;;;;;;;;;;;;::::::+oo%$O#####O$$$$$$$%$$%?ee!!!??eoi_~~~~~~~~...............
===ioe=;;;;;;;;;;;;;::::::i*!$O######OOOO$$OO$$$$%%????????*i_~~~~~~~~~~~...........
===io*=+;;;;;;;;;;;;;:;;;i*??O###&O###########O$$$%%%%%%%%!e==-~~~~~~~~~~~~~~~..~~~~
=====+++;;;;;;;;;;;;;;;;=e%%O##&&&&&&&&&&&##OOOO$$$%%%??!ei;:-~~~~~~~~~~~~~~~~~~~~
===++++;;;;;;;;;;;;;;;;;i%$O#&&&&&&&&&&&&&#OOOO$OO$$%???%%*++_-~~~~~~~~~~~~~~~~~~~
=++++++++;;;;;;;;;;;;;;:*$##&&&&&&&&#######OOO$$O$$$%%%%%?!o+;-~~~~~~~~~~~~~~~~~~~
++++++++;;;;;;;;;;;;;;;+?O#&&&&&&&######OOO$$$$$$$%%%%??ee?*++_~~~~~~~~~~~~~~~~~~~
++++++++;;;;;;;;;;;;;;;oO#&&&&&&#OO$$O$O$%%%%%%$%%???%?!!e!?*i:-~~~~~~~~~~~~~~~~~~
+++++++;+;;;;;;;;;;;;;+?O#&&&&&OO$%%%$%$%%%????%??!????!!???ei;--~~~~~~~~~~~~~~~~~
++++++++;;;;;;;;;;;;;;i%O#&&#O$$%%%?%%%%%????????!!???!!!?%?*o=---~~--~~~-~~~~~~~~
+++++++;+;+;;;;;;;;;;;*$O#&#O%%%%%?????????????!!ee!!!eee!$%eo=_----~--~---~~~~~~~
+++++++++++;;;;;;;;;;;!$#&O$%???????????????!!!!eeee!ee**!%$?*o_---------------~~~
+++++++++++;;;;;;;;;;+%O#O%????????????????!!eee***ee***o*?%?ei_------------------
+++++++++++;+;;;;;;;;+%O###$?????????????!!?!!ee**oo***o**oo!?!*i-------------------
++++++++++++;;;;;;;;;+%O##O?????%%%%???!!!!!?!!!e***ee*ooooo*?!*i_------------------
++++++++++++;;;;;;;;;+?O#O%?!?%$OO#O$$%??!!?????%$$$$%%!oooo*e!*o:------------------
++++++++++++++;;;;;;;+%O#$???%O#######O$%????%$OOO##OO$?!oooo*e*o:------------------
++++++++++++++;;;;;;;=OOO%!!?OOO$$OOO##O$%%%%$OOOOOO$%%?!eooo*eoi__-----------------
+++++++++++;++;;;;;;;+$OO????%%%%%%%%$$$$$%%%%$$$%%%???!ee*oooooi___----------------
+++++++++++++++;;;;;;+$$$!!!????????%%%%$%%%%%%%%%???!ee*ee*oiio=____---------------
++++++++++++++++;;;;;+$$%!!??!!?????%%%%%%???%%%%%?????e**!e*i=o+___________--------
++++++++++++++++++;;;+?O?!!!?!!??%%%%%%%%%???%%%%%%%%%?!eee!ei=o+____________-------
++++++++++++++++++++++eO?!!!!!?$$OOOO$$%%%??%%%%%%$OOO$%%!!!eo=i:____________-______
+++++++++++++++++++++i!$!!!???$OO#&&#$%%??%$$$O#O#&O$%!e*o=+-___________________
+++++++++++++++++++++?!?!!!??%$O%$&&OO#$%%??%$$$##$#&&O$$%!e*o=+;i__________________
+++++++++++++++++++++?!!!!!!??%%$OOOOO$%%%??%%$$$$OOOOO%?e*ooo=oee=_________________
=++++++++++++++++++++?!?!!!!??%%%$$$$$%%%%???%$%%%$$$$%%!*iiiii*eeo_________________
==+++++++++++++++++++!!?!!!!?????%%%%%%%%??!!?%%%%%????!*oi==ii*ee*_________________
==+++++++++++++++++++!!?!!!!!?????????%%??!e*!?%%??????!*oi==iieee*_:_______________
==+++++++++++++++++++e!?e!!!!?????????%??!eo;*!????????!e*ooiooeeeo:_:______________
==+++++++++++++++++++o!%!!!!!????????%%%?!e*+oe?%??????!!eeooooeee+::::_____________
==+=+++++++++++++++++=!?!!!!!????????%%?!!!e*oo!%%???!!!!!ee**o!e*::::::____________
====++++++++++++++++++!?!!!!!???????%%??!!?!!e*o?$??!e*ee!eee**e*+::::::::____::_:__
====++++++++++++++++++e!!!!!!!!?????%????????%?!e$%?!!e**e!eee***:::::::::::::::::__
====++++++++++++++++++o!!!!!!!!????%$%%##%%%$#O%?$%??!e***eeee**i:::::::::::::::::::
=====+++++++++++++++++*!!!!!!!!???%%%$$O#O$$##O$$$%%??!ee*eeee**+:::::::::::::::::::
=====+++++++++++++++++*!!!!!!!????%%%%$%$$$$$OO$$%%%???!!eeeee*=;:::::::::::::::::::
====++++++++++++++++++oe!!!!!?????%%%%%%%$$$$$$%%%%%????!eee**o;;:::::::::::::::::::
====+++++++++++++++++++*!!!!!????%%%%%%%%%$$$%%%%%%%%%??!e****o+;:::::::::::::::::::
====+=+++++++++++++++++i!!!!!????%%%%%%%%%%%%??%%%%%%%%??!ee***i:;::::::::::::::::::
=======++++++++++++++++=!!!!!??????%%%%%$$%$$$%?%%%%%%%??!e*o*;;:;;;::::::::::::::::
======+++++++++++++++++=e!!!!?????%%%%OOOOOOOOOO$$$%%%%%?!eeo*;;;;;;;;;:::::::::::::
=======+++++++++++++++++e!!!??????%$OOOO$$$OO%$O#$$$%%%%??!e*i;;;;;;;;;:::::::::::::
========++++++++++++++++oe!???????%O$$%$$$$$$%%%O#O$%%%%??!ee=;;;;;;;;::::::::::::::
=========+=+++++++++++++i!!??????%%%%%%$$$OO$$$$$$$$%%%%??!ee;;;;;;;;;;;::;;::::::::
===========++++++++++++++e!!?????%%%%%%$OOOOO$$$%%$%%%%???!eo;;;;;;;;;;;;;;;;::;;;;;
===========++++++++++++++*!!????%%%%%?%%%$$$$%%%%%%%%%%%??!e=;;;;;;;;;;;;;;;;;;;;;;;
===========+==+++++++++++i!????%%%??????%%%%%%%%%%%%%%%%??!e;;;;;;;;;;;;;;;;;;;;;;;;
===========+=+++++++++++++!???%%????????%%%%%?????%%%%%%?!e=;;;;;;;;;;;;;;;;;;;;;;;;
=============+++++++++++++o?%%%%%??????%%%%%%?????%%%%%??!e;-;;;;;;;;;;;;;;;;;;;;;;;
===============+++++++++++*?%%%%%%???%%%%%$$%%%?%??%%%%??!*+__;;;;;;;;;;;;;;;;;;;;;;
===============++==++++++*%%%%$$$$%%%%$$$$$$$$%%%%%%$%%?!!e=:_:;;;;;;;;;;;;;;;;;;;;;
===================+++=+*?$O%%$$$$$$$$$$$$$$$$$$$%%$$$%?!!?=;::;;;;;;;;;;;;;;;;;;;;;
===================++=+o!$O#?%$$$$$$OOOOOOOOOOOO$$$$$%??!ie=+:;;;;;;;;;;;;;;;;;;;;;;
===================+==o!%O#O?%$$$$$$OOOOOOOOOOOO$$$$$%%?!===;;;;;;;;;;;;;;;;;;;;;;;;
====================+ie?$O#%%%$$$$$$$OOOOOOOOOO$$$$$$%%?e=+=+;++::;;;;;;;;;;;;;;;;;;
==================+==e?%$O#%%%%$$$$$$$$$$$OOOO$$$$$$$%?!ei=+++++:-_;;;+;;;;;;;;;;;;;
================+++=*!?%$##%%%%%$$$$$$$OOOOOOO$$O$$$%%?!eoo=++++;___;;;;;;;;;;;;;;;;
==================ioe!?%O##$%%%%$$$$$O$$O$OOOOOO$$$%%??!!eo=++++;:__-_;+;;;;;;;;;;;;
==============oiiooe!??%O&O$%%%%$$$OOOOOOOOOOOO$$$$%%???!eo==+++;::__-~_;;;++;;;;+;;
============iooioe*!!?%$O#O$$$%%$$$$OOOOOOOOOOO$$$$%%????*i==+++;::_____~_;;;;;;++++
=======++++ioo**eee!??%$O#O$$$$$$$$$$OOOOOOOOO$$$$%%%??%?*i==++;;;::::::_-~_;;;+;++;
====++++++io***e!e!!??%$OOO$$$$$$$$$$$$OOOO$$$$$$%%%%%%%eoo==+;;;;:::;:::::___-_:;;;
=====iii=i*****!!!!!?%%OOO$$$$$$$$$$$$$$$$$$$$%%%%%%%%$?o*o=+;;;;;;;:::____---_::::_
=iiiiooooe!e**eee!!??%%OOO$$$$$$$$%%%$$$$$$%%%%%%%%%%$$!**i=+;:;;;;;::;___:_------_-
=iioooooe!!!eeee!!!??%%OOO$$$$$$$$%%%%%%%%%%%%%%%%%$$$%?eei=+;:::::;:::___:_------__
ioo**ooe!?!!!e!!!!???%%$OO$$$$$$$$%%%%%%%%%%%%%%%%%$$%!?!*oi+;::__::::::_:::_-____;_
oo****e????!!!!!!!???%%$OO$$$$$$$$%%%%%%%%%%%%%%%%%$$?e!!**o=+:___:::::;::;:_____:;_
******!?%???!!!!%#&&&O$$$O$$%%%$$$%%%%%%%%%%%%%%%%%$%!eo!ooo=+;:___::::;;_;:::::::+:
eeeee!?%????!!?#@@@@$$$$O$%$%%%%%%%%%%%%%%%%%%%%%$%!*ooio**oi=;;;_::::+:+::::::;+:
!!ee!?%%%????O&&@&@@&O$$$$$$$$%%%%%%%%%%%%%%%%%%%%$$?eoi===!?!ee$#O*::;;+i+;;;;::;+;
?!!!?$%%%%??$&&&&&&&$$%%$$$$%%%%%%$%%%%%%%%%%%%%$%!*oioooe%%O##Oei=i*e+++;;;;++;
????$$%?%%%%#########O$%%%%%%%%%%%$%%%%%%%%%%%%$$?eooi*!?e$###OOO$!o=++++++++++++;
?%%$$%%?%$%$O###OO###&#O%%%%%%%%%%%%%%$$%%%%%%%$%!*iii*o**$#OOOO$!i++++++=+++++==+
%%%$$%%?%$%%O#OOOOO#####&O%?%%%%%%%%%$$$%%%%%%%$%!*i=iooii?OO$$$%o====+=+==++====+
%%$$%%%%$$$%$OOOOOOO######&&&$%?%%%%%%%%$$%%%%%%%%?e**oi==i*?O$$$%!o============ii==
%$$%$$%%$$$%%OOOOOOOO###OO#&&&&$%?%$$$$$$$%%%$$$%?!e*oooo*!%$O$$$?eoiiii==ii=iiiiii=
$%%$$$$$$$$$%$OOOOOOOOOOOOO#&@&$%$$$$$$%%%%%%%%?!***oe%OOOOO$%?!*oiiiiiiiiiiiioiii
%%%$$$$$$$$$$$OOOOOOOOOO$$$O#&&#O%$$$$%$$%%%%%%!e**!$##$%$$$$%?e**oooiiiiiiioo*oii
$$%$$$$$$$$$$$$OOOOOOOOO$OOOO#&##O%$$$$$%$$$%%?!!%O#O%%$$$%?!ee***oioiioooo*eoo*
$%$$$$$$$$$$$$$OOOOOOOOO$$$$OO####&$$$$$$$$$%%?%##OO$%%%%%?!eee***oooio****e!*e?
$$$$$$$$$$$$$$$$OOOOOOOO$$$$$O###O&&&O$$$$$$$$%%O#OOOO$??????!eeee**iooio*e**!!*!%
$$$$$$$$$$$$$$$$OOOOOOOO$$$$$OO#OO###OO$$$$$%$$&#OOOO$%!!!??!!eeee*oi*oooeeee!?e?%
$$$$$$$$$$$$$$$$$OOOOOOO$$$$$OO#OOO#OOOOO$$$%O&#OOOOO%!eee!!!!eeee*oo**o*e!!!??e%$
$$$$$$$$$$$$$$$$$$OOOOOO$$$$$$OO#OOOOOOOO$$$$&OOOOOO$?e**e!!!eeee*ooo**o*e!!!%?!%%
$$$$$$$$$$$$$$$$$$OOOOOO$$$$$$$OOOOOOOOOO$$O&#OOOOO$%!e**eeeeeeee*oo***oe!!!!%%!%%
$$$$$$$$$$$$$$$$$$OOOOOO$$$$$$$OOOOOOOOOO$O&#OOOOOO$?e***ee!eeee*ooo*e*o*!???$%?%$
$$$$$$$$$$$$$$$$$$OOOOOO$$$$$$$OOOOOOOOO$$###OOOOOOO$?!e****eeeeee*ooo*eeo*!!??$%!$O
$$$O$$$$O$$$$$$$$$$OOOOO$$$$$$$OOOOOOOO$$OO##OOOOOO$%?!e***eeeeee***e*ee**e???%$%?$$