``````                          ``...-.......``````.....----------.....---:::::::::::::-...--::::/::::::::-----:::://////////:::///:-..-:/+++++++oooooooooo++
                                           `````````                 ``   ```..---::---.````.---::::::::::-...--:--::::::/:::------:::::::----------::://///////++++++++++//:-.-://////////+++++++++++oo
...````                                    `````````               ``` ``..--::------.```..--::::::::::--..-------..---::::::::::::::-----::///////////////:///////+++++///:::///::---:/++oooooooooooooo
-----.....``                               `````                       ```.-:::::::--.`````..------:---:----....--:::////////::::---.-://///////:::::::::::://///++++++++/+///::---:/+++++oooooooooooooo
`.---....`````                             `````               ```  ``.------:::---...``..-:::///////:::--...-::::::::::::::::--::::::::::::::::::///////+/++++++++++++++++//:--://///++++++oooooooooooo
.``.........```                            `````            `````  ``..-:::://::::--...-.--::://///:::-----:::::-----:-:///////////:::---::://///////////////////+++++++///:://////::::://+oooooooooooos
.````.......``....```                      `````` ```      `````   ``..---::/:::--..-.....--::::::::::::::::---.--:://///////////::--::://///////////::::::///+++++++++++++++///:---:/++oooooosooooooooo
-....``.....---....`````                   ``````````   ``....`  `..-::::/::::::---....-:://///////////::-----:::::::::::::/://::://///::::::::::::///++++++++++++++++++++++//:::://++++oooooooooooooooo
.....````.........------..`                ```.````  ``.....`````...--:///////::------::::://////////:::--:::::::----:::////+++///////::-:://///+++++++++++++++++++++++++///:///+////////++++ooooooooooo
-------.......--------......``````...``    ```.``  ``....--.```````.--:://///:::::::------::://////:/:::/::::-----::///////////////::::://////++++++///////////+++++++++++++++++//::::/+++oossssssssssss
.........-----.......-------...-------`````  ``  ```..----....``..-:://////////:::-----:://///++++/////:::---:://///////:://////////////////////////////+++o+ooooooo++++++++++/::::/++oooooooooososooooo
:::::::-----.-------::::::::--..:::::-..`...`  ``..------..-.`...--:////+//////::--:::////////+++////:::::::/::::::::::::///++++++++////:::::////++++++++++++++++++++++++++/////+++++++++ooooooooosssooo
---------:::::----------------..-::::-.```````.....---:::--........-::////////::://:::::::///////////::///:::::::::://////+++++++/////:::://++++++++++++++++++++++++++++++++++++++++////+++ooooossssssss
::-::::-----------::::::::::::--..://-.``..--::::::::::------...-::///////////////:::::::////++++++/////:::--::///////////////////////////+/++++++/////////+++oooooooooooooo++++///://+ooossssssssssssss
:::::://///::::---------:::::::::--:/:..--:::-:::::::::/:::-..-:::////++++++/////:::://///+++++++++///::-::///////////::::////++++++++//////////////++++oooooooooooooooooo+++/////+++ooooooooooosooossos
::::::::::::::::::::::::::::----::::::-::::-----:::::::::---::---::://+++++/////://///////++++++++///::///////////::::://++++++++++++///:::///++++oo+++++o+o+ooooooo++o+++++++++o+++o+ooooooooooooooooss
//////::::::::::::::::://///////:::::/:///--:::/://///////:::-..-:::///+++++///+/////////////++++/////////////:::////+/+//++++++++///////+++++++++++++++++++++++ooooooooooooooo+++++++/++++oosssssssssss
///////////////////:::::::://///////://++/://::::::::::::::---::///++++++++++++////::////+++++++++++///:::::///+++++/////////////+++++++++++++++++/////++++oooooooooooooooooo+++////+++oosssssssssssssss
////////////////////+//+///:::::://////+o+///::::://////:/://///////+++ooo++++++/////++++++++++++++///:://+++++++++///::://++++ooooo+++++////////++++oooooooooooooooooooooo+++++++oooooooooooosooooossss
//////////////////////////+++++////:://++ooo/:://////////////::::::///+++++++++++++//////++++++++++///++///+++++///:://++++++++++++++++/////+++oooooo++oooooooooooo+ooooooooooooooooooooooooooooosssssss
++++++++++++++++/////////////++/+++/////+oss+//////////////:::::::///++++oo+++++++////////+++++++++++++///////////+++++++++++++++++++++++++++++++++++++++++++oooooooooosoooooooooo+++++++oosssssssssssss
++++++++++++++++++++++++++///////////+++++oso++/::://////////++++++++ooooooooo+++++////+++oooooooo++++//::///+++o++++++///////+++ooooooo++++++++++/+/++++oooooooooooooooooooooo+++++++oossssssssssssssss
/++++++++++++++++++++++++++++++++//////+++osss+://+++++++++++++++++++ooooooo+++++++++++++++++++ooo+++////+++++++++++/////++oooooooooooo+++/////++++ooooooooooooooooooooooooooooooooooooooossssssssosssss
++++++++++++++++/////////+++++++++++++//++ooss+//++++++++/+///////+++++oooooooo+o++++++++++++++++++++++++++++++++/////+oooo+++oooooo++++//+++oooooooooooooooooooo+ooooooossssssoooooooooooossossssssssss
++++ooooooooooooo++++++++//////++++++++++++osso+/++++++++//////++++++++++oooooooo++++++///+++ooooooooo++///////+++++oo++++++++++++++++oooooooooooooooo++++++oooooooossooooooooooooooooooooosssssssssssss
++++++++++++++++++++++++ooooo+++++++++++oooosys//++++++++ooooooooooooosoossoooo+ooo+++/++oooooooooooo++/////++oooo+++++++///++++ooooooooo++++++++++++++oooooooooooooooooooooooooo++oooosssssssssssssssss
++++++++++++++++++++++++++++++++ooooo++++oooss+//++oooooooooooooooooooossoooooooosooooooooo+ooooooooo++//+oooooo++o++/////++oooooooooooo++++++++++oooossooooooooooooooooooooooooosssssssoossssssssssssss
ooooooooooooo+o+++++++++++++++++++++ooooooosso++ooossoooooooo+++++ooooosssyysssssyyyyssssssooooooooooooo++++ooooo+++//++ooooooooooooo+++++++oooosoooooooooooooooooooooooosssssssssssosooososssssssssssss
ooooooooooooooooooooooooooooo++++++++oooosooso+ooosooooooo+++++oooossssssyyyyyyyyyssssyyyyyyyyssyyyyysssoo+o++++++++ooooooooooo+++++++ooooooooooooooooooooooo+ooooosssssosssssooooooooooosssssssssssssss
ooooooooooooooooo++ooooo+ooo+oooooooo++oooossssoooooooooooooosssyyyyyyyyyyyyyhhhhyyyyyyhhhhhhhhhhyyyyyssssoooooossooooo++++++++++oooooooooooooooooo+++oooooosssssooooooooooooooooooooossssssssssssssssss
ooooooo+oooooooooooo+++++o++++++ooooosoooooossyooooooooossssyyyyyyyyyyyyyssyyyyyyyyyhhhhhhhhhhhhhhhhhhyso+oyyyyssoooo+++//++ooossooooooooo++++++oooooosssoosooooooooooooooooooosssssssssssssssssssssssss
sososoooooooooooooooooo++++++++++++ooosssooosss+oososssyyyyyyyyyyyyhhyyyyyyyyyyyhhhhhhhhhhhhhhhdhhhdddhhysosyhyyysoo+++++ooooooooooooooo+++++ooosssooooooooooooooooooooooossssssssssssssssssssssssssssss
ooooooooooossssosooooooooooooooooooo++osssssssssooossyyyyyyyyyyyyhhhyyyyyyyyyhhhhhddddddddddddddddddddddhhhhyhhyyysooooooooooooooooooo++ooooooooooooooooooooooooooossssssssssssssssooossssssssssssssssss
oooooooooooooooooooooooooooooooosossssoosssssyyyysyhyyyyyhhyyyhhdhyyyhhhhhhhhhhhhhhddddddddddddddddddddddddddhddhhhyyysooooooo+++ooossssooooooooooooooooooooosssssssssssoooosoooooooosssssssssssssssssss
oooooooooooooooooooooooooooooooooooossssssssyyyyyhhhyyyhhhyyyhhhyyhhhyyhhhhyyhhhhddddddddddddhhhhddhhddddddddddddhhdddhyso++++ooosssoooooooooooooooooosssssssssoooooosoooooooossssssssssssssssssssssssss
ssssssssososooossoooooooooooooooo+ooossyysssyyyhhhyyyhhyyyyyhhhhhhhyyyyyhhhhdddddddddddhhhhhhdhhddddddddddddddddhdddddhhyyysssssssooooooo++++oooossssssssooooooooooooooossssssssssssssssssssssssssssssss
ssssssssssssssssssssssssssssssssssssoossyyysyhhhhyyhhhyyyyhhhhhyyyyyyyyhdddddddddhhhhdddddddddhhddddddddddddddddddddmdddhhhyhhhyysoooooooooossssssssssoooooooooooooooosssssssssssssssssossssssssssssssss
ooooooooooososssssssooooooooooossssssyssyyhhhhyyyyhhsyyyyhyyyhyyyyyyhdddddddddhhhhhdddddddddddhhddddhdddhddddddddmmmmmmdhhhdhhhhhyysooosssoooooooooooooooooooossssssssssssssssssosssssssssssssssssssssss
ooooooososossoososoooooooooooooossssssyyyhhhhyysyyysosssyyyyyyyhyhhdddddddddhhhhhhddddddddhdddddddhhhhddhdhdhhdddddmmmdhhddddddhhhdhysssooooooooooooooosssssssssssssssssssssssssssssssssssssssssssssssss
ssssssssssssssssssssooooooooooooosssssyhhhhyysssssoossyyyyyyhhhhdddddddddhhhhhhhdddddddddddddddddddddddhddhhhhhdddddddhhhddhhdhhhhhddyssoooo++oooosssssssssssssssossssssssssssssssssssssssssssssssssssss
sssssssssyyyyysssssssssssssssssssyyyyhhhhhhysysyo++syyyyyyhhhhdddddddddddhddddddddddddddddddddddddddddhhhdhhhhhhhhhhhhyhhyhyyhhhhdddddysoo++ooossssssssssssooooooooooosssssssssssssssssssssssssssssssyss
ssssssssssssssssssssssssssssosssssyhhhhhhhyyyshdsosyyhyhhhhhddddddddddddddddddddddddddddddddddddddddddddhhhhhhhhhhhhhhhhhyyyyhhhhddddddyssosssssssssssssssosoooossssssssssssssssoooossssssssssssssssssss
sssssssssssssssssssssssoooooooossyyhhyhhyyhhyyhdhyyyhyhhhddddddddhdddddddddddddddddddddddddddddddhhhhhhhhhhhhhhhhhhhhhhhddhdddhhhdhdddddhysssosoooooosssssssssssssssssssssssssosssssssssssssssssssssssss
sssssssssssssssssssssssssoooooosyyhhyyhyyhyyyyyhhyhhhddddddddddhddddddhdhhhhdddddddddddddddhhhhhhhhhhhhhhhhhhhhhhhhhhhdddddddddddddhhddddhysoooooooossssssssssssssssssssssssssssssssssssssssssssssssssss
ssssssssssysyssssssssssssssssssyhhhyyhyyhyysyyhhhhddddddddhhhdddddhdddhhdddddddhhhhdddddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddddddmmmddddddddmddhsooossssssssssssssssossssssssssssssssssssssssssssssssssssssss
sssssyyyyyyyyyyyyyyyyyysssssssyyhhhhhhhhhyhshhhhhhddddhhhdddddddddddddddddddddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddddddmmmmmmdmdddmmmdhysssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
ssssssssssssssssssssssssssssssyhhhhhhhhhhhhhhddddhhhhhhdddddddddddddddddhhdhhhhhhhhyyyyyyyyyyyyhhhhhhhhhhhyyyhhhhhhhhhhdddddmmmmmmmmmddddmmmdysssssssssssssssssssssssssssssssoosssssssssssssssssssssssss
sssssssssssssssssssssssssoossyhhhhhhhhhhhhhhdddhhhddddddddddddddddddhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyhhhyyhhhhhhhhdddddmmmmmmmmmmdddmmmhysosssssssysssssssssssssssssssssssssssssssssssssssssssssss
sssssssssssssssyysssssssssssyhhhhhhdddhdddddhhddddddddddddddddddddhhhhhhhyyyhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyhyyyyyyhhhhhhhddddmmmmmmmmmmmmdmmmmdhysyhhhyyyssssssssssssssssssssssssssssssssoossssssssyyyys
yyyyyyyyyyyyyyyyyyyyyyyyyyyyhhddddddddddddddddddddddddddddddhhhhhhhhhyyyyyhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhddddmmmmmmmmmmmmmmmmmdddhhyyhhysssssssssssssssyyssssssssssssssssosssssssssssss
sssssysyyyyyyyyyyyyyyysysyyyhddddddddddddddddddhhhhddddddhhhhhhhhyyyyyyyyyhyyyysyssyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhddddmmmmmmmmmmmmmmmmmmddhhhhhysssssssyssssssyhysssssssssssssssssssssssssssssss
ssssssssssysyssyysyssssssyyhdddddddddddddddddddddddddddhhhhhhhyyyyyyyyyyyhyssssssssyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhddddmmmmmmmmmmmmmmmmdmmmdhhyyyyyyyyyyyyssyyyyssssssssssssssssssssssssssssssss
ssssssssssyyyyyyyyyyssssyyydddddmmdddmmdddmdddmmddddddhhhhyyyyyyysyyyyyyhysssssssyyyyyyyssssssssssssyyyyyyyyyyyyyyyyyyyhhhhddddmmmmmmmmmmmmmmmmmmmmhyyyyyyyyyyyyyyyhhyysssssssssssssssssssssssssssssssss
sssysyyyyyyyyyyyyyyyyyyyyyddddddmddmmmmmmmmmmdddddddhhhyyyyysssssssyssyhysssssssyyssyyssssssssssssssyyyyyyyyyyyyyyyyyyyyhhhhdddmmmmmmmmmmmmmmmmmmmmmdhhhhhhhhyhhhhhhysssssssssssssssssssssssssssssssssss
yyyyyyyyyyyyyyyyyyhhhhhhhhdmdddmmdmmmmmmmmmmmddddddhyyyyyssssssssssssyhyyyyssssssssssssssssssssssssssyssyyyyyyyyyyyyyyyyyhhhddddmmmmmNmmmmmmmmmmddmmmddhhhyyyhhhddhyyysssssssssososssoosssssssssssssssss
ssssssssyyyyyyyyyyyyyyhhhdmmdddmmmmmmmmmmmmmmmmdddhyyyyssssssssssssssyyyyyssssssssssssssssssssssssssssyyyyyyyyyyyyyyyyyyyhhhhdddmmmmNNNmmmmmmmmmmdddddddhyyhdddmdhyysssssssssssosoosssssssssssssssssssss
sssssssssyyyyyyyyyyyyyyyydmddmmmmmmmmmmmmmmmmddddhyyysssssssssssssssyyyyyyssssssssssssssssssssssssssyyyyyyyyyyyyyyyyyyyyyyhhhddddmmmNNNmmmmmmmmmmmmddddddddmmddhhhhyssssssssssssssssssssssssssssssssssss
yyyyyyyyyyyyyyyyyyyyyhhhhdmmmmmmmmmmmmmmmmmmddddhyyyssssssssssssssssyyyyysysssssssssssssssssssssyyyyyyyyyyyyyyyyyyyyyhhyyhhhhhdddmmmmNNNNmNmmmmmmmmmmmmmmdhhhhhhhysyysssssssssssssssssssosssssssssssssss
yyyyyyyyyyyyyyhhhhhhhhhhhdmmmmmmmmmmmmmmmmmddddhhyyyssssssssysyyyyyyyyyyyyyyssssssssssssssssssyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhdddmmmmNNNNNmmmmmmmmmmmmmmmmdhhyyssssyyssssssssssssssssssssssssssssssssss
yyyyyyyyyyyyyyyyyyhhhhhhhdmmmmmmmmmmmmmmmmddhddhyyyssssssyyyyyyyyyyyyyyyyyyyysssyssssssssssyyyyyyyyyyyyyyyyyyhhhddddddddddddhhhddddmmmmNNNNmmmmmmmmddddddhdddhysssssyyssssssssssssssssssssssssssssssssss
yyyyyyyyyyyyyyyyyyyyhhhhhhmmmmmmmmmmmmmmmmdhhhhyyyyyyysysyyyyyyyyyyyyyyyyyyyyyyyyysyyyyyyyyyyyyyyyyyyyyyhhhhhdddddddddddddddddddddddmmmNNNNNmmmmmmmddhhyhhyyhddyysssssssssssssssssssssssssssssssssssssss
yyyyyyyyyyyyyyyyyyhhhhhhhhdmmmmmmmNmmmmmmddhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhdddddddmmNNNNNNNNmmmmmddddddhhhddyyssssssssssssssssssssssosssssssssssssss
yyyyyyyhyhyyhyyyyhhhhhhhhhdmmmmmmmNNNmmmmddhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhyyyyyyyyyyyyyyyyyyyhhhhdddddmNNNNNNNNmmmmmdddhhhhhhhhhhyysssyssssssssssssssoossssssssssssssss
yyyyyyyyyyyyyyyyhhhhhhddhdddmmmmmmNmmNmmmddhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhddmNNNNNNNNNNmmmhhhhyyyyyyhhyyyyyssssssssosossssssssssssssssssssss
yyyyyyyyyyyyyyyyyyyyhhhhhhhdmmmmmNNmmNNmmddhhyyyyyyyyyyyyyyyhyyhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhyyyyyyhhhhhhddmmNNNNNNNNmmNmmdhhyyyyyyyyyssssssssssssssssssssssssssssssssssss
yyyyyyyyyyyyyyyyyyyyhhhhhhhhdmNmmmNNmmNmmmdhhyyyyyyyyyyhhhhhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhddddddddddddddhhhhyyyyhhhhhhddmmNNNNNNNmmmmmmmdhyyysssyyssssssysssssssssssssssssssssssssssss
yyyyyyyhhhhhhhhhyyhhhhhhhhhhddmmmNNNNmNmmmddhhhyyyhhhhhhddddhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhddhdddddmddddmmmmddhhhhyhhhhhhhddmNNNNNNNmmmmdhdmdhyyssssyysssssssssssssssssssssssssssssssssss
yyyyyyyyhyhhhhhhhhhhhhhhddddddmmNmNNNNNmmmmdhhhhhhhhddddhhhhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhdmmmmmmmmdhhhddmmdddhhhhhyhhhhhdmmNNNNmNmmmmdyydmdhyyyyyyyyssssssssssssssssssssssssssssssssss
yyyyyyyyyyyyyyyhyyyyhhhhhddhhddmNNNNmNNNmmmddhhhhhhhhhhhhhhhhhhhhhhhyyyyyyyhyyyyyyyyyyyyyssyyyyyyyyyyyhhhhdmmmmmmmmmmmhyhddmmdddhhhyyyyhhhhdmNNNmmNmmdmmhshmmdyyysysssssssssssssssssssssssssssssssssssss
yyyyyyyyyyyyyyyyyyyyhhhhhhhhhhdmmNmNmNNNNmmdddhhhhhhhyyyyyyyyyyyhyhyyyyyyyyyyyyyyyyyyyyyysssyyyyyyyyyyhhhdmmmmmmhymmmmdhddhhhhhhhyyyyyyyhhhdmmNNmmmmmddmhyhdmdhyssssssssssssssssssssssssssssssssssssssss
yyyyyyyyyyhhhhhhhhhhhhhhhhhhhdhdmNNNNNNNNmmdddhhhyyyyyyyyyyhhhhhhhhhhhhhhyyyyyyyyyyssssssysssyyyyyyyyyyhhdddddddhhhhhhhhhyyyyyyyyyyyyyyyhhhhdmmmNNmmmdhmdyyhddhyssssssssssssssssssssssssssssssssssssssss
hyhhhhhhhhhhhhhhhhhhhhhhhhdddddddmNmNNNNNNmdddhyyyyyyyyhhhhdddddddddddhdhhhhyyyyyyssssssssssssyyyyyyyyyyyhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhdmmmmmmdmhhmhyyhddhyyssssssssssssssssossssssssssssssssssssss
yyyyyyyyyyyyyyyyyyhhhhhhhhhddddddmNNNmNNNNmdddhyyyyyhhhddmmmmmmmmmmmddhhhhhhyyyyyyssoooossssssssyyyyyyyyyyhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyhhhdmmmmmmdmdhdhyydhdhyysssssssssssssssssssssssssssssssssssssss
yyyyyyyyyyyyyyyyyyhyhhhhhhhdddddddmmmmNNNNmdhhhyyyhhhddmmmmmmmmmmmmmmmdhhhhhyyyyyssooooooosssssssyyyyyyyyyyyyyhhhhhhyyyyyyyyyyyyyyyyyyyyyyhhhmmmddddmdddyhhhhdhsssssssssssssssssssssssssssssssssssssssss
yhhhyhhhyyhhhhhhhhhhhhhhhhhdddddddmmmmNNNNmdhhhyyhhhddmmmmdmmmdmmmmdymmhhhhyyyyyssoooooooooosssssysyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhddmddddddddhhhyhhysssssssssssssssssssssssssssssssssssssssss
hhhhhhhhhhhhhhhhhhhhhhhhhhhdddddddmmmmNNNNmdhhhyhhhdddmmmdddmmmmmmmdyhhhyyyyyyysssooooooooooooossssyyysssssyyyyyyssyssssssssyyysyyyyyyyyyyyhhdddhdmhdddyyysyyhysssssssssssssssssssssssssssssssssssssssss
hhhhhhhhhhhhhyhyyhhhhhhhhhhhddddddmmmmmNNNmdhhhhhhhddmmdddddddddhhyyyyyyyyyyyysssooo++//++oooooossssyyyyssssssssssssssssssssssssssyyyyyyyyyyhhddhdhhmdhyysyyyyssssssssssssssssssssssssssssssssssssssssss
yyhhhhhhhhhhhyyyyyyyyyhhhhhhhdddddmmmmmNNNNdhyyyyhhdddhhhyyyyyyyyyyyyhhhhyyyysooooo+///++ooooossssssssssyyysssssssssssssssssssssssssyyyyyyyyyhdhddydmdhyysyyyyysssssssssssssssssssssssssssssssssssssssss
yyyhhhhhhhhhhhyyyhhhhhhhhhhhhddddddmmmmNNNNdhhyyyyyyysssssyyyyyyyyhhhhhyyssssossooo++++oosssssssssssssssssyyssssssssssssssssssssssssyyyyyyyyyhhddhhddhyysyyyssssssssssssssssssssssssssssssssssssssssssss
yhyhhhhhhhhhhhyyyyhhhhhhhhhhhdddddddmNmmNNNmhhyyyyssssssyyyyyyhhhhhhhyyssssosssoooooooossssssssssssssssssssyysssssssssssssssssssssssyyyyyyyyyyhdhhdhyhyysyssssssssssssssssssssssssssssssssssssssssssssss
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddddddmmNNNNNmdhyyyyyyyyyyyhhhhhhhhyyyssoossssssoo++oossssyyyysssyyssssyssssyyysyyysssssssssssssssssssyyyyyyyyyyhdhdysyyssssssssssssssssssssssssssssssssssssssssssssssssss
yyyyyyhhhhhhhyyyyyyyyyyhhhhhhhhhddddddmNNNNNdhyyyyyyyyyyyyyyyssssssoooossssssso+ooossyyyyyyyyyyyyyyyyhyyyyyssssyyyyyyysssssssssssssyyyyyyyyyyyhddyyyysssssssssssssssssssssssssssssssssssssssssssssssssss
yyyyyyhyhhhhhyyyyyyyyyhhhhhhhhhhhdddddmmNNNNmdhyyyyyyysssoooooooooooosssssssssoosssyyyyyyyyyyyyyyyyyyyyyyyssssysyyyyyyyyyyssssssssyyyyyyyyyyyyyhhyyyyyssssssssssssssssssssssssssssssssososssssssssssssss
yyyyyhhhhhhhhyyyyyyyhhhhhhhhhhhhhddddddmmNNNNmhyyyyyssssooo+++oooossssssssssssssssyyyyhhyyyyyyyyyyyyyyyyyyyyyyyyysyyyyyyyyyyyyysyyyyyyyyyyyyyyyhhyyyyyysssssssssssssssssssssssssssosssosssssssssssssssss
yyyyhhhhhhhhhhyyyyyhhhhhhhhhhhhhhdddddddmmmNNmdyyyyysssooooooooossssssssssssssyyyyyyyyyyyhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhyyyyyyyyyyyyyyyyyyyyyyyyyyssssssssssssssssssssssssssssssssssssssssssossssssss
yyyhhhhhhhhhhhyyyyyyyyyhhhhhhhhhhhhdddddddmmNmmhyyyysssooooooosssssssssssyyssssyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhyyyyyyyyyyyyyyyyyyyyyyyysssssssysssssssssssssssssssssssssssssssossoosssssss
yyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhddddddddmmmmhyyyysssssoossssssssyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhyhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyssssssssssssssssssssssssssooooosssssssssss
yyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhddddddddddmmmdyyyysssssssssssyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhyyyssyyyyyyyyyyyyhdhhhhyyysssooooo+o++++++++oooossssoooooosssssssssssssssss
yyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhdddddmdddddmmdyyyyysssssysyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhdddddddhdhhhhhhyyyssssyyyyyyyyyyyhhyyysoo+++++////////////://////++ooosssssssssssssssssosss
yyyyyyyyyyyyyyyyyyyyyhyyyyyhhhhhhhhdddddddddddmdhyyyyyyyyyyyyyyyyyyyyyyyyhhhhhyyyyyyyyyyyyyhhhyyhyyyhhhhhhhddmmdddhhhhyyyyyyyyyssssyyyyyyyyyyysssssso++++++///////////::::::::::/+ossssssssosoooooosssso
yyyyyyyyhyyyyyyyyyyyyyyyyyyyyyhhhhhhddddddddddmdhyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhyyyhhhhhhhhhhhhhhhhhhhhhhddddddddhhhhyyyyyyyyyyysssyyyyyyyyydyysssssso++++++///////////:::::::::::/+oosoooooooosssssssss
yyyyyyyyyyyyyyyysyyyyyyyyyyyhhhhhhhddddddddddddmdhyyyyyyyyyyyyyyyyyyyyhhhddhdhhhhhddmmddhhhhhhhhhhhhhhhdddhhhhhdhhhhyyyyyyyyyyysssyyyyyyyyydmdyssssooso+++++////////////::::::::::::/+oooossssssssssssss
yyyyyyyyyyyyyyyyyyyyyyyyhyhhhhhhhhhddddddddddddmdhyyyhyyyyyyyyyyyyyyyyhhhdddddddhhhdddddddhhhhdddhddhhhhhhhhhhhhhhyyyyyyyyyyyyysssyyyyyyyhdmmmdyssosooo++++++////////////:::::::::::::/+osssssssssssssoo
yyyyyyyyyyyyyyyyyyyyyyyyhyhhhhhhhhhhhhdddddddddmddhyyyyyyyyyyyyyyyyyyyyhhhhhhhhddhhhddddhhhhhhhhhhhyyyyyhhhhhhhyyyyyyyyyyyyyyyssssyyyyyyhmNNNmdysoosooso+/++/////////////:::::::::::::::/+oososooossssso
yyyhyyyyhyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhdddddddddhhyyyhyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhdhhhhhyhyyyhhhhhhhhhyyyyyyyyyyyssssssssssssyyyyyhdmmmNmhysoosooo+/////////////////:::::::::::::::::/+ooosssssssso
hyyhyyyyyyyyyyyssssssyyyyyyyyyyyhhhhhhhddddddddddddhhyyyyyyyyyyyyyyyyyyyyyyhhhhyhhhhhhhhhhhhhhhhhhhhhyyyyyyyyyyyyyyyysssssssssssyyyyyyhddmmmdyssoooooo++/////////////////::::::::::::::::::::+oosssoooos
yyyyyyyyyyyyyysssssyyyyyyyyyyhhhhhhhhhhddddddddddddddhyyyyyyyyyyyyyyyyyyyyyyyhhyyyyyyyyyyyyyyyyyyyyyyyyyyyysyyyyyyyyyssssssssyyyyyyyhhdddddyysoooo++++/////////////////://:::::::::::::::::::::/ooooosss
hyhyhhyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhdddddddddddddhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyysssssssyyyyyyyhhyssosoooooo++++/////////////////::::::::::::::::::::::::::::+ooosss
hhhhhhhyyhyyyyyyyyyyyyyyyyyyyyyyyyyyhhhdddddddddddhysooosyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyysssssssyyyyyyyyysssoo+o++++++++///////////+++++++////+++//:::::::::::::::::::::/+ssss
hhhhhhhyyyyyyyyyyyyyyyyyssyyyyyyyyyyhhddddddddhso+//////+osyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyysssssssssyyyyyyssoo++oooo++////////////////////+++++++++++++//::::::::::::::::::::::/ooo
hhyyyyyyyyyyyyyyyyyyyysssssyyyyyyyhhdddddddhs+//::::::///+ossyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyysssssyyyyyyssssssyyyyysoo+oo++++oo+//////////////:::::::::////+oo++//::::::::::::::::::::::::::/+
hhhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhdddddddy+:::-:::::::://+oosyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyssssssssyyyyyyssssssysyssoooo++++///////:::://////::::::::::::///++++////////:::::::::::::::::::::::
hhhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyhhhhddddho::---::::::::::://+oosssyyyyyyyyyyyyyyyyyyyyyysyyyyyyyyyysssssssssssyyysssssyyyssooo+++////////////::::://::::::::::::::///+++//+///++/:::::::::::::::::::::::
hhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyhhhdhh+:::---------:::::::/+++++oossyyyyyyyyyyyyyyyyyysyssyyyyyyyyyyyysyyyssssssssyyssooooo++/////::////////::::///::::/:::::::::////+++++//::::::::::::::::::/::/::::
hyyhhhhyyyyyyyyyyyyyyyyyyyyyyssyyyhhhdhs//::::---------::::::///////+++oossyyyyyyyyyyyyyyyssyyyyyyyyyysssssysssssssyssooo++++///////////://///:::::://::::::::::::::///++/++++/::::::::::::::::::::///::
yyyyyhyhyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhs////:::----------:::::////////////+++ooossyyyyyyyyyyyyyyyyysssssssssssssyyssoooo+++////////////:://///////::::::::::::::::::///++///++++//://:::::::::::::::///:
hhhhhhhhhhhhhhhhhhhyyyyyyyyyyyyyhhhhhdhs/:://:::-----------::::::::::://////////++++oosssyyyhyyyyyysssyyyyyyyyssssoooo++++////////////////////////:::::::::::::::::::///+/://++/////::::::::::::::::////
hhhhhhhhhhhhhhhhhhhhyyyyyyyyyyhhhhhhhhho/:::/::::-----------:::::::::::::::://////////++++oossyyyyhhyyyyyyssssoooo++++++//////////////////:////////:::/:::::::::::::::://+/::/++:://:::::::::::::::::///
hhhhhhhhhhhhhhhyhhyyyyyyyyyyyyyhyyhhhhy+:::::::::::-------------:::::::::::::::////////////++++ooooossssssooooo+++++++//////////////////:////////////::/:::::::::::::::::/+//+++/:////::::::::::::::////
yhhhhhyyhhhhhhyyyyhyyyyyyyyyyyhhyhhhhy+::--::::::::::-----------::--::::::::::::::::://///////////////+++++oo+++///////////:::::::::://////////::::::::::::::::::::::::::/+++++++/:/++/::::::::::::::///
yyyhhhhhhhhhhhhhhhhhhhhyyyyhhhhhhhhhy+::-------:::::::::----------:--::::::::::::::::::///////////////////////+++/////////::::::::::::://///::::::----::::::::::::::::::::/+///+++///++/:/:::::::::::://
yyyyhhhhhhhhhhhhyyhhhhhhhhhhhhhhhhhhs/:----------:::::::::------------:::::::::::::::::::::::://////::::::::://////////:::::::::::::::::///::::----------::::::::::::::::::/+///++++++o+///::::::::::://
yyyhhhhhhhhhhhyyyyyyhhhhhhhhhhhhhhhy+::--------------:::::::::-::-::-:::::::::::::::::::::::::://////:::::::::::::::::::::::::::---:::-::::::-:-----------::::::::::::::::::/++//+++o+++/////::::::::://
yyyyyyyhyhyyyyyyyyyyyhhhhhhhhhhhhyyo/::----------------:::::::::::::::---::::::::::::::::::::::::::///::::::::::::::::::::::::::-----------::---------------:::::::::::::::::///////+++++//////::::::://
yyyyyyyyyyyhyhhyyhhhhhhhhhhhhhhhhyo/:::-------------------:::::::::::::::::::::::::::::::::::::::::::::/:::::::::::::::::::::::::-----------------------------::::::::::::::::////::/++++/////::::::::/+
yyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhyo/:::::----:::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------:::::::::::::::::::::::/++++/////:::::::/+
yyyyyyyyhhhhhhhhhhhyyyhhhhhhhhhhs//:::::::::::::::::::::------:::::/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------::::::::::::::::::::::::////:://////:::/o
yyyyyyyyyhyyyyhyyyyyyyyyhhhhhhhyo///:::::::::////:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------::::::::::::::::::::::::::/:::://///::/+o
yyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhs+++//:::::::://////:::::::::::::::::::/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------:-::::::::::::::::::::::::::::////::://+
yyyyyyyyyyyyyyyyyyyhhhhhhhhhhhddyoooo+//::::::::://::////////::::::::::::/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------::::::::::::::::::::::::://////:://+
sssysysyyyyyyyyyyhyhhhhhhhhhhhhhhyoooso+//:::::::::::::::///++///::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------:::::::::::::::::::::::://////////++
yysyyyyyyyyyyyyyhyyyyyyyyyyyhhhhdhsoossso+///::::::::::--::::/++++//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------::::::::::::::::::::::::::///////+oo
yyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhdhyoosso++/////:::::::------::::/++//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------::::::::::::::::::::::::::////:/+o+
yyyyyyyyyyyyyyyyyssssyyyyyyhhhhhddddysoo++++///////::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------:::::::::::::::::::::::::::://///+/
yyyyyyyyyyyyysyysssyyyyyyyyhhhhhhhhdhyo+////////////:::::::---:----------:::::::::::::::::::::::::::::::::::::::::::::::::-::::::-------------------------------------:::::::::::::::::::::::::::://////
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhs///////////////::::::::::----------:::::::::::::::::::::::::::::::::::::----------------------------------------:----------------::::::::::::::::::::::::::::////
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhh+////////////////:::::::::::---------:::::::::::::::::::::::::::::::-----------------------------::::::::::::-----------------------:::::::::::::::::::::::::::::/
yyyyyyyyyyyyyyyyyssssssssssyyyyhhhhhhy//////////::::::::::::-::::::-------:::::::::::://::::::::--------::----::----------------:::::::/:::::-----:::------:------:-------::::::::::::::::::::::::::::::
yyyyyyyyyyyyyyyyyyssssssssyyyyyhhhhhho//////::::----.------.-----..--.----:::::::::::://:::::-----------:::::::------:--::-------::::::/::::----:::::::::::::------:-------:::::::::::::::::::::::::::::
hhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyhhhhhho//::::::::-------------------------:::::::::::::////:::------:::::::-:::::::-:::::::::------:::::::::-------:------::::----------------:::::::::::::::::::::::::::
hhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyyyy+//:::::///:::---::::::::::::::::::::::::::///:::/++/:::------:::::::::::::::---::::::::------:::::::::---------------:------------------::::::::::::::::::::::::::
hhhhhhhhyhyyyyyyyyyssssssyyyyyyyyyyyy+////////+++/::::::::::::///////////////::///////+oo++/:::::-::::::::::::::::----::::::::------:::::::::---------------------------------::::::::::::::::::::::::::
hhhhhhhhyhhhhhhyyyyyyyyyyyyyyyyyyyyyyo////+++ooo+//::::::/:::://///////////////////++ooo++o+///::::::/:::::::::::::----::::::::-----:::::::/::---------------------------:::::::::::::::::::::::::::::::
hhhhhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyhhhyo+++oosso/:::::::////:::::::::::::/:////////+++++//+o+////:-::::/::::::::::/:----:::::::::------:::::/:::-------------------------::::::::::::::::::::::::::::::::
hhhhhhhhhhhhhhhhhhyyyyyyyyyyyyyyyyyyyyysoooss+::::::::///::::::::::::::::::::::::::::::://oo+////::::::::-:::::::/:---:::::::::::------:::::/::----------------::------:::::::::::::::::::::::::::::::::
hhhyhyhhhhhhhhhhhhhyyyyyyyyyyyyyyyyhhhhyyyyso:--::://:::::::::::::::::::::::::::::::::://+++//////:---:::::::::://:---:::::::::::------::::://::--------------:::::::::::::::-------::::::::::::::::::::
yyyyyyyhhyhhhhhhhhhhhhhhhhhhyyyyhhhhhhhhhhyo/::----:::::::::::::::::::::::::::::::::::::::-----:://:--::::::::::://----:::::::::/:------::::://::--------------:::::::::::::--------::::::::::::::::::::
yyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhy+/::::--------::::::::::::---------------------------:::::---::::::::://:---:::::::::/::----::::::///::---------------::://::::---------:::::::::::::::::::::
yyyyyyyhhhhhhhhhhhhyyhhhhhhhhhhhhhhhhhhhhhy++///::::::::------------------------------------------------::::::::::/:---::::::::::/:-----::::::///:-----------------:::::-------.-------:::::::::::::::::
yyyyhhhhhhhhyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhso+++++////::::::::::---------------------------------------:::::::::::::---::::::::::/::------:::::://:----------------::::-----------------::::::::::::::::
yyhhhhhyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhyooooooo+++////::::::::::::::::::::::::::::::::------------::::::://:::/:--:::::::::///:------::::::///:-----------------:-------------------:::::::::::::::
yyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhyoooooooo++////:::::::::::::::::::::::::::::::::::::-::::-::::::::///:/:----:::::::////:------:::::://::------:-------------------------------:::::::::::::
yyyyyyyyyyyyyyyyyyyyyhhhhhyyyyyhhhhhhhhhhhhhhhyooooo++//::://::::::://////////////::::::::::::::::::::::::::::://+//::---::::::::///:::----::::::://::-----------------------...-------------:::::::::::
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhdddddddhso++///::::////////++++++////////::::/:::::::::::::::::::::/::::://++/:---::::::::////:::::::::::::://:------------------------.--------------:::::::::::
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhdddddhy+//:::/://////++++++///:::::::::::::::::::::::::::::::::::///::://+++/:--::::::::::/:/::::-::::-::::/::-----------------.--......-.......-----::::::::::
yyyyyyyyyyyyyyyyyysssyyyyyyyyyyhhhhhhhhhhhhddddh+/://////++++o++//:::::::::::::::::::::::::::::::::::::::://///////++/:--::::::::::::://::---:::::::::/::-----------.....................------:::::::::
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhyyhhhhhhhhhy///////++++++//::::::::::::::::::::::::::::::::::::::::::/++++++++++++:--:::::::::::::///::-::::::::::://:----------.......................-----::::::::
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhs//////++++//:::::::::::::::::::///////////:::::::::::::::/ossooooooo+/:---::::::::::::////::-:::-:--:::://:---------.......................------:::::::
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhy+////////::::-----:::::::://///////////////////::::::::::/++o++++++/::----::::::::::::::://::-----:---::://:---------.......................-----:::::::
yyhyyyhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhs/////:::::::::--------------::::::::::::://////////:::::///++///:::------:::::::::::::::://:-----::---::::::-----...........................------:::::
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhyo+//::::::::::::-----------------------::::::///+o+////////////:::------::::::::::::::::::/::-----------::::----.............................----::::::
yyyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhyhhhhhhhhhhhhhhhs+//////////::::::::-:----------------------:::/++o++++//::////:::-----:::::::::::::::::::::-----------:::::-----.............-.........--------::::::
yyyyyyyyyhhyyyyyyyyyyyyyyyyyyyyyyyyyhhhyhhhhhhhhhhhyo+++++++/////:::::::::::::::::::--:::--------::/+ooo+//:::://///:::::::::::::::::::--:::::-----------::::-------.............-....-..---------::::::
yyyyyhhhhhhhhhyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhyssssso///////////::::::::::::::::::::--:-------::::::::::::://///////::::::::::::::::::::---------:::::-------...............---------------::::::
hhhhhhhhhyyyyyyyyyyyyyyyyyyyyyyyhyhhhhhhhhhhhhhhhhhhhyysyyyo////////////::::::::::::::::::::----------:::::::::-----::////////////:::::::///::--------::::::------------......---------------------::::/
yyyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhyyyyyyo//////////:::::::::---:::-::------------::::::::::::--------:::///////////////:::::------::::::--...---------.....--------------------::::::
yyyyyyyyyyyyyyyyyyyyyyyhhhhhyyyhhhhhhhhhhhhhhhhhhhhhhhyyyyys+///////::::::--:---:-:---------------::::::::::::/:::----------::::::::::::::::::------:::::---.....-----------------------------:---::::::
yyyyyyyyyyyyyyyyyyyyyhhyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhyyyyyys++////:::::::::::::-:---------------:::::::::::::://:::-------------------------------------.........------------------------::::::::::::::
yyyyyyyyyhhhhyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhdddhhhhhyyyyysyss+//:::::::::::::---------------:::::::::::::::::::///::::------------------------------.-..------------------------------::::::::::::::::
yhhhhhhhhyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhdhhhhdhhdhhhhyyyyyysyys+/:::::::::::::------------::::::::::::::::::::////++o+/:::::-----------------------------------------------:----------:::::::::::::::::
hhyyyyyhyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhyyyyssssso//::::::::::::--------::::::::::::::::::::::://///+osssoo+//:::::::-:--------------------------::--:::::::::::------:::::::::::::::::::
yyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhddddhyyyssssssso//:::::::::-----::::::::::::--:::::::::::::://///++osyyssssoo+///:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
yyyyyyyyyyyyyyyyyyyyhhyyyyhhhhhhhhhhhhhhhhhhhhhhddddddhhyysssosssso///::::::::::::::::::::---:::::::::::::::::::////+osyyyyysssssssoo+++//////////::::::::::::::::////////::::::::::::::::::::::::::::::
yyyyyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhdddddddhdhyyysssooosss+//:::::::::::::::::::-::::::::::::::::::://////++osyyyyyyyyyssssssssssssooooo+++++++++//////////////////::::::::::::::::::::::::::::
yyyyhhhhhhyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhdhdddddddddddhhyysssooooosss+//::::::::::::::::::::::::::::::::::///++++ssoosssyyyyyyyyyssssssssssssssssoooooooo+++++++++++////////:::::::::::::::::::::::::::::
hhhhhhhhyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhdhhddhdhddhyysssoooooosso+//:::::::::::::::/::::::::::::::////+sssssssssssyyyyyyyyyyyssssssssssssssssooooooooo+++++++++++++///::::::::::::::::::::::::::::::
yyyyyyyyyyyyyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhdddddhhyssssooooooosss+///:::::::::::/::::::::::::///+ossssooooooooossssyyyyyyyyyyssssssssssssssoooooooooo+++++++++//////:::::::::::::::::::::::::::::::
yyyyyyhyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddddddhyyssssooooooosso+///:::::::://:::::::::::///++sssooooooooooooosssssyyyyyyyysssssssssssooooooooooo++++++++////////::::::::::::::::::::::::::::::::
yyhhhhhhyyyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdddddddddhhyyyssssoooooossyo/////:::///::::::::::///ooosssoooooooooooooooossssssyyyyyyysssssssssoooooooo++++++++++/////////:::::::::::::::::::::::::::::::::
hhhhhhhhyyyyyyyhhhhhhhhhhhhhhhhhhhhhhddddddddddddddddhhyyyysssoosssssssyo+////////::/::::::///+ssssoooooooooooooooooosssssssssssyyyyyssssssssoooo+++++++++//////////::::::::::::::::::::::::::::::::::::
hhhhhhhyyyyyyyyyhyyhhhhhhhhhhhhhhhhdddddddddddddhdddddhyyysssssosssssssyyo+/////////::::///+ossssooooooooooooooooooooossoossssssssssssssssssoooo+++++++//////////////::::::::/::::::::::::::::::::::::::
hhyyyyyyyyyyyhhhhhhhhhhhhhhhhhhhhhddddhhhhhdhhhdddddddhyyyyysssssssssssyyy+//++/////////++osyssssooooooooooooooooooooooooooooossssssssssssooooo++++++///////////////////////////::::::::::::::::::::::::
hhhhhhyyyyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhdddddddhyyyyyysssssssssssyys+++/////////+osyysssssssoooooooooooooooooooooooooossooosssssssssoo+++++++////////////////+++++++/////::::::::::::::::::::::::
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdddddddddddddddhhyyyyyssssssssssyyhyso+++////++oyyyyyssssssssssssssossosoooooooooooooooossososssssssssoo+++++//+++++++ooooooooooooo+++///:::::::::::::::::::::::/
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddddddddddddddddddhhyyyyssssssssssssyyyhysoo++//++oshyyyysssssssssssssssssssoooooooossssoooossoooooosssssyysoooooooooooooooooooooooooooooo+//:::::::::::::::::::::::/
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdddddddddddddddhhdhhhhhhyyyysssssssssssssyyhhysso++++oyhhyyyyyyyyssssssssssssssssssosssssssoosssssoooooosssyyyssssooooooooooo++++++++ooooooooooo+//::::::::::::::::::::::
yyyhhhhhhhhhhhhhhhhhhhhhhhhhhhdddddddddhhhhhhhhhhhhhhhhyyyyyssssssssssssyyhhhyyso+osyhhhhyyyyyyyyyysssssssssssssssssssssssssssssooooosssyyysoooooooooooooooo++++++++++++++ooooooo++/::::::::::::::::::::
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhhhhhhhhhhhhhhhhddddhhyyyyssssssssyssyyyyyhhhhyssssyyhhhhhyyyyyyyyyyssssssssssssssssssssssssssssoosssssssooooooooooooooooo+++++++++++++++++++++++++///:::::::::::::::::
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdddddddddddddhhyyyssssssssssssyyyyyhhhdddhhyhhhdddhhhyyyyyyyyyyyyssssssssssssssssssssssssssssssssooooooooooooooooooo++++++++++++++++++++++++++++++///:::::::::::
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhdddddddddddddddhyyyyysssssssssssssyyyyhhhdddmmdmmmmmmddhhhyyyyyyyyyyyyyssssssssssssssssssssssssssssssossosossooooooooooo+++++++++oooooo+++++++++++++++++//::::::::/
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdddddddddddddddddddddhyyyysssssssssssssssyyyhhhhhdmmddddmmmmmmmddhhhyyyyyyyyyyyyysssssssssssssssssssyssssssssssoosssosooooooooo++++++++ooooooooooooooooooooooooo+/:::::::/