*((;;;;"""""""""""";;"""""^"^^^"^^^^^^^^^^^^^^^^^^^::::::::':::::'```````.......
*((((((;;;;;;;;;;;;;;;;;;;"";;""""^^^^^^^"^^^^^^^^^^^^^^^:::::::''``````````````
7***((((((((((((((((;;;;;;;;;7jGq2*((;;71C7(;;;;;;""^""^^^^^^^^^^:::'''''''''```
[7777*77*7*7*((((((((((((((721CZjCQ@@Zef@Qpq[((;;;;;";""^^^^^^^^^^::':''''''''''
1[77****7777777777*******7*^^(*JZqcGk7yqf@@@ke7(((;;;;;;;;""^^^^^^^^^::::::^::::
11[[77777777[[[[7777777777('^(1CCy@f@eJycqp####j7*((((((;;;;;";"""""^^^^^^^^^^^^
7777777777[1[[[[[[[[[[[777(`.^*2@1e2C^[2^(y#ppkk#G777*(((((((;(;;;;;;"""""""";;;
7**7*777777777777[[[[[[[777^.^^(e;(";cjcCe2qCcZfpkZC[7777***((((((((;;;;;;;(;;;;
7*((((((((*******7777777777;...:([':[jZQZ@@c2c(2JcQ##f1**77****(***(((((((((;;;;
77*((*(((((((((*((*77jZJC77217;'':;"CCC(cjf@Z;::7[7@Q#ke27*((((;;;;;"";;";;;"";;
[777777777777777777[y@@fp@ejc^....'';"'7CJCjQp2^;'(jCq#k##@7cy7(;;;;;;;"""";"";;
777777777777777777777jqZ2(""''........`;;^(;GQp("2JyZGf##f#f@k#y((;;;;;;;"";;;;;
[777777777777**77[(;7j1(:`';;1;........''`;[*JpkC2JpJGk##Jpy@##k7(((((;;;;;;;;;;
[[77777777777777(;.^;'^`.'cGjeC;.:2' _..;.'^[jJJk7"ceqZZ#q#jCppZ7(((((;;;;;;;;;;
[[77777777[[[7[**e(....`.*(ecc(`..;(;.....`';;*7yy`'^1yC##pp@#pJc27(((((;;;;;;;(
1[[[[[[[[[[[111*^^.....""`;yj:...'^7C1;.....`^cGJZe;jeqyf###p@QkZ@Z**((((;;(;;((
11[[[[[[[2jjfJ1(''..._ .'::;:`....'7[C*...`(j1;7JcC;[yGpB####@QpZ#@***((((((((((
111[[[[[1qyjkB#@;...._ ';"'^^:`.`:(*G7.`...7C7^JpZZ(2q@#####f##GcZC**(((((((((((
2111[[[[([*[Q#B#j'......`^^"^:"^:``:"^[;'^"(j(;;[7([y2cy@k###QkyZG77*****((((*(*
22111117((((Jjfk7:^..`^^:'`:'`^'^^''^";^^^:;(ccc7;[JZJZpQQ#BByeec77777******(***
221111[*;((CZqyj;'`...`.```':'`...':''^^^C(^^^:'`;(JecC1cGfpf#1c[777777777******
c222111[7*(*7J[7;'.....`.`.:``..........':':^;7CCeeyC2[771eJGp1[[[77777777777777
cc2222217**(;^^":`.....''`.....':..`......:7Q#@##qec7ef"71JZ#G11[[[[[[7777777777
ccc2222217(;;('`......````^` '''^cyJ^...'Cq#@Q@q#Bkq2qp@k#pJGC111[[[[[[[[7777777
cccc222227*;;(" ...```':^':;22j(Gf@By...'(1G#p#GC@kQZfkZyp#q22111111[11[[7777777
Ccccccccc[7;;;^";;^'...':'(2eyQe1JQ#G..`^(72j@##e@#e7[JGJZqJ2222211111111[[[[[[[
CCcccCccc27*(;;*;(;^....`';7Je1c[CG#J..:^:^2Cypk#Bq77efCccc2222222222221111111[[
CCCCCCCCc21[*("^:^^'......`^77277CfZ7('.'^;712jZQc:;(7fCcccccccccccc222222111111
eeCCCCCCCCCCc[*7**(;^`''``''.;*(*J##Qc":;((72c2e7;((7GjCCccccCcccccccccc22222122
eeeeeeeeeeeeeCc11[[7(;;"^"^:^*7(;*Cyc7;;777(7G@[;;7Gqk#pp#@ZeCCCCCccccccc2222222
jjeeeeeeeeeeeeeec[[77[[77*77*7*((;";(*(;::^;CfkfG@pQp###fp#kpCCCCCCCcccccccc2222
jjjeejjjjjjjjjjjeccCCc2cCCCeCc2111[7".`.`;"2Jy@##kqGeQ#Q##Gp#jeeeCCCCCCCccccccc2
JJjjjjjjjjjjjjjjjjjjjjjjjjjjjecCc2c1"`';;;;"(1q#G@kp[;*2f##@#yeeeeeeCCCCCccccccc
JJJJJJJJJJJJJJJJJJJJJJJJJJJJjjeeeCC["'`"^'`^2yZfk#qp@*:;7yp#ByeeeeeeeeCCCCccCCcc
JJJJJJJJJyyJyyyyyyyJyJyyJJJJjJjjjec7(;'^:7.^1ypfQ#f[Z1^'';7Q##yjeeeeeeeeeCCCCCcc
yyyyyyyyyyyyyyyyyyyyyyyyyyyJJJJJJe(;*GjC*y^'`"7ZJk#eZ*;;";1Q##JjeeeeeeeeeeeeeCCC
yyyyyyyyyGGyGGGGGGGGGyyyyyyyyyyJJJc*77ce^:.`^^7G@p#qp#G@y*ejJyJjjjjeeejjjeeeeeee
GGGGGGGGGGGGGZZZGGGGGGGGGGGGGGGyyyJ[^':...[JJ7JkZJp#f#@JyyyyyyJJJJjjjjjjjjeeeeee
ZGGGGGGGGZZZZZZZZZZqZZZZZZZZZZGGGyJc;'^. '7e71;ejq[JQk##k#pk#pZyJJJJjjjjjjjjeeee
qqqqqqqqqqqqQQQQQQQQQQqqqqqqZqZZZZGe":':^:"7ee7(cCjyGZGp##k####QGGyJJJJJJjjjjjjj
QQQQQQQQf@pppppp@p@@@@@@@@fffQQQfqqZ7":^7^cqQ#Q7**7J(;;2pf@Z####QZGGGyyJJJJjjjjj
QQQQQQf@#BBBBBBBBBBBBB#k@@@@@@@@kp@fQG[7[1qBBB#fyZZ[^.`;JGyZ@p##@QqqZZGGGGyyyyyy
Qffffp#BBBBBBBBBBBBBBBBBBB##k#BBBBBBBB#k@@kBBBBBkkQj[*7^yCjyjGk#pfQQqqqZZZGGGGGG
ffpkBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB##k#BBBBBB#kpeje272CqGZp#pp@ffQQQQQqqZZZG
##BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB#BB#BBBBBBBB##pppqeCZeJ@G@kpp@@@fffffQQQQQ
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB##k@kBBB###kkfZGZjjjjCCqqkkppppp@@@@@@@@ff
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB#Zyee#BB#qQ@@ZGZqyyCCeCJGypkp@fQ@pppp@@@@@
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBpZCC###ppQqQZjGZfQGqZjCcJqp@f@ff@@@@@@p@@
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB@fpkpfQfZJ11CcGQqGZCec2[CJGGZqf@@@@@@@@
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB#k###@qqfQJjjCZqGGGyje17[7*(CjGqqff@@@@
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB####kfQffQffp@fQqZGyy22C;^^';*eyZf@@@@
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB#ppkkp@fqQQqyGee[1((^^`.`;([jZQffQ
BBBBBBBBBBBBBB##BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB#p@fffp@@fq1;*(C7^`2;^. ``:([72ZqQ
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB###B##@QGGj2J"JQJ1e(.(q1"*"`..'^^""^^1Q
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB#BB#fj[CcC; (1jC;^';:`je7*2. ...`:.`'