heh
-rw-r--r--offsets1
-rw-r--r--p11
-rw-r--r--src/inp.txt543
-rw-r--r--src/main.rs76
-rw-r--r--src/util.rs2
5 files changed, 188 insertions, 435 deletions
diff --git a/offsets b/offsets
new file mode 100644
index 0000000..fd4e6bb
--- /dev/null
+++ b/offsets
@@ -0,0 +1 @@
+[(0i32, -20i32), (-1, -19), (0, -19), (1, -19), (-2, -18), (-1, -18), (0, -18), (1, -18), (2, -18), (-3, -17), (-2, -17), (-1, -17), (0, -17), (1, -17), (2, -17), (3, -17), (-4, -16), (-3, -16), (-2, -16), (-1, -16), (0, -16), (1, -16), (2, -16), (3, -16), (4, -16), (-5, -15), (-4, -15), (-3, -15), (-2, -15), (-1, -15), (0, -15), (1, -15), (2, -15), (3, -15), (4, -15), (5, -15), (-6, -14), (-5, -14), (-4, -14), (-3, -14), (-2, -14), (-1, -14), (0, -14), (1, -14), (2, -14), (3, -14), (4, -14), (5, -14), (6, -14), (-7, -13), (-6, -13), (-5, -13), (-4, -13), (-3, -13), (-2, -13), (-1, -13), (0, -13), (1, -13), (2, -13), (3, -13), (4, -13), (5, -13), (6, -13), (7, -13), (-8, -12), (-7, -12), (-6, -12), (-5, -12), (-4, -12), (-3, -12), (-2, -12), (-1, -12), (0, -12), (1, -12), (2, -12), (3, -12), (4, -12), (5, -12), (6, -12), (7, -12), (8, -12), (-9, -11), (-8, -11), (-7, -11), (-6, -11), (-5, -11), (-4, -11), (-3, -11), (-2, -11), (-1, -11), (0, -11), (1, -11), (2, -11), (3, -11), (4, -11), (5, -11), (6, -11), (7, -11), (8, -11), (9, -11), (-10, -10), (-9, -10), (-8, -10), (-7, -10), (-6, -10), (-5, -10), (-4, -10), (-3, -10), (-2, -10), (-1, -10), (0, -10), (1, -10), (2, -10), (3, -10), (4, -10), (5, -10), (6, -10), (7, -10), (8, -10), (9, -10), (10, -10), (-11, -9), (-10, -9), (-9, -9), (-8, -9), (-7, -9), (-6, -9), (-5, -9), (-4, -9), (-3, -9), (-2, -9), (-1, -9), (0, -9), (1, -9), (2, -9), (3, -9), (4, -9), (5, -9), (6, -9), (7, -9), (8, -9), (9, -9), (10, -9), (11, -9), (-12, -8), (-11, -8), (-10, -8), (-9, -8), (-8, -8), (-7, -8), (-6, -8), (-5, -8), (-4, -8), (-3, -8), (-2, -8), (-1, -8), (0, -8), (1, -8), (2, -8), (3, -8), (4, -8), (5, -8), (6, -8), (7, -8), (8, -8), (9, -8), (10, -8), (11, -8), (12, -8), (-13, -7), (-12, -7), (-11, -7), (-10, -7), (-9, -7), (-8, -7), (-7, -7), (-6, -7), (-5, -7), (-4, -7), (-3, -7), (-2, -7), (-1, -7), (0, -7), (1, -7), (2, -7), (3, -7), (4, -7), (5, -7), (6, -7), (7, -7), (8, -7), (9, -7), (10, -7), (11, -7), (12, -7), (13, -7), (-14, -6), (-13, -6), (-12, -6), (-11, -6), (-10, -6), (-9, -6), (-8, -6), (-7, -6), (-6, -6), (-5, -6), (-4, -6), (-3, -6), (-2, -6), (-1, -6), (0, -6), (1, -6), (2, -6), (3, -6), (4, -6), (5, -6), (6, -6), (7, -6), (8, -6), (9, -6), (10, -6), (11, -6), (12, -6), (13, -6), (14, -6), (-15, -5), (-14, -5), (-13, -5), (-12, -5), (-11, -5), (-10, -5), (-9, -5), (-8, -5), (-7, -5), (-6, -5), (-5, -5), (-4, -5), (-3, -5), (-2, -5), (-1, -5), (0, -5), (1, -5), (2, -5), (3, -5), (4, -5), (5, -5), (6, -5), (7, -5), (8, -5), (9, -5), (10, -5), (11, -5), (12, -5), (13, -5), (14, -5), (15, -5), (-16, -4), (-15, -4), (-14, -4), (-13, -4), (-12, -4), (-11, -4), (-10, -4), (-9, -4), (-8, -4), (-7, -4), (-6, -4), (-5, -4), (-4, -4), (-3, -4), (-2, -4), (-1, -4), (0, -4), (1, -4), (2, -4), (3, -4), (4, -4), (5, -4), (6, -4), (7, -4), (8, -4), (9, -4), (10, -4), (11, -4), (12, -4), (13, -4), (14, -4), (15, -4), (16, -4), (-17, -3), (-16, -3), (-15, -3), (-14, -3), (-13, -3), (-12, -3), (-11, -3), (-10, -3), (-9, -3), (-8, -3), (-7, -3), (-6, -3), (-5, -3), (-4, -3), (-3, -3), (-2, -3), (-1, -3), (0, -3), (1, -3), (2, -3), (3, -3), (4, -3), (5, -3), (6, -3), (7, -3), (8, -3), (9, -3), (10, -3), (11, -3), (12, -3), (13, -3), (14, -3), (15, -3), (16, -3), (17, -3), (-18, -2), (-17, -2), (-16, -2), (-15, -2), (-14, -2), (-13, -2), (-12, -2), (-11, -2), (-10, -2), (-9, -2), (-8, -2), (-7, -2), (-6, -2), (-5, -2), (-4, -2), (-3, -2), (-2, -2), (-1, -2), (0, -2), (1, -2), (2, -2), (3, -2), (4, -2), (5, -2), (6, -2), (7, -2), (8, -2), (9, -2), (10, -2), (11, -2), (12, -2), (13, -2), (14, -2), (15, -2), (16, -2), (17, -2), (18, -2), (-19, -1), (-18, -1), (-17, -1), (-16, -1), (-15, -1), (-14, -1), (-13, -1), (-12, -1), (-11, -1), (-10, -1), (-9, -1), (-8, -1), (-7, -1), (-6, -1), (-5, -1), (-4, -1), (-3, -1), (-2, -1), (-1, -1), (0, -1), (1, -1), (2, -1), (3, -1), (4, -1), (5, -1), (6, -1), (7, -1), (8, -1), (9, -1), (10, -1), (11, -1), (12, -1), (13, -1), (14, -1), (15, -1), (16, -1), (17, -1), (18, -1), (19, -1), (-20, 0), (-19, 0), (-18, 0), (-17, 0), (-16, 0), (-15, 0), (-14, 0), (-13, 0), (-12, 0), (-11, 0), (-10, 0), (-9, 0), (-8, 0), (-7, 0), (-6, 0), (-5, 0), (-4, 0), (-3, 0), (-2, 0), (-1, 0), (0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0), (10, 0), (11, 0), (12, 0), (13, 0), (14, 0), (15, 0), (16, 0), (17, 0), (18, 0), (19, 0), (20, 0), (-19, 1), (-18, 1), (-17, 1), (-16, 1), (-15, 1), (-14, 1), (-13, 1), (-12, 1), (-11, 1), (-10, 1), (-9, 1), (-8, 1), (-7, 1), (-6, 1), (-5, 1), (-4, 1), (-3, 1), (-2, 1), (-1, 1), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (8, 1), (9, 1), (10, 1), (11, 1), (12, 1), (13, 1), (14, 1), (15, 1), (16, 1), (17, 1), (18, 1), (19, 1), (-18, 2), (-17, 2), (-16, 2), (-15, 2), (-14, 2), (-13, 2), (-12, 2), (-11, 2), (-10, 2), (-9, 2), (-8, 2), (-7, 2), (-6, 2), (-5, 2), (-4, 2), (-3, 2), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (5, 2), (6, 2), (7, 2), (8, 2), (9, 2), (10, 2), (11, 2), (12, 2), (13, 2), (14, 2), (15, 2), (16, 2), (17, 2), (18, 2), (-17, 3), (-16, 3), (-15, 3), (-14, 3), (-13, 3), (-12, 3), (-11, 3), (-10, 3), (-9, 3), (-8, 3), (-7, 3), (-6, 3), (-5, 3), (-4, 3), (-3, 3), (-2, 3), (-1, 3), (0, 3), (1, 3), (2, 3), (3, 3), (4, 3), (5, 3), (6, 3), (7, 3), (8, 3), (9, 3), (10, 3), (11, 3), (12, 3), (13, 3), (14, 3), (15, 3), (16, 3), (17, 3), (-16, 4), (-15, 4), (-14, 4), (-13, 4), (-12, 4), (-11, 4), (-10, 4), (-9, 4), (-8, 4), (-7, 4), (-6, 4), (-5, 4), (-4, 4), (-3, 4), (-2, 4), (-1, 4), (0, 4), (1, 4), (2, 4), (3, 4), (4, 4), (5, 4), (6, 4), (7, 4), (8, 4), (9, 4), (10, 4), (11, 4), (12, 4), (13, 4), (14, 4), (15, 4), (16, 4), (-15, 5), (-14, 5), (-13, 5), (-12, 5), (-11, 5), (-10, 5), (-9, 5), (-8, 5), (-7, 5), (-6, 5), (-5, 5), (-4, 5), (-3, 5), (-2, 5), (-1, 5), (0, 5), (1, 5), (2, 5), (3, 5), (4, 5), (5, 5), (6, 5), (7, 5), (8, 5), (9, 5), (10, 5), (11, 5), (12, 5), (13, 5), (14, 5), (15, 5), (-14, 6), (-13, 6), (-12, 6), (-11, 6), (-10, 6), (-9, 6), (-8, 6), (-7, 6), (-6, 6), (-5, 6), (-4, 6), (-3, 6), (-2, 6), (-1, 6), (0, 6), (1, 6), (2, 6), (3, 6), (4, 6), (5, 6), (6, 6), (7, 6), (8, 6), (9, 6), (10, 6), (11, 6), (12, 6), (13, 6), (14, 6), (-13, 7), (-12, 7), (-11, 7), (-10, 7), (-9, 7), (-8, 7), (-7, 7), (-6, 7), (-5, 7), (-4, 7), (-3, 7), (-2, 7), (-1, 7), (0, 7), (1, 7), (2, 7), (3, 7), (4, 7), (5, 7), (6, 7), (7, 7), (8, 7), (9, 7), (10, 7), (11, 7), (12, 7), (13, 7), (-12, 8), (-11, 8), (-10, 8), (-9, 8), (-8, 8), (-7, 8), (-6, 8), (-5, 8), (-4, 8), (-3, 8), (-2, 8), (-1, 8), (0, 8), (1, 8), (2, 8), (3, 8), (4, 8), (5, 8), (6, 8), (7, 8), (8, 8), (9, 8), (10, 8), (11, 8), (12, 8), (-11, 9), (-10, 9), (-9, 9), (-8, 9), (-7, 9), (-6, 9), (-5, 9), (-4, 9), (-3, 9), (-2, 9), (-1, 9), (0, 9), (1, 9), (2, 9), (3, 9), (4, 9), (5, 9), (6, 9), (7, 9), (8, 9), (9, 9), (10, 9), (11, 9), (-10, 10), (-9, 10), (-8, 10), (-7, 10), (-6, 10), (-5, 10), (-4, 10), (-3, 10), (-2, 10), (-1, 10), (0, 10), (1, 10), (2, 10), (3, 10), (4, 10), (5, 10), (6, 10), (7, 10), (8, 10), (9, 10), (10, 10), (-9, 11), (-8, 11), (-7, 11), (-6, 11), (-5, 11), (-4, 11), (-3, 11), (-2, 11), (-1, 11), (0, 11), (1, 11), (2, 11), (3, 11), (4, 11), (5, 11), (6, 11), (7, 11), (8, 11), (9, 11), (-8, 12), (-7, 12), (-6, 12), (-5, 12), (-4, 12), (-3, 12), (-2, 12), (-1, 12), (0, 12), (1, 12), (2, 12), (3, 12), (4, 12), (5, 12), (6, 12), (7, 12), (8, 12), (-7, 13), (-6, 13), (-5, 13), (-4, 13), (-3, 13), (-2, 13), (-1, 13), (0, 13), (1, 13), (2, 13), (3, 13), (4, 13), (5, 13), (6, 13), (7, 13), (-6, 14), (-5, 14), (-4, 14), (-3, 14), (-2, 14), (-1, 14), (0, 14), (1, 14), (2, 14), (3, 14), (4, 14), (5, 14), (6, 14), (-5, 15), (-4, 15), (-3, 15), (-2, 15), (-1, 15), (0, 15), (1, 15), (2, 15), (3, 15), (4, 15), (5, 15), (-4, 16), (-3, 16), (-2, 16), (-1, 16), (0, 16), (1, 16), (2, 16), (3, 16), (4, 16), (-3, 17), (-2, 17), (-1, 17), (0, 17), (1, 17), (2, 17), (3, 17), (-2, 18), (-1, 18), (0, 18), (1, 18), (2, 18), (-1, 19), (0, 19), (1, 19), (0, 20)] \ No newline at end of file
diff --git a/p1 b/p1
new file mode 100644
index 0000000..1ad52c9
--- /dev/null
+++ b/p1
@@ -0,0 +1 @@
+[(-2i32, 0i32),(-1, -1),(-1, 1),(0, -2),(0, 2),(1, -1),(1, 1),(2, 0)] \ No newline at end of file
diff --git a/src/inp.txt b/src/inp.txt
index 1a43c26..64dfde1 100644
--- a/src/inp.txt
+++ b/src/inp.txt
@@ -1,402 +1,141 @@
-bwb, wrrbg, ubwg, rwg, urbbgrr, wugr, rububww, rbrw, ggw, grgwu, wb, gwuuubw, gbr, ugur, rug, ugw, rg, uru, wgrbgug, buwwrwu, bbbuw, urbug, rrbr, uwbr, wurr, wbwrw, bug, rggwguru, brrgub, uuwg, gww, gwb, ubrb, wgrg, rubbgwu, bbb, buu, gbgrwg, rwuwbg, uubwbu, buuu, uwurwgu, gwbugwgw, guru, brww, bwgrugb, rbbgrw, ruubg, wub, wbw, bgww, bgugg, rru, urrwuw, bwwgw, brbww, gwug, bwwwbwb, uubggg, gbgb, rbgub, bwuwgg, wrbb, buwrw, gbbwrrg, gug, wuww, u, ru, gbbbu, ugwrwgb, rgb, rwwuwuwb, ruugwrb, rgruw, wwuwwbbw, urrrbu, bwg, ub, urg, ruwg, bwr, wbwb, brbwrwww, rbwgrgub, gbb, grwwb, bwggw, urwr, rrrug, buw, gbbgrguu, rbgg, brbwur, ububwb, bur, wruru, buurbu, ggb, ggr, rggwrub, uwbbbbgb, rrrb, uwr, bwwrr, brgw, urrwug, gub, rwwb, wgw, ggur, bbrb, uwrbgbu, buubu, urb, bg, gguubbrg, gg, rwr, uubb, wwb, uwgbub, brbgrrb, ubbbrwb, ugr, ggwwug, wbgbu, grw, wrb, brr, rub, gr, guwb, ggrgr, rrb, uuurb, brw, wrg, guw, uggr, uuurgw, wrrgu, wwuu, uruuu, bwrr, wwg, bwguu, rugww, rbw, wur, buuuw, rwb, bbg, gbu, rurw, brwbbb, wbbgguw, rrrr, bwbbb, bgu, uurbb, gwrbwb, wgwrgbwg, wgrw, gugw, urrbb, rww, ruu, uwbrbb, bbbrwb, bugw, wug, wgg, rwru, r, uwg, wggr, brbwgb, uwbuwg, ubr, rbgwrrw, grwbur, grrrbb, wgr, rrbw, uurw, wbgg, buwg, wru, ruwwu, wbbbrg, grgbgbr, uuu, wrr, ubwr, rubbgb, gbrw, gbug, uwrur, ugru, uruggr, ubu, uwgg, wrgb, wbg, ug, guu, bgw, wbu, wuru, rur, wwbwwr, wbugg, wrwgwwb, rrgu, uuugg, bgbb, gb, uwugwgu, bguw, ugwgwugb, brburg, grrbw, brb, bguwb, bwugu, ubwgg, rbr, wwrb, bwgrug, rbww, gwg, rgrgu, bwbgrgb, wwbu, bwugw, uguu, uubuggwb, uwb, gbg, uubur, urwbub, uggrr, wrurb, bbr, uggg, gur, wrwrw, bbbrug, bbuw, b, wbgw, bubgubg, ggg, bru, gbuwr, ruw, wgu, ubb, gru, bb, uwbug, ugbrgu, uruwrrbb, rrug, bgbu, ggwgbrr, rwuuuuu, bgr, rrwu, ruub, burw, bbww, uuuu, gwwb, wrur, grb, br, bwwgg, gburg, ugubw, gbwbwbb, gwrgubrg, bguwwr, grgugbw, rugw, guww, brrrr, uguurb, uwwbbw, guwgu, guguubr, rwu, bbbwb, wggru, bub, rwrg, gw, bw, wrgbrb, ggbru, gwbw, wuwgu, rwgurr, gugr, rbu, wrbguww, uuww, rbuwu, uwu, rburgwu, wgbbuu, rggrur, wbr, buubb, rgwb, bgg, rwurbg, urgrg, rbrrr, rbur, wr, uwuruggr, buug, wubw, uubbbu, gwu, ubgg, rgu, uwwr, brgrgw, uuw, wwr, wu, grgwbbb, rgrbr, bbu, wuwgr, rrg, urw, urgbgr, bwwb, gurgu, rr, rgr, rbg, rgrr, uwgug, gwggbw, rgg, ubgr, ggww, gugggr, rrbgrw, rrr, ubw, uw, gbw, wrww, uwwwrwbu, bgwrugu, guur, grrruuw, ubrgg, ggrb, grg, bgrru, rurrb, ugg, wwgr, uwbrg, wuw, ubbu, rbb, www, wwubgu, ur, bububg, gwr, grgguwg, bubr, wwu, ggru, ugu, rgrru, uburu, wuu, wbugrwu, uur, urwgrwg, bwgwgwg, ubgru, burugw, wgbwrr, urr, wgb, g, ruwggg, wbb, bbrrg, wbuw, uubwugw, rwrr, uubgr, uww, gu, uubu, rrw, ugb, buuwr, uug, rbwbubgb, wgwburur, rrurr, uguw, wbrw, ggu, ruwgwb, rgw, ubrbgu, ururb, rb, ruuu, ubg, rbbbggwu, wg, wbrbbg, gwwwuu, bugg, uu, rbgwrwu, gggbbu, rbggu, wbwwr, uwbbu, ggrwu, brg, buub, bggguu, bu, gbrubgwr, wrwwb, bbw, wubrbb, bbwbbur, bww, uwwuuw
-
-wgurrgbbgwuuwwbwwuwggwrbggrbrwrgbbwwwbbbubuuwbwuuguwr
-bwuuubbguuuurgwrrrrgguugurwbubbrrgugbuwurgu
-wrguubgwbgrwubrbbgbrbuburugugbrgwruwrrgwgbgwubrgrgg
-rbbbwbruubwruurbbbrbbbwwgrurgrgwugbbrwgwwuwgwwb
-wrwrbrgrubguurbubbgbwubrgbbwrwwwburbwrrubbgruwrwrgubbgwwu
-brwrbuwbgugubwbuwgwbguwugbuwwurwurgwrurbrgwgwwwbrb
-bwrrbbruwrgggurgwuwuubuwubbwwwwgbwubwbrguwwbrugurwgrru
-burrwrgrbuwwwrwbuurrbwgbgwburrwwugubuggbguwrgurbggurwrw
-bbwrgubwgwgrwubggbrgbrgwuwggwgrbbwbbuuuugwrgbubgurgwgwbbww
-ruwbuwwgwwgubuguurbbwggugwwwugrubwbwgbggwgrr
-wuubwguggguwrwgbrrwbgubuwgrgbugrwubugggwru
-rrugrbrwrgruwbwwrbwwubbuubwrrggwruruwbbwrwbbgw
-wruubuwrgwbrwgbbwrbrbwruubrbuurbbguwubwuuguwwrrgggub
-bgugwguwgrrbwbuugwgwruwugwugugbuuwwgggwgrggbu
-bgwrbgugrgwwururrrbrwrwugwwbgrrubrgbburwrrr
-buuwbggrbrwwbgugwwugbwbbbrurgrrwrwbuubgrruwggbwbrugwr
-rwbguwuubururbugrwbguuwuubbbbwrrurgbwubwgwwwgwbgbwggrrwb
-wbbururwuuwuwrrgbgwgrubggbrburrbrgrugwuwbwrburwwb
-buubuggrbbuwbgwuwgwbwbgwrggbbbgguurwrrrubwgwrrurgruubu
-uwbwwggrrrubwbbgrwgwgwgwguurwrwwrrwwwggrwwbwrgwuuwgw
-rubbgbbrrbrubgbbggwgrrbrrurwrguggwwbuggbbgbwrwwbuwr
-wuwbruwgugrgbwgbrgrbrbwbubgbrurbgurrurggbwgwguuwgrugwubwbg
-bubgbgbwuwbggwuwgbrwbwrbuwrugwubwbwrwggwrggbbur
-uwuwurrrbwubbbwgbbgwbuuurggwrwgbwwuuwwbwwgburburbruurwugrg
-brwrrbuguuuugbrugbwggggwuuuwguubbwuurwububwgwwuggrwr
-uburugwgwruuruuugwrwrwuggrrgguubwgrbbbrrwwgruwbrurgg
-ruguwgguubbbgwbrwbggbuwrruwgrrbbbgurwgbwwwgrguurrbbuwwggu
-wbwrwbbrrgwgbuguwggrrwwuruwbuwuurruurrbruurwuuwrgu
-buuubgbwugbubrbbgwurbuuuwuwgugbrrurwgbbgrwbrrgwgww
-rugubbrbguurwrruburrubwwrubrugwwbbrwrgwrbrwwubwwrbu
-gwruuwbbgrubruubgwuwwgbrguurrwwrrrwbrrgguurbb
-rgwguuwrwbbgruwrbuwbwbbwwgbwggwubwuwwbwruwrruubrbrburrr
-rbbwurrrbwugwbburwwwrbgggbggwbwrgubrbwrwwww
-bgrwrwuwrwgrwgrrwgwrrugurrbrrrggggbwguwrwwbbrb
-rwrrbwgrbgwbrruwbuwrruwwwgrguwgggbrbrwggwbwgwbrr
-buurugugugbrugbugbwwubgwrrubruuurgwurbrrrr
-ugbrbbrwbwgguwwrbbuwwgurbuuurgwrbrgbwwgbwurrrggrwwurur
-gwgbubrbgwrrgrgrrgwrwbrurgurugguruwgwubbbrbbb
-ububbbrbrgrrgwrurgwwwbuuggwwwrwrwwugruwuuwgbwurru
-rrururggwgbrrubbbwwwwuuguubugggwrggurbgurgguwgubbgbbrg
-rgwbbgbgrgrbuuwgubgurbggbbggwgbuggwrugbwuuruugbwuuwg
-uubgbwgguuubugbwrwgwggwbuwubrrubbwbwwuubbgwbb
-ubugrgwwbgbuurgbbggwggruubrwguuruubuwrbuggbgrrrrguuu
-brrgggrrbuugbbbrbgbbbbwgwrugwgbrbuwbuubrbgr
-rgburwuwbwgrrbwgwgbgguugrrwwbgwuwubbbwwwbbuguw
-bbgrrwrwwuuwrgrubrwbgrbuuuwuwbbbbgbwbuuwrbbrwrw
-guuwbwwwrgbgwrwwbbrwruruggburuwrbguwwwwuuuwbw
-rurwuubwwrggbuwrrgbgwwbbuuwbubgbbrurwbgwbbgwruuwgb
-grrrwuruwrgwgggugwbbrugrgggbbgwwbuwbrwuwubwbbrwugrugugw
-ubgubrggrwgugguruuruwuguwwbrbuwubwubrbugrwr
-rrrwbubburgguurwbgubrggrgwrrurwuruwrrbburrgbwurwgbbwwrrb
-bubbbuwrgwbbgrgugbbrgbubrrubbbrwbbwuwrggggubwbrr
-ruwgwguwbbwrbbuuuwgrgwrbgrgurruwbgrggwbgbugruwwwrrbb
-guwrwgbuubwurbwrbbugrrwwggbugwgwugbugbgbgbub
-rbwwubrgbgwrwrrgbuwrbwuubgwrugbrubwgburbugbrwwuwuwbwwrw
-rguuubwbwgbbbububugrguurwrwgwrgbwggugwrw
-grbgbrggwubbbwbrbrwbbbwbwubuuggrruuruurbgrr
-uwrubgbwuwrurrbbguubrbwbururwgrggbwwbgbbrwrubggwrbbbggwuuwrw
-brrwbrbugubrbrwgruurwbbbgrwwwgbrugwbgrrrbrwugurruuuuwb
-ugbrwbgrbuugwrguwrbbwwrwrrbbrurwbggggwruguwbwbwuuw
-rrbrwbrbbrgrbbwwggugrwgbgugrgubggwrwrwrubwrgugbwwgbgwbu
-ggwrgwrbwggrbbugugbrwrgrrrurbrwbwrbbbwbbgrwgbbr
-rbwggrwguwwwwgubgbggbuwwwubrbbrbgbwrbrggburrrwwuwurwg
-uuwguuwwrrgurugbbbwruuuruwugrbrrgrwrgbbbuggwwrubgw
-uwwbrgguwbbbburrrbbubrbrurrbbwggurrguguwgbrurwbbbgu
-gwbrgbbbbgrwurbguwruggbrgrbbbrrbgwgrugbuuruwgwugwwb
-wrrwwwurrubwbrgbwwggurwruwubggbuurgwbwbwugugbbbwr
-ggbubrwbwbuuuurguuruwbbruwugwgwugbrgbuwwwwgrbwrw
-wguubbbwgbbbwbgrrburbgwrrrrrrbbgwwuwuurrwbrrw
-wwuubwwburbrrgrubwgggwguubwrgwgbubuuuguburbrrwurgw
-wrruugwuuuruubwrbrburuwwbwugwuwrwbwuwuurbwggwbgrbr
-bwugwggrrrwrbbwbbruurugrrbgbwurburgwrwrrbruguubuwgrgb
-wbubwgwwwrbbuurbbwwwwbwugrwbrurrruwuwugrrwugubwrbgrrgrr
-wbgbggrggwgurugurwgrwwuuurgbrggurwurwwgurrbwrbgwrw
-ubruugbbrrgwrbuuguwgruuwggururwrururugwbbrwburrur
-wwbgbuuggugrrrwwurbgbgbwwgwubgrrruurbubbgwgbrwggurbb
-rgurrurrwbrgbrbrgbguuguwugwwbggbwubgwrbbuwbrgbbrbrgbwb
-wuuuugwwwrwurbbugwguuubrguwggrgwrguwubbgrwwgrgbbgrguuwguwrw
-ugggbrubrbuwbruwguwrrguwgwrwgwrbgbuguubgggugrbwubugrr
-grbbggbrbuuurugruwbrrgrubgrbruuubwwbgwwbguwwgwwuwggrr
-bbgrgwbruguwrggwwrwwrrggwbbwgugrgbrwurwurgrubuwgr
-brurwguurrrrubbuubggbrbwwrrbrugwrbuguwbgbgwubg
-wbguwbgbrubgwrwbbgrgrbuwbgubruwbbguwwbbwugwwwwrw
-gbuuuuruwgbwubgguwgrwggbwbrrwrugrgwbwruuwrr
-wwrrugrbgrrwwrbbubgwbguuguwrgwuguwuuurguwwuwgbgg
-gguugwwrrbubwrggbbbuugubbwwrubggbbbwrgggbwguww
-gwurrgbrrbrurgbgwbgwrrgbbggrwwwbbuugrbbugrwubwb
-bbwbgrbbrbgrrruuubwwrrbwgwgwrrrrggguggbrrrubggbrrgwbubr
-gwgbbuguuuwurbggrrwrrgwbwbgbwurwgrugrwgurrwgrubwr
-ugubbgbgrwwrbgwrbwrbbbrbwurgbuurbuwrgguugrrugwbbrr
-grggbbuubwbgugguwuburrubwuubuugrgbwgurrwbubrrwburg
-rwgwggurrbwurbgwbbgugrgrrggbrugrwwrgbbwrburwgrg
-uwwrbwbrwbgubuugbgbbrbbgbwgbwbgbruwrwuwgbbw
-guwrgwrgbbguuubbburuburrbrubugrrbwgrbwbwrgwrrgrbruw
-buwwgrwuwwuuuuugwubwwggbguurbgbbuggrbwuubbbw
-rbggrbuuugrwwrwbrgrgugrbgwbuwrbuugbrbgwwurwrbwwrbggwrbburg
-ubwbrwrubbrubbgrwbwbwwugrbbgrgwgbrbwwwruwuuuuurrbuwwg
-rwwgubgwggrbgbrbgurubbbrwurrgrubrgbgrggggbgbwwwgwrg
-rugbbwwwwuwgbugubbrrggbwgbgbruguguwgubrguwwb
-rwurrrgggbrwwrrbubbwrbbbgwugwwbuuwgrbgrbrwwrubgbrwbrrgwrwg
-gbuwwbruguuubbubrbwubrruurrrrugbbrrwuggwbggw
-rbubggbgwgruwugbggwgbuubugurwrubuugrrwwwgugwuuw
-grrubbguubrbwugbubguuugbrurubgurrrbrubguwrbrrbwwuw
-bbruggrubwrbgwubbrrrrbwrrbgbuwbuguburrrgwwrwgggrbbugwubww
-uuwgubwgguwuurrbugbgrwrbwwwgburuuguwguwrwgbgrgguuwrugbr
-wggrgbrrugbgrugbrrubbbbrwwwugubrurgwwubwbggwuwgwwwwgwbgwb
-ggubuwrggbuwwwrrgrwwgururbuuwuguubrrwuubugrwugburugbbrurgw
-wgrrwubuugrbbbburgbwubwurwbwgrgwgrrrbggbgrwbwguwwg
-bggubgbuuwbrurwuwguuguwrgwgbbwugubwuwrggrrr
-bggbbwbugbwggwgurubwrwgbbggrwwwrrggwbgrrrwgrrrgbwubgrbuurw
-gbwugruwubgbuubrgbrgwggbgbrrbrbwubbbuwrgubbgwggbgbbbgubrr
-rwgubwrguurbbrwbrrgwgggbwugbbrwwuuwbguwbuwguuwbwuurwbburr
-ruwbrubububggwuuwbruwubgruurrwuwruurbuuuuwwrubruugw
-wbrrrrgbuwgruwwrbrrggwgggrbugggbgbbrruwrrwbwbggwg
-rrgbwuwugurwwbrgbrwuguburbrbbururgwbwgruuubg
-brwubwuugrruurrbgrwugubuwuurwrwggubrrbrbgbggwugurgwuubuuu
-wgburgrbwurruwbuuwbuuwwbgwrggrbguwwbuuubgw
-wwrrgwrbwwuurrgbgwwruwurbgwuuuwgbrwggugbwrubbwrgrg
-uuurbbrbgbrbbruruwurwrubrbwgrgubwbuguuurrrwgwwrw
-wwrgrwuubuurgbuwgrbwbguubbbruwbuwgrwururrrbbbggwurwbwwrbww
-bgwrwubgrbwbbwuurgbgwuubuggwbgwurrbgwgrgwguubrubwrw
-rwwgbbrrrruggbwgugurwuwgggwgwubgbrugggrbwgguugw
-uwbrrbrwruuurbuwgrurbbrgguubbrgbwrwwwwrw
-bgwwgugrrbwwwbwgwbbgrbrggwrbwrbrwuubbgrrbwbgwurgwugwur
-rgwurwrubgrgrgruwwrbrbgwbuwggbrbrrgwguggrgwgbwubwgru
-bwgrgugggugrugwrwbuuwgburbbgurwwwurrgruubggw
-gwuggrbgubgrrugrbubrgbwuugbwbbbwbwuwrubwuuuwbgwuwgguuwr
-bbgubbwrbugrwrwgburruruwbwrugwugwwwgwguguwwrgwurrrgww
-wrwgggrrbgwwggugbbbuwurggbbgbruwbbbbguuwgguubg
-rbwubgrrbrwuwrrruuruubbrurwrrubuugrrbubrbbbbrbgrwuur
-grrrguuwuruggrwgrgguuuwgbggwurwbwbwbbwruruurubugubbgr
-wgurgbuuugruubgwrrbbbbrburuwrruwggggruurugbbugrrb
-urburbwgrgubbwgubrbubbgbgrgruugwbwwburrurbuubgrguwrg
-wrrwugrrbrgwrwwuwrbggbrbgwggrbrbgrgubgrbbbbbwrggu
-wuubuguugggugwbrwbbuwgurwwgrggububrgrbguwwgbuwrr
-gwrgwubrwgwrbugurwwrbububrubggbwwgwbubbbuwrb
-rbrgubgwruwwgwurgbubbggbwrbwrgrgwbguurwwub
-rwuwbgugbuugwbgwgrwrrggwrrugrwugwgwruurwgbrgwrubrruub
-rrwgguwrgrwugugbwrrggguuwguwwgwwbbbuwbwwuuurubub
-bbwwwgbuwwrgbrugwugwuwgwwwbrwgbruububwrwrbugrwgwwuugb
-ubrurrgwgbrwgrubbbuuwuruggbwwbguwrbbwbwugwbugurbrguubur
-grugwbuwrwgrwubbbguuwgrrurggbuwbrwruwguggubgwwggrggbw
-gbuuwrwugwgrburbrwbrggbbuuwuggrwbruuururguuwwwwgrbwwruwrr
-brruururbggrbgurbrugrbrrrrgbwgggwgburrugwurrw
-rgbwuggwrugrwrbbrwbbrwwbbwbrbwurruuwrubgwrgbuugww
-wwbgrwbugrrbwrrbwrwubrwuurwgbgugbrwgwruwbugrbgugbwrrbrr
-ububuwwgbgrguuguruwugwbubgwbwgrbbwbbbrgwgbuuuwwwwgwrburu
-rgrguwrgwruuggubwwbbbbbggbrwwurrrubgwgurbbgbubwwguurgbrwr
-uggwuwgrggurgwwrugrrgguururbuwbuuuugruwwgbrubruru
-bubwuuuwurbggubbbwrgwuugwwrwubbrbbgwggggwg
-rrugubbugwugbwrbrbuuwbrrgbubbguwrwgrrwbguurwwubbwur
-gguuugggwuggbbgugwggwuguwrurrrwguwugwuubbruggurg
-ugrbwwbuuugrgwurbbrbruwgrgwrrwrugggbbgrguugwwrwgwbubrbgwgb
-ugubgubbggrggrbrwuwuugbrurggrguwbwuwuwwwbr
-wgwuwbbbwbwgurbuugggrbwbuuwwrrwuwrbbwbgrbbrrurgugwgur
-grgbbugurrwgurrbbbburbuwwggburgbrgwubwbbrruuugbruuwbrguguu
-rrbwrwugrggbggwbubgbbugruuwuwwgrurggbwbrruuruuburwugurr
-rbgruwrgbggggrguubruwbrwgrwgguubruruwrwwrwwgbbubgwg
-uurwwbguuubbugggwuuwgubrggrgwbwugurrrwrgwugurwrrubbguuuu
-wrugbbgrgbwgwwrwwrbgrwurbgburgbburgbrgbbrguwruubwbrgrgwuw
-wgrggwrrwrggwgurubburwbwrwgrgwwrbbbwbbrwrr
-bbbrgrbbbggrrubbwgbwwgururgbbbggrgwgbggrrbguuwgwrgwwbwugu
-bbbbbbrwwgwgrgbgrbwuurrruuuuggrbrubuurgrwbgbwuwgurwb
-rubrgwrgubrgbrgwrgbbbwrbuwurbuubbgbbrwgwbrguggwbbuwrrbuwgr
-rurbuuugbwwuuuuwbbbbgbgwurrbubwrgugubgwgruguggbburuwbgg
-bbggwbbrggruwwwbgbuugbguruwrgbrwwurburgbbrruuggurg
-uwrururrguubwwgurrurrwbrrbggugrrwwgrrrbubuuwbwruu
-bburgggwrrgrwwwuguwrwwrubuwrrbgrbuuugwuwrwgw
-bggggbugbwwubwgrgwubrbbwugbwuwbbbbuwgbgubrwbbgu
-guwrrgggwgugubrguwugburugugrruwurgbwuwgbbwbg
-bguwwwbbwbruuuwbwwgrbwwggbbggurugurrgbwwgu
-rgrbbbbgrrwurwbrwrrggrgrugwurwbrrruruubbbwubuwburubwgb
-brurubrrwrgwrgubrgbgubgbbbuwwrgugwrbruwuwrrguwrw
-rgrurwbrgggbrrwbbuguggugwgubrbgbrugbbwrgbrgbrbgwrgwbw
-wggbgwgggbbbbuuugwbgbrrwbbbruwgwuubbrburgwggugbubwrwggrrwr
-ugwgbugwbbbugrrgbrguwgbuguwbwgrgwrgrbrgggwggwbrrgg
-bgwbugwgwbgrgrbrubuwwrrrwrbbwuurggbbwurwrw
-urrruurgbgubwgubrrbuwwwbwgruurrwbuwgwguwrrbuwwgwuwb
-rugwbgwbwguuuubbwwuugwrwurwrrwggruwrbugwuuurwg
-gwrubwrwrwbwbgwurgurbrrbbwwugwbbbuggrrrbbwwrbuwwuuwugwgg
-rwbbrwgrbwugwwbwuwgwwugrrgwgrgrbbrwbwwbguugwuugbwrw
-uuburwrbrrrbbwrwbrrbggbgbugguuuurbwrrbrbwgggruwwbrgwuggwgr
-gubrrruuwubgbruwugugburbwbubgbrburrbwuuuwuwrw
-bwgwuuwbuwgbwuuwbrbbugrgburrurwurrbwguwbbwubgubruug
-brbggwbwggbwwrwwbwbuwburgwbrbbrubwbugrwwwwrbrbwwrw
-brbrugrburugbgwrgruwuuwwbbwuwbwbruggwguuwwrwrbg
-wwwbuwubgurwuuurgwwrgurgwbuwuwgbbuwbuugwuurrbwwgwwb
-wbgrwgrubbugbubuwugrgbgbwuwwguruurggrgwubrugrrbbgbbgb
-rurbgwrrguugugwbugwgwrgrbbwurguwbggwwrwrrwwurgbwu
-ururuububuugwuwugrrwuwrgrgurbwgrgbbwburuuugrbrwgr
-gbruggubbgrwubrwwbrgwbruwgrbbwwbuubugruuuwuw
-wwwbbgbruurrbbbwrgggrggbbgrwbbwbwuurguwuwuubgugwguwwgb
-rurbbbgwubrrrgbrruugurggbrwguugurrrggurwrguburbrwwrw
-gubggrrwbrurwurugubuubgrrbbwguuguwbwrbuuwubggbrbgwrrb
-wggburgrrbrruruurbwwrwuurruuwrrwbuwgbrwubggwwrubwggb
-rgwwwwuubgwbuubbuuubrbugwgrbbrgubwrgbwgwwubbbbbbwbbgwgw
-wwubwgubrrugbububwwbbrugbbwurruruggurbuuruuwwrw
-bwgbbrrbwrbuuuugwgrbgggwbubgbgwrgggggwrrbwugrbwbuwubbg
-gbwwuwgbgubbrubrruwwwbgwrwgrrwubuwbbwwgurrubwbr
-gwuwrgwubwrwrggburwggrruggbubwbbggbrugwgbburgugrrggwrw
-uwuuuurrrubwbwrwwrubuuuuwuugruggwbburwgrbr
-grurbggrbrggbgubwrrgwuruuwuwurwurburrubgbugwbrwu
-burbbggrrggbbubrrrbwwwwburwuuwrruwgruwwgwwrgwbwuwubururwub
-buwbrguuurrwuwbwwbuggggbbwwwwbuwbggurwuburugrguuugub
-uwububuwgbrubbwguuwurrgrurrwbggrrwwrrrgrbubwuwgwrrgbububgr
-gwuwgrbwrwwugbbgbwwuuwwrbggrruubwwwrgrrwrbrrgrbwwbgbbrw
-bwbbwrwrgguurbwgrggbrburubgwrrgubwbbgbuugwgbbbgb
-rguubugwuugbrbbuggwbwgwggwguwbrwuwgrwgugwwwrrwgbw
-bwruuggrrgbubuggwbrwwbrbwuwwugwbuwuwbubwuwuggb
-bggwwubbbbwrgburuwbwgbubbwwbrugbgwrggbrwbbbuwrubwgburgruw
-urwbbbruwbgurrruugggrbbbbwrbubwwggubgurggwbggbgwwgw
-rwwrrruwrrwuuubwburggbugwrugbgrwgbgrgggurrwbwrwguwwrwg
-wbuuuuggbbrgurgwurbrruwrrugwuuggbbwbggwugugrrgwgwrwwrg
-uurguggwrwwubgwgrggruwwuurububwwuurguuwbubgrgbuw
-uurguwuruggrbbgurgbbubrrrwwurguruugbwggwgrgwgrrwrw
-burrbwrggwgwwwwbwgbwwrwwwrurubguwwuurrgrgbbgg
-ggbrbwbwuuuurrwuwrrrrwuubgbrwwrrgubrwbrurbwrw
-wwwwggbugwrwgwuugbuuwubbgggrguuuwbbbbrrrgbgbubggrwww
-rbwwrugbwrrgrbgbgruwgwbururuurwgbrbrurwrw
-uwggbrrubrugbbbrgbwwrbubwbgwbuguwgbgbuubuggwbwbrggwbuuwu
-rbwgwrwgwuruwuruwwuwwbbwbgwgrbrwruuwrguwrw
-buruwrbgwrrwwurwubgbgggubbugwwugwbgwubbwbrwgrbuug
-wbubrgubuurbgbgguwubbgwrwrrrrwbwurbgggwbug
-brrgugbbwwbwrwrwuggbugrgrwwbbwubwuwubgrwbruggw
-rbugggrgbubuwggggruwugbwubwruwgbrgrguggbuwbwbwbwrwwr
-grubrwrbrwbubbbrbbggrrburwruwbrgbbbwuguubbrwrgrwbrgururb
-rbwrbgwrgwbrrbbwuggwuwgwwrurwubgbrwuuuubwrbwurwwurugbrwbgwrw
-uuwruurggwbbubwgrgrurwwrggrgrwwguugwwbbbgurbwbru
-uruuwrbbubrugwwwgwbgwwwbrggrbwubwrbggugwugwwrrrwg
-rwburguuwrwbbbrwrgbgrgrwgrrurwugrgrurwgbbwr
-uwrwggwuuwwbbgwgwubwggurwuuwgwwrwbubrbrubwugrrugbuwgwgbr
-wugubwuwwbrwgwuurruwwrbwwgrrwgbbbburbggbrbugubbgw
-wgrrwbrgbbbrbwuurrgwbuuurubggwrbwuwrgurgbbwrguugubwrrub
-rwugbrrwgwgbbbrwgbwruuurgubuwggbugguurrurgurgrrg
-bgwugwuruugbwrurggwuwgbbwwruburuuwwuwwbbwuwbrrbg
-bgruwbbbbguwugrrbbgbwgwwburwwbwwbbwrgwbbgurwrw
-wwbguwuwuubbbgrggrgruuurwwrbrurbgwurbruwrbgugwwguwuruwb
-wbbubbbuwrbwrwbguwgggbuwbrwrburwrbugrrwgbwwu
-ruruubwuwubrgwwuwbruugwubrgwrwbgrrbrgwrwbwg
-wgbuwrgubguruwugggruuwugbwwwbwuguuggwbwrubugbruwr
-rwrbrrrurgwbwgbbggwgwrgubbbrwbrrrgubwruurwrrbbwwrbbgrgw
-wgugrggwgwbggrwwuuuwbgwggbrbuguwwbgbruubwrru
-wwrwwguuuwguwrrgrrubggwggggwgurwwwbggruururr
-wwgbbrwuuwrrgrrwgwugbwrwbgbuurbggruwubgggwu
-grrbbgrgruwrubgbbrbgugbwgbrrbwwbubrubbguwrrgwrrug
-gwrbubgggwgbgguugwrwwwuwgurwrburwgrbgrubuuwwwwwrurg
-guguwgrwbuwgwgbuwgrurugrgwrbuugbuburuurrgrburubrgrbg
-wbgwbbuwubrgbuwwrggrwwwrugbgurwgbwubggwurgwbrwrwbgw
-wrbgrgburgwugrwubugwrwuwrggbwbgwrgbwbgbbbururgwrw
-brurwgwbgwwgurwugggrgubbwbwurbrbguuuruuuuuwgrwrrwwwrwu
-grbgbbbrbgubuwbubbbwrurgggwgwurwbubwuwbgugbgurbggwwguguwwb
-urubggbbwururggburbwububugbbwbgwbbubgggruggrgrww
-bwwbbwbwwrrwbwwbbgbgrburuwruwwrbrrbbwgrrwrgwrrbrubuggbr
-rbwruuwrwurwgubbgrwrwbwuugbrurbuwruwurwgubggrru
-grrwwrrugwwrubwbuuubrubgwgbrgugbubrurwuuuurrbug
-wgrbwggbbrwuburubbbrbbwwwgrugbbwwbrbwwuwwuuw
-ruuurbwruubbuwwbrrgwburbwugwbbwrwbrurwbuugguwww
-wbwurbubgrrbubwwgrugwwwwubwrbgrwgurwugrgguuwgrubbubwgg
-uwuuubuwggwrwuggbguwrbrbbgrbwrwwrubgrggubbwwgrrbwg
-wuuwugbgubwwubbbwggguwrgwuwrrrbuugwwubuwubgrwrr
-uggrbbgbrgrwuugbgbugbggrbgwbugwbgbgwbrrbrgruwgrbwrgr
-ruugbwrubrgwwwgwrrrwuwgbrgbrbbrurwrbruuwwrgug
-bbubbgbwrwbrbwbbgwbgrggbwguggrgwuwwurwwbruwu
-urgrrbugwwwurgbggwggugrbbuwwgbgggugubbubgr
-wwgbuwgwgwubbuwgrugwggwurburrwrrrwruggwuwrr
-brrwrwrwuwuugbgbwbguwrruubrwggubbrgwwggwwr
-ugbbwwgrbgugbwwugwruggwgrggugwruggwrbbubwbguuuwuwugrrbb
-urwwuubbgwuururbwbwgwgrwbuwrwbwugwrubwbwwruubgwbubgbg
-ubbbuwuuggguwrgggwuguuurbbruwbwgrbgbwgrbuubwurbrug
-wgwbwbwgruubgwbgurwuburrbbbgruuuggwwgbrurrwgrwuww
-uggrwrgwgubgrbbgwbrgwrbbbbuwbbugrgwuwubuurrbbgrwgbr
-uwrrwgguuruuubrwuugubugruurguwwuubrrrgbbbwrbuguuwrwgb
-uguugbwbuwbrwbbwbrgbrrwrwrwrggwuubrubbgbrrbrgwuguguuw
-gbgruuwrrububurguruuwuubwrurugwuruuwgwgbrgbrbb
-guwbgruwuggrubbuubuuubuurwuubururrbuggwruggr
-wuurwrbgguuugrwgbrubgwrwubwwuwguwwgbbbbbbgrwgwr
-wbgrgrwbwrwbruwruburuwwburwwbgrgrburwrgwbgwr
-wwuwuuurgrrrgguuwbrwgbuuuuuwrggugrwgrguuuuuubw
-gwwggggbrgwrrwubbrrbrwbgwuwwuwrrgrguwurrbburubbr
-rgguwgwggguurwrgwuururrbrgguugwgrbwwurgwuuuurr
-rwuwbguwgrbwbgggbuwwbwuubrwuwrwbbbuwwubrgw
-wwrwuurrbuuwbgburrggbrrbbrubwwgbwwrrwubgwuwwrrruugururruww
-rbrbwugrrugbugwggwurugrruwrubrgrubbrgugrgbbuggbgbbgrrgwrr
-uuwggwgbrrrgbrrbuburugburuwwggbrguwbuwbwuub
-gwburgbuwwruwbruggwruruubbuwbbwrrgrgrrwggug
-buuuubbrwgwwwbwrbubrbubgruuruwugbggguuurbrwrrgbrugwgbuu
-ububrwwwuwuuwuwubbbrbrwrrwbbrgrwggbugbbgrrugbgr
-uggwwruwwbbwbrrrubrbugwbuwbgbgbgrrguwgwgrurwwgggb
-gbguwugrwubwwwubwrbwuwbuwbuuugurgwwgrbbrrbrgwrbrgggrurguwg
-rrbwuuguggwbgwrwbrgwrrwbgwubbgrrwgurgrrbrbbrwrubuwwrbgub
-gburubbruwggrbggrrbbgrurrubgrwurwrgrguurrrgggbwrr
-bwrwubgwwrrrbwuwbuuwwurggwugbguubgwbrwgbbggwggu
-ubugwbbrbrrwbuwbrbrggbrwrurugrrrrrgubrrurrbr
-urrurrwuugbuwggbbguuwugwwrbbbwggbwurrgwwggurbgugrguwurrwwb
-wbbrgwurwrggrbrgwgugwuurrubgrgrugrrbwbrguguburrbgbgb
-uwwurbuubwwruwrwbrbubbruuwburrwrbrbwggbbbgurrggwbgguu
-wrbwbbgurwbwgrubbgrgbubgbubrrgrbuwggrwruwgurbwwwggrgguugg
-brrbubrbbwwbbbwwubwgubbwbuwwwbrggrggwrugrwgwgwbrrrgwwugr
-uwuruwwwrrbrwgrubggbugwrbuuuubwwugurwwrugrwbrrbbubb
-brbbbgrbuwggbrbgbuwwurwbbgggrrugrwbgbgbrrgrgwwbru
-wuuwrrubrbwuguubwwgwggrwwwwwgwuurbwbbwburgbrwwbwrgrgbgguu
-rrruuwbbrubbrrrburrurbwrrbwgbuggubgubwrugrrwbuwubwub
-rbgbuurgruuwrgwwrrbrugbuwrrwbbrggguurwgrrbrrgrgwuug
-brrruuwwwrgwbwbgrwuuubwwrbwuruwrwbwwbgbrwgggwb
-gwrruwburbrugwwgbgubrbwrburrggbrrwrwwrubwrwwrg
-wrrgbbbwwbgbgwgurrubrguuuwbuuurwugwrwugrwbrwb
-ggbgrrbbrgrgbgugrbbruwruuwbwgggrwruuugrwug
-rrrbwuwruggwguwrwwurggruwwwrwrrrgrbrubbbwbrbuuugrbggbbgbbu
-ggwbwgubwbggbggrruwwbwuwwrbbbggwwbgguurrurrwug
-bwbugwwrburgbwuwuwwbugwwbrgbgbwbguwubwuwbrb
-wrgbubuwgwwwwuwrrgubwubggbwwrwwruubgrrbbugwuugbwrw
-rruwuwuuugrggrrguurubwbrrrruwbguwwurwbgwbwwbwbuu
-rbbbrbbgwrbwguwgwwbwburbrrwruwwurgbgrbrrgbugwrwwrggb
-bgwruuwubrguuuuwbgrbggubbrgrbbrruwugugwbuuwbr
-wubruuggwugwbubbbrgrugwrrbgwbgrwurrgruwgbwgubbbw
-wuuwbruwrwwwbwuwwbwrbrwwggbgrbgwwwwggwwggwrgguubbrguwu
-wbbruwuwggbbbubgbuuwbrwbgrrwurugubrguuurbgrwguug
-gbggubwgguuruguuurwbgrrbwguwrbugbwbbuuuwurwwgwgbbbb
-rurrgbgwbwwubuwgubbwwrurgbrwbrbubrurwggbgrb
-gwugbwbuuwwrruggrggguruubgbwugbrruggbbbrwrgwu
-gbrwurwbbuuurubbbbgbbbrurwwbbbbwurrbwgbwurbwrwuwbur
-brgurwbwrrbwgbugbwwggburwubbwbbugurrbwwubgrgbwb
-ggugwwwrgbwbubrrgrbwwrbuwuwwwrwbuwggugbrugrrrwgrwwrrwrrggu
-rrubrwwurwrwbrrgbwruwbbwbgguubwuwrwurwruuguwwrugbwb
-uwbburrrbgburguurbuubrbbwrbuwuggwwugwgruwurguwwruuguugbbrb
-uwrggbrrubrgrrbubwwguuuwggrburrwuwruuuubrrrbgb
-uubruguwgurgwbbwrrrwgubwwbwrbrggguurrrugwwbuubgrb
-grwwgurrrbgbrwuuwbubwwbrwrgrggrbugrbbbrrwuwgrwwbrbwru
-rbgwwbbggwrbbwbbuuugrwrrrggggrrurubgwbgbrwbgbwwr
-gbrwurbrrwbgrurwuubwwrbuurgrrwgwrgrurruuubggbbbggg
-wrwbuuggrgbwrurwgubgrbruuugrubwgwrrwbrgurbrwb
-grbgwbwrrrbgwbbrugrugwwbuuwrbuwbgrgrgrrwwuwuwburrbubgbww
-wwbrbwbbubbgrbbguwwuurrbgbbguuuurbbguurgbrgwg
-uwgwbugrbrgwgrgbrrbbugbwrbrbbuubuwbwwwrubwwrbwgggurwwgu
-urgwuuuurrbrbwguurubgrwwrbrgwurwuubwruwrrggrbg
-wrbwwbrgbrgrrurbgrrrbwbwurgrbwgrrbrrbggrrwgu
-rbgrggbrggrgbwgwbbgwgwbubuwgrrbwbubggbbwugugww
-uubgwurrubrbbrbgrbgbubwrubgwwwruburgbgrrwrgwwuwuggrrrguugr
-bguubwrwgggbgwuwruwbgwwgrbbbbwwrguwggwbrwwbg
-wrwurwubbgrurbbuugurggrgugggrbwgwwwrugbuwb
-uuwwrubgurrgbwgrbbrgrurrwgwrgbwgruwrbuwrrrrgur
-wbugbgbbubgwugggbwbrbgrgrrggwrwgrwrurbwbwbbbwr
-urgburwrbwgguuurubgbrwrgwbuburguwwuwwubrwgb
-ruggurbuwgruuggruurwbwbgbgbgbubrbbrgubgwrw
-rggbbrgbrgubuuubwwwgbrugggugwggubwrrwrgwrrwb
-grwugwrbubbggurbwwuwggugubwwrgrbguurwuwurrwrruu
-bubuwuugbbuurbbgugbuuuwubuwrubgrgurrbburbrbgwbwgbrwgwrwu
-ruwrubuuugwrgbrwurbbwubuwgrrbbwbwuwrwuwrbwbgrbgbbbgb
-wubrgwuubugrwgrbbgbgbwgrrubuuuwruwuurbbruuwrurrru
-gggbrbbwgbubbgbgwwggrbrgwwwgbrubgwrbrbrwugrggburwrbbbbgb
-wubbbruurwrbwubwugwwwbwbggurburbwurwggbbuwrbrrgburbbrbbwgw
-gwuugggrrbbgwbrrrbbubrrbwguwbwguwbwbbbuwuugbwgrruwb
-gbwrrruggbugrrgrbgrrbwwrubrwugwbrgrbgbbgrbwgbg
-bbbruruwrrbburbbrbwggbrbwruwrgwwwrburuggbwruurrgrguuwrw
-gwrrggugruwrggrgwwubruwwrwubwgwwrurwbgbgwwbwbgbwb
-ugbuuwrrwuuwgggbgugrwbrwurbrgurrrrggbuurbrgugwububbg
-ugrbrrguwuwbuwwrgrrbgburgwugwrggurgguruugwubwwgbruuugbr
-rggwwwgbuwwgggbrrubwrwbubrbwrbgbgrgbwwbuwwrrurgubbrbrb
-gwrburgugwubuubbwwgwuurwbuwrwuwurbbbwgggwbbwwub
-rugbrguwrgubbbrbuwuwwbwwbbggbrurwwbguguwrurgwurubbgwrrrbw
-ugubbwwgguruguwgrwwuwwrgbuwruwwwbgwwbgwbrr
-gbuwbggwrugrrrrgwurguwrgugggggguguuugbuubuwgugwg
-grwbgurbbbgbwgbgwbubrbguuubwbwbgrbrguwbrrwwggggbbwb
-rbgwwgguburbbgrubbuuwwgwgbbrrwwbwwwurbrbbbrbwuuruuub
-wgwubrurrwwwrwgwrgrwuuuggwrggrwrugubrgbrwbgubrbw
-bbrurrubwrwguurwwbggrbwgruugbuuurbbuuruguwgrwg
-rbwwwubgubrwwgbbbbbubwbgubggbubwbggbwurbgggugbwgwrwwuruwuu
-brwrubggrurbwwbruuwuburrbwwbgwwuwruwugwuurwgburb
-rbruuuwwbbuurbguubwwwruuuwwgwuugwuwgbrbwbrbwrruwgbwuww
-rrrbrbbuuuurgrwbbuwwubuwbrgbrrwwwggbgbugbbbuwubwrrgw
-ubbgbbwgurruubbubggrrbgurrwgbrguuwuguurwubgwbwrrurbwugbbu
-bwwwbgguwbuuggrrggbbwgrrbbgbubrbrbbguwwrruwrbbugugu
-gwuwwwubwuwubwbrggrgugbwwbbrwgbwuwwbwrggrr
-wrrrurwwwuurbbgwubbgwuubuwrgbbrbwbbbruuugrgwwbwbuwbgwbrw
-guuugbrbrggbwrwwbwwwbbbbrgrruubggrbwrwrugrugrrugb
-rrgwwbrgbwuwwgrugrgurbgwuwurwuwwgbgurrgrurwbgrrurbwgu
-rgrrgwbrugugbugggbrbrrgrwrwuuugwgbwubruwgrwggwgwbururug
-bbbwggwbuwgwbwrrbuuwwrgbguubuubwgubuwrbbgwrwbgw
-wgubwwrubwguubuwburuuuubbbwgbrgruuguuububbuwb
-rbwbwrrgruwwbwrwgbbbgbrrrrgrwbbburgruwruwgggrbwwwuugwg
-buburgwrubugbwrugwbwbwbgrburrgubwbwbubuwwu
-bgwgwwuggububwwrurgurbrububruwgurwbwbgbbrrwgbrugbrrrr
-wggugwwubuubrgwbwbgwrrggubrrbggubwugwwggwbbbrbgrwwr
-ubbwwrggbgbrgbrwuwwrrrguwuwwrgrbuwrgrbbbbbwbu
-gbwuggrgbuwrbbrurwruurrgubrwwgrwrubrbwbrubugbwuurggwbgruw
-gwguwbwgrgwwgrubbwggrrurbubrugrrwuwggguwwgbw
-wwgwrgrbrgrrgrurrbwwuugurwbbbwubrbwububggub
-rbwwwgubwwubgruwuurrubburwbgurururgrwgbguub
-wgbggrugurrbgbgwgbgrugwubrbgbwrwrrwwbrbgbwugwwrbgurbr
-guggbgbgurgbubwrgwwubuwbbgbgwbruwwgwwrwugrwgurwwwg
-wwbrwrguwwbgbrgrbwugbgbwwgurbggwbbrrggwwbwugguggugbr
-wwuuuguggrubbgubbrgbwgwbruwwrbuuwwwwbrbrwbwbbwuggbwr
-wuwbggbugrurgurgurbruwurubuuugwwgwgwrbrgrwgwwwrug
-gwwgubwuuugubwrwbwgurruwrbuuuurwugbrrurbwwuwgru
-buggbrurggbggwgrrubwurgrwwwbwwbgwuuuugwugubgugbbbwugw
-wwwgrbwuwbubuwuwuruurrgwurbwwbgbuuuuuubwbrrgubgbuuwbbur
-brwrbwbgbugwbbbuwuubrrrwrwwrrururbrrggurwuuuurbuurgubugb
-uuwrbrrugurwwrbuwbuggbbbwrugbrbwrwwwwwbgrbu
-uwbgugurrrgwwrugbgwgruwwgbbbwwwrrbubwrwuwguurgwwbg
-rwgbwwgwgwruwbgwbrwubuubbgbggbbubwwbbrwuggwgrrubgr
+#############################################################################################################################################
+#...........#...#...#...#.....#...###...#...................#...#.....#.................#.......###...###.......###...###...................#
+#.#########.#.#.#.#.#.#.#.###.#.#.###.#.#.#################.#.#.#.###.#.###############.#.#####.###.#.###.#####.###.#.###.#################.#
+#.....#.....#.#...#...#.#...#...#.#...#.#.................#...#...#...#.......#.........#.#.....#...#...#.#.....#...#...#.....#.............#
+#####.#.#####.#########.###.#####.#.###.#################.#########.#########.#.#########.#.#####.#####.#.#.#####.#####.#####.#.#############
+###...#.....#.........#.###.....#.#...#.###.......#.....#...#.......#.......#.#.#.........#.....#.....#.#.#.#...#.....#.###...#.#...#...#...#
+###.#######.#########.#.#######.#.###.#.###.#####.#.###.###.#.#######.#####.#.#.#.#############.#####.#.#.#.#.#.#####.#.###.###.#.#.#.#.#.#.#
+#...#.......###...#...#.#.......#.....#...#.#.....#...#.....#.......#.....#.#.#.#.....#.........###...#.#.#...#.#...#.#...#...#...#...#...#.#
+#.###.#########.#.#.###.#.###############.#.#.#######.#############.#####.#.#.#.#####.#.###########.###.#.#####.#.#.#.###.###.#############.#
+#...#...###...#.#.#...#...#.............#.#.#.###...#.........#.....#...#.#.#.#...###.#.###...#...#...#.#.#.....#.#.#.#...#...#...#.........#
+###.###.###.#.#.#.###.#####.###########.#.#.#.###.#.#########.#.#####.#.#.#.#.###.###.#.###.#.#.#.###.#.#.#.#####.#.#.#.###.###.#.#.#########
+###...#...#.#...#.###.......#...#.....#.#.#.#...#.#...........#...###.#.#.#.#.#...#...#.....#.#.#.....#...#...#...#...#.....#...#...#.......#
+#####.###.#.#####.###########.#.#.###.#.#.#.###.#.###############.###.#.#.#.#.#.###.#########.#.#############.#.#############.#######.#####.#
+#...#.#...#.#.....#.......#...#.#...#.#.#...#...#.....#.....#...#...#.#.#.#.#.#.###...#...#...#.........#.....#.#.............#...#...#...#.#
+#.#.#.#.###.#.#####.#####.#.###.###.#.#.#####.#######.#.###.#.#.###.#.#.#.#.#.#.#####.#.#.#.###########.#.#####.#.#############.#.#.###.#.#.#
+#.#...#...#.#.....#.....#.#...#.#...#...#.....#...###...#...#.#.#...#.#.#.#...#.#...#.#.#...#####...#...#.#.....#...............#...#...#...#
+#.#######.#.#####.#####.#.###.#.#.#######.#####.#.#######.###.#.#.###.#.#.#####.#.#.#.#.#########.#.#.###.#.#########################.#######
+#.....#...#.#.....###...#...#.#.#.......#.#...#.#.....#...#...#.#.#...#.#.#.....#.#...#...#...#...#...#...#...#.......................###...#
+#####.#.###.#.#######.#####.#.#.#######.#.#.#.#.#####.#.###.###.#.#.###.#.#.#####.#######.#.#.#.#######.#####.#.#########################.#.#
+#.....#...#.#.......#.....#...#.....#...#...#.#...#...#.....#...#...#...#.#.#...#.#.......#.#.#.#.....#.###...#.....#...###...#.....#...#.#.#
+#.#######.#.#######.#####.#########.#.#######.###.#.#########.#######.###.#.#.#.#.#.#######.#.#.#.###.#.###.#######.#.#.###.#.#.###.#.#.#.#.#
+#.....#...#.#.......#...#.........#...#...#...#...#.#...#...#...#.....###.#.#.#...#...#...#.#.#...#...#...#...#...#...#.....#...#...#.#.#.#.#
+#####.#.###.#.#######.#.#########.#####.#.#.###.###.#.#.#.#.###.#.#######.#.#.#######.#.#.#.#.#####.#####.###.#.#.###############.###.#.#.#.#
+#.....#.###.#.#...#...#.#...#...#...#...#...###.#...#.#...#...#.#.......#.#.#...#.....#.#...#.#...#.....#.....#.#.#...............###.#.#.#.#
+#.#####.###.#.#.#.#.###.#.#.#.#.###.#.#########.#.###.#######.#.#######.#.#.###.#.#####.#####.#.#.#####.#######.#.#.#################.#.#.#.#
+#.....#.....#.#.#.#...#...#.#.#.....#.#...###...#.#...#....S#...#.......#.#.#...#.....#.#.....#.#.#.....#.......#.#.......#...........#.#.#.#
+#####.#######.#.#.###.#####.#.#######.#.#.###.###.#.###.#########.#######.#.#.#######.#.#.#####.#.#.#####.#######.#######.#.###########.#.#.#
+#...#.#.......#.#...#.....#.#.......#.#.#...#.#...#.....#####.....###...#.#...#.......#.#...#...#.#.....#.#.....#.........#.#...........#.#.#
+#.#.#.#.#######.###.#####.#.#######.#.#.###.#.#.#############.#######.#.#.#####.#######.###.#.###.#####.#.#.###.###########.#.###########.#.#
+#.#.#.#.......#.#...###...#.........#.#.#...#.#.......#######.###...#.#.#.....#.###...#.#...#.#...#...#.#.#.#...#...#...###.#.............#.#
+#.#.#.#######.#.#.#####.#############.#.#.###.#######.#######.###.#.#.#.#####.#.###.#.#.#.###.#.###.#.#.#.#.#.###.#.#.#.###.###############.#
+#.#...#.......#.#.#...#.............#...#...#.#...#...#######.#...#.#.#.#...#.#...#.#...#...#.#...#.#...#...#.....#.#.#...#.#.......#.....#.#
+#.#####.#######.#.#.#.#############.#######.#.#.#.#.#########.#.###.#.#.#.#.#.###.#.#######.#.###.#.###############.#.###.#.#.#####.#.###.#.#
+#.#...#...###...#...#.....#.......#.#.......#.#.#...#########.#...#.#.#.#.#.#.#...#.#.......#.#...#...#.............#.#...#.#.....#...###...#
+#.#.#.###.###.###########.#.#####.#.#.#######.#.#############.###.#.#.#.#.#.#.#.###.#.#######.#.#####.#.#############.#.###.#####.###########
+#...#...#...#...#...#.....#.....#...#...#...#.#.#...#########.#...#...#.#.#.#.#.#...#...#...#.#.#.....#.............#.#.....#.....#...###...#
+#######.###.###.#.#.#.#########.#######.#.#.#.#.#.#.#########.#.#######.#.#.#.#.#.#####.#.#.#.#.#.#################.#.#######.#####.#.###.#.#
+###...#.#...###...#.#.#...#.....#...#...#.#...#.#.#.#######...#.......#.#.#.#.#.#.....#...#...#.#...#...#.......#...#.#.....#.....#.#.#...#.#
+###.#.#.#.#########.#.#.#.#.#####.#.#.###.#####.#.#.#######.#########.#.#.#.#.#.#####.#########.###.#.#.#.#####.#.###.#.###.#####.#.#.#.###.#
+#...#...#.....#...#.#.#.#.#.......#.#...#.....#.#.#.#######...#...#...#.#.#.#.#.#.....#.........#...#.#...#...#...#...#...#.......#.#.#.#...#
+#.###########.#.#.#.#.#.#.#########.###.#####.#.#.#.#########.#.#.#.###.#.#.#.#.#.#####.#########.###.#####.#.#####.#####.#########.#.#.#.###
+#.#.......#...#.#...#...#...#...#...#...#...#.#.#.#.#########.#.#...#...#.#...#.#.....#.#...#...#.###.......#...#...#.....#.........#...#...#
+#.#.#####.#.###.###########.#.#.#.###.###.#.#.#.#.#.#########.#.#####.###.#####.#####.#.#.#.#.#.#.#############.#.###.#####.###############.#
+#.#.#...#.#.....#...#...#...#.#.#...#.....#...#...#.###.......#...###...#.#.....#...#.#.#.#...#.#.#...#.........#...#.......#.......#.....#.#
+#.#.#.#.#.#######.#.#.#.#.###.#.###.###############.###.#########.#####.#.#.#####.#.#.#.#.#####.#.#.#.#.###########.#########.#####.#.###.#.#
+#...#.#...#.....#.#...#.#.....#...#.............###.###...#.....#.#...#...#.......#...#...#...#...#.#.#.......#...#.#.........#...#...#...#.#
+#####.#####.###.#.#####.#########.#############.###.#####.#.###.#.#.#.#####################.#.#####.#.#######.#.#.#.#.#########.#.#####.###.#
+#.....#...#.###...###...#...#...#.............#.#...#E#...#.#...#...#...#...#...###.........#.###...#.........#.#...#...........#.....#...#.#
+#.#####.#.#.#########.###.#.#.#.#############.#.#.###.#.###.#.#########.#.#.#.#.###.#########.###.#############.#####################.###.#.#
+#.#.....#...#...#...#.#...#...#.............#...#.....#.....#.#.....#...#.#...#...#.........#.#...#.............#...#...#...#...#...#...#...#
+#.#.#########.#.#.#.#.#.###################.#################.#.###.#.###.#######.#########.#.#.###.#############.#.#.#.#.#.#.#.#.#.###.#####
+#...#.......#.#...#...#...#...#...#...#...#.#.................#.###.#.....#.....#.#.........#...#...#.......#.....#...#...#...#...#...#.....#
+#####.#####.#.###########.#.#.#.#.#.#.#.#.#.#.#################.###.#######.###.#.#.#############.###.#####.#.#######################.#####.#
+###...#...#...#...........#.#...#...#...#...#.#...#.......#...#...#...#...#...#.#.#...#...#.......###.#...#.#...............#...#...#.......#
+###.###.#.#####.###########.#################.#.#.#.#####.#.#.###.###.#.#.###.#.#.###.#.#.#.#########.#.#.#.###############.#.#.#.#.#########
+#...#...#.......#...#...#...#.............#...#.#.#...###...#...#.###...#.#...#...###...#...#...#...#.#.#.#...#.....#...#...#.#...#.........#
+#.###.###########.#.#.#.#.###.###########.#.###.#.###.#########.#.#######.#.#################.#.#.#.#.#.#.###.#.###.#.#.#.###.#############.#
+#.....#...........#.#.#.#...#.#...........#.....#.#...#...#.....#.......#.#.....#...#.........#...#.#...#...#.#...#...#.#.#...#.............#
+#######.###########.#.#.###.#.#.#################.#.###.#.#.###########.#.#####.#.#.#.#############.#######.#.###.#####.#.#.###.#############
+#...#...#...#.....#...#.....#.#...........###...#...###.#...#...#...#...#...#...#.#.#.#...........#.........#...#.....#...#...#...#.....#...#
+#.#.#.###.#.#.###.###########.###########.###.#.#######.#####.#.#.#.#.#####.#.###.#.#.#.#########.#############.#####.#######.###.#.###.#.#.#
+#.#...#...#.#...#.....#.....#.#.........#.....#...#...#...#...#...#.#.....#...###.#.#...#.........#...........#.#...#...#...#.#...#.#...#.#.#
+#.#####.###.###.#####.#.###.#.#.#######.#########.#.#.###.#.#######.#####.#######.#.#####.#########.#########.#.#.#.###.#.#.#.#.###.#.###.#.#
+#.#.....###.....#.....#...#.#.#.....###.........#.#.#...#.#...#.....#...#...#.....#.#.....#.....#...###.......#...#.....#.#.#.#.....#.....#.#
+#.#.#############.#######.#.#.#####.###########.#.#.###.#.###.#.#####.#.###.#.#####.#.#####.###.#.#####.#################.#.#.#############.#
+#.#.....#.........#...#...#...#.....#.....#...#.#...#...#...#.#.....#.#.....#.....#.#.#...#.###.#.....#...#...#...#...###.#...#...#.........#
+#.#####.#.#########.#.#.#######.#####.###.#.#.#.#####.#####.#.#####.#.###########.#.#.#.#.#.###.#####.###.#.#.#.#.#.#.###.#####.#.#.#########
+#.#.....#...#...#...#...#.......#...#.#...#.#.#.....#...#...#...###.#.###.....#...#...#.#...#...#...#.#...#.#.#.#.#.#.....#...#.#...#...#...#
+#.#.#######.#.#.#.#######.#######.#.#.#.###.#.#####.###.#.#####.###.#.###.###.#.#######.#####.###.#.#.#.###.#.#.#.#.#######.#.#.#####.#.#.#.#
+#.#...#.....#.#.#.#.......#...#...#...#.....#.....#.....#.....#.#...#...#.#...#...#.....###...#...#...#.....#.#.#...#.......#.#.#...#.#.#.#.#
+#.###.#.#####.#.#.#.#######.#.#.#################.###########.#.#.#####.#.#.#####.#.#######.###.#############.#.#####.#######.#.#.#.#.#.#.#.#
+#.#...#.#.....#...#.........#...#...........#...#.........#...#.#.......#.#.#...#.#.#.......#...#...........#...#...#.....###...#.#...#.#.#.#
+#.#.###.#.#######################.#########.#.#.#########.#.###.#########.#.#.#.#.#.#.#######.###.#########.#####.#.#####.#######.#####.#.#.#
+#.#...#...#...#...#...#...#.....#.......###...#...........#.....#.....#...#.#.#.#...#.....#...#...#.......#.#.....#.....#.........#...#...#.#
+#.###.#####.#.#.#.#.#.#.#.#.###.#######.#########################.###.#.###.#.#.#########.#.###.###.#####.#.#.#########.###########.#.#####.#
+#.#...#.....#.#.#.#.#.#.#.#...#.......#.........#...#...#.....#...#...#.#...#.#...........#.###.....#...#.#.#.......###.........#...#.......#
+#.#.###.#####.#.#.#.#.#.#.###.#######.#########.#.#.#.#.#.###.#.###.###.#.###.#############.#########.#.#.#.#######.###########.#.###########
+#...###.....#...#...#...#...#.......#.........#...#...#.#...#.#...#.###.#...#.......#...#...#.....#...#...#.........#...#.....#.#.###...#...#
+###########.###############.#######.#########.#########.###.#.###.#.###.###.#######.#.#.#.###.###.#.#################.#.#.###.#.#.###.#.#.#.#
+#.....#...#...........#...#.......#.#.......#...#...#...#...#.#...#...#.#...###...#...#...###...#.#...................#.#.#...#...#...#...#.#
+#.###.#.#.###########.#.#.#######.#.#.#####.###.#.#.#.###.###.#.#####.#.#.#####.#.#############.#.#####################.#.#.#######.#######.#
+#...#.#.#.#...#...###...#.......#.#...#.....#...#.#...###...#.#...#...#.#...#...#...#...#...#...#...............#.....#...#.........#...#...#
+###.#.#.#.#.#.#.#.#############.#.#####.#####.###.#########.#.###.#.###.###.#.#####.#.#.#.#.#.#################.#.###.###############.#.#.###
+#...#...#...#...#.......#.......#.......#...#.....#.......#.#.#...#.....#...#...#...#.#.#.#.#.#...............#.#...#.....#.....#.....#.#...#
+#.#####################.#.###############.#.#######.#####.#.#.#.#########.#####.#.###.#.#.#.#.#.#############.#.###.#####.#.###.#.#####.###.#
+#.#.....#...#.......#...#.......#.........#...#...#...#...#.#.#...#.......#...#.#.#...#.#.#.#.#.#.............#...#.....#...###.#...###.....#
+#.#.###.#.#.#.#####.#.#########.#.###########.#.#.###.#.###.#.###.#.#######.#.#.#.#.###.#.#.#.#.#.###############.#####.#######.###.#########
+#.#.#...#.#...#...#.#.#.......#...#...........#.#.....#.#...#.....#.#...#...#...#.#...#.#.#.#...#...............#.......#.....#...#.........#
+#.#.#.###.#####.#.#.#.#.#####.#####.###########.#######.#.#########.#.#.#.#######.###.#.#.#.###################.#########.###.###.#########.#
+#...#.....#.....#...#.#...#...#...#.........#...#...#...#.........#.#.#.#.#...#...#...#...#.....#...#...#.....#...........#...###...#.......#
+###########.#########.###.#.###.#.#########.#.###.#.#.###########.#.#.#.#.#.#.#.###.###########.#.#.#.#.#.###.#############.#######.#.#######
+#...###...#.........#.#...#.....#...........#.#...#...###.......#.#...#.#...#.#...#...#.........#.#...#...###...........#...#...###...#...###
+#.#.###.#.#########.#.#.#####################.#.#########.#####.#.#####.#####.###.###.#.#########.#####################.#.###.#.#######.#.###
+#.#.....#.....#...#.#.#.....#.......#.......#.#.###.....#...#...#.....#...#...#...###.#.#.......#...#.................#...#...#.#.......#...#
+#.###########.#.#.#.#.#####.#.#####.#.#####.#.#.###.###.###.#.#######.###.#.###.#####.#.#.#####.###.#.###############.#####.###.#.#########.#
+#...#...#...#...#...#...###...###...#.#.....#.#...#...#.....#.#...###.#...#...#.#.....#.#.#.....###...###.............#...#.#...#...#.......#
+###.#.#.#.#.###########.#########.###.#.#####.###.###.#######.#.#.###.#.#####.#.#.#####.#.#.#############.#############.#.#.#.#####.#.#######
+#...#.#...#.....#.....#...###...#.....#...###...#...#.......#.#.#...#.#.#...#.#.#.....#...#.#...#...#...#...#...........#.#.#.#.....#.......#
+#.###.#########.#.###.###.###.#.#########.#####.###.#######.#.#.###.#.#.#.#.#.#.#####.#####.#.#.#.#.#.#.###.#.###########.#.#.#.###########.#
+#...#.#.....#...#.###...#.....#.........#.#...#.#...###...#.#.#...#.#.#.#.#.#.#...#...#.....#.#.#.#.#.#.....#.#.......#...#.#...#.....#...#.#
+###.#.#.###.#.###.#####.###############.#.#.#.#.#.#####.#.#.#.###.#.#.#.#.#.#.###.#.###.#####.#.#.#.#.#######.#.#####.#.###.#####.###.#.#.#.#
+#...#.#...#...#...#...#...#...#.......#...#.#.#.#.....#.#.#.#.....#...#.#.#.#.#...#...#.....#.#...#.#.........#.....#...###.#.....###...#...#
+#.###.###.#####.###.#.###.#.#.#.#####.#####.#.#.#####.#.#.#.###########.#.#.#.#.#####.#####.#.#####.###############.#######.#.###############
+#.#...#...#...#.#...#.....#.#.#.#.....#...#.#.#.#.....#.#.#.........#...#.#.#.#.#...#...#...#...#...#...#.......#...###.....#...............#
+#.#.###.###.#.#.#.#########.#.#.#.#####.#.#.#.#.#.#####.#.#########.#.###.#.#.#.#.#.###.#.#####.#.###.#.#.#####.#.#####.###################.#
+#.#.#...#...#...#.....#...#.#.#.#.#...#.#.#.#.#.#.#...#.#.#...#...#.#...#.#.#.#.#.#...#.#...#...#...#.#.#.....#...#.....#.....#.............#
+#.#.#.###.###########.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.#.#.###.#.###.#.#####.#.#.#####.#####.#####.###.#.#############
+#...#.....###.........#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#.#...#.#.#...#...#...#.#...#.....#...#...#...###...#...#...#.#.#...#...#...#
+#############.#########.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.###.#.#.#########.###.#.#######.#######.#.#####.###.#.###.#.#.#.#.#.#.#.#.#
+#.............#...#...#.#.#.#...#.#.#.#.#.#.#...#...#.#.....#.#.#.#...#.#.........#.#...#.#...#...###.....#.......#...#.....#.#...#...#...#.#
+#.#############.#.#.#.#.#.#.#####.#.#.#.#.#.#########.#####.#.#.#.#.###.#########.#.#.###.#.#.#.#####.#############.#########.#############.#
+#...#...#.....#.#...#.#.#...#.....#.#...#.#.........#...#...#.#.#.#.###...#...#...#.#.#...#.#...#...#.....#.......#.........#.#...#.......#.#
+###.#.#.#.###.#.#####.#.#####.#####.#####.#########.###.#.###.#.#.#.#####.#.#.#.###.#.#.###.#####.#.#####.#.#####.#########.#.#.#.#.#####.#.#
+#...#.#...#...#.#.....#.....#.....#...#...#...#.....#...#.#...#.#.#.....#.#.#.#...#.#.#...#.......#.#.....#.....#.#...#.....#...#.#...#...#.#
+#.###.#####.###.#.#########.#####.###.#.###.#.#.#####.###.#.###.#.#####.#.#.#.###.#.#.###.#########.#.#########.#.#.#.#.#########.###.#.###.#
+#...#.#...#...#.#.....#...#...###.#...#.....#.#.....#...#.#...#.#.....#.#...#...#.#.#.###...#...#...#.#...#.....#.#.#.#.........#.#...#...#.#
+###.#.#.#.###.#.#####.#.#.###.###.#.#########.#####.###.#.###.#.#####.#.#######.#.#.#.#####.#.#.#.###.#.#.#.#####.#.#.#########.#.#.#####.#.#
+#...#.#.#.....#.###...#.#...#.#...#.#.....#...#...#.###.#.#...#.....#.#.#...###.#.#.#.#.....#.#.#...#.#.#.#.#...#...#.#...#.....#.#...#...#.#
+#.###.#.#######.###.###.###.#.#.###.#.###.#.###.#.#.###.#.#.#######.#.#.#.#.###.#.#.#.#.#####.#.###.#.#.#.#.#.#.#####.#.#.#.#####.###.#.###.#
+#.#...#...#...#...#...#...#...#.....#...#...#...#.#.#...#.#.#...#...#.#.#.#.....#.#.#.#.#.....#.#...#.#.#.#...#.#.....#.#.#.....#.#...#.#...#
+#.#.#####.#.#.###.###.###.#############.#####.###.#.#.###.#.#.#.#.###.#.#.#######.#.#.#.#.#####.#.###.#.#.#####.#.#####.#.#####.#.#.###.#.###
+#...#...#...#...#...#.....#...###...###.#...#.###...#...#.#.#.#.#...#.#.#...#...#.#.#.#.#...#...#.###...#.#.....#.....#.#...#...#.#...#.#.###
+#####.#.#######.###.#######.#.###.#.###.#.#.#.#########.#.#.#.#.###.#.#.###.#.#.#.#.#.#.###.#.###.#######.#.#########.#.###.#.###.###.#.#.###
+#.....#.........#...###.....#.....#.....#.#.#...#.......#.#.#.#.#...#.#.#...#.#...#.#.#.....#.#...#.......#.........#.#.#...#...#...#.#.#...#
+#.###############.#####.#################.#.###.#.#######.#.#.#.#.###.#.#.###.#####.#.#######.#.###.###############.#.#.#.#####.###.#.#.###.#
+#.............#...#.....#...#...#...#...#.#...#.#...#...#.#...#.#...#.#.#...#.#.....#.....#...#...#.#.....#.....#...#.#.#.#...#...#...#.....#
+#############.#.###.#####.#.#.#.#.#.#.#.#.###.#.###.#.#.#.#####.###.#.#.###.#.#.#########.#.#####.#.#.###.#.###.#.###.#.#.#.#.###.###########
+#.............#.###.#...#.#.#.#.#.#.#.#.#...#.#...#...#.#...#...#...#.#.###...#...#...#...#.#...#.#...#...#...#.#...#...#.#.#...#...###...###
+#.#############.###.#.#.#.#.#.#.#.#.#.#.###.#.###.#####.###.#.###.###.#.#########.#.#.#.###.#.#.#.#####.#####.#.###.#####.#.###.###.###.#.###
+#.......#.....#.#...#.#...#.#.#.#.#.#.#.#...#.#...###...#...#...#...#.#.#.........#.#.#...#...#...#.....#...#.#...#...###.#.###...#.....#...#
+#######.#.###.#.#.###.#####.#.#.#.#.#.#.#.###.#.#####.###.#####.###.#.#.#.#########.#.###.#########.#####.#.#.###.###.###.#.#####.#########.#
+#.....#...#...#.#...#...###.#.#...#.#.#.#.#...#.....#...#...###.#...#...#...#.......#...#...#.......#...#.#...###.....#...#.....#.#...#...#.#
+#.###.#####.###.###.###.###.#.#####.#.#.#.#.#######.###.###.###.#.#########.#.#########.###.#.#######.#.#.#############.#######.#.#.#.#.#.#.#
+#...#.#...#...#.#...#...#...#...#...#.#.#.#.#...#...#...#...#...#.........#.#.#.........#...#.....#...#...#...#...#.....#...#...#.#.#.#.#.#.#
+###.#.#.#.###.#.#.###.###.#####.#.###.#.#.#.#.#.#.###.###.###.###########.#.#.#.#########.#######.#.#######.#.#.#.#.#####.#.#.###.#.#.#.#.#.#
+#...#...#.....#.#.....###...#...#.#...#.#.#.#.#...###...#...#.#...#...#...#...#...#.....#...#.....#.........#...#.#...#...#.#.###.#.#.#.#.#.#
+#.#############.###########.#.###.#.###.#.#.#.#########.###.#.#.#.#.#.#.#########.#.###.###.#.###################.###.#.###.#.###.#.#.#.#.#.#
+#.#...#.....#...#...........#.#...#...#.#.#.#.#.........#...#.#.#.#.#.#.........#.#.#...#...#.#.....#...#...#...#.#...#...#.#...#.#.#.#.#.#.#
+#.#.#.#.###.#.###.###########.#.#####.#.#.#.#.#.#########.###.#.#.#.#.#########.#.#.#.###.###.#.###.#.#.#.#.#.#.#.#.#####.#.###.#.#.#.#.#.#.#
+#...#...###...###.............#.......#...#...#...........###...#...#...........#...#.....###...###...#...#...#...#.......#.....#...#...#...#
+#############################################################################################################################################
diff --git a/src/main.rs b/src/main.rs
index a4c1e1c..060b707 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -36,41 +36,51 @@ extern crate test;
pub mod util;
pub use util::prelude::*;
-const WIDTH: usize = 71;
+const SIZE: usize = 141;
pub unsafe fn run(x: &str) -> impl Display {
- let mut i = x.as_bytes();
- let towels = i
- .take_line()
- .ψ()
- .to_vec()
- .leak()
- .split(|x| *x == b',')
- .map(|x| x.trim_ascii())
- .collect_vec()
- .leak();
- i.take_line();
-
- i.行()
- .map(|x| {
- fn ck(x: &'static [u8], towels: &'static [&[u8]]) -> usize {
- util::memoize! {
- |(x, towels) in (&[u8], &[&[u8]])| -> usize {
- if let [] = x {
- return 1;
- }
- towels
- .iter()
- .filter(|&&y| x.starts_with(y))
- .map(|y| ck(&x[y.len()..], towels))
- .sum::<usize>()
- };
- (x, towels)
- }
+ let i = x.as_bytes();
+ let g = i.as_chunks_unchecked::<{ SIZE + 1 }>();
+ let start = memchr::memchr(b'S', i).ψ();
+ let (y, x) = (start / (SIZE + 1), start % (SIZE + 1));
+ let mut cost = [[0; SIZE]; SIZE];
+ let base = pathfinding::directed::bfs::bfs(
+ &(x, y),
+ |&p| {
+ [Dir::N + p, Dir::E + p, Dir::S + p, Dir::W + p]
+ .into_iter()
+ .filter(|&(x, y)| g[y][x] != b'#')
+ },
+ |&(x, y)| g[y][x] == b'E',
+ )
+ .unwrap();
+ let n = base.len() as u32;
+ for (&(x, y), i) in base.iter().ι::<u32>() {
+ cost[y][x] = i;
+ }
+ let dst = n - 1;
+ let mut sum = 0;
+ for (x, y) in (0..SIZE)
+ .flat_map(|y| (0..SIZE).map(move |x| (x, y)))
+ .filter(|&(x, y)| g[y][x] != b'#')
+ {
+ for (y_offset, x_offset) in include!("../offsets") {
+ let (x2, y2) = (
+ (x as i32 + x_offset) as usize,
+ (y as i32 + y_offset) as usize,
+ );
+ if x2 < SIZE
+ && y2 < SIZE
+ && ((cost[y][x] + n - cost[y2][x2] - 1
+ + x_offset.abs() as u32
+ + y_offset.abs() as u32)
+ + 100)
+ <= dst
+ {
+ sum += 1;
}
-
- ck(x.to_vec().leak(), towels)
- })
- .sum::<usize>()
+ }
+ }
+ return sum;
}
fn main() {
diff --git a/src/util.rs b/src/util.rs
index 4fbb7a9..5cd3273 100644
--- a/src/util.rs
+++ b/src/util.rs
@@ -257,6 +257,7 @@ pub trait UnsoundUtilities<T> {
}
impl<T> UnsoundUtilities<T> for Option<T> {
+ #[cfg_attr(debug_assertions, track_caller)]
fn ψ(self) -> T {
if cfg!(debug_assertions) && self.is_none() {
panic!();
@@ -481,6 +482,7 @@ pub fn dijkstra<N: Debug + Eq + Hash + Copy + Ord, I: Iterator<Item = (N, u16)>>
if s.contains(&n) {
continue;
}
+ // print!("{n:?} ");
q.push(Reverse((c + d, n)));
}
}