^:''``'::::^^^^^^"";;;";;;;"""(71Cce7*;;;;;;;"^^^^:::::''``````.................
:':'`.`:^^:^^^^^^"";;;;;;;;;*e@k@QfqqGy[*;(((;;^^^:^:::'''`.....................
'''``.`::^^^^"^"^^";;;;;(((7p####B#k@Gyp#kQJ1(;;"^^^^::''`````...... ...........
'''`..`^^^^^^^^^^^^;;(((777Jp#BBBBB#@pff###kfC((;"^^::::'`````.... . . . .......
'''`.``^^^^^^^^^^""((*7[1j@##BBBBB#######BBB##Q[(;;^^^:'''````.. .. ............
:'''``'^^^^^^;"";;(77[2ce@BBBBBBBBBBBBBBBBBBBB#q77;;^^^:''''``... . . `.........
:''```':^""""";;;;(77[1cjfBBBBBBBBBBBBBBBBBBBBBpfZ(;"^^:::''``... ... `.........
:'`'```':^""";;;;;(*7[1e@BBBBBBBBBBBBBBBBBBBBBBB##C(;^^^::'``..... .. `.........
'``````':^^"^""";;(*777qBBBBBBBBBBBBBBBBBB#BBBBBBBq("^^::''``.. `...............
''`````'^^^^^^^"^";(**7pB##BBBBBBBBBBBBBBBB##BBBBBpc^^:':''`..... ..............
:'`````':^:::^^:^^";(JkBBBBBBBBBBBBBBBBB#BB########k7:''''`...... ..............
''''`.`:::::::::::^^;yBBBBB####BBBBBBBBB####k#k#BBBpj^'```............`.... ..^.
'''````'::'::::::::^^J###BB#kk#BBBBBBBB#pppppp#BBBBke(```......`````.````.. ..^.
'''````'''''''''''::^j@@k#####BBBB#kkBB#@pfffZpB###kj:...... ........... . ..^..
'''``.`''''''''''''''"1Gqffkkk#BBBB#GeeGZy71j*cZZZZc"....... ............ ....".
'''``.`''''`''':''''''^;*71c22eGyQZe1(;((;;;(;;^^;^'.................... ......"
''''```'''''''''`''':::::^:^:^;(;(;(;;("^^^";^''''``.............. .........`.".
^:::'''':''''''''''::::::::::^(;77((;^^::::^^^''''```.........'`.........;;:..."
::::'''':''''::''':::::^;(;;(((^;;^;(;^^::^^^^^^^::'``......`((^;"^'^..."7^```."
777[[777[1222Cec2JGJJejCCjeCJyQqGJyqJee22[77777*(((((*(*((((((**(^^:^^^;7;''```;
7712[77*712cc22112ccCCCCCCcccccCCeCCCCCcCcc2122211[[[[77777***(((((((;;;;""";""*