heh
| -rw-r--r-- | offsets | 1 | ||||
| -rw-r--r-- | p1 | 1 | ||||
| -rw-r--r-- | src/inp.txt | 543 | ||||
| -rw-r--r-- | src/main.rs | 76 | ||||
| -rw-r--r-- | src/util.rs | 2 |
5 files changed, 188 insertions, 435 deletions
@@ -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 @@ -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))); } } |