YYYYJJ??777777777777?J5PB#&&@@@@@&&&&&&####BBGGPPPPPGBB####&&&&&&##BBBBB####BBBBBGGGPPPGGBBBBGBBBBBGGGBB#&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&@@@&&#BGP5YYYYYYJJ???7??JY5PPP5J7!77??7!~~~~~~!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!~~~!!!!!!~~~~~~~~!!~~~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~~~~~~~~~!!!!!!!
YYYYJJ??77777777777777??JYPGB#&&&&&&&&&&&####BBGPP555PGBBB##&&&&&&##BBBBBBBBGGPPP555555PGGGBBGGBBB###&&&&&&&&&@@@@&&&&&&&@@@@@@&&&&&&@@@&&&&##BBGP5YJ?777777?????77777??JJY5P5YYJJ?7~^^~!7!!^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!~!!!!~~~~~~~~~~!!!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~~~~~~~~~!!!!!!!
YYYYJJ??77777777777?????????JYY5PGGBBBBB#&@@&&#GPPPGGBBBBBBB#&&&&&#####BBBBBBBBBBGGGPPPPPPGBBB##&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&########BBGGPP5YYJ?77!!!!777777!!~~~~~~!!77J5YJ?7!!!~^:^~~!!~~~~~~~~~~^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!~~~~~~~~~~~~~~~~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~~~~~~~~~!!!!!!
YYYYJJ??777777777777????7777!!!77?JJYYYY5PGGBBBBGPPPPPPGGBB###&&####BBBBBBBBB##BBBBBBGGGGGB##&&@@@&&&&&&&@@@@@&&&&##########BBGGGPP555YYJJ??????????77!!~~~~~~~~^^^^^~~!7??7!~~~~~?YY?!~~^~~!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!~~~~~~~~~~~~~~~!!!!~~~~~~~~~~!!!!!!
JJYJJJ?777!777777777777777777777777777??777?J5GB#BBGP555PGBB######BBBBBBBBBGGGPPP55PPGGGBB##&&&&&&&&&&&&&@@&&&&##BBGGGGPPP55YYJJ???77777!!!!!!7?????777!!!!!!!~~~~~~~~~!!7!~:^^~~~?55J7!~^^^~~~~~~~~~!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!~~~~~~~~~~~!!!!!!
JJJJJJ?77!!!77777777777777777????777!!7777777?Y5GB##BBGPPPPGGBBBBBBBBBBBGGPPP5YYJJJY5PGB####&&&&&&&&&&&&&&##BGPP555YYYJJ??77!!!!!!!!!!!!!!!7777777777!!!77777777!!!~~~~~~~~~^~!!~~!77~~^~~^~~~~~~~~!!!!!7!!!!~~~~~~~~~~~~~~~~~~~~~~~~~!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!
JJJJJJ?77!!!777777!8888888887777777777777?777!!7?YPGB###BGPGBB######BBBGP5YY5555PPGGB###&&&&&&&&@@&&&&#BBGP5YJJ??777777!!!~~~~~~!!!!!!~!!!77777!!!!~~~~!7??777!!!~~~~~~~~~~~!!~~^^^^^^^^~~~~~~~^^~~~!!!!!!!!~~~^^~~~~~~~~~~~~~~~~~~~~~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!
JJJJJJ?77!!!77777!!!~!!!777777777777??7777777777777?Y5GB#BBB###&&&&###BBGP55PGB#&&&&@@@@@@&&&&&@@&&#BGP5YJJ???777!!!!!!!!!!!!!!!!!!7!!~~~~~~~~~~~~~~~~~!7??77!!~~~^^^^^^^^^^~~^^^^^~~!!!!~^^~~~^^^~~~~~~~~~~~~^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!
JJJJJ??77!!!77777!!!!!!!!!!!777777!!!!!!7777777777!!7777J5GGBB###&&&&&&&&&##&&@@@@@@@@@@@&&##BGGPP5YJ?7!!!!!!!!!!!!!!!!!!!!!!!!!!!~~!!!!!~~~~~~~~~~!!!!!~^^^^^^^^~~~~~~^^^^^~^^^^^^:^^^~~~^^~~~^^^^^^^~~~~~^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!
YYJJJ???7777!!77777!!!7777777777!!!!!!!!!!!!!!!!777777777?Y55GGB######&&&&@@@@@@&&&&&&&&&#BGPYYJJ?77!~~~~!!!!!!!!!!!!!!!!!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~^^^^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~!!~~~^^^~~~~~~~~~~~~~~~~~~~~^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!~~!!!
YYJJJ??77777!!!7777!!!7777777777!!!!!!!!!!!!!!!!7777777777?JYPGB###&&&&&&@@@&&&@@@@&&&#BGGPPPPPY??77!~~~~!!!!!!!!!!!!!!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~^^^^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~^^^^^^^^^^^^~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^~~~~~~^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!~~!!!
YYJJJ??7777!!!!7777!!!!!7777777!!!!!!!!!!!!!!!!!!!!777777!77J5PB#&&@@@@@&&&&&&&&&&&#BG5YJ????????77!!~~~~!!!!!!!~~!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~^^^~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!
YYJJJ??777!!!!!!77!!!!!!7777777!!!!!!!!!!!!!!!!!!!!!!777777?J5PB#&&@@@@&&&##BBGGP55YJ??77!!!~~!777!!!~~~~!!!!!!!~~~!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~!!!!~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^:::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
YYJJ???777!!!!!!!!!!!!!!!77777!!!!!!!!!!!!!!!!!!!!!!!!!!!!!777?JY5PGGGGGPP5YJ?777!!!!!!!!!!!~~~!7!!!~~~~~~!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~^^~~!!777!!~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JJJJ???77!!!!!!!!!!!!!!!!!!77!!!!!!!!!!!!!!!!!!!!!!!!!!!!77!!!!!!!!777??7777!!~~~~~~~~~~~~~~~~~!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~^~~~!!!!!~~~~~~~~~~~~^^^^^^^^^^^~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JJJJ??777!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~!!!!!!!!!!!!!!!!!!7777!!!~~~!!!!!!!!!!7!!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~^^^^~~~^^^^^~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JJJJ??777!!!!!!!!!!!!!!!!!!!!!!!!!!!!~~~~~~!!!!!!!!!!!!!!!!!!!!!~~~~~~~!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~^^^^~~~~^^^^^^^^^^^^~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
JJJJ??777!!!!!!!!!!!!!!!!!!!!!!!!!!!~~~~!!!!!!!!!!!!!!!!!!!!!!~~~~~~~~~~!!!!~~~~~~~~~^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~^^^^~~~~~^^^^^^^^^^~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~
!7?JYJJ7!~^^~~!!777777777!!!!!!!!!!!~~!!!!!!!!!!!!~~~~~~~!!!!!!!!!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~
#BBGP5Y?77!!!!!!77!!!!!!!!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~^^^^^^^^^^^^^^^^^:^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~^^^~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~
#BG5J77!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~~~~~~~~~~~!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^~~^^^^^~~~^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~^^^^^^^^^^^^^::::::^^^^^^^^^^^^^^^^^^^^^^^^^^~^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~
JJ?!~~~~~!!!!!!!!777!!!!!777!!!~~~~~~~~~~~~~~~~~!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~
!!~~~~~!!!!!!!!!!77!!!!!!!!!!~^^::::^^:::::^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!!!!~!!!!!!!!!!~^^:..................:::::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::::::::^^^^^^^^~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~
!77777!!!!!!!!!!!~!!!!!!!!!!!~^:................................................................................................................:::::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~^^^^^~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~
!!!7777!!!!!!!!!!!!!!!!!!!77!~^:....::........................................................................................................................................................................:.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~
~~~!!!!!!!!!~~~!!!!!~~~~~!!!~^:......:......................................................................................................................................................................................................................................::::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~^~~^~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!!!!!!!!!~~~~~~~::.................................................................................................................................................................................................................................................................................::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~^^^^~~~~~^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!!!!!!!!!~~~~~~^:......................................................................................................................................................................................................................................................................................................:::::::::::::::::::^^^~~~~^^^^~~~~~^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!!!!!!!!~~~~~~~^:........................................................................................................................................................................................................................................................................................................................::^^^~~~^^^^^~~~~^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!!!!!!!~~~~~~~^^:.........................................................................................................................................................................................................................................................................................................................::^^^~~~^^^^~~~^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!!!!!!!~~~~~~~^:...........................................................................................................................................................................................................................................................................................................................::^^~~~~^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!!!!!!!~~~~~~^^:............................................................................................................................................................................................................................................................................................................................:^^~~~~^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!!!!!!!~~~~!~^:.............................................................................................................................................................................................................................................................................................................................::^~~~~^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!!!!!!!~~~~!~^:.............................................................................................................................................................................................................................................................................................................................::^~~~~^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!!!!!!~~~~~~~^:..............................................................................................................................................................................................................................................................................................................................:^^~~~^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!~~~~~~~!!!~^:......................................................................................................................................................................................................................::........................................................................................................:^~~~^^^^^^^^~^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!~~~~~~~!!~^::................................................................................................................................................................................................................::::::........................:.................................................................................:^~~~^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!!!~~~~~~~~~~^::.............................................................................................................................................................................................::^^::..............:^^:...............................................:::::^^^^^^^:::::...........................................:^^~~^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~
~!!!!!!!!!!!!!~~~~~~~~~^::.............................................................................................................................................................................................::^^^^^::::^^^^~~~^^^~~!!!!7777!~~^:..................................:^~~~~~~~~~^^^::::............................................:^~~~^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~
~~!!!!!!!!!!!!~~~~~~~^^:::......................................................................:..................................................................................................................:^!?5PGBGGP55555PGBBGPP5YYJJ???7!~~^^:........:::.....................:::::^~^^^^^^^:::::.....:::::.....................................:^^~^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~!!!!!!!!!!~~~~~~~~^::...............:::::::::::::::::::::::::::::::::::::...:::::::::::::::::::::::........................................................................................................::^75PGB#&&@@@@&&&@@@@&&#BBBBBGPP55YJ7!!7J5Y?77?7~^^:::.................::::::::::::::::::::::::::::::::::::.................................:^^~^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~!!!!!!!!!!~~~~~~~~^:................::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^:::::::::..............................................::::............................................:......^!?5G#&&&&&&&@@@@@@@@@@@&&##&&&&&###BGPPPGGBGGGB#G57^:....::::.......::::::::::::......::::::::::::::::::::::::::.............................:^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~!!!!!!!!!~~~~~~~~^............:.........::::::::::::::::::::::::::::::::::::::::::::::^^^^^:::::::::::::.....................................::::::::....::::.........:::::...................::::::..:^!?YGBBBB&&@@@&&&&&@@@@@@@@@@@@&&&&&&&&&&&##BBBB#&@@&G?~^~^:::^:::::::::::::::::::.....:::::::::::::::...::::::::::::::.........................:^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!!!!!!!!~~~~~~~~~:.......................::::::::::::::::::::::::::::::::...:::::::::::::::::::::::::::::::::::..........................:::::::::::........::::^^^~~^^~~~~~^^^::::..........:::::..:^~7YPBBBBB#&&@@@@@&&&&@@@@@@@@@@@@&&&&&@@@@@&&&&&&&@@@??J7!~^^^^^^^^^^^^:::::::...::::::::^^^^:::::::..::::::::::::::::........................:^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
77!!!~~~~~~~!!!~~~~~^::......:........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................:::::::::............::^~!7??7777777777!!~!!~^^^:...:::^^::.:~7?J5B###&@@@@@@@@@@&&&&&&@@@&&&&&&&&&&&&&&@@@@@@@@&&###BP5YJ?777?77!!!!!!~~^:::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::^^^^^^^^^^^:::^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~
77!!!~~~~~~~~~~~~~~~^::...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................:::::::::.....:::::::^^!7?JJ?77!!!!!!77!!!77??????7~^~7?~^^!7YP#&&&&&@&&&@@@@@&&&&&@@&&#BBBGGGGGGBBBB####&&&&&&&&&&&&&&#BG5?7~~!?7!^::::::....:::^:::::::::::::::::::::::::::::::::::::::::::::::::::::::::^!7?777!~^^:^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~
!!!!!~~~~~~~~~~~~~~^^:...............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................:::::::::............:^~!7?JJ?77!!!777777777?JJ??77777777?P&@@@@@@&&&@&&&@@@@&&&#&&&@@@@@&&&&##BBBBGGPPPPPPGGBB##&&@@@@@@&&BG5Y55Y7~^::^^:::......:::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^:^^~!!!~~^^::^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~
!!!!~~~~~~~~~~~~~~^^::...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................:::::::::....:::::....::^!7?????7!!777!777!!7??77!7?Y55PB#&@@@@@@@@@@@@@@@@@@@@@&&@@@@@@@@@@&&#BBBGP5YJ???JJYY5PGB#&&@@@@@@@@@&&&#G5?!~^^:..........::::::::::::::::::::::::::::::::::::........::::::::::::::...::^^^~^^:::..:^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~^^^~~~
!!!~~~~~~~~~~~~~~~^::...............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................:::::::::....:^^^^^^^^^^~~!77777?????7!!!!~~~~!~!!7YGB&&@@@&@@@@&&@@@@@&&@&&&##B##&&&&&###&&#BGP55YJJ7!!!!777!7?J5PGBB#&&@@@@@@@@@@&#G5?~:.....:..........::::::::::::::::::::::::::::::..............:::::::::::::^^^^^:::^^~~^^^^^^^^^^^^^^~~~~~~~~~~~~~~^^^^^^^^^^
!!~~~~~~~~~~~~~~~^^:...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................:::::::::......:^^~!!777777777!!77777777??777?JY5GB###&&&@@@@@@@&&&&@@@@@&&&#BBGB##&&&&&#BGP5YJJ???7!!~~~~~!~~~~!!7?JYPB##&&&&&&&&@@@&#GJ!^:...............:::::::::::::::::::::::::::::::::::::::............::^^^^^::^^~!7JY?~^^^^^^^^^^^^^~~~~~~~~~^^^^^^^^^^^^^^^
~~~~~~~~~~~~~~~~^^:................:::::::::::::::::::::::::::::::::::::::::::::..::::::::::::.............................................:::::::::.......:^!7????????77!!777777??J?77!~!?YPB#&&&&@@@@@&#&&@@@@&&@@@&&&&######BBGG5J7!!!~~~~~~~^^^^~~~~^^^^^~~!7J5PG#&&&@&&&@@@@&#P?~:...::::.........:::::::::::::::::::::::::::::::::::::::::::::::...:::::::^~~77????!~^^^^^^^^^^^^^~~~~~^^^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~~~~~^^:...............:::::::::::::::::::::::::::::::::::::::::::::....:::::::::::..............................................::::::::....:^~!7???????????7777?777??JJ?7!^:^!JPB#&&@@@@@@&BGGB#&@@@@@@@@@@&&&##&##GPJ7!~^^^^^^^^^^^^^^^^^^^^^^^~~!!?JY5G#&&@@&&&&&&&&#PJ!:...:^:.........::::::::::::::::::::::::::::::::::::::::::::::::::::::^^~~~~!!!!!!!~^^^^^^^^^^^^~~~~~~^^^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~~~~^^::...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................:::::::....:::~????????????????77?J7!!77?????77J5G#&&&&@@@@@&#PYJJ5B&@@@@@@@@@&&###&&#GY7~^^^^^^^^^^^^^^^^^~~^^^^^~!!77JYYY5PB#&@@@&###&&&#PJ~::..............:::::::::...................:::::.:::....::::....:^^^^~~~~~~~!!!!!~^^^^^^^^^^^^^^~~~^^^^^^^^^^^^^^^^^^^^
~~~~~!!!!~~~~~~^:................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::......::^^~~!!77????????????JJ?!!7?JJY5PPB#&@&&&&@@@@@&#P?!!?5#&&&&@@@@@@@&&&##BPJ7!~~^^^^^^~~~~~~~~~~!!~^~~!!!!7?Y5YYYY5G#&@@&##B#&&#G5?~^................................:::::::..:::::::::::....:::..:^^^^::^^~!7????!~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~!!!!~~~~~~^:................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::.......:.::^~7??JJJJ?????JJ?7?YPPGGPP55PGB#&@@@@@@@@@#G5J?YG#&@@@@@@@@@@@@@#BGG5J?7!!~~~~!!!~~~~~~~~~~~7?JJ??7!!77????JY5G#@@&&&&&@@&BGPJ~:.........................:::::::::::::^^::..:::::^:::::^^^^^^^^:::^7?YYJ7!~^^::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~!!!!~~~~~^^:................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................::^~~!7!!~^^^^~!77??77777777?????????J5GBGP55Y5PB###&@@@@@&&&&BGP5PB&&&@@@@@@&&@@@&&&#PJJYYJ7!~~~~~~^^:::::^^^^~7JYYYJ??77777777?JYB&&&&@@@@&&&#GY!:::...................:::::::::........:::::.......::^~!77!~^:^^~!!7?J?7!~^^^^:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~~^^::...............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................:^^^::..:^~!777~~~!!!777777777777??JJY5GGP5555PB#&&&&&@@@@@&&#PJ??YG#&&&@@@&&&&&&@@&&BPYJJ???7!!!!!~~~~~~!77??777??JYYYJJ???77777?JPB&&&@@@@@&&#GY^..::.....................:::::::......::::^^^~~~~!!7????7!^::^~!!7!!~^^::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~^^::..............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................::::::::::^^^~~~~^^~~!777?7777777???77?YPG##&&&&&&&&&@@@@@@@@&GJ??JPBBB#&&@@@@@@&&&&&#PY?7!!!!~~!!!!!!!!77?77!~~~7?JY555YJJ?7777??J5G#&@@&@@@@&B57:...:.......................::::........:::~~!77?Y5GBBBGGP5J77??!^.....::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~^^:.............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:.....................................:::::.....:^!7???77!!!!!!!7777777!7?YP#&@@@@@&&@@@@@@@@@@@&##BBBGP5PB&&@@@@@&&##&#GJ??7!!!77777!!!777???77!~!7?JY5PP55YJ?77777?YPB&@@&@@@@@B7^::.:..................................::::::~?5PGBBBBBBB####BP?~:.......:^^^^:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~~~~!~^::............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::.........:...................:^^^:.......:^~~~^^!777777!!~~^^^~~~!!7??7?JYG#&&&@@@@@@@@@@@@&&@@@@&#BPPG#&@@&&#BGB##BPYJ??77777!!~~~~~~!!7?JY5PP5YYY55PPP5YJ?777777JPB&@&##&@@@B?^:..:::..::::::::::::::::::.......:^^~~!!77?YPGBBGGGGB##&#G5?~:...........::^^:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
!!!~~~~~~~!~^:............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::........::...................:^^^^^^^^^~~~~^^:::~777777!!~^^^^^^~~!7JJ??77YGGGB&&&&&@@@@@@@@&&&&&&&###&@@@@&BPYYP#B5?!~~77!!!!~~~^^^^^^~!7J5G#&#BGP555Y5YYJ?7777??Y5B&&#BBB#@@B?^:....:::::::::::::::::::^^:......:~!7?JYY5G####BGGGBB#BPJ!^..............::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~^:.............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::.......::...::::............:::::~7JYY?!~^:::::~7?7!!~~~~~!!!!!!~~~~!77!!?Y5PB#&&&&@@@@@@@@@&&&#&&&@@@@@&&B5JY5YYJ?7~^~7?77!~~^^^::::^^~7?YP#&&#GP5YJ?????7777?JY5PG#&&#BB#&@G7~^::..:::::::::.........:^^^::....:^~!?Y5PGB####BBB#BG5?~:................:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~!!!~~^:..............:::::::::::::::::::::::::::::::....:::::::::::::::::::::::::...........::^^^^^::.....::...:::::.............::^!JY5J!~~~~^^::~!!!~^^^~~!7??7!~^:::^~!77?J5B#&&&&&@@@@@@@@@@&&##&@@@&&###B55GGJ^:~!!!7??77!~^:::::::^~!!7?YG#BG5Y?7!~~!7?????JJY5PB#&#BB##BPJ!~~^^:::::::.............::^^:::::::^~!?YPGBB###BBBG5J7^:..................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~!~~^^:..............:::::::::::::::::::::::::::::::....:::::::::::::::::::::::::...........::^^^^^^:::::....:...:::::::.........:^~7??7!~~77~:::^~!!~^^^~~!!!!~~^:::^~7?Y5555PGB#&&&@@@@@@@@&&&&&&&@@&#BBB#&&#BBPJ~^^^~!!!~^^^~~^::.:^^~~~~!!7?JYYJ!~::::~7JYYYYY55PGB##G5YYJ7!^::::^^::.:::..............:::::^^^~~!7?JY5PPGGGGPY?~:......................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~~~~^::..............:::::::::::::::::::::::::::::::....::::::::::::::::::::::::...........::::::::::::.....::::::::..............::^^:.:^~77~...:^~~^^^^^~~!!!!!!!!!7JYY55YYJJY5G#&@@@@@@@@@&##&&&@@@&##&@&&&&BPJ!^:^^^^^^~~!777!~^:^~!77!~!77~~!7!~^::^~7Y55YYYY5PGGB#&#GGP57~^^:...:::::::.................::::::^^^^^^^^^^~~^:...........................:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~~^^^::.............:::::::::::::::::::::::::::::::.....:::::::::::::::::::::::..............::::.............:::::....:^~!!~^:::......:^!77!^..::^^^^^^::::^^~!777777!7??JJJYYY5GB#&&&&&@@@@@&&&@@@@@&##&&&###B5?!^^!!~~~!?YYJ7!!~~^~7JYYYYYYJ7!~~~^^~~?YPGBGPP55PG#&&&&#BP5J~^:::.....:::::..............::.........:::....................................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~^^:::..............:::::::::::::::::::::::::::::::.....:::::::::::::::::::::::.............::::^:::::.........::::..::^!77!~:..:...::^!7??!~^^^~~^^^^^^^:::::^^~~~~~~!7?JY555YJJ??JJYY5PGGGGBBB#&&@@@@@@@&B55GGY7~::~~~~~!!!!~~^^~~!7JY55PP5YJ7~~~~^^^~75BB####BB#&&@@&#BPY7~^::^:::...:::::.............::::......:::::::::................................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~^:::..............::::::::::::::::::::::::::::.........::::::::::::::::::::::..............::::::::.......::.:::::....:::::......::.::^~!!~^~~~~~~~~^^^^^^^~~~~~!!77???JJJYYYYYY55PGB###BBBB###BB####&&&#BBGGBGJ!~~~^~~~~^^^^^^^~~!777???JJJ?7!~!77~^^^7YPPGB#&&&@@@@@&&#BG5J?7!~^^:....::::..............::........::::....................................:::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~^::..............:::::::::::::::::::::::::::...........:::::::::::::::::::::...........:........................::::.......:^^:..:.....:~!!!!!!~^^~^^::^^~!!7777??JJJJJJJJJ??JY555555PPGB###&&&&&#######GPGBGPY!^^~~^^^~^::^^^^~7?777!!~~!!?JYYYYJ?!~!7J555Y5GB&@@@@@@&&#BG5YJ?7!^:::::::::.................:::::::..........................................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~!~~^^:...............:::::::::::::::::::::::::.............:::::::::::::::::::::...........::::..............................::::::.::^^^::^7JJJ?7!!~~~~~~~!!77?JJJJ??7!77JY5YYJ?JY55P55555PGB##BBB#&&&&&&&#BGP5Y?7!~~^^^~~!77777!!?5P5J?7!!~~!?PBBBPJ7~~7J5PP5555G&@@&&&&&#PJ???J??7!^:::.:::::.............:^^^^^^:::.......:::................................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~~::............:::::::::::::::::::::::::..................:::::::::::::::::::........................::...............::........::^~!77?J5P5Y?!!!!~~~!!77??????7!~~~~~!77777??JYY555555PP5PPP55PGB##&&&&&&&#GPY?7!~~~~!!!7?JJJ?7JPGP55YJ?777JPGBBPJ?7?5BBBGPPGB#&&&####BPJ!!777777~:..::..................:::::::::::....:::::................................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~^~!~:............:::::::::::::::::::::::::....................::::::::::::::::.................................::....::::^^:.......::~7?Y555YYJ?777!!~^~!77777!!!~~~~~!7??7!~~~!7?JJJJJJJJYYYJJJJJYYY5PPGBB#####BGPYJ?7777!!!!77???JJY5PPPPP5555PPGGGGGPG#&&##BB#&@&&#BGPP5Y?!7??7777~:..:..........................:::::::::::::.................................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~^:............::::::::::::::::::::::::::...................::::::::::::::::.................................:::.....:^~~!!~::::::^!?JYJ?777?JJJ?!~~~~!7777!!~~!!7?J5PGP5YJ?77??JJJJJJJ??JJJJJYYYYYYYYYYY555PGGGGPP55YJ?????777?JJJJYYPGGBBGGPGGB#&@&BGB##&&&&@@@&#BGP5YYYJ????7!!!~^::..............................:::::::::..................................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~~^:...........:::::::::::::::::::::::::::...................::::::::::::::::..........................................:^~?Y?~^^^~!!7!~^::^7?JYJ7!~~!77!77777777!!7J5B#BGPPP555555PPPPPPPP5Y555PPGGGGGGGGGGGPP55YYYYYYYYYJJJYY5P5YYJJJJYYYYYYY5PB#&&&#P5PG#&@@@@&&#BBGGGGP55Y?7!^::....::....................................:...................................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~~^:...........::::::::::::::::::::::::::::...................::::::::::::::....................................:...:^!JY5PPPJ!!??!~~!!~~^^^~~~~^~!7?!^~!7??!^:^~!?YPBBBBBBBBBBBBBBBGGGPP55PPPPGGGGGGGGGGGGGGGGGP55YYY5555YY55PGBBBBGP5YJJJYY5PGBB###BGPPB&&@@@@&&#BBBBBBPY7!~^^::::..::::.........................................................................::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~^::..........:::::::::::::::::::::::::::::...................::::::::::::..........................................:^~7?JJJ?!~~!7??7~^~~~!!~!!7??7~~~~!77~^~!!!75BBP5YY5PPPPPGBB#####BGPYJYYY5555YYYJ?????JJJJY55PPPP555PGBB####BGGGPP555555555YYYJJJJJ5G#&&&&&&##BBBGP5YJ?JJJ?7!~:...............................................................................:::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~^:...........:::::::::::::::::::::::::::::...................::::::::::::........................................::::...:^~!777!!!7?JJ?777J55Y?!~~7JJJ7~~7JJYG#&B555Y?7???JJY5PGBBBBGPYJ77JYYJJ?77??JY5PGGBBB#&&&&&&#BBGGGGBBB#######BBBGGP55YYY555YJ?JJ5PGGBB##&&#BG5J7~~~~!~~^~^^:::............................................................................:::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~:............:::::::::::::::::::::::::::::...................::::::::::::............................................:^~!!~~7??77??7!7JYPP5?!!!7?J?7~~~7JY5GBGYJY5555PGGGGGGGB####BBP5YJJ?????JY5PB#&&&&&&&###&&&##BBGGGPPPGGBB###BGP5YYJJJJJJYYYYYY5YYYYYY55PGGBGP5?!!777777!~^^::..........................:::...................................................::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
!!~~:...:........:::::::::::::::::::::::::::::...................:::::::::::............................................:~7?77~~7JJ7!!!7?JY5Y?!^:^~7JJ7777??JYPPGP5555PPGGGGPP555PGB#&&&##BBBBBB###&&&&&&&####&&&#BB####BBBB#####BGPPPGBB##BGPPPGBBBGPPPGGGGGBBBBBBGGP5YJ7!~~^^::.:::::..........................:::::::...............................................::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
!!~^:.........:::::::::::::::::::::::::.........................::::::::::::.........................................::^~!7777?J?77777??JJYJ7^:::~7777~!JPP5YYJ?????????JJJJ??777?J5PGBBBBBGGGGGGGGPP5YYJJJJYY5PPGGBB############BGGB###&&@@@&&&&&&&&&######BBGGPPPPPPPPP5?~:.......:::...................................::......:.....................................:::^^:^:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
!!^::........::::::::::::::::::::::::....................::::..:::::::::::...........................................:^!7!!!7?JJ7~~~!7??77!~^^^~!7??7!!!?YYJ?7!~^^~~~~~~~~!!!!~~~~~!7?JYYYYJJ?7!!77!!~~~~~~~~~~!7?Y55PGGBBB###&&&&&&@@@@@@@@@@&&&&@@@@@@@&&&####BBBBBBBBBGY~:...::.........:::........................:......::.........................................::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
!!^::........::::::::::::::::::::::::....................:::....::::::::::.........................................::^~7?777J?!^~!!~~~~!!!^^^~!JYJJ?77?7!!!!!~~~~~~~~~~~~!!!!~~~~~^^^~~~!!!!7!!~!!7!!!!~~~~^^^^^~!!77??JY5PGB##&&@@@@@@@@&&&BGPPPB#&@@@@@@@@@@@@@@@@&&#BBB57~:..............:.......................::::.....:::........................................:::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
!~^::........:::::::::::::::::::::::.....................:::....::::::::::..............................:::........:^!7??Y55J7!~!7!!!!777!~!7J5PP5JJJ??77777777!!!!!!~~~~!!!!!!!!!!~~^^^^^~~~!!!!!!!!!!!!!!!!~~!!!!!7777???JJY55PGBBGGGPP5YJ?777?J5G#&&&&&&&&&&&&&&&##BBBGPJ7^...................................:.......::.............................................:::::::::::^^^^^^^^^^^:^^^^^^^^^^^^^^^^^
!~^:.........::::::::::::::::::::.........................:.....::::::::::......................::......:::.......:^7YYY5PG57!~~~~~~~!77!7?YPGP5YYYY5J7!!77?????777!!~^^^^~!!7777777!!~~^^^~~~^^^~~~~!7?JYYYJ?77!!!!!!777!!!!~~~~~~~~~~^^:::^^~!!!7J5G#######BBGGGBBBBBBBBG5?~:.........................................................................................::::::::::::::::^^^^^:::::::^^^^^^^^^^^^
~~^:.........::::::::::::::::::..........................::.....:::::::::................................::......:^!7J5PG5Y?!~~~~!!~^~!!7?5GGPY?77???7~~~~!!7?????77!~~^^^^~~!!!!77!!!~~~^^^^^^^^^~~~~!7????7!~~^^~~~~!!!!!~~^^^^^^:^^^:::::^~!777777J5B&&#BGPPGGBBBBBBGGGGPY7^:.......................................:::.......:::.....................................:::::::::::::::::::::::::::::^^^^^^^^^^
^^:........::::::::::::::::::::..................................::::::::...............................::::...:^!7?JY5GPY!~~~~!7??77~~!J5PG5?7!!!7!~~~~~~!7777777777!~~~~~~~~~~~~~~~~^^^^^^^^^^^~~~~^^^~~^^^^:^^^~~~~~~~~~^^^:::::::^^^~^^^^^~!!!!!~~!JPGGGGGGBGGGGGGGGP555Y?!^..............................................^!7JY7:....................................:::::::::::::::::::::::::::::::^^^^^^^^
^::.....:::::::::..::::::::::....................................::::::::........................::::..::^^:::^~7JYY5PPP5J7!~~7??7777!!7JYYJ7!!!!77!!!7?77777!!!~~!!!~~~^~~~~^^^^^^^^^^^^^^^^^:..:^^^~~~~~~^^^^~~~~~~~~^^^^::::::::::::^^^:::::^^^^^^^^~7?J5PGGGP55PGBBG5YJYYJ7^....................................:::.....~YGB#G57:....................................::::::::::::::::::::::::::::::::::^^^^^
::.....:::::::::....:::::::::....................................::::::::........................::::::::^^^:^~7Y5Y?J55YJ7!!!77??7777JYYJ?7!!!!!!~~!!777!!!!!~~~~~!!!!~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~^^^::::::^^::::::::::::::::^^^^~~~!?Y5PP55GB##B5??JJY?~:......:.........................::....:^!?YG###BPJ!:....................................:::::::::::::::::::::::::::::::::::::^^
::......::::::::..........::::........................:::::::::......:::.....................::::^~^::::^^^::^!7JYYY?77?JYYJ??????77?JY?!~~~~!!!~~!!77!!!!!77!!!!!77!~~~!!!!~~^^^^^^::::::^^~~~~~~~~~~~~~~~~^^^^~^^^^^^::::::::::::^::::::::::::::::^^^^:^^~~!7JYY5GBBBGP5YJJJ?~...................:::..........::::::^~!7J5PGBBB5?~....................................:::::::::::::::::::::::::::::::^^^^^^^^^
........:::::::::....::::::.....:::::::::::::^^^^^::::::::..::::::::^^^^^^:::::::::::.......:::^^^^:^^:::^^~~7?JY5PGPP55YJJY555YJ?JYY?7!~~~!!!!~~!!777!~~!!77!!!!!!!~^~!!777?7!~~~~^^:::::^^^^^~~~~~~~~~~~~^^^^^^^^^::::::::::::::::::::^^^^^^^:::::^^^^:^~~~~!!?J5PGGPP5YYJJJ?~::::.....::::......:::::....:::::::::^~^^^!?YPG#B57^................................:::::::::::::::::^:^^^^^^^::::::^^^^^^^^^^^^
.....:::::::::::::::::::::...:^~!!!~~~!!!!!!77777!~^:::.....::::^^~~~^^^^~!!~^^~~~^^^:.........:^^~~^^::~J55YYY5PGGBB##BGP55GGGP5YJJ?!~~~!!7!!!~~!!777!~~~~!!!!!~~!!!~~!!!77?77!!!!!!~~~^^^^::::::^^^^^^^^^^^::::^^^^::^^^^^^::::::::::^^~~~~~^^::::^^^^^^~~~~~!7J5PGGP5YJJYY55?!^^^::^^^~~^:::::^^~!!!~^^::::::::::..::::!J5GB##57^................................::::::::::::::::::::^^^^^^::::::^^^^^^^^^^^^
....:::::::....::::^^::...:^~7JY55YJ????????????7!~^::.....::::::::::::::^~~~^~!!~~^::..:^^^^^~~!JP57~~7Y##G555555PGPPPPGB#BP555YJ7^:^~~~!!!!~~~~~~~~~~~~~!!!77!~~~!!!~~~!!!!!~!!77777777!!~^::::::::::^^^^^^::::^^^^^^^^^^^^^::::::::::::::::::::^^^^~~~~~~~~~!7YPGBBGP5YY55PPY7!~~~~~^^^::.:~!77?J??7~^::::::..:......:^!J5PGBGY!^................................::::::::::::::::::::^^^^^^::::::^^^^^^^^^^^^
....::::::::::::::::::..:^7J5PP5YJ???JJJ??77777!!~^^::::::.:^^::...:::::::^^^^~~^^:....:!?JYY5PGBBBBGGB#BPY77YBGJ?J555YJ?Y55J?7!~~~~~~~!!!!77777!~^:::^~!7???77!~^^^~!~^^^~^^^~~!7777777777!~^:::::::^^^^^^^^^^^^^^^^^^^^^^^^^:::^^^^^::::::::::^^^^^~~^^~~~~!~~7JPGGGGP5Y5PP5Y7~:::::....::::^~~~!!~^::....::..........::^~~~!!!^:................................:::^^^^^:::::::::::::^^^^^^::::::^^^^^^^^^^^^
....::::::::::::::::::^!?Y5PY?!:....:^!77!!~~~~~^^^::::^^^~~!!~~^^~!!~~^:^^^:...::::..::~!~^^:^!?Y5P5555YJJYYYJ?777?JYYYYJJYP57~^~!7???JY555PPP55J7~^^^~!?JJYYYYYYJ?JJ7~^^^^~~!!7???7!!!!!~~^::::::::^^^^^^^^^^^^^^^^^^^^^^^:::^^~~!!77!~~^^::::::^^^~~~^~~~!!!~!?Y55555YJY55YJ!^:...:::::^^^~~~::.........:::.......................................................:::::::::::::::::::^^^^^^::::::^^^^^^^^^^^^
...::::::::::::::::~!7JY5PP5J7~:::::^~!!!!~~~!!!!~~~~~~~!7??7777??JJ?!^:.........::::::^~~^::::.:?B&&&##GYYY55PPPPYJJJY5555Y?7!!7JJ????JYYJJJJY555YJ7!~^^^^!7?JY5P55P5J!~~~~~!!!77777!~~~^^^^:::.:::::::^^^^^^^^^^^^::::::::::::^^~!?YYYYYJ?7!~^::::^~~^^^~~~~~~!?Y5PPP55YYYJJ?!~^::::::^^^::^!!^........................::......::.....................:^!!!~:.....::^^^:::::::::::::::^^^^^^::::::^^^^^^^^^^^^
...:::::::::::::::^~!7?JJJ???7??JJJJJ???7777???????7777?777!!!!7?JJ?7~:.........:^!777!~~^....:!5#&@&###GY?J5B&#B5?7?Y5555Y?!!7?7!!!7?JJJ?7!!7?J55P5J?7!~~~!!!!77?JYYYJJJJJ7!~~~!!777!~~~^^^^:::::::::::::^::::::::::::::::.....::^~!7?JY5PPP5J7!~^^^^^^:^~~~~~~7?YPGGGGP5PGPYJ??7!!!!~~!77!~~^:........................::::..............................::::.......:::::::::::::::::::^^^^^^::::::^^^^^^^^^^^^
...::^^^^::....:::^!7JY555YYJJJJJJ?7!!7777777777777!!!!77!!!!!!7777!~^::::::.....:~!7!~~~^::^7?JJJ??JY55J?JPB&@@&#PJY5PGGPYJ??JJ??777????77!777???777777!!~~~~~~~!??!~~!!!~!7!~~~!!77!!~~~^^:::::::::::^^^^^^^^^::......::........::::^~~7777!~~^::::^^^^^~~^^^~!?JPGGPP5Y5P5?!7JY5555J?7?77!!!!~!!!!!!!!!77!!^:....:.........::::....................................::^^::::::::::::::^^^^^^:::::^^^^^^^^^^^^^
..:^^^:::::....::^!?Y5PPPP55YJ?77??????777777777!!!!777?77!!77777777777!!~^:......::^~!!!!~~^~~~~~~!?JYYJJ5G#&&@@&#GGPGBBPYJ????7!777777777777777!!!!!!!~^^::::^~~!~^^^~~77!!!!!!!777!!~~^^:::::::::::^^^^^^^::::......................:::::::::::::::^^^^~~~^^~!7J5PP5YJ?JJJ777??JJYYYJ????7!~~!7777!!777??7!^:................:::....................................::::^::::::::^^^^^:::::::::::::::::::::::
.::^^::...::....:^!?5PGGPP5YJJ????JJJJ?77??77777777777777777777!!!77??J??7!~^::^^^~~!7777!~~^:::^^!7JYYYYY5PB#&&&&&####&#G5J7!777!!!7!!!!!!!!!!~~~~~^^^^^^^:^^^~!!!~~^~~~77!~~!!!!!!!!!~^^::.....::::^^^^^^^::::................................::::::::::^^^^^^!?JY5YJJ77?YYJ?77!!!!777??JJJ?777????77777777!~~^:::..................................................:::::::::::::::^^^^:::::::::::::::::::::::
..:::::...:::...::~7YPBBGP5YYYJJJJJJ??JJ??77777777777777777777777777??????777777???JJ??7!~^:....:~7J5PP5555GB##&&&&&&&@@@B5?!!!!!!!!!!!!!!~~~~~^^^^^^:::^^^^~~~!!!!!!~~~~~~!!!!!~~~~~^^^:::......::^^^^^^^::::....................................::::::::::^^~!7JY55YJ?7!?Y5YJ?7!~~~~~!!7??J?7?JJJJ?7!!!!!7777777!~^^:.................:::::::::.:::::................::::::::::::::^^^^^::::::::::::::::::::::
..:::....:::::...:^!?PB#BGP555YYJJJJJJY5YJJ?7777777777777777????????????7777777777?????7!~^:....:~7JPGGGGGGGBBB#&&&&&@@@&BY?7!!!!!!!!!!~~~^^^^^^^^^^^^^^::::^^~~!!!!~~^^~~~~!!~~^^^::::..........::^~~~~^^:::......................................:::::::::^^!?J5P55Y?7!!7?JJJ??77!~~~~~~~~!!!!7???7!!~^^~~!!7777777!!~^::........:::::^^^^^^::..................................::::^^^^::::::::::::::::::::::
...:.....::::::..::^!YGBBBGGPP5YJ???JJY555555YJJ?77!!!!!7????JJ????7777!!!!!!!!!!!!!777777!~^^:::^!J5PGGGBBBBBB#&&&&@@@&&GYJ?7!!!!!!!!~~^^^:::^^^^^^^^^^^^^:::^^~~~~^::::^^^^^^^::::.............:^^~~~~^^::........................................::::::::^~7Y5PP5Y?!!~~!7?JJJJJJ?!~~~~^^^^^:^~~!!!~~^^^^^~~~~~~!!7???77!~^::.....:::::::::......................................:::^^^^^:::::::::::::::::::::
.........::::::::::^!JPGBBBBBBG5YJ??JJ??JY5PGGPP5YJ?77!!7?JJJ???777!!!!!!!7!!!!!~~!!!!7777777!!!!7JYPPP55PGGBBBB##&&@@@&&G5J?7!!!77!!~~^^^^^^^::::::^^^^~!!~^^^^^^^:::....:...::::::::::.........:^^~~~^^:::........................................::::::::^~?5PP5Y?7~~~~7?Y555YYJ?!~~~~~^^^^^^^^~~~~^^^^^^^~~~^^^~~!!7?JJJ??!~^::................................................:::^^^^^^^^^^^^^^^^^^^^^^^^^^
..........::::::::^~!J5PPGGB##BGP5YYYJ7!!7??JY5PPGPP5YYJ?JJ??777777777!!!!77!!!!!!!!!!~~~!!!!77?JYY55YJ7??YPGBBBBBBB&@@&BPJ?7!!!777!!~~~!!!!~~^^:::::::^~~~~^::........:::........:::::.........:::^^^^^^::::::::..................................::::::::^~7YGBP5Y?7!!7?Y5PGGGP5Y?7!!!7777!!~~~^^^^^^::^^^^^^~^^^^^^^~!!7??JJ?77!~:.........::::.................................:::^^^^^^^^^^^^^^^^^^^^^^^^^^
.....::::....:::^^~!?YPPPGGBB##BBGPP5YJ?77!!!!7?Y5PGGGGGP5J??7777????77!!!!!!!!!777!!!!!~!!!!77!~~^^^^^^^^~7J55PGGP5B&#G5Y?7!!!!!!!!!!!!!!7!!!~^^^:::::::::::.........:::::::::................:::::::^:::::::::::................................:::::::^^~7JP##GP5YJJY5PGGGBBBBGP5YYYJJJJJ?77!!~~^^::::::::^^^^^~^^^^^^^~~~!77?JJ?77!~^^:.........:::...........................::::^^^^^^^^^^^^^^^^^^^^^^^^^^
....:::::.....:^^~~7?5PGGGGGBBBB##BBGP5YYYJ?7!!~~!7?YPGBBGPYJ?7777???77!!!!!!~~~~~~!!!!!!!!!!!!!!^....::::::^~!7JYPG#JJJJ?7!!~~~~~~!!~~~^^~~~~^^^::.........::::::::.....:::::::::..........:::::::::::::::::::...............................:::::::::^~7YG##GP5YYY5G#BBBB##&#BGGGPPPP5YJ???77!!~^^:::::::^^^^~~~~~~~~~~~~~~!!!?JYJ?7!~^::................:::.................::::^^^^^^^^^^^^^^^^^^^^^^^^^^
........::::::::::^~7YPGBBBGGGBBBBBBBGGPP5YYJ?7!~~~~!?Y5PGBGP5YYJJ??777!!!7!!~~~~!!!!!!!!~!!!!77!~::..::^^^^^^^!YPPPP555YJ??777777!!~~^^^^^:::^^^^~~~~!~^::::::::::::::...........................:::::^^^^:::::.:::.....................:::......:::::^^~^~7YPGG5YJYY5PGBBGB&&&&#GGGGBBBGP5YJJ??7777!!~^^::^:::^^^^^^^^^^^^~~~~~~!!77?????77!~~^^:::::..:::::.............:::..:^~~^:::^^:..:^^^^^^^^^^^^^^^^^^
.........::::::::::^!?YGB#BBGGGGBBBBBGGGP55YJJ?7!!~~!!7JY5PGGGGG5YJ????????7!!!!!!!!!!!!~~~!!77??!~:..:::^^^^^~?GBG555PGGG55YYJJJJ??77!!!~~^^^::::^^^^~~^^:::::::..................................:::^^^^^^::::::::::...................:::::..:::::^^^~!!7J5P55YYYY555PGB#&@@@&&###&&&&#BBGP5YJJ??77!!~~~~~^^^^^^^^^^^^^^~~~~~~~~~~~!!77??????777777!^^^^^^^^^::.....::::::::^~?J!^::::^::::^^^^^^^^^^^^^^^^^^
.........:::::::::::^!?YGB##BGGGGBBBBBGGPP55YYJ?77!!!!!777?5GB#BGP5YJJYYYYJJ??777!!!!!!~~~!!7???7!~^:.:^:::::~75#&BGPGGB#BGP55YYJJ??????7!!~~^:::::::::::::::::....................................:::^^^^^^^::::::::::...................:::::::::^^^~~~!J5PGP55555PPPPGB#@@@@@@&&&@@@@@&&&#BGP5YJJJ???77777!~~^^^^^^^~~~~~~~~~~~~^^^^~~!!777?????JJJ?77!~~^^~^^::....:::....:~!?J!^^^^^^^^^^^^^^^^^^^^^^^^^^^^
........::::::::::::^^~7YPB##BBGGGGBBBBGGPP55YYJJ?77!!~~~~!?YPBBBBGP55YY5555YYJJ?777!!!~~~!!77?77!!~^:^^^::::!JG#&&######BGPP55YYJJ?7777!!~~^^::::.....::::::......................................::::^^^^^^^^^::::::::..................:::::::^^^~~~!!?5PGBGP5555PPGB#&@@@@@@@@@@@@@@&&&&&#GP55YY5555YYYYJ?7!!~~~~~~~~~~~~~~~~~~^^^^~~~!!!!!!7777??JJJ7!~^:::::::....::.....^~!!!!7?JJ?!^^^^^^^^^^^^^^^^^^^^^
.......:::::::::::::^^^~7JPB###BBGGBB#BBGGPP55YYJJ?7!!~~^^~!7J5PBBBBGP5555PPP55YJJ???77!!!!!!777777!^::::::^~JG#&&&&&&&&&#BP55YYJJ??7!!~~~^^^::::::::::::::::.......................................:::::^^^^^^^^^:::::::::.....:::::..:::::::^^^^~~~!!7?Y5GGBGP5YJY5PB#&@@@@@@@@@@@@&&&&&&&#BGGPPPPGGGPPPP555YJ??777!!!~~~~~~~~~~~~!!!!!!!!!!!!!!!777?JJ?7!~^^:::::::::......::^^^!?Y5PGPJ~^^^^^^^^^^^^^^^^^^^^
......:::::::::::::::^~~~!?YG#&&#BBBBBBBBBGPP5YYYJJ?7!!~~~~~!7?YPGB##BGGPPPPGGP55YYYYJJ??77!!777777!~:::..:~?G&@@@&###&&&#GPYJ?77!!!!~~~~~^^:::::::....:::::::...........:..........................:::::::^^^^^^^::::::::::::::::::::::^^^^^^^^~~~!!!7?Y5PPGGP5Y??J5B&@@@@@@@@@@@@@@&&&&&&##########BBBGGGGGGPP5YYJJ?77!!!~~~!!!!!7777777!!!~~~~~!!!777???JJ?7!~::.....::..:::::^^~!7?JYY?~^^^^^^^^^^^^^^^^^^^^
.....::::::::::::::::^~~~~~!JPB#&##BBBBBBBBGPP55YYYJ??7!!!!!!77?Y5PBB###BBGGGGGPPPPPPP55YYJ????!~~!!~~^::.:~?G&@@@@@&&&@@&BG5J?77!!!~~^^^^^:::::::..:..::::::...........:::............................:::::::^^^^^^::::::::::::::::^^^^^^~~~~~~~!!777?J55PPPP5YYJYG#&@@@@@@@@@@@@@@@@@@@@&&#&&&&&&&&&&#BBBBBGGGGPP55YYJ??777777777777777!!!~~~~~~~~~!!77??JYYYJ7!^:......::^^:..^~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::::::::::^^^^^~!?YGB###BBBBBBBBGGP555YYJJ?7!!!!777???Y5GB####BBBBBGGGGGGGGGGPPPPP5?!!!!77!~^:^~7P&&&&&&&#&&&#GP5YJ?7!!~~^^:::::::::::::::::..................................................:::::::^^^^^::::::::::^^^^^^^^^~~~~!!!777?JJJY5PPGP5555PB#&@@@&&&&&&&&&@@@@@@@@@@@&&&&&&&&&&&#####BBBGGGGGGPP55YYJJJ????77????777!!!!~~~!!!!77???JJJJJJJ?7!~^:..:^^^:..:~!7!~~^:^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::::::::::.:^^~~~~7JPB&&##BGGBBBBGGPP555YJ??7!~~!!7777?J5PBB##BBBBBGGGGBBB##BBBBBBBBG5J???7!~~!7JG#&#B5??Y5GBGP5YJ?7!!~~~^^^^^::::::............................................................::::::^^^^^::::::::^^^^^^^^^^~~~!!!77??JYY555PGGP55PGB####BBGPGBBBB###&&&&&&&&@@&&&&#BBBBBBBBB#####BBBBBBGGGGPP55YJJ??77777777777777777?????JJYYJJJJY5PPP5J!^::....::.:!JJ7~~^^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::::::::^::::^^^^^~!7JPB#&&&#BBGBBBBBGP5J???7!~!77777777?JY5G#&&&#####BBBBB##&&&#####BGP55YJJJYG#&@&BP?!7J5PP5Y?77!!!!!~~^^^^::::::.............................................................::::::::::^^^^^^~~^^^^^^^^^~~!!!!!!7?JYYYYYYYPG#####&&&#BGGP5YYJYY5YYYY55PGB###&&&&&&&#############BBBBBBBBGGGGGGP55YJ???777!!!7777777?JYYYYYYYJ??7??JY555YY?!:.....:::^!!7!~^^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::::::::^::::::^^^^^~!?5GB#&&&###BBGGGGGP5YJ?7!!777777777??Y5G#&&&&&&#################BGGPPPPPPB#&&&GPPPPP55J?7!!!!7!!~^^^^:::::::..........................................:...................:::::::::^^^~~~!!!!!!!!!7777777777?JJY555YY5PB#&&&&&&&#BGPP5YYJ???J?????JJY5555GGBBBB##&&&&@@&&&&&&&&&&#BBGGGGGGGGPPP55YJJJJ???7777??JYY555YYJJJJJJJJJJJJJY5PY!^.....::^^~~^^:^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::...:::::::^~7?YGB&&&&&#BGPGGBBGPYJ????777!!!777??J5PB&&&&&#######&&&#&&###BBGGPPP5YYY5PBBBBBBBP5?7!~~~!!!!~^::::::::::.........................................::::...................::::::::^^^~~!!77?????JY55YJJ?????J?JJYY5PB#&@@@&&&##BGP5YYJJJ???????77777!~~~!7?JJJJY5PGB#&&&&&&&&&&&##BBBBBBBBGGGGGGP555YYJJ??JJY5P55YYJJJJJJJJJJJJJJYY5PP5Y?!~:...:^^^::::^~~^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::..........::^^!?YG#&&&&#BGGGGGGGPPYJJJ?77!!!!!!!77?J5G###########&&&&&#######BBBGPYJ77?YPB##BG5J7!~~~~~!!~~^^:::::::::.........................................:::::::.................:::::::^^^~~!!77??JJJJJJYJYYY555YYJJYPGB&&@@@@@&&#BGP5YYJJJ?JJJ????77!!!~::::^^~!~^^:^^!7JY5PGBB###&&&&&&&###BBGGGGGGGPP55YJJYY5PPPP5Y?77?JJJJ????JY55PPP555PP5J7~::.:^^::::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::.....:::...:::^^!?YPB#&&&#BGGGGGBGP5YYJ??77!!!~~~!!7??Y5G##&###BB#########&&&&&###BP5YY5G####GPY?7!!!!!!~~^^^::::::::.........................................:::::::::..................:::::::^^^~~~!!!7777??JJY5PGGGGGGBB#&&@@@&&&&#BGP5YYYYJJJ??J?777777!!!^:::^^~~~^:.....::^~~!7JY5GB##&&&&&&###BBBGGGPPP55555PPPP5YJ?7!!7???77777?JY55PPP55555PP5J!^.:::::^^^::^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::::::::::::::::::^^~7YPB#&&&##BBGBGGP55YYJJ?7!!~~~~!!!!!?5G#&&&&#################B###BBGGB#&&&#BP5YJJ??7!!~^:::::::::::.......::::::..........................:::::::::::...................::::::::::^^^^^^^~!?JJY55PPGB##&&&&#####BBGP5YJJJJYYYJJJJJ??7???77!~^::::^^^::.....::......:^!7JY5GBB####&&&&##BGPPPPGGGGPP5J?7!!!!!7777!!77?JJYYYYY55P5YYPGGPJ~::::::^^::::^^^^^^^^^^^^^^^^^^
::::::::::::::::::::::::::::::::::::::::::^~7J5G#&&&&##BGGGP555YYJ?7!!~!!!!!77??Y5G#&&&&&######&&&&&&##B#####BBB##&##BBGGPPP5Y?7~^::::::::::::::::::::::::::::::::::::::::::........::::::::::::::::.........................:::::::::^^~~~!!7J5G##&##BBGGPP555YJJ?JYYYYJJJJ????J??7!^:..............::........::^^~!7?JY5PB#&&&&&##BGBBGGPYJ?77777777!!!!7777??JJJYY55555YY5GGBP7~^^^^^^^:::^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::::::::::::::::::::::::^~7YPB&&&&###BGP55YYYJ??7777!!!7?7!!7?5GB##BGP555YYY5PGBB##&&@@@&&&&&#BGGGBBBBBGP5J?!~^^:::::::::::::::::::::::::::::::::::::::........:::::^^:::::::::::.......................::::::^~!77????7?JYPB####BGPP5PPGP5YJ?JJJJJJJ?77777777!^:..................::::::::::::::.::^^!7J5GB#&&#BBGPYJ77!!7777777!!!7777777?JY5PPP5YY5PPGB#G?~^^^^~^^^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::...::::::...:::::::::::::...:^7YP#&@@@&#GP55YYYYJJJ???7!!!7!!!!!7????7!~^:::^~~~~~!!7J5GGGPYJJ5B&&#BGGGBB##BG5J7~^^::::::::::::::::::::::::::::::::::::::.......:::::^^^^::^^^^^::::....................::::^^^^~~!7??JJJJJY5PGGGGP5PPPPGB#BGPY??J??????????777!~:.........................:::::...........:^!?YPBBG5J?77!!!!!!!77777777777?JYY5555555PPPPPB#G7:..:^~^^:::^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::...::::::....::::::.::::::::^^!7JPB#&&&&#GP5YYYYJJ???JJ????77!!~~!?YPBBPY!:....::::::...:^7Y5YYJJJYPGBBBGGGBBBGY!^^^::::::^^^^^^^~~~~~^^::::::^^^^^::::::::::::::::::^^^^^^^^^^^^:::::::::.............:::::::::^~!7777777?Y555555PPGPGGGGBBBG5JJJJ???????????!^:.....::....................:::::::........::^::~JYJ??777!!!!!!!77777777?JJY5555555PGBBGGGGGG5!:...::^^^^^^^^^^^^^^^^^^^^^^^^
::::::::::::.............................:::::::^~!?Y5GB#&@&&&#BG5YJ???JJJJ?77777!!~~!7?Y5PPPPJ!:..:^^:..:^7?7^::..:^~?YPGBGGGGBBGPYJ?7~^^::^^~~~~~~~~^^~~~~~^^^^^^^^^^^^^^^^^^^^::::::^^^^^^^^^^^^^^^::::::::............::::::^^^~!7??77!77?JYYY5555PPPPGGGBBBG5JJJJ????77!!!!!^:......::..................::::::.....:::......~7????7777!!!!!!!7777777?JJYYY55PPGBBGGGPPPGG5J!^.:^^^^::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::...............................:::::^~!7?JYPB&&@@@@&BPYJJ?JJJJ?7!!!!7!!!~~~!7J5GBBPY7~^::!??7~:.:::::::^~7YPB#&&&###BBBGGPYJ7!~~~~~~~~~!~~~~~~!!!!!~~~~~~~^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~^^^::::.......:::::::^^~!!7777777?Y5PPPPPP55Y5PPGGGGBBG5JJJ??????777!!~:.......::...................:::.............^~!7777!!!!!!!!!!!777???JYYYYY5555PPGGGGGGPPGGBB57^...:^^^::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::..............................::::::::^^~!!7J5G#&&@&&#BP5J???JJ7!!!!!!!77!!!!7?Y5PPPP5YYJ?7!~:....:^~~~!!7J5B#&@@@&&&#&##BGP5J?77!~~~~!!7777777777!!!!!!!!!~^^^~~~~~~~~!!!!!!!!7777777!!!!!!!!~~^^^::::::::::^^^^^^~!777!!!!7?5GB###BB#BGPPGGGGGGGGP5YJJ???????77!~^:............................::...........:~7????7!!~!!!!!!!777??JJJJYPPP55PPGGGGGPPPPGGG5YYJ!^.....:^^^^^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::............................:::::::.:::::^^^^^!?YPB#&&&&BPYJ?J?7!!~~~~!!!77777??JJJJJ???7^:...:::::^~!!77?J5G#&@@@&&&&&&&&&##BBG5Y?7!!7??JJJ??77!!!!!!777777!!777777777777777?????JJ???????777!!~~^^^~^^^::::^^^^~~!7???77777?5G##&&&&@@&##BGGGGGGGGPP5YJ?7777!!!!^:.....:::.....................::.......::^!7????77!!!!!!!!777??JJYY5555PPPPPPGGGGGGGGBB##BY?!^....::::^^~~~^^^^^^^^^^^^^^^^^^^^^
:::::::::::::.........................::::::::::::::::::::.::^!?5G#&@&&BPYJ7!~~~~~~~~~!!!77??JJJ?!~:........:^~~~~~!7?JY5GB#&&&&##&&&@@@@@@@@&#BGGGGGGBGP5YJ?7!!!!!!!!!77????????????JJJJ?????JYYYJJJJJJJJ??77!~~~~~^^:::^^~~!!!77??JYJ???J5PGBB#&@@@@@&&#BBGGGGGGP5Y?77!!!!!!~^^:::^^~~^^:::.......................:^~7???77777!!~!77777???JJYY55PPPPGGGGGGGPPPGGB######BG5J7^...:::::^^^^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::.........................:::::::::::::::::::::::::^~?5B&&&&#GY?!!~!!!!!!!!!777777?JY5YJ!~::::^::::^~!!7?JY5PGGB#&&&&&&&&&&@@@@@@@@@@@@@@@@@@&##BP5YJ?77!~~!!7777777????JJJJJJJJJJYYYYYYYYYY5YYYJ??77!~~~~~~!77?????7777?JJ??Y5PPGGB#&&@@@&&@&&##BGGGGP5J7!!!!!!!!~~^~~~~~~~~^:::....................:^!?JJ?77!!!!!!!!77?JJJJJYY555PPPGGGGGBBBGGGBB#####BGPYJJ5PGGY7~:...::^^^^^^^^^^^^^^^^^^^^^^^^^
::::::::::::..........................:::::::::::::::::::::::::::^!?5B&&&#BPY?7777777???777!!!!777?JYYJ?7!~~~^^^~~!!7?JY5PGB#&&&&&&&&@@@@@@@@@@&&&&&&&#####&&&&&&&&#BPY?7!~7?????JJJJJJJJJJJJJY555555PPPGGGGPP55YJ?7??JYY5P55YJ?777!7777?5GGGGGB#&&&&&&&@@&&&&#BBBG5?!~~~~~^^^^::^^^^::::..................::^^^!7?7!777?7!!~~!7??JJYYYY55555PPPPGGGGGGGGGBB#&&&&&BPJ!^:...:~7?J7^...:^^^^^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::.........................:::::...:::::::::::::::::::::^!YG#&&&#G5YJ?7777777!!!77?7!!7?J???JY555YJ77!!7??JY5PB##&&&&&&&&&&@@@@@@@&&####BBG5YYY55PPGBB#&&&@@&&&&&&&&&&&&&&&&&####BBBBBBB###&&&&&&&&&&#BGPPGGGGGGP5YJJ????7777JPGGGPPG#&&&&&&&&&&&&@&&&&#P?~^:^^::......:::..:.................:^~7?JYJ77!!!!!!77?777??JY555555PPPPPPPPGGGGGGGB##&&#BG5?!~^:::......^!!~^:...:^^^::^^^^^^^^^^^^^^^^^^^
....:::::::::::::::...................::::::::::::::::::::::..::::::^~!7J5B###GYJJ?77777??7!!!7???77!77??JJJJJJJYJ??JY5PPGBB#&&&&&@@@@@@&&########BBGGPPGGGGGBB###BBBB&&@@@&&@@@@@@@@@@@@&&&&&&&&@@@@@@@@@@@@@&&#BPPPPGGGGPJ7!!!7?????Y5GBBG5YPG#&&&&&&@@@&#&&&&&GY~....:~^...........................:^~!!7!!!!!!7777????????JJJYY5PGGGGGGPPPPPPPGGGG#&&BPY7~^::::::::........:::^::::^^^^::^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::...................:::::::::::::::::::::::::::.......::~7YPGGPYJ?777!!!777!!777???777!!!!!!!!!!~~!?J5PGB##&&&&&@@@@&&&&&####&&&&###BB##&&&&&&&##BBB#&&@@@@@@&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&BP55555P55J??7???????YGGPYJ?YG##&&&&&&&&#PYYY55J~............................::::^^^~~~~~~~~!77?JJJJJJJJJJYYY555PPPPPPGGPP555PGB####B5?!~^:.......::::::......:::::::^^^^^::^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::..................::::::::::::::::::::....::::..........::~?5P5YJ?777!!7?????????7!!~~~~~~~^^:::^~!?J5PGB#&&&&&&@@&&&&&&&&&&&&&&&&&###BBBBB#&&@@@&&&&&&&&#BGGGGGG5YJY5PB##&&&@&&@@@@@@@@@@@@@@&BGGGGGGPPP555555YYY55P5?!7J5B&###&&&#BGPPP5Y?!~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~^^^^^~!7?JJYYJJJJJJYYY55PPPPGGGPPP5PPGB###BG5?!^:.......................::::::::^^^^::^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::..................::::::::::::::::::::::::^~^:.........:...:!JY5YJ?77777??JJJJJ?77!!~~~^^^^^~~~~~~!7?J5PG###&&&&&&&&&&@@&&&&###########G5YY5B#&##BGPPPPY?!!JYYJ?!~^^^^!7JYPB###&&&@@@&&&&@@@@&GYJ5PPGGBBBBBBBGP55PGPY?77JPGB##B##BBGP5555J7!^^^~~!~~~~~~~~~~~^^^^^^^^^~~~~~~~^^^^^^~~~~~!!77??JJJJJYYYYYYY555PPPPPGGGBB####BPY?~^:.......:::.................::::::::^^^::^^^^^^^^^^^^^^^^^^^
:::::::::.....:::::..............:::::::::::::::::::::::::^^^~!~:.......::::...:~?YYYJ????777?JJJ?7!!!!!!!!!!!7?JJ?777777?YPG##&&&&&&&&&&@@&&&&###BBBBBBBBGGPP555YJ????YJ?7~:~?JJ?7~~~!~~~~!7?YPGGB#&&@@&&&&&&&&#GJYPGB###&&###BGGP5PP5?7?J5GBBBB#BP5Y??????7!~~~~!!!!~~~^~~~~^^^^^^^^^^^^^^^^^^^^^^~~!!!7777??JJJJYYY5555555555PPGGGB##&&#BGY?~^:..............................::::::::^^^::^^^^^^^^^^^^^^^^^^^
::::::::.......:::::........:::::::::::::::::::::::::::::::^^~~~:.......::::::..:~7J55YJJ???7!7??7!~~~~!!?JYY555YYYYJJ?7!!7?5GB#&&&&&&&&&&&&&&&&##BBB###BB#&&#B5?7~~~!7JJJJJ?JJJ?77!!77777!77?J555PGB#&&&&&&&&&&##B##&&&&&&&###BBGGP5JJJJ??YGBBBGG5?7!~~~!7?JJJ?77!!!~~~~~~~~~~~~^^^^^^^^^^^^^~~~~~!!7777777??JYYJJYY5555555PPGGBB##&&##BPY?!^:..................................:::.:::^^^::^^^^^^^^^^^^^^^^^^^
^^^:::::.......:::::........:::::::::::::::::::::::::::::::::^~~:.......::::::...:^?5PGPYJJJ7~~~!77777777?J55PP5555P55J7!~^~7J5G##&&&&&&&&&&&&&&&&##&&&&&&&@@&GY7!!!!77?J5PGGG5YJ?77!!!!77??JJYYYYY5PGB#&&&&&&&&&&&&&&#######BBBGGP5J????7!?PBBBPJ7~~~!77?Y555Y?7!~~~~~~~~~!!!~~~~~~^^^^^^^^~~!!!!!77?????77??JJYYYY55PPPGGBBB###&&#BG5J!^::..........................................:::^^::^^^^^^^^^^^^^^^^^^^
^^^:::::.......:::::........:::::::::::::::::::::::::::::::::^~~:.......:::::.:::::~?YPPP5YJ?!!!!7JY555YJ?77?JY5PP555P5Y?!^^^!?YPB#&&&&&&&&&&&&&&&&&&&&&&&&#GY?7777?JY5PPPPGGBBBGP5J???????JJYYYYJJYPGBBBBB###&&&&&&########BGP5YJ7!!77~~7?YPPP5J7!!7?JY5PGG5?!^^~!!!!~^~!!!!!!!~~~~~~!!!!!!!77777???????????JYY5PPPGGGBB##&&##BBGGY7~:..............::...............................:::^^:^^^^^^^^^^^^^^^^^^^^
^^^:::::.......:::::.....:::::::::::::::::::::::::::::::::^::^~~:.......::::.....::::~?5GGP55PP55555YYYYYJ??7??JYYJJYPGP5J7~~~!?J5PGB#&&&&&&&&&&&&&&&&&&@@#PYJJY55YY5PGBG?7?5B&&&BPJ?JYYYJ??JJJJJJY5PGBGGPPPPGB##&&#BGPPGGGP555YYJ?777!^^YBBPJ7~!?Y5P55Y?77!77777!!!77??77!!!!!!!!!!77777??????JJJJYYYYJJ??JY5PGBBBBBBB###&##BPJ7~^::::................:::::..........................:::^^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::.............................:::::::::::::::::^^~^:.......::::..:::::..:^~?5PGGPP55GBBBG5YJJ?7!~~7Y5YJJ5PBBG5?!^^^7Y5PGBBB##&&@@@@&&&@@&&BPYJ??77!!!!!7?J5PGB##B5JJJY5GB#BGPP555YJYY55555PGGGGGGGGBB###BGGPPPPP5YJJJY5J?5&@@&B5YYYJ????77!!7777777777??JJ??7?JJJ????77???JJJYYY55YYJJ????JYY5PGGBBBGGB###BBP5J7~^:::::...........................::.....................::::^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::.............................:::::::::::::::::^~~^:.......::::.........::^~7YPB##BGPYY55PP5YJ??????????7JPB#BPJ777JPP555PB&&@@@@@@@@&#BGGPY??JJ7!~~!?Y5PP55YJ?7!!!?5G#&&&BP55YYYJ?JYYYYY555PPPPPPGB##&&&##BGPPPP5PPPGB&@@@@#PJ??JJJ?JYYYYJ??JJYYYYYYJJJ?????JJJJJJJJJJJJYYY555555555YYYY55PGGBB####&##BG5J7!~^::..............................::........................::::^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::.............................::::::::::::::::^^~~^:.......::::..............:~7YPPGGPPP5PP55YJ??777?????JPB##BP5PGBBPJ7??JYY55YY?7!77JYYJ?!~7Y555YY5GB#BG5J7!~~!7JY5555YY5555Y?777??JJJ?????????JY5G##&&&&&&&##BBBB#&@@@@@@&##BGPP5Y55P5YYJ?77!!77?JJJJJJ???JYYYYYY555555555555555PPPPPPGGBB###BBBGP5J?7~^:............................................::...............::::^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::.............................::::::::::::::::^^~~^:.......::::................:^~~!7?JY55PPPPP5YJ?7!7?YPGGB###BB##BPY7!!!!~^....:~!?JJJJ?777JPGBBGP555YJ?7!!!7777?JJJJ??7??JJ?7!~~~!777!!!!!!!77?Y5PG#&&&&&&##&&&&&&&&BGGB#&&&&##BB####GP55YJJ?77?????JJJY5555PPPPPPPPPPPPPPPP5555PGGGGGGGGGBGGP5Y?!~~~!!~~^:........................::::::.............................::::^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::.............................::::::::::::::::^^~~^:......:::::...............::::::^!!!7?YP##BG5J?JY5PG#####&#BGPY?~~~~^:::...:!JPGGP5JJYYYYY5PPPP5J7!!~!77?JJ?JJY5555YJ??7???7!~^^~~~~~~~^~~~!7?J5PGBB##&&@@@@@&&BPYJ7!77JY5PPGGBB#####BGP555YYJ???7??JY55PPPGGPPPPPPPPPPPPPPPPPGGGGGP55YYYYJ?7!~^::^~!7?7!^:......:................:::^^^:.......:....................::::^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::.............................::::::::::::::::^~~~^:......:::::............::::^^:::^!!7777?YPGGGGGGP5YYYYYY5P5J7~^:::^^:::::~7YG##&#BGPPPPPP55555YJ?!~~!7????77?5PGP5Y?!!!7777!~~^^~~~~^^^::::^^~!?Y5PGGB######BGPJ7~::::::::^^~!777?JYGBBGPP5YJ?7777?JY5PPPPGGGPPPPPPPPPPPPGGGGBBBGP5J?!!~~~~^^::...::^~~~^:.......................:::::^^:::..........................::::^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::.............................:::::::::::::::^^~~~^:......:::^:...........:::::^^^::~7J55J7~:^!JPGG5J!^:...:^^^:.::^~~^^^^~!7Y5PGGBB#&&&#BGGPP55YYJ?7~~!7JJJ7!~~7Y5YJ7~^^^~!7!!~^^~~!~~~^:::::::::^~~!?Y5P5J7~^:^!!!~:..::............:^7JY5PPPP55YYYY55PPGGGGGGGGGGPPPPPPPPPPGGGGPP5J?!^:::::::::...............................:::::....:::^^^::.......................::::^^^^^^^^^^^^^^^^^^^^^^
::::::::::::::.............................:::::::::::::::^^~~~^:......:::^:........:::::^^^^^^^~7YPGG5J7~^^::^^~~~^:...::^^^~~!777~^~!?5GBGPYY5PB#####BPYYYJJ?7!!!7?Y555Y?7!7??7!!!!!777!~~~~~~~~~~^^::::::::^^^^::^~!!!^:......:......................:~7YPB###BP5YY5PGBBBBBBBBBBGGGGPPP555YJ?77~^::......................................::::::.......:::::::......................::::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::........................::..:::::::::::::::^^~~~^.......:::^::..:.....:::^^^^:::.:!5GG5?!~!7Y5Y?!^::..::^!!7JYYJJ???7?5GPPPGBGP5YYGB###BGPPPPP5YJJJYY55YJ?7!!!7J?7!~~!!!7!~^::^^^^^^^:::::::::::::^^^::^~!77!~^:::..........................:^~~~^::::~?5B&&BBBBBBBBGGPP5YYJJ?!~^^:::....................................:::^::::.............:::::::....::............::::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::::::::::......::::::....:::::::::::^~!!~^:......:::^:...::..:^^~~^^^^^~~^^7557~::~?YGB##GJ!^:~?YGBG5Y??JYYYYYYPPGPGBBBGP55PGGGGGGPPPP5Y???JYYJ?????7777!!!77777!~~^^^^^~~^::::::...:^^^^^^::...::^~!!!~^:.....................................:::^^~7777!!~~~^^:::..............................:^~~^:....:^^^^::^!?J?~:................:^!!~^...::..............::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::::::::::......::::::....:::::::::::^~!!~^:......:::^^:....:^::::^:^7Y555GBPJ!^:~?5B##BP5J!!?JJJJYYYYY55PPP555PPPG##&#GJ7~!YG###G55YYYYJJJYY5YYJJ??!~~^^^~~!7???7!~^^^^^::...:::....:::::^~~^^:::::^^~~~^^:.....................................::::::::::..............::....................:^~!!!!!~~!7?J55YYJYG#&#G7:...............::~7??!^:.................::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::::::::::......::::::....:::::::::::^~!!~^:......:::^^:...::^^^^^^~!7?JJYPGY!!JPBBP?!~~~!~^^^~^^^^~7?Y5PGGGPPGGGGGBB#B57~^!YG#&#GPYJ??7?J5PPP5J???7!~^^^^~~!777!~^::::^^^^::::::.:^^^^::^~!!!~^^:::::^^~~~^::.......................................................::::::::.............:::^^~!!!!!~~!!7??JJ?7?5GP5?~:.:^~~^:...:::::^^~!?YYYJ7~:................::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::::::::::......::::::....:::::::::::^~!!~^:......:::^^:.:::..:::^~!7!7YB#PY??JPB#BPJ7~^:::::...:^!?JY555PPPPPPGB##BBGP5J?JYPGGGP5YJ??JJ5PPP5J?7!!!!!!~~~!!777!!~^::::^^^~~~^^^::::~~^^::^~~~~~~^^^:::^^^^~~~~^:.......................:::.....::.........................:.........::::::^^~!!!!!!!!!777777777?JJJ?!~:...:^^^:^^~!!!!7???JJJJJ?7~^:..............:::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::::::::::......::::::....:::::::::::^~!!~^:......:::^^:..::::..^!777!!?GGPYJJJJJJ?7!~^^^^::::^~7JY5555YYYY55PPPGBBGGP5YY5PGGG5J???77JPGBBPJ7~~~~!7777!~!7????7!~^^^~~~!!~^^^^^^~~~~^::::::^^^^^^^^^^^^^^^^~~!7~::...................:::::.....:::..............................:::::^^^^^^~~~~!!!777??77!!~~~~^^::^~~!!^:::^~!?Y55YYYYYJJ7!~~~^^^::...............::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::::::::::......::::::....:::::::::::^~!!~^:......:::^^:::::^^^^!JYJJ?????JJ5P5J7~^^~~^::::^~!?JJYYY55YYYYY5555PGBGP5YJJYP#&&#B5YJJYYPGBG5?~^^~!777777!!7?JJJ7!~^^^~!!!!!~::::^^!7!^::..::::::::::::^^^^:::^~77!~^:.................::::::....:::::...........................::::^^^^^^^^^^^^~!!77777777!!~^:.....^~!77!!!7??JYPPPPP55YJ?7~:::::::...............:::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::::::::::......::::::....:::::::::::^~!!~^:......:::^^::^^^~~!!!!?YPGGGPPPGGBP7~^~!77^...:~7JYYJ?77?JY555555555GGPJ7!!7J5B#&#BG555PGG5Y?7~~~7?JYJ?777??JJJJ?!~^:::^^~~~~~^^^:::^~^:....:::::......::::::::^~!777!^:................:::::....::::::............................::::^^^^:::::^^~~!!!!!!!777!~^:...::^~!7777JY55YYY5PGGPP55YJ7~^:::::...............:::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::::::::::::::::::......::::::....:::::::::::^~!!~^:......:::^^::^~~^^~~~~7YGB#&###BP?~^:!?JJ?^..:~7?JJ?77!!7?JYYYJYY55555?~^^^~77?JY5555YYY5J?777777?JY5YJJJJYYYYJ??!~~^^^^^^^^~~!!!~^:::.......:::::::::::::::::^~!77??7~^:.....................::::::::...............................:::::^^^^^^^^^~~~~~~!!!77777777!!~!7?JJ??J5PPPPPPGBBBGGPP5Y?!^^^^^::..............:::^^^^^^^^^^^^^^^^^^^^^
::::::::::::::::::::::::::::::::......::::::...::::::::::^^~~~^^:.......::^^:::^::::^7Y55YYJ7!~^^^^~?YGBG5J~^:^~!7!~~!!!!7???7777JY55J7~^^~!!!~^^!?YPGP5?!!!7JYYJ???JY5555YYYYJJ????7!!~~~~~~~!77??7!^:::.....::^^::^^^^::::::^~!7?JJJ?!~:.....................:::::::.................................::::^^^^~^^^^^~~!!!~~~~!7?JYY5PGBBBGP5PGB###BBB######BBGP5J7!~!!!!^:............:::^^^^^^^^^^^^^^^^^^^^^^
^^^^:::::::::::....::::::::::.............:::::::::::::^^~~^^:...........:~~^:...::~!~^^:.....:!?JJ5B#B5?^::^~77!~~~^~~!7JJJ?7~^:^^!77!!!!~~~~~!7JY55PPPPP5YJ??JJJJ???JYY55YJJ????J?7~^^~!?7!~!777!!~^^::.....:::^^^:::::::::^~!!?Y5J7?YJ^................:......::^^:.................................::::::::::^^^^~~~~~~~!!777!~!7JJYPBBB##&&&&&&&&&&&&@@@&#BGPGBBBGPJ!:......::....:::^^^^^^^^^^^^^^^^^^^^^^
^::::::::::::::....::::::::::..............:::::.::::::^^~~^^:...........:^~^:::::^~!!7!!~!!7??????J55Y7~::^~7?7!~~~~^~~!777!~^^^^~!77?7!~~^^~!?J5PPPP5PB#BP555555YYJJ?7777JYPGGP5YJJJ??777!!!!!!!!~~^^^^::::::::::::::.::^!!^:~?JJJ?7?YJ!::.............::......:^^^:..................................::::::::::^^^~~!!!~~~~!!77!~::^~7JY5PB######BGB##&&&&&&#####BGPY?!^:......:....:::^^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::....::::::::::..............:::::.::::::^^~~^^:...........:^^^^::::^^~!7???J5PPGGGP555Y7~:.:!??7!^^^^^^^~!!77!!~~~~~~~!!~~~~~^^~~!7J5GB&&#GGPPPP5JJJJYY?7!~~~7JPGBBBBGGPJ7!!!???7!!~~^^^:::::::...::^^^^^^~!77!!JGGY??JJJ?!~^:...........:::.....::^^^:....................................::^^:::::::^~!77?????????777?JY5555555YY5PPGGBGGPGB#&@@@&BPYY5PY7~:...........:::^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::....::::::::................::::...:::::^^~~^::...........::^^^^:::::^~?J5PGB#####BG5Y?!^::^7J?7~^^^^^^~~!!77777!!!~~~^^^^^^^^^^^^~!?YPB#&&#GP55YJJJ??7~^^~!!!7?Y5PB#&&&&&BG5?7!!!~^^::.............:^^^^^~~~!7JY5Y?7?YJ?7!~^:..........:::::....::^^::....................................:^^^^::::::^^~77????77!!~7?Y55PPP55YYJJJY5PGGPPPGGB##&&&#BP5YY5YJ7^...........:::^^^^^^^^^^^^^^^^^^^^^
:::::::::::::::...:::::::::................:::....:::::^^~~^::...........::^~~~^::.:^~?YGB##&&&#BGPYJ7~^^^~?J?!~~~~~~~~~~~!!!!!7!!!!~~~~~~^^^^:::::^!?JPB&&#BBG5J???777!7?YPGBB#&&@@@&&BP5Y?7~^^::::..........:::::^!7!~~!7?JYYJ77JYJ?777?7~.......::..:::::....:^^^::....................................::^^^::::^^~!!777!!~~~!7?J5PPGGGP55YYYY55555555PPPPPGGB##BBP5YJY5J~:..........:::^^^^^^^^^^^^^^^^^^^^^
::::::::::::::....::::::::..................::....:::::^^~~^:..............:~!!~^:..:^!?YPPPGGGP5YJ?!~~~~!7??7~~~~~^^~~~~~~~~~!!!!~~~~!!!!!!~^::...:^~7?YPB#&&&#BP555PGGB###&&@@&#G5J?77!!!~^::::::::........:::^^^~!!~~!77777!7?JYY?!~!7JJ!:.......:..:^^::...::^^^::.....................................::^::::::::::~!J5PPGPPPPPPPGGGGGGP5YYY555YYY5YJ???J5GB##BGP555PPY7^:.........:::^^^^^^^^^^^^^^^^^^^^^
:::::..:::::......::::::...........................::::^^~~^:....:.........:^~~!~::...:^~!~~~~~~~~~^::^^~!777!!!!!~^^^^~~~~~~~~~~~^^^~~~~!!!!!~~~~~~~~~!!!JPB#&&&&#BGGB#&&&@@&&BY!^::^~~~^^^^^^^^^^^^:::::::::::^^^^^^^~~!~^^^~7Y5?!~~~!7??7~^:......::^^^::...::^^^::......................................:::::::::..:^!?Y5PPYJ?77!!7J5GBBBPYJJJYYY5YYJJ?JJYPGBBBGPP5PPP5Y?!^.........::^^^^^^^^^^^^^^^^^^^^^^
............::.....:::.............................:::::^~!^:....::.........::~!!~^....................:^!!!~!!!!!~^^~~~~~!~~~~~^^^~~~~~~~~~!!!77???77!!!7?Y5PG#&&&#BBB####&#GJ!:.:~7?J7!!!!77!!!~~^^^:::::::::::^^^::^^~~~~!J555J!^^~~!!777777!~^:::^^^^^::...:^^~^:.............................................:^~!!!!~~^^:.........^7YG##PJ7!7?JY555555PGGGGPP555555YYYJJ?~:........::^^^^^^^^^^^^^^^^^^^^^^
...............:::::::.............................::::^^~!^:................:^!!7!^.......::::.......:^~!7!~!!!!~~~~~~~~~~~~~~^~~~~~~~~!!!!~~~^~~!77??JJY5PP55PG#&&@@@@&GY?~^::^~!?????JJY?!~~!!~~^^::::::::^^^^::^^~~~!7J5G##P7^~~~~~!777??JJJJ?7!!!~~^^::..::^^^^:.............................................:~!???7!~~^::..:::....^7J5PJ!^:^~!?YPGGGPPGGGGPP55555PP55YYJ!:........::^^^^^^^^^^^^^^^^^^^^^^
::::::.........::::::.................::............:::^~~~^:.........:.......:^!77!~:....:^^:::....::^^~7?7777!!~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^~~~~~~~~^^^~!JP&&&#GJ7^^~777777777777777!!!~^^^^^^^^^^:::::::::^~~!?YPB###PJ7~~7?7!!??J????JY55YJJJ?!^::::::::::::::::::......................................::~!777!!!~~^^::...........:::...:^7YPGBBBBBBBGGPPPPGGBBBBBPY7^:.......:^^:^^^^^^^^^^^^^^^^^^^^
....:::::::::::::::::.................::............::^^~~~^:..................:~7JYY?!^:......::^^~!77????77777!!~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^~~~^:..^!YBB57~:^7J?77777777777777!!!~~~~^^:::::^^^^^::..:~7?JJJ?77?JJJ??777!!!7????77JY5PPPY?!~:::::::::::::............................................::^~~~^::::......:.........:.......:~~!?YPG#&&&#BGP5PPGGGP5J!~:::........:::^^^^^^^^^^^^^^^^^^^
....::::::.........:::.................:............::^^~~~^:.........:..........^!J5P5Y?!^::::^^^^:^^~!!!77??7!~~~~~~~~~~~~~~~~^^^^^~~~~~^^^^^^^^^^^^^^^^^:::^~7?J?~:::~7J?777777777777!!!!~~~^^~~~~^^:....::^~!!7?JJ?7~~^~~!!!!!!!!!!7??????JJ5PGGPJ!^::::::::::::................................................::::....................................::^~7?JY5PPGG5?!^:::::.........:::::::^^^^^^^^^^^^^^
:::::.....::::::::::::..............................::^~~~~:.........::...........:~7YPGGPPYJ777777777??7!~!77777!~~~~~~~~~~~~^^^^^^^~~~~~^^^^^^^^^^^^^^::::^!7?7!~^^^~!777777777777!!!!!!!~~~~~~~~^^^^::^^^~~!!!!!!!~~^^^^~~~^^^^~!!!77??JJJJJJY5PBGY!~:::::::::::................................................................................................:::^^^^:::::::.............:::::^^^^^^^^^^^^^
^^:::...::^~~~~~~^^:...............................:::^~~~^:.........:::.......:::::^~7JPGBBGGPYJJJYYY5Y?!~!7777!!~~~~~~~~~~~~~^^^^^^^~~^^^^^^^^^^^^^^^^:.:^^!!!!!!!~^~~!???77777777!!!!!!~~~~!!!~~~^~~~!!7!!~^^:::::::::::^^^^^^~!7777??JYYJJ?JY5GBGJ!^:::::::::::.............................................::::..............:..........................................::::.......:::.....::::^^^^^^^^^^^^
^^:::..::^~!!!!~~^^:...............................::^^~~~^:.........:::.......::.....^~?Y5GBBBPYYYYYYYJ7!~!777!~~~~~~~~~~~~~~~~~~~~~^^^^^~~~~~~~~~~^^^^::::^^~!7?J?7~~~!7??77777777!!!!!!!!!!!~~!!77777!!~^:::.....::::::::::^^~~!7777?JYYJ?77?YGGGP7^::::::^^^:::...................:::::::................::::^^:...........:::::::.......................................:....:::...:::::...::::^^^^^^^^^^^^
:::::::::^~~~~^^:...::............................:::^~~~~^:.........:::..............::~!?J5PGGGBBBBG5Y?!!!!77777!!!!~~~~~~~~~~~~~~~~^^~~~~!!!!!~~~^^^^^^::^~7?JJJJ77777!!777777777!!!!!!!!7777777??77!~^::......:::::^^^^^^^::^^~!77??JJJ?!!!7YPPY?~::^^^^^^^^^::....................::::::::...........:::^^^^^^:..........:::::::.......................................::...:::::::::::::..::::::^^^^^^^^^^
:::::::::::::::.....::...........................::::^~~~~^:........::::..............:::^~!7J5G#&&&&&B5J?7!!7??J?7!!!!!~~~~~~~~~~~!~~~~~~!!7777!!~~^^:::^^~!7???77777???!!!777777777!!!!!777??J???77!~~~^^:::...:::::::^~~~~^^^~~!77???777!!!!7J5J~^:::^^^^^^^^^::....................::::::::::::.....:::^^~~!~~^:....:::::::::............................................:::::.:::^^:::::::::::::::::::^^^^^
::::::::::........:::...........................::::^^~~~^::.........:::........::::......:^~7JG#####BP5YJ?77????77!!!!!!~~~~~!!!!!!~~~~~!!!7777!!~^^::::^!?JJ?7~~!77777777777777777777777????JJJ??7!!~~~^^^:::::::::::::^^~~!!77777??77!!!!77777?!:.:^^^^^^~~~~^::.....................:::::::::::::::^^^^~~!!!!~^::...:::::::::.............................................:::....:^^^::.:::::::::::::::::^^^
:::::::::::::::::::............................::::^^^~~~^::...:::.............::^^^::....:^~7J5GGGGP55P5YJ???JJJ??777!!!~~!!!777!!~~~!!~~!!!77!!~^^^^^^~!7JJJ?7777????77777777???777??JJYYYJJJJJ?7!!~~~^:::....:::::::^^~~!7?????77777777?77!7!!!~^::^^^^^^~~!!~^:......................:::::^:....:^~!7!!!~~~!~~^^::.......::::...::........::::................................::::::::::::::::::::::::::::::
........::::::::::::...........................::::^^^~~~^::.....:.............:::::::.....::^~~!!77?JY5555YYYYY5YJ??7!!~~^~~~!!!!~~~~~~~~!!7777!~^^^^^^^~!?JJJ?77????7777?????JJJYY5555YJJ??77!~~^^^:::::.....:::::::^^^^^~~~!77?JJ?77777?77777!!~^::^^^^^^~~!!~^:.......................:::::::..:^~!7?77!!!!!!~^::...............:::.............::...........................:::::::::::::::::::::::::::::::
...........:::::::::...........................::::^^~~~~^::............:::::::.............::^^^^^~!?Y5PPP55YYY55YYJ?7!~~~~~~~~~~~~~~~~~!!!!!!~~^^^^^~~~~!?YYJ?77777777?JJJJJJJY5PGGGP5Y?7!!~~^^:::::::......:::...::^~~~~~~~~~!7???7777??77777!!~^::^^^~~~~~~~~:...........................::::::^~!7?J??77777!!~^:...............................:............................:::::::::::::::::::::::::::::::
.......:::::::::::::..........................::::^^^~~~~^::...........::^^^::::...........:^~~~~~!7?Y55PPPP5YJJY555YJ??777777!!~~~~~~~!!!77!!~^^::^^~~!!!7JYJJ7!!!777??JY5YJJYY55PPP55J?!~~^^^^^:::................::^~~~~~~^^^~~!777777???77777!~^:^^^~~~~~~~~^:............................:::::^~!7?J???777777!~^:..........................................................::::::::::::::::::::::::::::::::
::::::::::::::::...:::::...............::.....::::^^^~~~~^::...........::^^^:::...........::^~~~!!7?Y555PPPGGP5555PP55YJJJJ??77!!~~!!!!!77777!~^^:::^^~~~!7???7!~~~!77??JYYYJY55555YJ?7!~~^^^^^::::..............::::::^^^^^^^^^^~!777777???77777!~^^^^~~!!!!~~^^:............................::::^~~!7???????????7!~^::........................................................::::::::::::::::::::::::::::::::
^^^^^^:::::::::....::::::::::.........::::...:::::^^^~~~~^::..........::^^^^:::............:::^^~~7?Y55555PGGGP555PGPP5YYJJ??77!!!!!!!777??7!~~^::::^^^~^~~777!~^~!!7777??JJY55555J?7!~~~^^^^^^:::..............:^^^^::::::::::^^~!777777???777777!~^^~~!!!!!~~^::.............................::^^~!!7777777??????7!~^:................::::::::...............................:::::::::::::::::::::::::::::::::
^^^^^^:::::::::....::::::::::.........::::::::::::^^^~~!~^:::::::....::^^^::::..............:::^~!7?JJJJYYY5PPPP55PGGPP55YJJ??777!!!!7????7!~^^::::^^~~~^^~!77!!~~!77?????JYYYYYYJ?7!~~~^^^^^^^::::....:::..::::^^^^:::::^^^^^^^^^~~!!!777?7777?77!~~~~!!777!!^:::.............................::^~!!777777777????7!~^::...............:^^~~~^^::..............................::::::::::::::::::::::::::::::^^^
:::::::::::::::....::::::::::........:::::::::::::^^^~~!~:.::::::....:^^^^::..............::^~~!!7???????JJJY5PPPPPGGGGGPP5YYJJ??77!!7???77!~^::::^^~~~~~~!?JJ?7!77??JJJY555YYJ?7!!!!!~~~^^^^::::::...::::..::::^^^^:::^^~~~~^^:::^^~!!!!7?777???77!~!!!!7??7!^:::.............................::^!7??????77777777!~^:...........:::::::^^^^^:::...............................::::::::::::::::::::::::::::^^^^^
:::::::::::::::::::::::::...::::::::.:::::::::::::^^~~~!~:..:::::....:::^::..............:^~!7??????7777777??J555PPGGGBBBGGPP55YJ?77777777!!~^^^^^^^^~~~~~!?????777?JJYY5PP5J?77!~~~~~~~^^::::::::...........:::::::::^^~!7!~^^:::^^~~!77777?????J?!!!77??77!~^::...............................^~!7?JJJ?????777!~^:.............::::^:::::....................................:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::.....:::::::...::::::::::::^^~~!~^::...............::...........:^~!777?????777!!!!!777???J5GGBBBBBBBGPP5YJJ?????77!!!~~~~^^^^^~!~~~~!!!777??JYYYYYJ??777!!~~^^:::::::::::::........::::^^:::::^^!77~^^^:::^^~!7?J7!7JJ??JYJ7!?JYYJ7~^^:::...:..........................:^~7??????JJJJ?7!~:.............................................................::::::::^^^::::::::::::::::::::::
:::::::::::::::::::::::....:::::::........::::::::^^~~~~^::..............::....::::...:^!??J?7777777!!!!!!!!!!777?YPGGGBBBGGPPPP555YYJJ??7777777!~~^~!7?7!!!!777??JJJJJJJJ???777!~~~^^^::::::::::::.......:::::::::::^^^^^:..:::^^^^~77??77??JJJ????J5P5Y?!~^^::...............................:^!7???????????7!~^::.................::........................................:::::::::::::::::::::::::::::::::
::::::::::::::::::::::...::::::::..........:::::::^^~~~~^::..............::........:::~!?JJJ?7!!77!!!!!!!!!!!!!!!!7?J5PGBBBBGGGGPPPPP55YYJ???????!~~~~7????777?JJYYYJJ????77777!!~~^^^:::::::::.........::::::::::.:^^:::.....::^^^~!77777????JJ??JYPGBGY?!^^::...............................:^~!7???????JJ???77!!~~^::......:::::::..........................................:::::::::::::::::::::::::::::::::
::::::::::::::::::::...::::::::............::::::^^~~~~^^::..............::.......:^~!7?????77777777777!!!!!!!!!!!~~!?YPGB###BBGGGGGGGGGP5JJJJYYYJ?7!!!7?JJJJJJYYYYYJ??777777!!!~~^^^::::::::::......:::::::::.:...::::::.:::::::^^~!77!!7??7?JYYJ5PBBBGY7~^:::...............................::^^^~~~~~!!7777!!777?7!~:.....::::^^::.........................................::::::::::::::::::::::::::::::::::
:::::::::::::::::::...:::::::::........:::::::^^^^~~~~~^:::..............::::::..:^!?JYYJ??7????777777777777777777!!!7?Y5GB###BBBBB##BBBGGP555PPPPP5YJJJJJJYY555YYJJJJ???777!!~~~^^^:::::::::::......:::::..........:::::.:::::::^^~!!7!77????Y55PGGBBG5J7~^::........................................::^~!!77!!!!!77!~^::::..................................................::::::::::::::::::::::::::::::::::
:::::::::::::::::::...::::::::......:::::::^^^^~~~!!!~~^:::..............::::::::^~!?JJJJ??77777!!!!!!!!!!!!!!!77777!!!7?YPB#####BB##BBB##BBBGGGGGGPP555YYY5555YYJJJJJJ??77!~~~~^^^:::::::::::::.....................:::....:::^^^^^~~!777???JY5PGGGGP5YJ7~^::.........................................:^~!7777!!77777!~^::::...........::::::::.............................:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::....:::::^^^^^^~~~!!!!!!!!~^::::.............::::..:::^~!77???77!!~!!!!~~~~~~~~!!!!777777!!!7?YPGB#####BBBB##&&###BBBGGPPPPPPP5555YJJJJJJJ??77!!~~~^^^:::::::::::::::::....................:....:::^~~~~~~!7????JJ5PPGPP5YJJJ7~^:::............................::........::^~!!777777?J??7!!~^:::....:::...::::::::::...........................::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::.....::^^^~~~~~~!!!!!!7777!~^:::::...........:::::.....::^~!7??77!~~~!!~~~~~~~~~~!!77??????77777?YPB##&&#####&&&&&&###BBGGGGGBBGP5JJ??JJJJJ?77!!~~^^^^^:::::::::::::::::..............:::...:::::^^:^~!!!~~!7?JJJJY5PP55YJJJJJ7~^:::...........................:::.....:^~~!77777777??JJ?777!!~^:....::::....::::::::::.........................:::::::::::::::::::::::::::::::::::::
:::::::::::::::::::...:::::::::::^^~~~!!!~!!!7777777!!~^:::................:::....:^~!7??77!~~~~!~~~~~^^~~~~!!777???????77!77J5PB#&&&&##&&&&&&&&&&#######BG5YJ???JJJJ?77!~~~^^^^^:::::::::::::::::...............:::....:^^~~~~~!!!!!!!7??JJJY5P5YYJ????J?!^^::.................................:~~!77?????????????77777!~^::....:::::::::::::::::::.........................:::::::::::::::::::::::::::::::::::
:::::::::::::::::::.....::::::::^^~~~!!!!!!!!777777!!~^^^::.....:::::::....::::.:^~!????7!!~~^^~~~~~~^^^^~~~~!!!!7777????77!!!7?YPB#&&&&&&&&&&&&&&&&&&&#BGP5YJJJJJJJ?7!!~~~^^^^^^^::::::................................:^^~~~!!!7777??????JYYYYYYJJ?777??7~^:.................................:~7??77777777???77!!77777!~~^:::....::::......:::::::.........................:::::::::::::::::..::::::::::::::::
:::::::.....::::::::::::::.....:::^^~~~!!!!!!!!777!!!~^^::::.......::::....:^~!!!77??77!!!~~~^^~~~~~^^^^^^~~~~!!!!!7777!!!~~~~!7?Y5PG#&&&&&&&@@@@@@@@@&#BP55YYJJJJJ??7!!~~~^^^^^^:::::::..........................:....::^^~~^^^~~7?JJJJJJJJJJJJ????777???7~^::.........................:::::::^!?J??????777777!!!!!!!!!!~~^^:::.............::::............................:::::::::::::::::::::::::::::::::::
..:::::::::::::::.::::::::.......::^^^:::^^^^^^^~~!!!~~^^^::.........::...::^~7?JYJ?77!~~~~~^^^^~^^^^^^^^^^^~~~~~!!!!!!!~~~~~~~!!77?JPB#&&&&&&&&&@@@@@&BP555YYYYYJJ?7!~~~~~^^^^^::::::::..........................:::::::^^~~^^::^!??JJJJJJJJJ??777!!!!7?7!~~^::.......................:::::::^~7?JJJJ???77777777777777777!!~~^::...:::::...:^~~~^:::.......................::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::....:::::...:::::::^^~!!!~~^^::.........::....::^~7?JJ?7!!~~~^^^^^^^^^^^^^^^^^^^^~~~~!!!!!~~~~~~~~~!!!!!!7JG#&@@@&&&&@@@@&BP5Y555YYYJ?7!!~~~~^^^:::::::::::.........................:::^:::::^~!!~~~~7JJJJJJJJJJ??77!!!!!!777!!~^^::.......................:::::::^!7??JJ???777777777777777!!!~~~^^^^^^:::::.:^~?5PP5J?77~:...................:::::::::::::::::::::::::::::::::::::
:::..:::^^^:::..:::....:::::.....:::::^^~~~~~^^^^^~!!!~~^^:................:^^~!777!!!!~~^^::^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~!7J5G#&@@@@@@@&#GPYY5555YJ?7!!~~~^^^^:::::::::::............................:^~^:::^~!7!!!!?JJYYJJJJ?77!!!!!77??77!!!~~^^::....................:::::::::^~!7????777777777777!!!!~~^^:::^^~~~!!!!~^^^~!?Y5YJ!^:..:::::::::::::::::::::::^^::::::::::::::::::::::::::::::::
::..::^!777!^::..::::::.........:::^^~!!7777!!~~^~~!!!!!~~^:........:.....:^!777!!!~~~~~^^^:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~!!!~~~!JPB&&@@@@&G5YY5555YJ?77!~~~^^^^^:::::::::::.....................::::::^~7?77!~~!!!!!~~7?JJJJJJ??777!!!777??7!!!!!~~^^::..................::::^^^^^^^^~!???7!!~~~~~~~~^^~~~~~~~^^^^^^~~!~^^^^:..::^~!~~^::..::::::::::::::::::::::^^^^::::::::::::::::::::::::::^^^^^
::.::^~7?J?7~^::.::::::::.......:::^^~~~!!!!~~^^^~~!!77?77!^:.....::::..::~!7??7!!~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~!7?Y5GB###GP55555YYJ77!~~~~^^^^::::::::::::.................:::::::^^~!7JYYYJ?????7!!!7?JJJJJJ?????77777777!!!!!!!~~^::..................:::^^^^^^^^^~!777!~^^^:::::::::^^~~!!~~~~~~~~~~~~^^::....::::::::::::::::::::::::::::::^^^^^:::::::::::::::::^^^^^^^^^^^^~~
...:::^~!!!~^^::..::::::::::....::::^^^^^^^^^^^^^^~!77?JJJ?!^:...::::::::~7?77!!~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~^^^^^~~~~~~~!!!~~!!7?J5PGGPPP5555YJ?7!~~~~~~^^^::::::::::::................:::::^^^^^^^^!77777?JJ??777JYYYYYJJ????????77777!!!!!!!!~^::..................:::::^^^^^^^^~!77!^:::.........:::^^~~~~~~~~~^^^^^^:::....:::::::::^^:::::::::::::::::^^^^^^:::::::::::::^^^^^^^^^~~~~~~~~!
:::::::::::::::::::::::::::::::::::::::::::::^^^^~~!7??JYYJ!^^!!^::::::^~!777!~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~!!!!!!!!!7?JY5PPPP5555YJ?7!!~~~~~^^^::::::::::..............:::::::::^^^^^^::::^^~~!7?JJJJJJYY55YYJ?777777777777!!!!!!!!~^::................::::::::::::::::~!!!~^::.........:::::^^^^^^~~~~~~~~^^:::::::::::::::^^^^^^^^^^^^^^^^::^^^^^^^^::::::::^^^^^^^^^^~~~~~!!!!!!!!
::::::::::::::::::::::.::::::..:::::..:::..::^^~~~~!77???7!~^!JJ~..::^~!77!!!!!!~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~^~~!!!!!!!~!!7JY5PPPP55YJJ?7!!!~~~~^^^^::::::::........::::...:::::...::::::::::^^^^~~~!!7?JY555555YJ?7!!!!!7777!!!!!!!!!!~^:.................:::::::::::::::::~!!~~~^::.::::::^^^^^^^~~~~~~~~~~~~~~~^^^::::::::::^^^^^^^^^^^^^^^:::::^^^^^::::::::^^^^~~~^^^~~~~~!!!!!!!!!!!
:::::::::::::::::::...:::::....:::::::::::::^^~~~~~!77777~^:::~~::::^!??77!!!!!!~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~!!~~~~~~~~~!!!!!!~!7?J5PPPPP5YYJJ?7!!!~~~^^^^^:::::::::::.....::::....:........:::::::^^^~~~~~!!!7??JY55PP5J7!~~~!!7777!!!!!!!!!~~^:.................::::::::::::::::^!??7!~~^::::^^^^~~~~~~~~~~!!!!~~~~~^^^^^^^:::::::::::^^^^^^^^^^^^^::::::::::::::::^^^~~~~!!~~~~!!!!!!!!!!!!!!!
:::::::::::::::::::..:::.....::::::::::::::^^^~~~~!!!7!!~::..:::::^^!?JJ?7!!!!~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~!!!!~~~~~~~~~!!!!!!!7?Y5PPPPP5YYJ??7!!~~~~^^^^^:::::::::::.......:...::::::::::::::::::^^^^~~!7??JJJJJJJJY5Y?7!~~!77?77777777!!!!~^::.................::::::::::::::::^7YY?7!~~^^^^^~~~!!!!!!!!!!!!!!!!~~~~~^^^^^^^^^^:::::::::::::::::::::::::^^^^^^^~~~~~~!!!!!!!!!!!!!!!!!!!~~~~~~
:::::::::::::::::::::::..::^!77!~^:::::::::^^~~~~~!!!!!~^::..::::^!7?????7!!~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~!!!!~~~~~~~~!!!!!!7?J5PPGPP55YJJ?77!!~~~~^^^^^::::::::::............:::::::::^^^:::::^~~^^^^^~~!!77??JYYYJJ??7777???777!!!!77!!~~^::.................:::::::::::::..:^?55J7!~~^^^^^~~!!!!!!!!!!!!!!!~~~~!!!!~~~^^^^^^^^^^^^^:::::^^^^^^^^^^^^^~~~~!!!!!!!!!!!!!!!!!!!!!!!~~~~~~^^^^^
:::::::::::::::::::::::::~7JY55J7~:::::::::^^^~~~~!!!!~^::::...:^!7JJ?777!!!~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~!!!!!!7?J5PPPP55YJJ??7!!~~~~~^^^^^::::::::.............::.........:::::::^~~~~~!!!!!!77?Y5GGPJ?JJJ???777777!!~~~!!!~^^::........::.......:::::::::::::::^~JPPY?7!~^^^^^~~~~~~~~~!!!!!!~~~^^~!!!!!~~~~~^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~!!!!!!!!!!!~~~!!~~~~~~^^^^^^:::::
:::::::::::::::::::::..::~!?JJ?!~::::::::::^^^~~~~!!!~~^:::.....~7????7!~~!~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~!!!!!!!77JY5PPPP5YYJJ?77!!~~~~^^^^^^::::::::........:::::^:::::::^^^^:^^^^^::::^~!77??????JJY5YYYYYYJ?777?JJJJ?7!!!~^^:::::.......::.......::::::::::::::^!?5GG5J?7!~^^^^~~~~~~~~~~!!!!!~~^^:^~~~~~!!!!!!!~~~~^^^^^^^^^~~~~~~~~~~~~~!!!!!!!!!!!~~~~^^^^^^^^^^^::::::::::::
::::::::::::::::::::::..::^^~^^::::::^^^:::::^^~~~~~~~~^^::....^!??7777!~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~!!!!77777?JYPPPP5YJJJ??7!!~~~~^^^^^^^::::::::::::::::::::^^^^^^^~~~~~~~^^^~~^^^~~!77??JJJYYYYYYY5555YYJ???JJYYJ?7!~^^::.....::..............:::::::::::::^!J5PGP5Y?7!~^^^^^~~~~~~~~~!!!7!!~~^^^^~~~!!777???7777!!!!!!!!!!!!!!~~~~~~~~!77!!!!!~~~^^^::::::::::::::......::::
::::::::::::::::::::::..::::::..::::::^^::.::^^~~~~~~~~~^^:..:!7???77!!!!!!~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~!!7777777?JYPPPP5YJJJ??7!!~~~~^^^^^^^:::::::::::::::^^^^^^:::::::^^^^^::::^^^^~!77???????JJYYYY5555555YJJ??77!~~^::::........:..............:::::::::::::^!YPPP55Y?!~^^::::^~!~~~~~!!7777!!~^^^~~~!!77??JJJYYYYYJJJJJJJJ???7777!!!!!!~~~~~~^^^^::::::...:::::..........::::
:::::::::::::::::::::::::::::::::::::::^::::^^~~~~~~~^^::..:^~?JJ?77!!~!!!!~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~!77?77777?JY5PGGP5YJ???77!!~~~~^^^^^^:::::::::::^^^^~~^^^^:::............::^~^^~!!7????????JY55555555555YJ?7~^^:::::.........................:::::::::::^~7J5PPP5YJ7~^::::::^~~!!!!777??JJ?7!~^~!!!!!!7?JY55555555PPPP5555555YYYJ??7!!~^::::::::::..........................
::::::::::::::::::::::::::::::::::::::::::^^~~~~~~~~^::....:~7?JJ?7!!!!!!!!~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~!!!7?J??????JY5PGGGP5J??7777!!!~~~^^^^^::::::::::^^~!!!!!~~^^::...........:::^^~~~!!7???JJ???JJY55PPP555555YJ?7~^::::::.........................:^^::^^^^~~!?5PPPPP5J7!^:::::^~~~!77??J?JJJJYJ?7!~~!!~~~!7?YY555YY55PPGGGGGPPGGGGPP5Y?7777!^:....::............................
:::::::::::::::::::::::::::::::::::::::::::^^~~~~~~~^:...::~!7?J?77!!!!!!!~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~!!77??JJ?????JJY5PGGP5YJ??7777!!!~~^^^^^^^:::^^:^^^^~~!!77!!~~^^::::.....:^~!!~~^^~77?JJYYYYYJJJJYY555P555YYYYJ?7!~^:::..........................:^~!!~!!!!!7?J5P55YY?7!^::::^^~!!77?JJYYJJJJJJ????77!~~~~!!7?JJJJJY5PGGPPGGBBBBBGGGPP5YYJJJ?!^:..................:::::::::::::::
:::::::::::::::::::::::::::::::::::::::^:::^^^~~~!~~^:..:^!77????7!!!!!!!~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~!!7??JJJJ???JJJYY5PPGPP5Y?777777!!!~~~^^^^^^^^^^::::::::^^~~~~~~^^^^::.....:~7JYYJ?77???????JJYY55PPPPPP5555YYYYJJ?!~^::..........................::^~!!!!!!77JYY55YJ?7!~^^:::^~~!7?JJYYYYYYJJJJJJJJJJJ?7!!~~~!!!777?JY5PP55PGB###BBBBBBBBBG5?~^:.........:::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::^^:::^^^^~~!~~^:..:!?JJ???77!!!!!!~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~!7?JJJJJJ????JJYY5PPGGPP5J??77777!!!~~~^^^^^^^^^::::......::::::::^^^^:.....^7YPBBBGG5JJ???7??JY55PPPPP5555555555YJ?!~^::::....................::::::^^~~~~!7?JY55YJ?77!~^^^^^~~!!77?YYYYYYYYYYYYYYYYYYJ?777!!!777777??JY55PGGBB#BBBBBB##BBGPJ~:....:::::::::^^^^:::::::::::::::::::
::::::::::::::::::::::::::::::::::::::^^^::^^^^~~~~~::::~?YYJJ?77!!!!!!~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~!!!77?JYJJ??77???JJY5PPGGGP5YJJ?7777!!!~~~~^^^^^^^^^::::::::::::::::::::::....:^!?5GBB##BPJ??JJJYY555PPPPPPPP55555555YJ?7~^::::....................:::::::^^~~7?JY555YJ?7!!~^^^^^~!!7???JYYYYYYYY5555555555J7!!777777777?JYPGB##&&&&##BBBBBBG5J!~^::..:::^^^::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::^^^^^^^^^~~~~^::^~7JYYJ??7!!!!!!~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~!!!!!!!7??JJJJJ?777??JJY5PPGGGP55YJJ??77!!!!~~~~^^^^^^^^^^^^:::::::::::::::::::::::^~!7JY5PGGGPYJYYYYY55PPPGGGGPPPPP555YYYYJ?7!~^::......................::::^^^~!?Y5PPP5YJ??7!~^^^^^~!77?JYYYJJYYY555PPPPPPPPP5Y?777!!!!77?J5GB&&@@&&&&&&&##&&#BGY7^:.:^:::::::::::::::..:::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::^^^^^^^^^~~^^^^~?JJYJ??77!!!!!~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~!!!!777??????????JYYYY55PGGGP5YJJ???777!!!!~~~~^^^^^^^^^^^^::::::::::::^^^:::::::^^^~~!7?JY55PPP55YYYY55PPPPPPPPPGP5YYJJJJ??7!~^:........................::^~~~!?Y5555YJ?777!!~~~~~~!7??JY55YJJJYYYYYY55PPPP55YJ?7777??J5PGB#&&&&&&&#####&&&&&##G5?!^^:::.........::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::^^^~^^^^~^^^:^!Y5YJ??777!!!!~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~!777??77777?JJY555555PGGGPP5J?????77!!!!~~~~~^^^^^^^^::::::^^^^^^^^^^^~^^:::^^^^^^^~!7?JJYYYJJYYYYY5555PPPPPPPPP55YJJJJ??7!~^::.......................::^~!777JJJ???7!!!!!!!!!!!!77?JJYY55YYJJJJ????JY5PP5YJ77?JJY55PGBB##&&&&####&&#&&&###BGP5J7!~^:::.:::.......::::::....::::::::::::::
:::::::::::::::::::::::::::::::::::::^^~^^^^^^~~~^^^~!?Y5J???77!!!!!~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~!!!!!7777??77??Y5P5555PGGBBGP5YJJ??777777!!!!~~~~^^^^^^^^::^^^^^^^^^^^^^^^^^^^^^^^^^~~~!77??????JJYY555PPP55PGGGGPPPPP5Y?!~^^^:::..:.....:::::..:::::::...:~7?JJJ??7!!!!!~!!!!!!!77??JYYYYYYYYYJJ??777?Y5555YYJJYPPGGBBB####&&&#####&&&##BBGGP5YJ7!~~^^:...::::......::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::^^~^:^^~~~^^^~~7JYYYJ??777!!!!!!~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~!!777!!777????JJ5PPP555PGBBBGP5YJJ??7777777!!!!~~~^^^^^^^^^^^^^^^^^^^^^^:::^^^~~~!!77777777???JJJJY555PPP55YYY555555555YJ!^:..::::::^^::::::::::::::::::::^~7?JJJ?7!!!~!~~!!!!!!!77?JJY55555YYYYYJJ???JJ5PPPPPPGGB###########BBBBGGGGGGGP5YJ?77!!~~^^^:::.....::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::^~~^^^~~!7?YYJJJ??777!!!!!!~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~!!7!!!!!!!77??JY5PPP55PPGBBBGP5YJJ??777777!!!!!~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~!7?JJYY555YYYJJJJYY555PGPY???7!!777777!!~^:::.::::^~!777~^:::::::.....:^~7?????7!!~~~~~~~~~~~!!!7??JJYY55555YY5P55YJJJY5PGGBB###&&&&&####BBGGP55YYJJJ??7!!~^^::::::::::::..:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::^^~~~~!77?JJYJ?????777!!!!!!~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~!!!!!!!!!!!!7JY555555PPGGBBGP5YYJ???777777!!!!!~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~!7?Y5GGGGP5YJ?JYYY55PGGP?!!!~^^~~~^^::::.......::^!?Y5YJ7!^::.....:^~!7?JJJ?7!!~~~~~~~~~~~~~!!7?JYY55555YYYYY5PP5555PPGBBB##&&&&&##BBBGGPP5YYJ??77!!!~~^^::::::::::::::::::::::::::::::::::::::::::::::::::::
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~!!!7?JJJY55YYYYJJ????777!!!!!~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~!!!!!!7?JY55YY55PGGGGGGP5YJJ??77777!!!!!!!~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^~!?JYYYYJ??7??JJYYYY55PPPPY7~!!~~^~~^^:::...:::..::~!JY5555YJ7~:...:^!7?JJ??77!!~~~~~~~~!!!!!!!7?JY555555YYYYYYY55P55PGBB#########BBGGPPP5YYJJJ??77!!!~~^^^:::::::::::::..::::::::::::::::::::::::::::::::::::::
::::::::::::::::::..:::::^^~~!!777???JJYY55PP55555YJJJ??????77!!!!!~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~!!777????JY555YY55PGGBGGP5YYJJ??7777!!!!!!!!~~~~~^^^^^^^^^^^^^^^^^^^^^^^~!77!!!~~!!!77??JJJJY555PPG5J?!~~!!~~~~^^^^:::::::..:^!?Y55Y55P5Y?!!!!7JYYJ7!!!~~~~~~~~~~~~~!!!77?JJY5PPPP55YYJJJYYY55PPGB##&&######BGPPPP5YJJ??7777!!!~~~^^^:::::::::::::...::::::::::::::::::::::::::::::::::::::
:........................................:::::^~7?JYYYJ?????77!!!!!~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~!!777??JJYYY55555YY5PPGBBGP5YYJJ??77777!!!!!!!!~~~~~~~^^^^^^^^^^^^^^^^~~~~~~~~~~^^^~~~!7?JJYYYY555PPGP5J?7!!!~~^^^^^^^^:::::...:^!?JYYYY5PPP5YYJJJJJ?7~~~~~~~~^^^^^^^~~~!7?JYY55PPPP55YYJJYYY55PPGGB##########BBGPP5YYJ?777!!!!!!!~~~^^^:::.....::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::....................::::::::^!JY555YJ?????77!!!!~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~!7?????JJY555555YYY5PGBBBGP5YJJJ??7777!!!!!!!!!~~~~~~~~~^^^^^^^^^^^~~~~~~~~~~~~~~~!!!77???JJJJJY55PGPPPP55YJ7!^^::^~~^^^:^^::..:^7J555555PPP5YYJ?77!!~~~~~~~^^^~~~~~~~!!7?JY55P5P5555YYYYY55PPPGGB#########BBGGPP55YJ?7!!!~!!!!!!!!!~^^:::........::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::..............:..........:^~!J555YJJJJJJ?777!!!!~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~7???7777?JYYYYJJJYY55GBBBGPYJJJ???7777!!!!!!!!!~~~~~~~~~^^^^^^^^^^^~~~~~~~~~~!!!!!!!!!!77??JJYYYY5GGP5GB##BPY7~^^^^^^:::.:::....^7J5PP55555YJ?777!!!~~^^^~~^^^^~~!!77777?JJYPPP555YYYYYYY55PGGGBB#&&&##BBBBGP5YYJYYYJ?7!~~~~~!!!!~~~~~^^^:::::::::::....::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::..............:::::::::::^!JY55YJJ???????777!!!~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^~~^^^^^^^^^^^~~~!!77???JJJJYYYYYYYY55PPGBBGP5YYJJ??777777!!!!!!!!~~~~~~~^^^~~~^^~~~~~^^^~~~!!!!~~~!!!777777???JYYYJYPPGGB###BG5J7~^:::::::::::::..:~7Y55YYYJJ?77!!!~~~~~~^^^^^^~~~!!!777??JJY5PGP55YYYYYYYY5PGB#######BBBGGPP5YYJ?????77!!~~~^^^^^~~~~^^^:::::::::::::::..::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::...............::::::::::~7Y55YYJJ????????777!!~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~!!77777?JYYYYYYYYYY55PPGGBBBP5YYYYJ?7777777!!!!!!!!~~~~~~~^^^^^^:^^^^^^:::^^^~~~~~~~~~!!7777777??JJY555PPGBBBBBBG5Y?7!^::...::::::..:^!J5YJJJ??77!!~~~~~~~~~~^^~~~~!!!!77??JJYY5PPP5YYYYYYYY5PGGB####BBGGPPP55YYJ??777!!!!~~~^^^^^^^^^^^^^::::....::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::..............::::::::::~!?Y55YYJJ???????777!!!~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^::^^^^~~~~~!!7??777?JYYYYYJJJJY5PGGBBBBBP5YJJJJ??7777777!!!!!!!~~~~~~~^^^^::::^^^^^::::^^^^^^~~~~~!!77777777??JY55555PGBB###BGP55Y7^::::^:.....:^!7JYY???777!!~~~~~~~~~~~^~~~~!!!!777??JJYY5555YYYJJYY55PGGGBBBGGGPP55YYYJJ??77!!!~~~~^^^^:::::::::::^^:::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::.............:::::::.:^7JY555YJJJ?????77777!!!~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^::^^^^^~~~~~!7??777?JYYYYJJJJJ5PGBB###BG5YJJJJJ???777777!!!!!!!!~~~~~~~^^^^^^^^~~~~^^^^^~~^^~~~~~!!77777777??JY5555YY5PGGB###BGPP5?~^^^~!~^::^!?JJJJ??7777!!!~~~~~~~~~~~~~~~~!!!77777??JJYYYYYYYYJJJY55PGGGGGGP555YYJJ???777!!~~~^^^^^^:::::::::::::::^:::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::..........:::::::.::~J55555YJJJ????77777!!!!~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~!!7?????JJJJJJJJY5PGBB#&&#BP5YJJJJJJ??7777777!!!!!!!~~~~~~~~^~~^^^^~~~^^^^^^~~~~~!!!!!777??????JJY55PP55YYYY5PGBBBGP5J7!^:^!??77?JYP5YJ7!!!!!!~~~~~~~~~~~~!!~~~!!!77777????JJYYYJJJJJJJYY5PGGGGGP5YYJJ???777!!!!~~^^^^^^::::::::::::::::::^:::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::........:::::::::^7YP555YYJJ????77!!!!!!!!~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~!77??????JJJJJY55PGBB##&&#GPYJJJJJJJ??777777777!!!!!!~~~~~~~~~~^^^^^^^^::::^^^^^~!!!!!!777?????JY55PGPP5YJJ?JY5PPPP55Y?7~::^7JY5PP55J?7!!!!~~~~~~~~~~~~~~!!!!!!!7777??????JJJJYJJJJJYYYY55PGGGPP5YJ??7777!!!!~~~~^^^^:::::::::::::::::::::^^^^^^::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::......:::::::::~7J5P555YYJJ???77!!!!!!!!!!~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~!!7?JJJJJJJJJJJY5PPGB###&&#BP5YYJJJJJJJ?777777777!!!!!!~~~~~~~~~~~~~~~~~^^::^^^~~~~~~~~~!!7777???JY5PGGG5YJJJY55PPPP5555J7!~~7JY555YJ?77!!!!!~~~~~~^~~~~~~!!!!!!!777????????JJJJJJJJYYYY555PPPP55YJJ?777!!!!~~~~~~~^^^^:::::::::::::::::::::^^^^^^^^::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::......:::::::::^!J55555YYYJJ?7777!!!!!!!!!!~~~~~^^^^^^^^^^^^^^^^^^^^^^^^~~~^~~~~~!!!!!7?JJJ??JJJYYY5PPGBB#&&&&#G5YYYYYYJJJJ?77?777777!!!!!!!~~~~~~~~~^^~~~~~~~^^^^^^^^^~~~~~~!!77???JY5PPGGGP5555PPGGPP555YYJ?JJYPP5YJ???7777!~~~~~~~~~~~~~~~~!!!!!!777???JJJJJJJJJJJYYYYY555PPPP55YJJ??77!!!~~~~~~~~~~^^^^:::::::::::::::::::::^^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::...::::::::::^?5P5555YYYJJ?777!!~~!!!!!!!~~~~~^^^^^^^^^^^^^^^^^^^^^^^~!!!~~!!!!!!!!!!7?????JJYY55PPPGB##&&&&#GYYYYY5YYJJJ?7???777777!!!!!~~~~~~~~^^^~~!!777!!~~~~^^:^~~~~~!!77??JJY5PGGBBBGGGPP5555PP55YJJY55PGGG5J?77!!!!!~^~!!~~~~~~~~~~~~!!!!!777??JJJJJJJJJJJJJYY5YY555PPP5YJJ????7!!~~~~~~~~~~~^^^^^:::::::::::::::::::::^^^^^~^^^:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::....:::::::::::::~7J5PP55YJ?????7777!!!!!!~~~~~~~~^^^^^^^^^^^^^^^^^~~^~^^~~!!!!!!!!!!!!!777??JJJYYY5PPGGGBB#&&&&#GP55YYYYJJJJ???????7777!!!!!!!!!!~~~~~^^^~~~~!~~^^^^^~~~~~~~!!!777????JY5GGBGBBGGGPPPPPP555555PGGPP5YJ?777!!!!~~~^~~~~~~~~~~~!!!!!777777???????JJJJYYYYY55PPGGGGGP5YYJ?77!!!!~~~~~~~^^^^^^^::::::::::::::::::::::^^^^^^^^^::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::........::::::.::::^7JY55PP5YJ??????77!!!!!!~~~~~^^^^^^^^^^^^^^^~~~~~~~~~~~~~!!77777777777777???JYYYY55PGGBB##&&@@&BGPP55YYJJJJJ???????7777!!!!!!!!!!~~~~~^^^^^^~~^^^^^^^~~!!~~!!!!7777??JY5PGBBGGGGGGGGGGGPP555PPGGP5YJ?777!!!!!~~~~^^^^^~~~~~!!!!!77777??????????JJJYYYY5YYY5PGGGPP5YYJJ?77!!~~~~~~~~^^^^^:::::::::::::::::::::::::^^^^^^^::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::..........:::...:::~?Y55PP55YJJ?????7!!!!!~~~~~~^^^^^^^^^^^^~~~~~~~~~!!!!!!!!!7777777777777???JJJYY555PGBB##&&@@@@&BGPP55YYJJJJJ??????7777!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!7777??J5PGBBBGGGGGGGGGGGGGGPPPPPP5YJ?77!!!!!!~~~~^^~~~~~~~~!!!!777777??J?????JJJJJJYYYYYY5555555YYJJ???77!~~~~~~~^^^^^^:::::::::::::::::::::::::::^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::....:......::...::~7J5PPP55YYJJJJ??77!~~~~~~~~~^^^^^^^^^^^~~~~~~~~~~!!!!!77777!77777??????JJYYY5YY5PPPGB##&&@@@@@&&BGPP55YJJJJJ????????7777!!!!!!!!!!~~~~~~~~!!!~~~!!!!!!!~~~~~!!777777?JY5GGBBBBGGBBBBBBBBBBBBGGP5YYJ?7!!~~~~~~~~~^^^~~~~~~!!!!!7777777?JJJJJJJJJJYYYYYYY55PPP55YJJ??7777!!~~~~~~^^^^^^^^:::::::::::::::::::::::::::^^^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::....:......::...:^!?5PPP555YJJJJJ??7!~~~~~~~~~^^^^^^^^^^^^~~~~~~~~~~~!!!7777777????????JJJJYYY5555PGGBB#&&&@@@@@@&#BPPP5YYJJJ????????????777!!!!!!!!!!~~~~~~!!!!!!!!!!!!!!!~~!!77?????JJY5PGBBBBBBGBBBBBBBBBBBBGP5YJ?77!!~~^^^^~~~^^^~~~~!!!!!!77777?????JJJJJJJYYYYY555555PGGP5YJ??77777!!!!~~~~^^^^^^^^^:::::::::::::::::::::::::::^^^^^^^^^^^::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::....::.....::..::~?YPPPP55YYJJJJ??77!~~~~~~~~~^^^^^^^^^^~~~~~^^~~~~~~~!!!7777?JJJJJJJJJJJJJJYYY5PPGBB##&&&@@@@@@@&BGPP55YYJJJ???????7?????777777777!!!!!~~~~!7777!!~~~!!!!!!!!77??JJJJYY5PGGGGGGBBBBBBBBBBBBBBGP5Y?777!!~~^^^^^^^~~~~~!!!!!!!7777???????????JJJJYYY5555555PPPP5YJJ??7777777777!~^^^^^^^^^^^^^:::::::::::::::::::::::::::^^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::..:::..::::...:^7Y5PPP55YYJJJ???77!!~~~~~~~~~~^^~~~~~~~~~~~~~~^^^^~~~~!!!!77??JJJJJJJJJYYYY555PGBB##&&&@@@@@@@@&#BGPP55YYJJ????????77???777777777!!!!!!~~^~~~!!!~~^^^^~~~!!!!!!7777??JJY55PPPPGBBBBBBBBBBBGGP5YJ?7!!!!~~~^^^^^^~~~~~!!!!!77777?????JJJJJJ?JJJJYYY555555555PPP5YJJ???777!!!!77!~^^^^^^^^^^^^^^:::::::::::::::::::::::::::^^^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::...^~?5PP555YYJJJ???77!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!77777??JJJJYY55PPGGBB###&&&@@@@@&&&&#BGGPP55YYJJJ???????7777777!!!!!!!!!!~~~~^^^^::::::::::::^^~~!~~~~~!!77?JJY5PPGGBBBBGGGGBBGG5YJ77!!!!!~~~~^^^^^~~~!!!!!!777777????JJJJJJJJJJYYYYYY5555YYYYYYYYYJJ???77!!~~~~~!~^^^^^^^^^^^:::::::::::::::::::::::::::::::^^^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::....^!JPGP5YYYYJJJ??77!!!!!!!~~~~~~~~~~~~~~~~~!!!!~~~~~~~~~~~!!!777777??JJJJYY55PPGGBB#&&&&&@@@@&&####BGGPP55YJJJ????????77777!!!!!!!!!~~~~~^^~~~^^^::::::::^^~~!!77!~~~~!77?JY5PGBBBBBBGGGGGGBGP5J7!~~~!!!~~~~^^^^~~~!!!7777777777????JJJJJJYYYYYYYYYYYYYYYYJJJ?7777777777!~~^^~~!~^:^^^^::::::::::::::::::::::::::::::::::::^^^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
.....::::::::::....:::.:::::::::^!J55PP555YJJ???7777!!!!~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^~~~!!77????????JJYYYYY5PGGB##&&&@@@@@&&##BBBGGGPPP55YYJJJ?????77777777777!!!!!~~~~~~~~~~~~^^::^^^^^^^~~!~~~~~~~!7JJY5PPGB####BGGGGGGGP5Y?7!!!~~~~~~~~~~~~~~~~!!!!777777???JJJJJYYYYYYYYY555555YYYYJJYYYYYY?7!!!!!~~^^^^~~~~^^^:::::::::::::::::::::::::::::::::::::::::^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
.....::::::::::.........:::::::^~?Y555555YYJJ???7777!!!~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^~~~!77??????????JJYYY55PGBB#&&&@@@@&&#BBBGGGGGGPP555YYJJJ?????777777777777!!!!~~~~~~~~!!!!~~^^^^^^^^^^~~~^^~~~!7?JY5PGBBBBB##BGGGGGGP5J?7!!!!!~~~~~~~~~~~~~!!!!!777777???JJJJYYYYYYYYYYY555555YYYJJJJJJY5YJ?7777!!~~~~~~~~~~~~^^^^^^^^^^:::::::::::::::::::::::::::::::^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
...::::::::::::.........::::::^!7JY555555YYJJ??77777!!!~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^~~~!!77?????JJJJJJYY55PGB##&&&@@@@&&#BGGGGBBGGGPP555YYJJJJ????777777777777!!!!!~~~~~~~~~~~~^^^^^^^^^^^~~~^~~!!77?J5PGB###BBBBBGGGGP5YJ?7!~~~~!~~~~~~~~~~~!!!!7777777????JJJJYYYYYYYYYYY555555YYYJJJ???J???????777!!~~~~~!!!!!!~~~^^^^^^^^^:::::::::::::::::::::::::::::^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::........::::::^!?Y5555555YYJJ???77777!!!~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^~~!!777????JJJYYYYY55PB##&&&@@@&&#BBGGGGBBBBGGPPP55YYJJJJ??????77777777777!!!!!!~~~~~~~^^^^^^^^^^^^~~~~~~~~~!!7?JY5PGBBBBBBBGGGGGP5YJ?7!~~^~~~~~^~~~~~~~!!!7777????????JJJYYYYYYYYYYY5555555YYYJJ????77?JYYYYJ?7!!!!!!!!!!!!!!~~^^^^^^^^:::::::::::::::::::::::::::::::^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::^^~75PP55555YYYJ???77777!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^~~~!!77????JJYY55555PGB#&&&@@&&&#BGPPPGBB##BBGGPP555YYJJJJ??????77777777777!!!!!!!!~~~~~~^^^^^^^^^^^~~~~~~~~~!!7JY5PPPGGGB##BGGGGPYJ?77!!~~^^~~~^^~~~~~!!!7777???????JJJJYYYYYYYYYYYY555555YYYYJJ??777!!7JYY5YJ7!~~!!777777!!~~^^^::::::::::::::::::::::::::::::::::::::^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::^^^^~!7JPGP5555YYYJJ??777777!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~^^^~~~~!!77??JJYYYY555PGB#&&&&&&&#BGP5555PGB###BBGGPP555YYJJJ???????777777777777!!!!!!!!!!!!~~~~~~^^^::^^^~^^~!!!!7?JY5PPGGGBBBBBBGGPYJ?7!!!!~~~^^~~^~~~~~!!!777?????JJJJJJYYYYYY5555555555555YYYJJJ??777!!!~^^~~~^^::^^~!777!!!~~^^^:::::::::::::::::::::::::::::::::::::::^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::^^^^~~~!7J5PGP5555YYJJ??77777!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^~~!!77??JJ5555555PG#&&@@&&#BGP5YYY55PGBBBBBBGGGPP55YYJJJJ????????77777777777!!!!!!!!!!~~~^^^^^^^::^^^^^^^~!777?JJY5PGB##BBGGGGP5YJ77!!!!~~~^^^^~~~~~~!!777?????JJJJJYYYYYY55555555555555YYYJJJJ???77!!~~~~!!!!!~^^~~~!!~~^^^~~~^^^::::::^^^^^^^:::::::::::::::::::::::::^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::^^^^^^~~~~!!7J5PPPP555YYJJ???7777!!!!!!~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^~~!!7??JJY5PPPPPGB#&&&&&#BGPYJ?JY55PGGGGBBBBGGPP55YYYJJJJ?????????77777777777!!!!!!!!!~~~~~^^^^^^^~~~~~!!!!!7?JY5PGB#####BGPPP5J?7!!!!~~~^^^^^^~~~~!!!777????????JJYYYYY555555555555555YYYJJJ?????77!!~~!?JYYYYYJJ??JJYYJJ?7!!~~^^^:::::^^^^^^^:::::::::::::::::::::::::^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
::......::::::^^^^^^~~!!!!7?YPP55555YYJJJ??7777!!!!!!!~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^~~!77?JJYY5PPPGGB#&&&&#BGPYYJ?7?Y5PPPPPPGBBBBG5Y55YYYJJJ??????????77777777777!!!!!!!!!~~~~~~^^::^^^^^^^^~~!!7?YPG##&&&##BBBGP5J?7!!!!!~^^::^^^^~~~!!!777??????????JYYYYY55555555555555YYYYJJ?????777!!~~~7777777!!~^^~~!!!~!!!!~~^^:::::::::::::::::::::::::::::::::::::^^^^^^^^:::::::::::::::::::::::::::::::::::::::::::
::::::::::::^^^~~~~!!77!~!?5PPP555P5YYJJ???7777!!!!!~~~~~~!!!~~~~^^~~!!77!!~^:::::^^~~77???JY5PPPGB#&&&&&#BGP5J?7!!!7?JYY55PPGGBGGGP5555YYJJJ????????777777777777!!77777777!!~~~^^^^^^^^^^^~~!!7?JY5PB#&&&#BBBGGPYJ?7!~~~!~~^::::^~!!!!!77????JJJJJJJJYY555555PPPPPPP555YYY5YJ????JJ?7!~~~~~~~^~!!!~~^^::^^^^~~!!!!~~~^^::::::::::::::::::::::::::::::::::::::^~!!!~~^::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^
:::::::::^^^^~~~~!!!!!!!~!J5PPPP5555YJJ????777!!!!!~~~~~~~~~~~~~~~~~!!!!!~~^^^:::::^~!7??JJY5GGBB#&&@@&#BP5J?7!!~~~~~!7?JJY5PPGGGGPP5555YYJJJ????????777777777!!!!!!7777777!!~~^^^^^^^^^^^~~!!77?JYPG#&&&##BBBGPYJ?7!!~~~~^^:::::^~!!!!77???JJJJJJJYYYY5555YYYY555555555555YJ???????7!!!~!~~~~~~!!~^:::.::^~~~~~!777!!~~^^::::::::::::::::::::::::::::::::::::^^~!!!~~^^:::^::::::::::::::::::^^^^^^^^^^^^^^^^^^
:::::^^^~~~~~!!!!!!~~~~~!7YPPPPP555YYJJ????777!!!!!~~~~~~~^^~~~~~~~~~~~~~^^^^^^::^^~!77??J5PGB#&&&&&&#BG5J7!!~~~~!7??JJY555PPGGGGGPP555YYYJJJ????????77777777!!!!!!!!!!!777!!~~^^^^^^^^^^~~~!!7?JJ5G#&&&#BBBGGPYJ7!!!!!~~^^::::^^~!!!!!77???JJJJJJYYYY5555555555555555PGB#G5YJJ???77!~~~~~~~~^^~~~~~~^^^~~!!!!~^~~!~~~^^^^:::::::::::::::::::::::::::::::^^^^^^^~!!!!~^^^:^^^^^^^^^^^^^:::::^^^^^^^^^^^^^^^^^^^^
:::^^~~!!!!!!!!!~~~~~^^~!?5PPPPP55YYJJ????7777!!!!!~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^~!!777?JYPB#&&&&&&#BGP5YYYYYYYJJY5PPPPGGGGGGBBBGGP5555YYJJJ??????????77777!!!!!!!!!!!!!!!!!~~~^^^^^^^^^~~~!!77?J5G#&&&&#BBGP5YJ7!!!!!~~^:::::^~~!!!!!777??JJJYYYYY55555555555PP55YYY5PB&&#GPY?7777!!~~^^~~~!~~~~!7??77!!77??J?7!!!!~~~^^^^::::::::::::::::::::::::::::::^^^^^^^~!!!!~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^~~!!!777!!!~~~^^^^::~?YPPP5555YYJJ???77777!!!!!!~~~~~~~~~~!!!!!!!!!~~^^^^^^^^~!77???J5PB#&&&&&##BGP55555PPPPPPPPPPPPPPPGGGGBGGP5YYYYYYJJ????????????777!!!!!!!!!!!!!!!!!!~~^^^^^^^~~~~~!!77??5G#&@&&##BGP5J?7!!!~~~^^::::^^~!!!!!!777??JJYYYYYY5555PP555Y555PP55555PG##&&BPJ7!!!77!~~~^~~~~~~~!7?7!~~~!!7?J?77!~~~~^^^^::::::::::::::::::::::::::::::::^^^^~~!!!!!~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
~~~~!!!!!!!!~~^^^:::^^^!YPPPP5555YJJ???777777!!!!!!!!!!!~~~~~!!77777!!~^^^::^~~~!777??J5GB####BGPP555YYYYJJJJJJYYYYJJYYYYY55PGGGGGP55YYYYJJ????????????77777!!!!!!!!!!!!!!!!~~^^^^^^^~~~~!!77??JP#&@@&#BBGP5J7!!!!!~^:::::^~~!!!!!7777??JJYYYYY555555PPPGP55YY5PPGGGGPPPGG#&&BPYJ???77!~~^^::::^^^^~~^^^^^^~~!~^^:::::::::::::::::::::::::::::::::::::::::::^^~!!7!!~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
!!!!!!!!~~~~^^^::::::^~?5GGPP555YYYJ??777777!!!!!!!!!!!!~~~~~~!!!7!!!~^^^^^^~!!!!777?Y5G####BP55YYYYYYYYJJ??7777????????JJY5PPGBBGGP5YYYJJJ?????????????777777!!!!!!!!!!!!!~~~^^^^^^~~~~~!!77?J5B&@@&#BBGP5J7!!~~~~^:::::^~!!777777???JJJYY5555555555PPPGPP55PPGGBBBGGPP55PPGGGGGP5J7~^^^^^^^^::^^^~~~^^^^^^^^::^^~~^^^^^^::::::::::::::::::::::::::::::::::^^~~!!!~^^:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
!!!~~~~^^^^::::::::::~7YGGGP555YYYYJ?777777!!!!!!!!!!!!!!!!~~~!!!!!!~~^^^~~~!!!!777?Y5GB##BG5YJYYYJJJJJJJJ??777777777777??JY5PGGGPP5YYYJJJ???????????????777777!!!!!!!!!!!!~~^^^^^^^~~~~!!77?J5G#&@&##BGPY?7777~^^^:::::^~!!77777??JJJJYYY55555555555PP55555PPPGGGGGPP55YYJ?7!!~~^^^^^~!!!~^::::::::::^^^^^^::^^^:::::::::::::::::::::::::::::::::::::::::^^^^^^^~~^^^^^^^^::::::::::::::::::^^^^^^^^^^^^^^^^^^^
~~~~~^^^:::::::::::::!J5GBGP555YYYYJ?777777!!!!!!!!!!!!!!!!!!!!77??77!~~~~!!!!!777?Y5GBBBGP5YJJYYYJJJJJJ??7!!!!77??77777??JY5PGGGGP55YYJJJ?????????????????77777!!!!!!!!!!!~~^^^^^^^~~~~!!77?JPB&&&&##BG5J7!!?7~::::::^^~!!777777?JJYYYYY5555555555555PPPPPPPPPGGGBBGGP5YJ5GBGP5YJ?!~^^^^~~~~^^^:::.:~7?JJJ?!~~~^^^^^^^^^^^^^^^::::::::::::::::::::::::::^^^^:::::^^^^^~~^^::::::::::::::::::^^^^^^^^^^^^^^^^^^^
~^^^^^::::::::::::::~?5PPPP555YYYJJJ??7777!!!!!!!!!!!!!!!7777777777!!~~~~~!!7???JJY5GB##BP5JJJYYYJJ??77777777777777777????J5PGGGGPPP5YYJJJJJJJ??????7777?J?7!!!7??JJ?777777!~~^^~~~~~^~~!!7?JYB&&&&&#G5J?777!~~^:::::^^~~!!777??JJJYY555555555555PPPPP5555PPPP55PGBBBGPPGGGGG5YJ??????7!~^^^^^^^~~~^^^^^~~!!77??7~~^^^^^^^:::...:::::::::::::::::::::..:::::^^^^^~~~~~~~~~^:::::::::::::::::::^^^^^^^^^^^^^^^^^^
^^^^^^::::::::::::^^!J5PP5555555YYJJ??7!!!!!!!!!!!!!!!!!7?JJ????777!!~~~~~!!!77?J5PGBBBGP5YYYYYYJJJ?7777!777777777!!7777??JYPPGPP5555YJJJJJJJJ??????7777777!!!!77???7!!!!77!~~^^~~~~~~~~!!7?J5B&&&&&#BPY?77!~^^::::^^~~!!7777??JJJJYY5555P55555555PPP55PPPGP5YYJJ55555555PGBGPY?7!~~~~^^^:::^^^^^^^^^:::::^^^~~~^^::^^^^~~^^^:::::::^^^::::::::::::::::::::::^^^^^~~~~~~~^^:::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^:::::::::^^^^~7YPPP55555555YJJ??7777!!!!!!!!77??JJJJJJ??7777!!!~~!!7???7?JYPGBBGP555555YJJJ???777!!!!77777!!!!7777??JYPPGGPP555YJJJJJJJJ??????77777!!!!!7777777!!!!77!~~^^^~~~~~!!!77J5G#@@&&&#BPY?!!~^^^^^^~~~!!77????JJJJYYY55555PPPPP5555555PPGBBBGPYJ???JJJJJJY55PP5YJ7!!~~~~^^^^:::::::::::::::::::::::::^^^~~~^^^^^:::::::::::::::::::::::::::^^^^^^^^^^^^:::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^:::::::::::^^^^!?5PGP555YY555YJ?????77!!!!!7?JY555555YJJ???777!!!!!!7??JJJY5PGBBBP5YYY55Y?????77!!!!!!!!!!!!!!!!77777?JYPGGGGPPP5YJJJJJJJJ??????7777777777777777777!!!!~~~^^^^^~~!!777?YG#&@@&&#BPY?!~~^^^^~~~!!!77???JJJJJYYYY5555555PPPPPP555PPGGB#&##BP5YYYYYYYJJYYYYYJJ?7!!~~~~~~~~^^:::::...:::::::::::::^^^~~~^^^^^^^^^:::^^~~~~^^:::::::::.::^^^^^^^^^^^^^:::::^^^^^^^^^^:::::::::^^^^^^^^^^^^^^^^^^^
:::::::::::::::^:^~!J5GG555YYY555YJ?77??77!!77?Y5PPGPP55YYJJ???7777!!!!!77?JJYPGB###BP5YJJ??77!777!!!~~~~!!!!!!!!!!!!!!~!7?Y5GGGGP55YYYJJJJJJJ??????777777777777!!!7777!!~~~~~~^^~~~~!777??5B&@@&#BG5Y?!~~^^^^~!!!!!777??JJJJYYY555555555555PPP555PPGB##&&&##BGGPPPP55YYYYYYJJ?77!!~~~~~~~~~~~~~^^::::::::::::::::^^~~~^^^::::^^^::^~~~~~~~^^^:::::::::^^^^^^^^^^^^^^^^^^^^^^^^:::::::::::::::^^^^^^^^^^^^^^^^^^
::::::....:::::^^^~!?5GGP55YYYY5YYJ?7777777?JY55PPPP5YJ??777777777777!777?JJY5G####BP5YJ?7!~~!!!!!!~~~~~~~!!!!!!~~~~~~~~~!7J5GGGGP5YYYYJJJJJJJ??????7777???JJJJ?7777777!!~~~~~~~~~~~!!77??YP#&&&#GPYJ?!!~~~~~~~!!!!!!77?JJJYYYY555PPPPP55555555PPPGGB#####BBGGPPP5555YYJJJJJJ?77!!!!~~~~~~~~~!!!!!~^^:::..:::::::::^^^^^::::::^^^^^^:::::::^^^^^:^^~!!!!!!!!!~~~~~^^^::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^^
::::::...:::::^^^^~!?5GGPPP555555YJ???????JJYYYYYYJJ??7777!!!!!!7777777?JJY5GBB#BG5YJ???7!~~~!!!!!~~~~~~!!!!!!!!!!!77!!!!7?YPGGGGP55YYYJJJJJJJ??????7777??JJYYYJJ?77777777!!!~~~~!!~!!77?J5G&&&BP5J??7!!!!!!!~~!!!!!77??JJYYYY555PPPPPP5555555PPGGGBB##BGGPP55YYYYJJJJJ????77!!!~~~^^^^^^^~~~~~!!!!~^^:...::::^:::::::::::::::^^^~~~~~~~^^^::::::^~!777777777!!!~~^^^::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^
::::::::::::^^^^~~~!?5GBGGGGPPP55YYJJJJJJJJJJ????777777????77777777777??JY5PBBGPY?7!!!!!!!!!!!!!!!!!!!!!!7777777!77??JJJJJY5PGGGPP555YYJJJJJJJ??????7777777??JJJ??77!!!!777!!!!!!!!!!!!7?YPB&&#PYJJ??77!!!77!!!!7777??JJYYYYY5555PPPPPPPPPPPPPGGBBBBBGGGPPP55YYYYJJJJJ???77!!!!~^::....::^^~~^^^~!7!~^::..::^^^^::::::.::::::::^^^~7?YYYYYJ7!~^^~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^::::^^^^^^^^^^^^^^^^^^^
::::::::::^^^^~~~~!!?5BBBBBGGGPPP5YYYYYYJJJ???????????JJ??777!!!!!777?JY5PGGGPY?!!!777!!!~!!!!!!!!!!!!!7777????777?JJYYY5555PPPP55555YYJJJJJJJ??????7777777????????????77777!!!!!7!!!~!7J5G#&&#PYJJJ?77!!!!!!!77????JJYYY555555555PPPPPPPPPPPGGBBBBBGP555YYYJJJJJ????777!!!!!777!~^^:::^^^:..:^~!???7~^:.:::^^::::...::::^::::::::^:..^~?5GB##BG5J7~^^^^~~~~~~~~~~~~~~~~~~!!!!!~~~~^^^::::::::^^^^^^^^^^^^^^^^^^
::::::::::::^^^~~~!7J5PGBBGGPPPPPP55YYJJJJJJJJYJJJJJJJJ???7777777777?Y5GGGP5?7!7!!!7777777777777777777777?????????JJYYY55PPPPPPPP555YYYYJJJJ??777777???????????????????77777!!!!!!!!!7??J5B#&&B5YJ?777!!!777777????JJYY5555555PPPPPPP55555PGBB###BBGPP5555YYJJ???77!!!!!!777777777!!!!~~~^::.::^~!77?7!~::::::...::::::::::::::::::::::::^^~!7?J5PGB##GY?7!~^::::^^^~~~^^^^^~~~~!!!!!!~~~^^^:::::::::^^^^^^^^^^^
:::^^^^::::^^^^~~~!7JYPGGBGGGPPGGPP55YYYYYYYYYYYYYJJJJJ?????????777?JYPPPPYJ7!!77777777777777777???????????JJJJJJJJYYY55PPPGGGPPP555YYYYYJJJ???77777???J????????????????77777!!!!!!!!7??YPB###G5YJ?77777777777???JJJYY55PPPPPPPPPPPPPPPPPGGBB#####BGP5555YYJJ????77!!!!!77777?????777777!~~^::^^~!7???7~^:::::..::::::::::::::::::::^^::::::::::^^~~~!7?JY5555YJ7!~^::^^^^^^^^^^^^^^^^^~~~~~!!7!!~~^^^:::::::^^^
^^^^^^^^^^^^^^~~~!!7?Y5PGBGGGGGGGGGPP5555555555YYYYJJJJJJJJJJ??????JY5555J?7777777777777????????JJJJJJJJJJYYYYYYYYYY555PPGGGGGGPP555YYYYYYJJJ????7????JJ?????????????????????7!!!!!!77?JYG###BP5YJ??77777777???JJJYYY5PPGGGGGPPPPPPPPPGGBB########BGP5555YYJJ?????777777777777??????????77!~~^^~!77???7~^:::::::::::::::::::::::::::^^^::::::....:::::::^^^~~!!!777!!!!!~~^^^^^^^^^^^^^^^^^^^^^^~~~!!!!!!!~^^^::
^^^^^^^^^^^^^^~~!!77?J5PGGBBGGGBBBGGGPPPPPPPPP5555YYYYJJJJJJJJJJJ?JJJYYYJ?!!777777???????JJJJJJJYYYYYYYYYYY5555555555PPGGGGGGGGPP5555YYYYYJJJJ??JJJJJJJJ???????JJJJJJJ???????77!!77!77?J5G##BGP5YJ??777??????JJJYYY55PPPGGGGPPPPPPPPPGBB######BBBBBGPP555YJJ???????77777??777777????????77!!~~~~!7??J?7~^^^::::::::::::::::::::::::::^^:::::::::::::::::::::::::^^~~~^^^:^!7!!!~~~^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^~~!!77?JY5GGBBBBBBBBBBBGGGGGGGPPPPP5555YYYYYJYYYJJJ??JJJJJ??77??????JJJJJJYYYYYYYYYYY55555555555555PPPPGGGBBBBBGGGPP555555YJJ???JJYYYYJJ????????JJJJJJJJJJJJ???7!!!77777?J5B#&BGPYYJ???????JJJJJYY555PPPPPPPPPPPPPPPPGB########BBBGGGPPPP5YYJ??77?????7777???777777???????77!!~~~!7??JJJ7~^^^::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^~!!~~~~~~~~~~~~~~~~!!!!~~~^^^^^^^^~~~~
^^^^^^^^^^^^^^~~!!!7?JY5PGBBBBBBBBBBBBBGGGGGGGGGGPPPP5555YYYYYYYJJ???????JJJJJJYYYYYYY55555555555555555PPPPPPPPPPPGGGBBBBBBBBBGGPP555555YJ????JYY55YYJ??????JJJJJJJJJJJJJJJ??7!!!77777?J5G##BG5YJJ?????JJYYYYY555PPPPPPPPPP55PPPGGGB#&&######BBBGPPPPGGPYJJ?777777??7777777777777??JJJ??77!!!!!!7?JJJJ7~^^^::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^^^^^^^^^::::::::::::::::^^~~~~~~~~~~~~~^^^^^
^^^^^^^^^^^^^^~~~!!77?J5PGGBBBBBBBBBBBBBBBBBBBBBGGGGPPPPP555555YYJJJJJJJJY55555555555PPPPPPPPPPPPPPPPPPPPGGGGGGGGGBBBBB######BBGPP55555YJJ????JYY55YYJ??????JJJJJJYYYYYYYYJJ?777777777??YPBBGP5YJJ????JJYYYY555PPPPPPPPPPPPPPPGGBB##&&&###BB#BBBBGGGGGGPYJ??777777777777777777777??JJJJ??777!!!77?JJJ?7~^::::::::::::::::::::::::::::::::::::::^^^^^^^^^^^::::^^^^^^^^^^^^^^^::..........:::::::^^^^^~~~~~~~~~~~
:::^^^^::::^^^^~~!!77?JYPPGBBBBBGBBBBBBBBBBBBBBBBBBGGGGGGGPGGPP55555555YY5PPPPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGBBBBBBBBB#########BBGGP555YJJJJJJJJJJYYYJJJJ????JJJJJJYYYYYYYYYYJ???77777777??YPGGP5YJJ???JJYY5555PPPPPPPPPGGGGGGGGBB##&&&&&###########BBGGGPYJ?77!!!777777!!!!!!!!!!!7??JJ??77777!!!7?JJJ?7~^::::::::::::::::::::::::::::^^::::::::::::::::::^^^^^^::::::^^^^^^^^^^^:::::::......::::::::^^^^^^^^~~~
::::::::::::^^^~~~!77?JY5PGBBBBBGGGBBBBBBBBBBBBBBBBBBBGGGBBBBGGPPPPGGPP555PPGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBB############BBGGPP55YJJJJJJJJJJJJJJJJJJJ?JJJJJJYYYYYYYYYYYJJ??????777777JY5P55YJJ???JJY5555PPPGGPPPPGGGGBBBB###&&&&&#########&&&&##BGP5YJ??7!!!!7777!!!!!~~~^^~~!77???7777777!77?JJJ?7~::::::::::::::::::::::::::::::::::::::::::::::^^^::::::::^^^^^^^:::::::::::::::::::::........::::::^^^^^
::::::^^^^^^^^^^^^~!7??JY5PGGBBBBBBGGGGBBBBBBBBBBBBBBBBBBBBBBBBBGGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBB#######&&&#&&&&&&&###BBGPPP555YYYJJJJJJYYYYJJJJJYYYYYYYYYYYYYYYYYYYJJJ???7777777????JJYYYJJJYYY555PPPPGGGBBGGGBBB##&&&&###################BBGGP555YJJ??7777!!!~~~~~~~~~~!!777????????????JJJ?7~^:::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^::::::..........................
::::^^^^^^^^^^^^^^~!!77?JY5PGBBBBBBBBGGGGGGGBBBBBBBBBBBBBBBBBBBGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBBBBBB###########BBBBBBGBBBB#####BBBGGPPP55YYYJJJJJYYYYYYJJJYYYYYYYYYYYYYYYY555YYYYJJ???77????JJJJJJYYYY555PPPPPGPPPPPPPPGGB##&&&&&&###BBBBBBB########BBGGPPP55YYJ???777!!!~~~~~~~~~~~!!777???????????JJJ?7~^:::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^^^^^^^^^::::::.........................
^^^^^^^^^^^^^^^^^^~~!!!7?JY5PGGBBBBBBBBBBBBBBBBGGGGGGGGGGBBBBBGGGGGGGGGBBBBBBGGGGGGGGGGGGGGGGGGGGGBBBBBBBBBBBBBBBBBBBBB#######BBGGPPP555YYYJJJJYYYYYYYYYYYYYYYYYYYY555555555555YYJJJJ?JJJJYYYYYYY555PPGGGGGGGGGGGPPGGBB##&&&&&######BBBBBBBBBB##BBBGGPPPP555YYJJ???77!!~~~~~~~~~~~~!!77777?777???JJJJ7!~^:::^^::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^^^:::::.......................
^^^^^^^^^^^^^^^^^^~~!!!77?JYY5PGGBBB#######BBBBBBGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGBBBBBB#########&&&&&#################&&&&&&&&##BGGPP55555YYYYJJYYYYYYYYYYYYYYYY555555555555PPP555YYYYYYYYYY555555PPPPGGGGGGGGGGGGGGBB##&&&&&&##########BBBBBGGGGGGGGGPPPPP555YYYJJ??77!~~~~~~~^^^~~~!!!7777777??JJJJ?7!~^^^^^^:::::::::::::::::::::::::::::::::::::::::::::::::::^^:^^^^^^::^^^^^^^^^^::::......................
^^^^^^^^^^^^^^^^^^~~~!!!!77?JY5PGGBB##########BBBBBBBBBBBBBBBBBBBB###########BB#######&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&##BBGGPPPP555YYYYYYYYYYYYYYYYYYY55555555PPPPPPPPPP555555YY5555555PPPPPGGGGGGGGGGGGBBGGGB#&&&@@&&&&&&&&&&&&&##BBBGGGGGGGGGGGPPPP555YYYJJ?77!~~~~~~~^^^~~~!!!7777777?JYYJ?7!~^^^^^:::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^::::^^^^^^^^^^:::::....................
^^^^^^^^^^^^^^^^^^^^^^^~~!!77?JY5PGBB#BBBBB###################&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#####&&&&&&&&&&&&&&&&&&&&&&&###BBBGGGPPPP55YYYYYYYY5555555555555555PPPPPPPPPGGPPPPPP5555555PPPPPPPPGGGGGGGGPPGGGGGGGGB#&&@@@@@@@@@@@@@@&&&&#####BBBBBGGGGGGPPPP555YYYJ??77!!!~~~~~~~~~!!7777777??JYYJ?7!~^^^^^:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^^::::::..................
^^^^^^^^^^^^^^^^^^:::::^^^~~!!7?JY5PGGGGGBBBB##########B#######&&&&&&&&&&&&&&&&&&&&&&&##################BBBBGGGPPPB#####BBBBBBGGGGGGGGPPP55YYYYYY5555555555555555PPPPPGGGGGGGGGGGGPPPPPPPPPGGPPPPGGGBBBGGGPPPGGGGB#&&&&@@@@@@@&@@@@@@@&&&&&&&&&&&##BBBGGBGGGPPP5555YYYJJ??7!!!~~~~~~!!!77777???JJYJJ?!!~~~^^::::::::::::::::::::::::::::::::::::::::^^:::::::::::::::::::::::^^^^^^^^^^^^^^^::..................
^^^^^^^^::::::::::::::::^^^^^^~~!7?JJY5PPPGGBBBB###BBBBBBB########&&&&#############BBBBBGGGGGGGGGGPP5YYJJ???77777?YPPP5555555PPPPGGGGGGPP55YYYYYY55555555555555PPPPPPGGGGGGBBBBBBGGGGGGGGGGGGGGGGGBBBBGGPPPPPGGGB#&@@@@@@@@&&&&&&@@@@@&&&&&&&&&&&&&###BBBBGGGPPP555555YYYJ?77!!!!~!!!!77???????JJJJ?7!!!~~^^:::::::::::::::::::::::::::::::::::::::^^^::::::::::::::::::::^^^^^^^^^^^^^^^^^^^:..................
^^^^^::::::::::::::::^^^^^^::::^^^~~!!??JJY55PGGBBBBBBBBBGGGBBBBBBBBBBBBBBBGGGPPP55YJJ?7!!~~~^~~!!~~^^^^^~!7?JY555J777777??JJYY5PPGGGGGGPP55YYYYY5555PPP5555555PPPPPGGGGGGGBBBBBBBBBBBBBBBBBBBBBBBBBBGGPP55PPGB##&&&&&&@@@@@@&&&&&&@@@@&&&&&&&&&&&&&&&&##BBGGGPPP55555555YJ?777!!!!!!777?????JJJJJ??7!!!~~^::::::::::::::::::::::::::::::::::::::^^^^^::::::::::::::::::::^^^^^^^^^^^^^^^^^^^:..................
^^^^^^^:::::::::::::::::::^^^^^^^^^^^^^^~~~~!!77??JJYYYYYYYYY555555PP5YJ???7!!~~~~~~^^::::::::::^^^^^^^^~!7?JJ?7!~!!777??JJJYYY5PPGGGBBBGGPP55555555P55555555PPPPPPPPPPPPPPGGGGBBBBBBBBBBBBBBBB##BBBBBGGPP5PG#&@@@&&&&&&&&&&&&&&&&@@@@@@&&&&&&&&&&&&&@@&&&###BBGGPP5555555Y???7777!!!!777???JJJJ?77!!7!~^^^::::^^^^^^^^^^^^:::::::::::::::::::::^^^^^^^^^^^^^^^^^:::::::::::^^^^^^^^^^^^^^^^::::::::::::::::::::
:::::::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^::^^^^^^^^~~~~^^^^~~~~^^^^:::::::^^^^^^^^::^~?Y55Y7~^^^!!!7777??JJJYYY55PPGGBBBBGGPP55YY5555PPPPPPPPPPPPPPPGGGGGGGGBBBBBBBBBBBBBB#########BBGPPPGB##&&&&&&&&&&&&@@@@@&&&&@@@&&&&&&&&&&&&&&&&@@&&&&###BBGGPPP55555Y????7777!!!7777?????77!!!!!!~~^^^^^^^^^^^^^^:::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^::^^^^^~~~^^^^::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::^^^^^^^:::::::::::::::^^~~~~~^^~~~~^^^^^^:::::::::^^::::....^!?JY5Y?7!~~!!77!~~!777???JJJYYY55PPGGGBBBGGGPP5555555PPPP555PPPPPPPPPPPPPPGGBBGGGGGBBB############BGGPPPGB&&&&&#BBBBBB###&&&&&&&&&@@&&&&&&&&&&&&&&&&&&&&&&&&&##BBGGGPP5555YJ????777777777777777!!!!!!!!!!~^^^^^^^^:::::::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::::....:::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^^^^~~~~~~!!!!!~~^^^^^:^^:::..:^^~!!7?YJ7!!!!!!!!~~~~~~~!777777???JJJYYY55PPGGGGGGGBBBGGGPP555555PPPPPPPPPPPPPPPPPPGGBBGGGGGGBBB#########BGGPPGGB#&&&&#BBGPPPPPPGGGBB###&&&&&&#########&&&&&####&&&&&&&&##BBGGPPP55YJJJJ???77777!!!!!!!!!!!!!!~~!!~^^^^^::::::::::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^:::::........::::::::::::::::::::
::::::::::::::::::::::::::::::::::^^^::::::^^^^^^^^^~~~~~~~~~~~~!!!777!~^::::::::.::^~!7???777!~^^^^^^^~~~~~~!!!77777???JJJJYYY55PPGGGGGGGBBBBBBBGGPP555PPGPPPPPPPPPPPPGGGGGBGGGPPPGGBBB#######BGPPPGB#&&&&##BGGGGGGPPPPPGGGBB#######BBBB##############&&&&&&&&&&##BBGGPP55YYJJJ???7777!!!!!!!!!!!!!!~~!!!~^^^::::^::::::::::::::::::^^^^^^^^^^^^^^^:^^^^^^^^^^^^^^^^^^^^^^^^:::.........:::::::::::::::::::::::
:::::::::::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~^~~~!~~^::::^~!7??JJ???7!~^^^^^^^^^^^^~~~~!!!!777777????JJJJYYY55PPPGGBBBBBBBBBBBBBBGGPPPGGGPPPPPPPPPPPPGGGGGGGGGGGGBBBB##BBBBBGGGGB#&&&@&&#BGGGGGGGGGGGGGBBBB#BBBGGPGGGGGGBBB####&&&&&&&&&&&&&&&&##BBGGPP555YYJJ??77777777777!!!!!!~~~!7!!~~^^^^^^^^^^^^^::::::::::^^^^^^^^^^^^^^^:::^^^^^^^^^^^^^^^^^^^:::::..........::::::::::::::::::::::::
^^^^^^^^^^^:^:^::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~^^::^^^^~~~~~!?YYYYYYJ?!~^::::^^~^^^~~~~~~~!!!!!777777???JJJJJYYY55PPPGBBBBBBBBBBB###BBBBBGGPPPPP555555PPPPPPPPPGGBB#######BBBBBBBB##&&&&&&&&##BBGGP55PPPGGBBB###BBGP5555555PPPGGBB###&&&&###&&&&&&&&&##BBGGPP555YJJ?7777777???7!!77!!~^~!!77!~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::::^^^^^^^^^:::::::::::.........:::::::::::::::::::::::::::::
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~^^^^^^^^^^^^^::^^^^:::::^~~7?Y55J7!~^^::::::^^^^^^::::^^^~~~~!!!777!!!7????JJJJJYYY55PPPGGBBBBB#############BGGGGGPPPPPPPPPGGGGGGGBB######BBBBB####&&&&@@&&&&&&&###BBP5Y5PPPGGBBB##BGP5YJJJJJJJYYY55PPGGBBBBBB##&&&&&&&&&##BBGGGPP5YJJ?777777??JJ?77??7!~~~~!77!~^~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::::^^^^^^^^:::::::::::............:::::::::::::::::::::::::::
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~!!!~~~~~~^^^^^^^^:...:::::..:::^~7J557~^^^^^^^^^^^^~~~^^~~~^^^^~~~!!!!!!!!77????JJJJJYYY55PPPGGGBBB#################BBBBBBBBBBBBBBB#########BBBBBB##&&&@@@@@@@&&&&&&&&###BGPPPGGGGGGGBBBGG5YJJ??????????JJYY555PPGBB##&&&&&&&&&##BBBGGP5YJJ?7777???JJJJ?JJJ?!~~~~!777~^^~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::::^^^^^^^::::::::.....:::...........::::::::::::::::::::::::
~^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~^^^^^^^^^^^::::::::.......::::::^^^^^~!!~^^^^^~~~~^^^^^^^~~~~~~~~!!!!!!!7777777??JJYYYY555PPGGGBBBB##################################BBBBBBB##&&&@@@@@@@&&&&&&&&&&&&&&#BGP555PGGGGPPPGGGP5Y?777777!!!!777??JJJYY5PGGBB##&&&&&&&&###BBGGP5YJJJJJJJJJJ???????77!!!!7?J?7!!!!~~~~^^^^^^^^^^^^~~~~~~^^^^::::^^^^^::^^^^^^::::::::....................::::::::::::::::::::::::
~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^:::::::::::::........::::::^^^^~~~~^^^^^^~~^^^^^^^^~~~~~~~~!!!!!!!777777???JJYYYY555PPPGGGBBB########################BBBBBBBBBB###&&&&&&&&&&&&&@@&&&&&&&&&&&&&##BGP5YYY5PGGGPPPPPP5Y?!~~~~~~~~~~~~!!!77???Y5PPGGBB###&&&&&###BBBGGP5YYYYYYYYJJJJ??????7777777?7!~!777777!!~~^^^^^^^~~~~^^^^^^^^^^::::^^^^^^::::::::::::......................::::::::::::::::::::::
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::::::::::::.........::.......:::::::::^^~~~~~~~^^^^^^^^^^~~~~~~~~~!!!!!!7777777??JJJJYYYY55PPPGGGBBB########################&&&&&&&&&&&&&&@@@&&&&&&&&&@@&&&&&&&########BBGGBBBGP55555YYY5YYJ?!~^^^^^^^^~~~!!777??JJY55PPGGB##&&&&&####BBGGPP5555555YYYJ??7777777?????7!~!!!777!!~~~^^^^^^^^^^^::^^^^^^^^^^^^^^^^^:::::::::::...........................:......::::::::::::
^^^^^^^^^^^^^^^^^^^^^^^^^^:::::::::::::::::...............:::::......:::::::::^~~~~~~^^^^^^^^^~~~~~~~~~!!!!!!!7777777??JJJJYYYY555PPPGGGBB#########################&&&&&&@@@@@@&&&&&&&&&&&&&&&&&&&&&#######&&&&#####BGGPPPP55555YJ7!~~~~~~~~~~~~!!!7777??JJYY55PGB##&&&&&####BBGGGPPPPPP55YYJJ??77!!7??JJJJ?!~~~~^^^^^^^^^^^^^^:::::^^^^^^^^^^^^^^^^:::.................................................::::::::
::::::::::::::::::::::::::::::::::::..::::................:::::::::::.......::^^~!!~~^^^^^^~~~~~~~~~~~~!!!!!!77777777??JJJJYYYYY55PPPPGGBBB##############&&#############&&&&@@&&&&&&&&&&&&&&&&&&&&&&######&&&&&&#BGGGGBBBGP5Y5PP5Y7~~~~~~~~~~~~~~~~~!!!!77??JJY5PGB#&&&&&&&###BBGGGGGGPPP5YYJJJ?7!!!7?JYYYJ?7!~^^:::^^^^~~~~~~^^^^:^^^^^^^^^^^^^^^:::...........................................................
::::::::::::::::::::::::::::::::......::::::::::.........:::::::::::::::.....::^~~~~~~^^^^^~~~~~~~~~~~~!!!!!!77777777??JJJJJYYYY555PPPPGGBB###&########################&&&&&&@@@@@@&&&&&&&&&&&##&&&&&#########BBGGPPPPPPGGGPPPGPPY?!!~~~~~~~~^^^^^^^^^^~!!77??JYY5PB##&&&&&###BBBGGGGGGPP5YYJJ??77777?JYYYJ?7!~^^^^^^^^^~~~~~~^^^^^^^^^^^^^^^^:::::.............................................................
::::::::::::::....::::::::::::::......:::::::::::::::::::::::::::::::::::::::::^^~~~~~~~^^^~~~~~~~~~~~~!!!!!!7777777???JJJJJJYYYY555PPPPGBB###&&######################&&&&&&&&&&&&&&&&&###&&&&#####&####BBBBGGP55PBG5JJY5GBBBBG5Y?7!!~~~~~~~~~^^^^^^^^^^~~!!7???JY5PGB###&&&&##BBBGGGGGPP55YYJ?77777?JJYYJ???7~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^:::.................................................................
:::::::::::::::::.::::::::::::::::::::::::::::::::::::::::.:::::::::::::::::::::^^~~~~~~~~^~~~~~~~~~~~~!!!!!77777777???JJJJJJYYYY5555PPPGBB##&&&&#########################################&&&&########BBGGGPPP555GBBP5YJY55PPP5J7!~~~~~~~~~~~~^^^^^^^^^^^^~!!777??JY5PGB##&&&&##BBBGGGGGPP55YJ??77777??JYJJJJ?~^:^^^^^^^^^^^^^^^^^^^^^^^::::::..................................................................
::::::::::::::::::.........::::::::::::::::::::::::::::::::::::::::::::::::::::::^^~~~~~~~~~~~~~~~~~~~~!!!!!!7777777????JJJJJYYYY5555PPPGGB################################BBBBBBBB#####&###########BGGPPPPPPPP55GBBGP5J?7!!!!!!!!~^^^^^^^^^^^^^^^^^^^^^^^~~!!!!777?Y5PGB#&&&&&##BBBGGGGPPP55YJ?77777??JYYJJJ?~:::^^^^^^^^^^^^^^^^::^::::.......::...................................................:::::::::::
:::::::::::::::::..............::::::::::::::::::::::::::::::::::::::::::::::::^^^^^~~~~~~~~~~~~~~~~~~!!!!!!!!!777777?????JJYYY555555PPPPGGGBBBBB########################BB##BBBBBBBBBBBBBBBBBBBBBBGGP555YYYY5555PP5?7!~~~~~^^^~~~~^^^^^^^^^^^^^^^^^^:^^^~~~~~~~!!7?JY5PGBB#&&&&&##BGPPPPPPPPY?77?JYJJ?JJJJJJ?!~^^^^^^^^^^^^::::::::................:.......................................::::::::^^^^^^^^^^^^
::::::::::::::::::.............:::::::::::::::::::::::::::::::::::::::::::::::::^^^^^~~~~~~~~~~~~~~~~!!!!!!!!777777777????JJJYYY555555PPPPGGGBBBBBBBB##BBBBB##########BBBBB###BGGPPPPPGBBBBBGGBBBBGP5YJ???JYY55PP5YJ7!~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^:^^^^^^~~~~~!!7?JY5PPGB#&&&&&#BGGPPPPP55YJJ??JJJ???JJJJYJ7!^^::^^::::::::::::::.....................................:::::::::::::::::::::::::::::::::::^^^^
:::::::::::::::::::...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^~~~~~~~~~~~~~!!!!!!!!!7777777777????JJJYYYY555555PPPPGGGGBBBBBBBBBBBBBBBB###BBBBBBBBBBBBBBGPP555PPGGBBBBGGGGPP5YJ????JJYYYYJ7!~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::::^^^^^^^^^^~~!!7?JY5PGB#&&&&&#BGGGPP55YYJJJJJJJJJJJJJY5Y?~^:::::::::::::::::::..................::::::::::::::::::::::::::::::::::::::::..::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^~~~~~~!!~~~~!!!!!!!!!77777777777????JJJYYYYYY555PPPPPGGGGGBBBBBBBBBBBBBBBBBBBBBBBBBGGGGGGPP555555PPGGBBGPPPPP5YJJ??????77!!~~^^^^^^^^^^^^^^^:^^^^^^^^^^^^^^:::::^^^^^^^^^^^^~~!77??Y5PG##&&&&#BBGPP55YYJJJJJJJYYYJJJYYY7^::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^~~~~~!!~~~~~!!!!!!!!77777777777?????JJJJYYYYY55PPPPPPGGGGBBBBBBBBBBBBBBBBBBBBBBBGGGGGGP5YJY5PPPPPPGGGGGGGGP5YYJ???????77!~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::::::::^^^^^^:::::^^~~!!7?J55PB#&&&&#BGGP555YJJJJJJJYYYJJJYYJ!^::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::.:.:::::::::::::::::::::::::::::::::::::::::::::^^^^~~~~~~~~~~~~~!!!!!!!!!777777777?????JJJJJJYY55555PPPPPGGGGBBBBBBBBBBBBBBBBBBBGGGGGGPP55YY5GBBBGGGBBBGGGPP5YJ???????????7!~~~~~^^^^^^^^^^^^^^^^^^^^^^:::::::::::::::::::::::^^^~~~!??JY5GB#&&&#BGGPPP5YYYYJJJJJ??JYJ?7~^::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::^^^^~~~~~~~~~~~~~~~!!!!!!!!!7777777?????JJJJJJJY555555555PPPGGGGBBBBBBBBBBBBGGGGGPPPP5555555GB#BBGGB##BGGP5YJ??????????????!~~!!~~^^^^^^^^^^^^^^^^^:^::::::::::::::::::::::::::^^^~~~!!7?J5PGB#####BBGPPP555YJJ????JYJ7!~^::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
^^^^:::::::::::::::::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::^^^^~~~~~~~~~~~~~~~~!!!!!!!7777777?????JJJJJJJYYYYYYYYY5555PPGGGGGGGGGGGGGGGGPPPP5555YYYYYY5PP55PG#&&#GGP5J??77??JJ?77!!77!~!77!~^^:^^^^^::^^^^^^:::::::::::::::::::^^^:::::::^^^~~~^~!7?J55GB#&&&&#BPPPPP555YJ?JJ55Y7~^^:...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
^^^^::::::::::::::::::::::::::::::::::::::::::::::......:::::::::::::::::::::::::::::::::^^^^~~^^^^^~~~~~~~~~~!!!!!77777777?????????JJJJJJJJJYYYY555PPPPPGGGGGPPPPPP55555YYYYYJJ??????JYPB##BGP5YJ?777????77!!!!!!!!77!~^^:::^^::::^::::::::::::::::::::::^^^^:::::::^^^^^^^^~!7?JY5GB#&&&#BPPPPPP555YJYY5PY!^^::............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..
::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::::::::::::::::::::::^^~~~^^^^^^^~~~~~~~~~~~!!!!!!!!!!7777777777??????JJJJYYYY55555PPP555555YYYYYJJJJJ??????JJJJYYY555P5Y?7?7777!!!!!!!!!7777!!!~~^^^^::::::^^::::::::::::::::::::::::::::::::::::::^^~~!!77?Y5PBB#BBGPP55555YYYYYYYYJ!^::..........:::::::::::::::::::::::::::::::::::::::::::::::::^^:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::::::::::::::::::::::^^~~~^^^^^^~~~~~~~~~~~~~~!~~!!!!!!!!!!!!!!!7777777????JJJJJJJYYYYYYYYYJJJJJJJJJJ??7777777!!!!!!!!!!77!!!!!!~~~~~~~~~~~~~~~~^^^:::::::^^^^^:::::::::::::::::::::::::::::::::::::^^~~~~!!7?Y5GBBBBBGP55YYYYJJ?JJ?7~:............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::^^^^^^^^^^^^^^^^^:::::::::::::........:::::::::::::::::::::::::::::::::^^^^~~~~~^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~!!!!!!7777777777777?????????????????7777!!!!!!!!!!!!!~~~~~~~~~~^^^^^^:^^^^:::::::::::^^^^^::::::::::::::::::::::::::::::::::::::^^^^~~~!77JYPGBB##G5YYYYJ?77JJ?!^:..::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::^^^^^^^^^^^^^^^^^^^::::::::::::........::::::::::::::::::::::::::::::::::^^^^~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~!!!!!!!!!!!!!!!!!777777777!!!!!!~~~~~~~~~~~~~~!!!!!!~~~^^^^:::::::::::::::::^^^^^::::::::::::::::::::::::::::::::::::::^^^^^^^~!7?J5PGB##BGPPP5YJ??JY?!~::::::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::^^^^^^^^^^^^^^^^^^^:::::::::::::::........................:::::::::::::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~~~~~~~!!~~~~~~^^^^^^^^^^~~~~!!!!!!!!~~^^^::^^^^^:::::::::::^^^^:::::::::::::::::::::::::::::::::::::^^^^:::^^~!?JY5PGGBBB###G5YJJJJ?7~:....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
^^:::::::::::::::::^^^^^^^^^^^^^^^^^^^::::::::::::::::::.......................::::::::...:::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~^^^^^^^^~~~~~~~~~~~!!!!!~~~^^^^^^^^^^^^^^^^::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^~~!77JY5PGGB###BPYYJJ??7~:....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^:::::::::::::::::::
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^:::::::::::::::::::......................:::::::.....:::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^::::::::::::::::::::::::::::::::::::::::::::::^^^^~~^^^^^~7?YPPPGBBG5YYJJ?7!~^:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^:::::::::::::::::::
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^:::::::::::::::::::.......................::::::.......::::::::::^^^^^^^^^^^^::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^:::^^^^^^^^^^^^^^^^^^~~~~~~~~^^^^^^^^^^^^^~~~~~~~~~!~~~~~~~~^^::^^^^^^^^^^^::::::::::::::::::::::::::::::::::::::::::^^^^^^^:::::::^~!?YYY5PGPP55YJ?!^::::^::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^^^^::::::::::::::
^^^^^^^^^^^^^^^^^^^::::::::::::::::::::::::::::::::::::::......................:::::::::..::::::::::^^^^^^^^^^^^^^^::::::^^^^^^^^^^^^^^^^^^^^^^^^^^:::::^^^^^^^^^^^^^^^^^^^~!!~~~~~^^^^^^^^^^^^~~~~~~~~!!!!!~~~~~^^^^^:::::^^^^^^^^^:::::::::::::::::::::::::::::^^^^:::::^^^^:::::::::::^~~!7JY55PPP5YJ?~^:::^^^:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^:::::::::
^^~~~~~~^^^^^^^^:::::::::::::::::::::::::::::::::::::::::.........::::::::::::::::::::::::::::::::^^^^^^^^^::::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~^^^^:::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^:::^~^^^^::::::::::::::::::::::^!7?JJYYJJ7!~^^^::^::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^:::::
^^~~~~~~^^^^^^^^::::::::::::::::::::::::::::::::::::::::::......::::::::::::::::::::::::::::::::::^^^^^^^^^:::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~^^^^^:::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^:::^~^^^^:::::::::::::::::::::::^^~!7777!!~^::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^:::::
^^~~~~~~^^^^^^^^::::::::::::::::::::::::::::::::::::::::::....::::::::::::::::::::::::::::::::::::^^^^^^^^^:::::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~^^^^^:::^^^^^^^^^^^^^^^^^^^^^^^^^^^^^:^^^^^:::^~^^^::::::::::::::::::::::::..:^^~~~~^^:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::^^^^^^^^^:::::