From 4883d14242abe3fa13810f432c10921658db071f Mon Sep 17 00:00:00 2001 From: narimiran Date: Thu, 19 Dec 2024 16:05:16 +0100 Subject: [PATCH] day 19 --- clojure/day19.clj | 134 ++++++++++ clojure/tests/solutions_tests.clj | 3 +- index.md | 1 + inputs/19.txt | 402 ++++++++++++++++++++++++++++++ inputs/19_test.txt | 10 + 5 files changed, 549 insertions(+), 1 deletion(-) create mode 100644 clojure/day19.clj create mode 100644 inputs/19.txt create mode 100644 inputs/19_test.txt diff --git a/clojure/day19.clj b/clojure/day19.clj new file mode 100644 index 0000000..b6302ce --- /dev/null +++ b/clojure/day19.clj @@ -0,0 +1,134 @@ +^{:nextjournal.clerk/visibility {:code :hide :result :hide}} +(ns day19 + {:nextjournal.clerk/auto-expand-results? true + :nextjournal.clerk/toc :collapsed} + (:require + aoc + [clojure.string :as str])) + + +;; # Day 19: Linen Layout +;; +;; Today we're at the hot sprins on Gear Island. +;; We are given a list of towel patterns (first line of the input) and +;; a list of desired designs. +;; It looks like this: +;; +(def example "r, wr, b, g, bwu, rb, gb, br + +brwrr +bggr +gbbr +rrbgbr +ubwu +bwurrg +brgr +bbrgwb") + + +;; ## Input parsing +;; +;; From the first line we need to extract the patterns, which are separated +;; by `, ` (comma, space). +;; The designs are each on their own line, nothing to do there: +;; +(defn parse-data [input] + (let [[[patterns] designs] (aoc/parse-paragraphs input)] + [(str/split patterns #", ") + designs])) + +(def example-data (parse-data example)) +(def data (parse-data (aoc/read-input 19))) + + + + + + + +;; ## Solution +;; +;; Both parts share 99% of the same logic, so we'll write a solution that +;; works on both parts. +;; +;; For each design we need to check if it can be created from the provided +;; patterns (Part 1) and how many different ways there are to create +;; it (Part 2). +;; +;; The idea is to check each design recursively. +;; We start with a complete design (e.g. `abcdef`), then we `filter` the +;; list of patterns to keep only those that the design `starts-with?`. +;; +(defn valid-patterns [patterns design] + (filter #(str/starts-with? design %) patterns)) + +(valid-patterns ["a" "ab" "b" "bc"] "abcdef") + + + +;; We check the remaining part of the design +;; (e.g. if a pattern was `ab`, we now check `cdef`) recursively.\ +;; If we have come to the end of a design (i.e. the design is `empty?`), it +;; means that we found a successful way to create a design. +;; +;; We will encounter the same part of a design multiple times (we can reach +;; it with different pattern combinations, e.g. we reach `cdef` either +;; by matching either the `ab` pattern or by matching +;; "first `a` then `b`" patterns). +;; There's no need to repeatedly check if it'll be successful: we've already +;; calculated it before. +;; +;; To keep a cache of already seen situations, we will use the +;; [`memoize` function](https://clojuredocs.org/clojure.core/memoize). +;; +(def count-ways + (memoize + (fn [patterns design] + (if (empty? design) + 1 + (->> design + (valid-patterns patterns) + (aoc/sum-map (fn [valid-patt] + (count-ways patterns + (subs design (count valid-patt)))))))))) + + + +;; Once we get all the ways each design can be created, for Part 1 we +;; need to count only those which have at least one (`pos?`) way to be created, +;; and for Part 2 we're interested in the total number of all possible ways +;; to create the designs. +;; +(defn solve [[patterns designs]] + (let [possible-designs (mapv #(count-ways patterns %) designs)] + [(aoc/count-if pos? possible-designs) + (reduce + possible-designs)])) + + +(solve example-data) +(solve data) + + + + + +;; ## Conclusion +;; +;; Another suspiciously easy task, less than a week until the end. +;; That's now two easy ones in a row. +;; I'm afraid of what will this weekend bring. +;; +;; Today's highlight: +;; - `memoize`: cache results of a function +;; - `subs`: create a substring + + + + + + + +^{:nextjournal.clerk/visibility {:code :hide :result :hide}} +(defn -main [input] + (let [data (parse-data input)] + (solve data))) diff --git a/clojure/tests/solutions_tests.clj b/clojure/tests/solutions_tests.clj index 8bf08a3..f1d5e48 100644 --- a/clojure/tests/solutions_tests.clj +++ b/clojure/tests/solutions_tests.clj @@ -3,7 +3,7 @@ day01 day02 day03 day04 day05 day06 day07 day08 day09 day10 day11 day12 day13 day14 day15 - day16 day17 day18 ;day19 day20 + day16 day17 day18 day19 ;day20 ;; day21 day22 day23 day24 day25 [clojure.test :refer [deftest is run-tests successful?]])) @@ -41,6 +41,7 @@ (check-day 16 [7036 45] [79404 451]) (check-day 17 nil ["7,4,2,0,5,0,5,3,7" 202991746427434]) (check-day 18 nil [384 "36,10"]) +(check-day 19 [6 16] [240 848076019766013]) (let [summary (run-tests)] diff --git a/index.md b/index.md index c139b81..0d77efe 100644 --- a/index.md +++ b/index.md @@ -71,4 +71,5 @@ Task | Notebo [Day 16: Reindeer Maze](https://adventofcode.com/2024/day/16) | [day16.clj](clojure/day16) | viz | Dijkstra. [Day 17: Chronospatial Computer](https://adventofcode.com/2024/day/17) | [day17.clj](clojure/day17) | bench | Intcode meets Assembunny. [Day 18: RAM Run](https://adventofcode.com/2024/day/18) | [day18.clj](clojure/day18) | viz | [aMaze](https://narimiran.github.io/amaze/) :) +[Day 19: Linen Layout](https://adventofcode.com/2024/day/19) | [day19.clj](clojure/day19) | | Another easy one. diff --git a/inputs/19.txt b/inputs/19.txt new file mode 100644 index 0000000..22db286 --- /dev/null +++ b/inputs/19.txt @@ -0,0 +1,402 @@ +grrg, buwuurr, w, bguwu, uuuu, wr, wuw, brbug, buwrg, wwr, uwr, buu, gurw, ubrgg, wggww, urgbr, wur, urur, wguw, buurb, ugbrwwb, gbr, gb, wurww, wgruw, rrwgbur, wrg, wru, urr, wwbgru, bb, rrr, gwurbgb, bgguur, rurru, rwggru, uwbuwbr, rwww, grbbrr, uuw, ubgwu, rwrrr, rwgrbu, rbu, ub, buubgrr, ruu, rggwgr, bgwgwu, wuwgbg, bgugg, bbb, gbwur, buwrubb, uwgr, grrggug, brgu, ubg, ggur, uuwr, gbuu, bwwgrb, wbu, bbrbb, ubbrr, rrwrggb, urbu, ubrb, grb, brww, uuu, uuwg, bbwr, wwgg, buwubg, gwuuru, bguugrwu, rwwugr, rwru, rwwwwg, bgug, urru, bwuug, bugrr, wggr, buw, gub, gwgrgg, brugwg, wug, grbrw, bgbbb, ubwrg, rubr, grrubug, rubuugwr, gbgw, rwgwgg, ubw, bwbwwrb, brbwg, gbgg, rgwrur, guwg, grg, rwwubg, ugu, urbwrg, urg, gugbwbr, gwg, gbg, rruwug, wuwwug, gwgbg, wuuubu, rwuwbb, urrwur, rrgbubw, rub, rgr, uuuww, wrgu, ggg, brwb, rgrwg, bwr, ugwggwb, wggbguw, rwwgb, ubr, gbwg, rubug, bwg, bru, uwu, wbwggbr, ggu, guuub, uur, bww, ruguwgg, wbwrb, brwg, rrw, r, wgrb, ggrb, uwb, uuugbbr, brubb, bggb, urwubrgg, bgbw, rbgrrrgg, ubbg, rww, uuruggrw, rugw, uug, bgbgr, uwrb, wg, gubr, wbb, gwr, wwrw, wu, wwrgu, ugrrgu, bbguu, uwwwg, rrg, uuuwgu, grbbuwg, gguu, gugg, gurg, bgg, bug, ugb, rwr, wgbbg, gwgwuu, wuwbbbw, wgbr, wuggur, gwgr, bbuubuww, uub, br, bggwu, brg, rbg, rwb, brwwwg, ruwrg, wbr, ubwwww, gbww, rbww, rwuwbu, wbuburw, rrgg, uugbub, urrbb, wwgrb, wrub, guu, rgugb, wrubu, rbwgwg, gbgwubr, uwbrbu, wuru, rbbgu, wwg, rbguugr, brb, wbgbrr, guw, rguw, rbrgub, bgu, gurrrg, ggrbg, guwr, bwbb, wbgg, ugggb, rrrbggb, rurg, gug, rwg, urrrb, wbubg, wrbbubw, bwgu, bwurw, urrg, gbw, rrbr, rbrg, brwbww, rbgb, uurb, bwwgwgrg, wrwbuu, bwbgw, rug, ww, grr, rg, rbwbrbrr, rgrg, wwb, rurr, ubwu, rgu, www, gbb, bbw, rbw, gbgbwbw, ur, gguwuggr, gru, uru, rbuw, rrbgr, wuu, wgg, bg, wbuu, rwbggb, uggbg, gbu, bbgruuuw, rb, rggb, ubbuub, ruwubgbr, bub, guuru, ugg, uuggbuw, rbuur, gbrw, gu, wbuugwr, ubb, urbuuwu, wrgub, rwu, uuww, wgwgbg, uww, rwwb, rbbubggg, bgb, rrwuwwg, ubugw, brw, gww, bgr, rbur, rr, buwg, wub, wbwwuu, wuruuwr, wbur, rgbwu, rbgwurg, uwg, uwrrg, bruuw, rgg, gubu, bbbubbb, bgrw, urb, wgw, rrgwu, wubbgr, bbr, bwuwu, rbbu, rrb, wuuwggww, ubwg, uwgub, bgubgru, rwubu, wuwgbgg, ggb, g, bbrwrgwu, wbg, wwru, rbwugr, urwwuu, wwwgug, gbur, bbggw, gwbrru, wrbr, ggr, ubu, gbwugw, u, grur, rgub, bggr, bwrw, wurb, ggggw, gwurrwrw, bgrubw, wgr, rrbrrwb, urwbubgr, grw, rgw, bbrbr, urbrr, brrbruuu, uwbbw, rur, ggw, ruw, uu, ubrw, rurgb, gbrr, gwwbu, ugr, brwubuub, bwb, wuugr, wrrub, uugrbr, bgwr, gwu, gwbw, wbru, gwb, rgrwur, wrwur, bw, bbu, wwu, uwwb, gbbb, grrb, uwuwbwrw, gur, rgbbu, gbwbgg, bbrur, gw, ru, guwwbr, wgubb, ggug, ugw, wwgwugg, wgrw, grrw, uuggb, rwbgbr, wrb, wbw, bbg, rw, uwgbgu, bwgw, gr, rgwb, rbr, rugubb, gwuggbb, ruww, bwu, rwuggr, bubrb, rbbub, uggr, brwugur, wgu, bbwb, gbwbu, rwbubu, ug, wb, rrruu, bwbbrb, rbb, uwwgu, bgw, rwwr, urw, wgb, gg, bruwrbr, uugwgbgu, rru + +burwurwrwgwbrbggruuuwwwuwuurgubwwguburrgbwgwbw +wgbgguwrrwrgwurrwrwrburrugrwgubruugbwgbruubuugrwwwrbw +buruggbwgrbwbrbrrrururbwrbburwuwwbrubrbgwgurrguggruubururr +wgwbwuuuwrwrrwbrbgugwbuwuubrurrgbbbgrurwuuwgbuwburbbgbg +uwwwurgwrwbguurgggrgbrwbwurrrwgbuwbuwrrrwwggwuwggggr +urgwguwgbrbbwwubwbguuwbrbugwrbwbrrrbgrgrubrwubb +gruuwrrgwbwubugburwwguugbuubwbbwurbwgggbgwruwwg +ggbgbubwggwuuuwgggguwuggrgwuggurrbwuuwgbuurgbwwbbwrggwgg +bwrbubguruubbrgbrwwbgggrrrubbuururrgbguugrurgrwguuwggbww +burrguubuwwgurbbggrrrgbuwrwbwwubbbgbgugbwbu +bwbbbgwgurgwgbbwwggbwbwrrwbwuuugugguuwrwwgwbruuwubw +uwbbwrbwwuwguwubbrgrbbugwrwuwuggggrwgbuwurbuuuwbbuuwbrb +burrrurwbrwgrguuurbbgwgbugwwuwrrgugrbwrwuwbbwwgruurrub +guwubuurbruuwbbuburrrgubbrbwbgggbrrbgbrubgbrgwwbr +burrruguugbgurgbrruubgwgwrbbgruwwbbrwrwbgwbw +burgruwrgwwrubugwbwgrugggwuurwgbgguguwbubwrgw +burgbrbuugbwwbbrgbgwrgrgrwwwrurbbgwbggwggurrbb +burgurubbuuruubbwgbbbruwuugbgbrggrbugbugbwrrgbrwbwbgrbugru +rgwuurgbubbuwrggwbbrwrgggrggrgwgugwwwuugug +burwurgguugubgbruugbrrwrugbwrrgguwrrwburgggbwbggwgugu +buuburuwuuuuguugbbwrbwbbbbbwgwruwrguugugwgubruburwbr +wwurggwbgwrrrbururuwggguwruwwrwbgubgwbrwbb +wwgbwwgrwbugbgwbrwwubwrbgwwbbrrwugrururbwrrw +grwwbgrrrubgbbuwgrburbgwbbwbubbwruurubuugg +rrwrbbubrrubuwggwbwgwwwbgugwbgbuuwwguurbgbbbggbbr +wuwbbwggwrbwrrwrbwbwbrbbggggbwgrbbgurwwbbruru +buruwwwbggwrwwrwrrwbrwuugggwgbwgbggugbggbruugrr +rbwuuwbwrurbbuwruuwuuuuwwbbugburugwbubrwgurwg +burgrgrrgwgbbuwgrbrgwbwgwrwubwwwgugwwrrwuurbugwwub +grwggggggwbuwurruwgbbwrguuwbrrrgrwrwgrgrwggwwbwwuubgrrgbb +uwurrwrwrbuuuurubwwguwwgbrwwugbuugrgwurbrgbugrruwwburr +wgwbwwrwbwurwwrggurgggrwggrurbggbwrwrgwbubuwbbwwub +burwubwugrguwggbgwgbuubguwgrgwbbwrbrubggrurwbuugub +bururwbubgrrubbbwubrwwgwruwgruwurguguwurrrburrurbguu +rrbwwuguwgrrgrubggwrrgwbwbrubgruwgrrbwbrbbrguuwrgbwrwurwrb +burbwggbgbwrruwrgrrgwgguwugwgrrrggruwbuuwurbwwwgrww +wwgwurwuwbgguubbbgurwburgubgbwwubwrbugubwgwggwwgrwwu +bruwbgubwbbwrrbggrrrrbguwggwwbggugbwrwwrwbbbbwuruuuuubg +rrurgrrrwbgbubbgbugbgggwwwrggbgubgrwbwgbguugrb +gwggrbwrbgwrwgbugbgwrbwbrbrrugbggbbggguguuwbbbwwwgug +burgrbrurwwggrgbgrrgwurbgruurwbbgwbguwrgrwrwb +bbwbwuwggwwbrugwurbruruguubwrwgggwgrbbuwgggrbbbu +rgrgugbuugbwrwbwwbururuwwgubbgburuwrrwrrwbb +gurbgrruwwrwwbgwugrwubrbgugwgugrrbbbwwbwwurgu +burwuuguggwbwrbuuuwbwuwgbbrgbwwrgbbubgrgbrurg +rbrrrgwwugruuburrwbggggbwrbubggrggugbbuwrwu +bbrrbwwurbgrgrwwrgwbrugggruuubbggruwwurrwuwbwbbwwwwggrgg +wguuuwgwwgbggbgubwbuwrbrrurubrgrrburruwbrgrwubgbuuburbw +uuburburbwururruwbugbwgrgrwgrugwgwgrgwwurbrr +burgbgggubwgubbgrwwwgwwrwbrwgwrwwrgrwrrwguwugggbgguwb +bwwuuurbbwwwgbbwgubgbbbbuubuwwgrgrurbwwbrbgruuwbbbwrgbrr +gubggwrbuubrgwurguwbbgwubrrruruurrbubrbwwuuwuwrbuw +ubwwuwrwgrgrgwrugurrbwggubuguggggbggggwbrrgguuguubguurwrbg +buruuuwuubbggubuguwggguuubbgrgrrurwubrrwbwugwrrwrbw +urgguubbrgguugbrrwrrbrwwuwwuwgurwuwbbwwbwwbrrurbburbrb +burururbwbrurbwurbgrrrgguuuguuwwgggwuuwbwuubwbwbrugggwb +burwrwgruuugugugbwgurwubugbwrbburrgruggbwugggbrrwrguggr +wbubwuurugruwruuwbbbgbgwrbuwugbugrrgrburbbubbbubbrug +wgwbuggubguuugguwbwbuurwbgrrgrurwbbwwgubrwwwrrgubg +uubruwuuguwwbgbgwurwurwugbwwwbuuguggwggbggwbbwgbwr +gbbgwbwgwrburwwwguguuwwrbwrbwuwgggbuguwugbwwrrrgw +uuwwbwwwbwbrbuburbugbwugrrguwgrgwgwrbuugbguuwbrrubwurrugr +wurwuuwbuuubbbwbbuwrgwuwrggurwrrgubgrgbugbruwggbwwubrww +bggruuuwbbbuggguwrgrrrggwbrrgwbwugubwurgbgrbrbubbuu +burbgwrbwbwurwwgbgwuwrrwgwgburgbwrurbrgugugg +uuwgbwgbwrgbbugwrrwwwguwrwrurwurwugbuuwugr +rggruwwrugurwgugwguwgrrwurrbgbwwwgubgubwuwg +buruuwrubrurrbwgrrwgwguuwrwrgggbuuuuuwwuuwuggwgrrwbgubgrwbw +burgwruwwgwrgwubbgrwrgbgwwbgrugbwrrrbrwbbguugwgbguu +gwrrwrwwrrbuwwuwbguwurwwgbgrwbrwrwwbugrwuuubuw +wuggrrrggrgwubbwrwgbrbwgbgwuwwurguwruubbwurrrwrgurb +burubruurbrbgrwuwwugrwuuwwgurugbrwwbrwrgrb +burggbubrrrruggwbgbwubuuwurgrbguwubggwrwbgwugrruwguw +wbwgwuwrbgwrbrwgggwgrbgguwwgururrbuguuubwuurggrbwbrbwbuw +burubwrwguguurbbgbuugurgubburubwwwggrgwwrubrwuuuubgu +bbbrwrgwuwruuwrwgrgrwrubggugwwbbwuuubbgbgwrbu +rruggbgwwugbrgrguwuwbrrbruuuuuubrguwwbbwbwb +bwbgrburwrrwgubgwubwuwuwrgrbwgwuuuuuwrgbuw +burruwubuuruggrwrgrwgburbwubburburrurrgbbwu +burururwuuwrbrggwgguubwgrbrurrrggbrubgwwugrbugg +gwugrgugwwggbgwrgrwgrrwbuguggrgbrgbburgugrbrbw +bwrrubuuwubrwgruguwwuwruguwurrugbrgurgurrbbwuwwwwruu +burwwggubbwurrgruugggububbrgwbrrrruubbbbwgu +gbgbwbrgrgrrrgwrbwrubbrgwguguurrbbrbuugrrggrwggbwrgu +wwrwubburruwurugbggrbwwubruruuwbuurbgwwurbwgwuurrgr +wgubrrrbrubrbgwrwbuuwwbgwruwwruurbbwrrwgwruubw +gbugbrwgbbrbgruuuubbggrgwbubrbugbbrbuurbugrww +rwwggugguuguurubwgrwrgrbrrurbwuurwrbbbwrbwgrruwguggbgrb +bwrrgwbbwrggrgurrwbwbubgbugwbwwgugwgwbuggbwrw +rwwggwrrubwuurgwgbwwurubgwggwbuubwwguuubuu +rggbgbbgrburrggbuwruwbwbbbgwgubuwuubgbbuuurrwrbwbrrwbu +wwgrwrurwuwgggggbwbbrrgrrrggbgubgwwwwubbwrgwgugg +ubgrgububburrgbrrwwururwwggwrwrbwgwgurgbwbgggrgwbwrrrbubgr +ggbbgwbrwuguwrgbwwuwgugbrbbwgubwwuwbwgrggwrurwbwwubwrb +ubwwwrwrugrrgbbugrbwbbrgwrurbrugwwwubwggrbbrrbgbrrgrww +ggguurrrwrruwrwrrwwuuwbbubuwwurgrrwggbwbburguwrgbwr +burwwwbubruwbwrbgrwwrgbrruuguwubwrggwwbwwwruuug +rwubrurbubgwwwwbuwbggbgwuubwbwwrrruwbrrrbwr +rwruwwwuwwbwrbbbuwrrwurgurggwgrgubbrrwgurguwbgbbbwuwugurwu +brwbuuwrrbgrwbrrrbwbwbrbrugugrrrgbwruwrubggr +wurrbbgruuwugrwbgrbwgggbbruuuruuubrggubrbrbgwbrrwggg +wwuubrwrrrrrrbwrrbbrgwuuwbbbgurguruguuggwurbggwwbr +burggubgugbwwbgwwgubgbrruwwruuruuuwwubgrwwrgr +bbbuwrrrurbuwwuurbbububbbrrwwuwgggrrubrrwwrbgg +guububuwuubwwwwbuwwbgwwuwggbbburruguwgwgbu +burbubbgguwrwrruuwrbruurbbugwwwuwuugwguwruggggggwwbwwgrg +burrrbbgrbbbwwwrburbrwubuubbuuurggurgwggruwgbrbrrbugrrbugu +bruubgwrrwwubrwugrgbubbrubggbbrurubggruggbgggw +burrrrugwggwwwguugrbrbgwrugugwugwuurgbwgruggwbwwrg +burggruuwgburrbwwgwgugurbrwgbugwubuwwburwbwggugguguwbuwub +burwugubwrubgubwwuwuuwbbwwwugguugwwwrwuurrgugwbggg +rwubggbwrgubggrbguubwbguguurwgbwbugrwbuuwurbw +burwgwwbuurbwbbrbrurwbbrgwruwurgwubgwwwwwrggguwuggrrgwuw +gbubgwrurwrrggrwurbrrrgbwwuruuurgwuurbwgwwguurrgbu +bururuwrgrwubbrbgrubgrubwbwrgwbbubrrbwbwbgrwurgbwwgbw +burruwwrbbgbguuwbugwwrbwbgurrgburgubwwgbuu +uubwgurwwubrwgurggurbugbwbgrwggrgwbugggwwbguwugrwuuwrrrbu +bugburuwgurrrrrbruuugurbbgubguwuuuuubbwbbwgrrwwuwbgw +burrwurggrbwurbwwgrbbwrbwwrgwugurwwrrbuubwwrbugbruug +rbwbrbrgguruurgruwrbgbwruurrwugrububrrrwbwbuu +rgwbwburbwrwwwwuurwggwbwgubwuugubwurgrwbrrwruwwgr +buruuwrwwuwwwrggrbguwwbuuuwburgrwrrrrrwg +ugrguuwrwbbugbguuruwbrbwggwuwuwbgbrwbgwuggwuwgwwbwbuubuubu +burbggguubrwwuubugwbwwgwgwuurbburbuurbwguugururgwbg +burbgbwwrrrgrgbuwbguugwwggggbbrbgwrwuuugggwrguruuwwbrwg +rgwrugurbwgbbgugrwuguuruurbbbubuwgbggrwuugubwbwbu +burwurggrwbrrwbgrubwwrbrwuwugbwrbrwuurgubrbuwubwbrrgu +rurburwbgwbwuubggrbuurbbubgggrugburrgggguuwurbw +urbggrrwbgugwbbgubbrwugwrgubuwwbgbuwrgguugbrggrbuuw +rguwbgwwubbrbwuubgbbbgrurrrubbrwrbgruwwuwgwr +burugggwbbbrbrgurrbruguwrgwwgubrubruggwrwbbbbbwrgwwugrrb +bgbgrgggwggwugrrugbrbrbbuwruurrbrrgurubgwwrruwgbgbuugwubg +burgwbrgrrruubwrugwuuugguruuwruruburgbwrgbwrruwr +burbuwrgwbuuwwwggwwgbwgurubugurrgubgrrgbgbwrwwrwrgwbgubr +wrurwwubwurgrbgbwururruuuwrwggruruuwuwwwgwuwggwgrgbrbrrwwu +bwuwubwwugbwwuwbwugwurwbgubrwrurwgguubwgwwg +bugburgrrgwwgwgurgugwwruwubwwubbrugwbbgubbuuugruu +uuubbbbgguurgbubruwuggwbguggbuuruggrwwgwbub +wwuwruwrwgbwbgbwuwbbgrbwrwgugrrwbrrbwwgwbgbbgbrwu +brburubggrubrgurubrbrrubgubwugrbrwgugwuuuw +wbruwwwwbwwwuuguwururgurwbbwuuurgguuurrurwuugwbgruuwugbwg +gwbwrgbgruuwuwrgrwbwrurwbbbugwugwguwbbgbbbrwwugbrgru +gwrwgbwuwbbbrgurwbubgruugbbrbgbrwbgwurrwugwgwguw +ggurrgwbguuuurgrrwrwgggbgwbwgbgrbuuwuuwuwgbrru +burruurgbgrrwbguruwgwbrbubguwurbbwubbrrrwruwwrrbbb +burwrbwuuwurwrrwwgwgururuurggugwbuggggrwrbubrbbuuuwwwgugb +bguwrwgrbgugwuugruggruwwbrgubwubugwrburgbugugrbr +bururggrbwwbgrwuuwubuwugbbwgbugugrrwbggrgbugrbg +bbgugbwurrgwbuwgbwugruurgrrbbgbwwrrrwbwugggr +rrbuuurrwguwrwubgubrwgbguuwbubbbuwgbuwgrbrugbuwubrwurw +buwbrgggbbgurggbruwrwwgbwruubuubrruwwgubggrwrg +ggwbruggurwuwggugbburbuwuuggwururwbwubrugbrbbwbguwrbb +guugwgbguggbbbggrrgrrgbrggururwububgurgwuwuuggggbbrb +burubgubwbrwuwwwbwbbrrgrguurgbuwuwuuuwrbggrbwurugbgug +burbgbwbubbubwuwwwbrgbugbbgruwgugugrbubwrgwwwurbggugwubu +burrgugugwgrrbrurbbubgggbrgbubrbbgbgburwgguug +burwbugbwurugguwbwbwbubwgugggburugbrrbgrubbwrbu +uggbubgubbwwurwbrwgrbwruubwuuubgwuuuubrurbuuw +rwrgbruggruwubggrbrbburuwuwgbbgbrurggrgbugrwur +burrwrggrgwrrgbbwguubgrwubguwgbgwwggwgubrbwrugwgrubwgwwurrru +burrggbruguugrbuwwubruggwwgbruwwrbgugbuuuruubgrwrrwg +burugwrubgubuubwrbgwwwrwgrwwgugbrbgbrgrrg +bggrwuuwggwwwbubgwbbgwwruuguuwguuuubrrwurrgb +burbbugrgrwbgrurrrbwbwburbburwuwuuwgrbruurubbruguwwwrugr +burrgbwubgrwuuwwrugwwuububrbubggugwgbubrrburbwbrrubuugggg +buuburgrggwwgruwuwbubbuggwbrwrwrrburwrrwwbbbbggg +ugruuruwwgwguggubuuwrubwuuguwgrbuubrggwbbbggbuubgubgrwbub +burbrrwbgggwuguurwwgwurwbbbgrrrwubbwwruwrgbr +rwurggrbrwwuwgggbgruubuwbwrgbgbgrbwwugugruubb +gwrbwugurrrbgwuruwbggrrwwbbubbwrburgwrburruuwbuw +uwggrbbwrrwwrwuwbugwrgwwgrrbgrbrrurubuuwgbuw +wbwubbbwubgwugggwwwrbggwrwwggubuwburbggubbww +gwgrrwrggbwgurrwrrgggrgbbwwrubrwwwrbwbwbwwgbburrwuuururgwu +wrwgubbwuugguurwgggwrgbwwrrgruwruwuubrruuubwggrubb +bgbwuuuwwwggwbrurbgbwrrubwruwuuggbbgrubwuubwuggwruuurgrug +wwrurrrgrbgbwuwuubruwrwuggrwwgrrruugguuubwwgrgbrgr +burguwbgbbgggbrwuwbrrbbguuugurbugbuubgwrgruurgbrwwbbwu +burwgrrwrrwwwrbggggugwrbwuuuugwwubuuwwub +wrbbgwuwbbrwrbuwwrbbbbburgwwurwugrrwubrurubbwugggb +burwrubuurbwggrwugrurrgrrrubuugwrgwugwugwgbbgwuwrwggwur +burbugrrgrgwbuuuuuugbbwrwgugwuruuggwurguggrwbwb +wuruuurgwuwrubwgwbguubbwrbwubuuwwbwgrwubuwuggwgwgbwgrgg +urrruwugwubwbgbbuggguwggbuwrurrggwwwbruubuw +rrwuwugbubgrbwubgrbuubbbbgubwgwrurwgrrubrwubuubgrwwg +rgbuugwgggwgwrrbgbwurggwgbuuugrwuuugguwwwwbrruwguuwww +burrubrrbuwbrrwwgrwbubgrrwubwbbbgrgbggwwgururrgubuwwgurbburu +wrwrgwwrgrubwwwrggwgbwgrwwugugugwgrubrggrgubwwrgrbg +burgbubggruwbuubbrburbgrrwugrbrrrrgrwwgrbrbur +burrwbrrgbbwruwubwrwwuuburubbwrbwwrbrwgwgbugrr +brubrburguggbgggbgurbrwrggwwggbbwwubrbbrgggwgbwgbgwgggu +gwuwbbrgrwrrggugbbbbrbrrubgurwubbwwbwwrwbuwwrwuggwrwbu +brgbubgbguurubgbgrwrgbwrgwrrrbrrwubbbbgrrrubugrwuuugubgu +burwruguwbbgubbbwgwgwbbugwurwbugwgggwbgugbggbggbwbbrggug +wgwuugrruwrggubbbwugwrwbbggbbbgrwbwubggwbwguwwbwruw +gbuwgwbuwggggwgbwgrggggbrwubbggwwbrbbbggugubrwrw +wugrrbwbbgrrbgrgbrurwburgwrruuwwwrrwububwggrrrrrrbgwuguu +grrubwurrwugrrwugububuuurwbbrbwubwbuuwrwrugurbggrwrrw +wbwrwgwwwbuggrubgwbuuuwbuwrwrbuubuguuubrwuugrbrrruwr +wrwuurwugbgwruugwuubguwrrwrubrruwbggbururwubrggwbggr +wbrgurbubrwbbruuggwgbuggugggbgbuubrrbrbgwbrbbbbruugwrgurur +wgububruguwwbbrwgubwguwwrwbbbgrgrurguguwbugbwugwrbuuurw +brbuubbwwrgugrwwrbwwurrrbugbwrwbwrububuwrbuuurwb +burrrguwgbggbggwbgguggwwbguuwwwbuuubrgrgb +rbubuuwrburrwgbwrbrrwugwwrgrwwgrguubuwrrrrgbwbgbwuuug +burbwgwbbggbwurgrugwuggubbwbbuggrgwruwwugbru +buuugrbuurgugbrwgguuruuugbbrwggugrgbwurbrwbwwug +bgwgbbruubrurrrwbuurwguuuuugrrwrbuurubgguwwwrbbuuwbrwbrwgr +rguguwwwbrgrgwggwuuuuwburgbuuwwuugrwurbgbrwbrrgbwgb +rgbbwubruuwrrwwgbbbuuruurbrrwrrbwbgurbwugr +wurbwrbgrubrrbbwuuwuwbruuwwbuurwuugguguwuruuwbwg +buruwbbrbbrwrbbgrburwbbrgruurwbrgwuwbburgugbugwrburruu +wgrrrubggwgwwurrrbrwwuurgwuruwurwggbggubgwrur +rurwbrguggwwrwgggbwugbubuurwbruuwbbwugrgubbuuuwrrgb +rugwgwwggwwwwwbbuwrggruwbbguuwubwbbrbrguwrrwruurggbwuwurg +uwurburbrrrwruugrgburrugrrgggbbgrbubrrbwgbwbug +bgwgwbrbwburgbbruwwrrrurugbwwbwwbbrgruugrwg +ggwurggwurrrwugwrrbgbrwguguuurubwuwbrwuwuruguguuuwu +burggggrgrurbgugwrbbbbgrbbwbwwrggrgbubwug +burwubrggbrwubgubrwwgrbubrgggruuuuuwwgrguuwugwugggrr +ubrggggbuwggrrubbbbwggwbrgrrwbgbgggbwgwruuuggwuurgru +gbrwuububgbrgurubwgwurwwuuuggruugbruggguwruuwuw +burrrbugrbrrggrubruwbrwgrggguurugbbbbuuwwwwgbgbbggwrrruwubbu +burgbbwbrbrrguwuubggbwwugwgbguwburbburwwbugwrwggbrrrugguwgrw +gwruubbbrwbwrgwbwuubgbwrgwgbbgbbuuwgbrwrwwrgrg +burgrruubuggrgwwrbuurrubwgrwrrubgwbbwwbuubbw +brrbuwrbwubggbrggwguuuugbgugwubruuuurgbbwbbbgbwururu +burggugrbguuwbwugurwurwwruwrgbruwbgburwgwurw +rurrgbuugwbwrgrwbwgugbrubuubbuuugrwwrrbwgrrugbwrrwu +burgubggrwgwuwwrgbwbwbrrwbwrgbrbbrgbrrruwwuwwburbggww +bbbrrbwbbwgurbgrrgwgbububuubrgbgwbgurbrwurrbrwurrubru +brurrwwwuguubugrubgurrbbbwwguggbbugwrrrrurwgwrrgurwwb +burbrguugrbgrrwgrggwrbguuwwbwruugwrbugwgbrgwuwg +burwgrbrgwgwwrwurrbuuwwuuwubwwgwgrgurwrrgbgubuurrwbug +wwwbuwwbwrubbgrrbubbruwwrrruuugguwbgurbbuwrguwwgwggug +buruwurgrgggbuggwruruggrgwggrgubwwugwwgrgbrbrgbbrruwru +burbbgbbuwuururbuuwwbgwrwwuwuwuugwwuuuuwubruw +wuwrwggwbbruwuuwurwubgugbwgwgruuuwwbrubrubrbwugrruruburgbu +burbwbubrbwrururburgbuggwuurbrugrrwgrubgwugguuwuugrrggbru +burwbwrgrgrwrgrgbrbwubbbwguuurbbrruggrubbrwgbuwrwgg +burrwuguwurbrurrrgbbwwrguuuguwwrgrbggbrgrbu +uggbruwrrbuurruwrggbrguwbuwgurbgrrwgrubwuugwbbwubgg +burbrrwguruuwwgburuwggwgbgbuggruwubgbrwgrgwggg +burwgrbuurgwwbwgubuwuwurwbwrubwggbrggrrrw +burrurwuurgrguwrrwgugbwgubwugwrrwuwwgbrbgugrgg +buwburbrwrurubuwwguuwgrbgwbrrwubwrrbrrgubggbgbrrgwwrbbubwwug +bururuwrwrwbwgrwgruwrwugbruuwurugbbugbbu +burrgwbubruurbububrugwgubuurrrrrrbgbbbwbr +gwrurbrwgububrggrbggguuwrrguurwrgrrbrwbruuguwbrrgg +burgguwrruwgbbubgrgurbwwbbgwbruwurggwgbwwgwwrrww +burbuuwrruggbwwbwgbuwurwrwrgrgubrbburbubgugugwgrubrugubbrwr +uwgwurgwwbuwbbbwggwwwrggggbbburbugwwgwbwwgrw +gwrrrbgrugugubrwwwgugwbwwbuwbubrwgbwuubgguuwubgburgbgugu +burguubgubuurwbgbwbwbggugbggwbgrwrrurrggbuuwrrwugggggb +gwgrwwbgwbguuuguugrgbwbrgwwbbbrwrwgwggbgbggwwwgrrugggg +bbbuwbgwbgbwgguwwbgrrrwwrbwuugbwbbggugwwrgbbwrr +buruggrbgwbgguggwruggubwgrbwwrwrbrwwgrrbbguwbgrbwgu +burbgrwbuwugugwrubbwrgubwuwrgbruwguuubwrrgu +bububguwuwrrbbgbrgbruuuurrgggubrbbruwrugub +burrbrwuguubbrrggugbwuwggrrbrgbrrgurggwugrbwbgur +bururruwbrwwuuwgbugwubuububrwgbgburgubgwrbbbrwrrggwwwwgb +burrwwubuguurguggrggrurruggbgggguuwwbrbgwggwbgrbbg +burgrgubuwururuurrrbrrrwruwrwrbwbbbggwgbbwuub +burgbbwuggrbwwbuwrurbbwubwwuubgrbguwbbwrruubwuwbgbgbuwbuub +uuugwuwbwubgwubugbbugbbwubuwrbwgwrurrbwwwg +ugwuubrbubrrrbgrrrgggrubggwwgwguwbbwuuwrwr +burruwurguubrwrbwwbuururbwwbgruwggwwwbwurwruuwgwrgrububbr +bwggbwwwggbwwgwrrwugubwwguwubburwwwwggbubrbuuub +burgbwgwbwbwgggwurbbbgrrwuwurwrwggruwwrrgrgrg +wruuwurwrrugbrgwwggwrbbgwggggwwgbugbrgggwuuu +wrbbrwwggbuwugrgruuwgbrggbgrrwgrugggruwrbururguwuugbwuuur +burbrguurrggbggrgwrrbbbbbwbruuguwgwbubbuuwwgrb +bwgrwrwbbgrwwbuwgbbubbgrwrbgrrurrubuwuwbwrwwuurbgbur +rwggrugrguwgrwurwrwuuuwrwrwuwgubwrbrruwwwwgruurwuwguwgwrr +gwgwurrrruubuguguwrgurgubgbbrurbubbgguuurugbwrwbb +bwbuubugwwuruwrbugrggugwrwugrbuwggbrbrugrbwbbr +urbwuurrgwwwbubgwubwbgrwgwgwrruguwgbwwwbwbbbrgbwwububuug +ruubrbrwbwgbbrrbubwbugrbbwbbbwwwguwuguuugrrbgwwwurrr +ubrrbgubwwugrubruurwurbgrgruubrgubugwwgruwwurwg +bwrrrgrbwrgbruwbrrgwwuuubrbrrwbwgwuugurbrgguwwbgrrwwurg +gbwggwwbrrugwuuurrgbgbugubwrrubgurbgubbrwuru +burrwbbuuwugbrwbubwuruwbwbbwbwbrgwguruww +burbrbwurbbrbbbgbbwuguugrwrwuwwwwgrgrbgw +rbwuwububugrguruwuuguguwurwggurgububgbggggbgbbgbgb +burgwgwwbrwgwbgbgwuwrgrwrrgbwwguwwbwgwugbbugruuwb +burgburrgbbugguwbgrwwbwbrggbrbrgrgrbwgrubrrgwgbgwwrbrwwgb +wuwwgrrrbbwuwurggwrrguwruurwwubububbwbgwugggu +uubrwguuuwbuurruwubrgwugwubgwbrwwbwrrrwrurbgbrgruuw +wggubbggubugbgwwuubwubgbgwrrggugburbbrurwggrwurbwguubbg +gwgruurrwrgrrwruwugguwruguubgrugggwguggguwbguburgbgbuu +rguggwguwwwuuwbubrwuwbwwbggbbbrbrurguggbrbuwurgurr +bubguwgrwwrgrrgbrrwwrrrbgbggwuwurbgwwwgurrrrwwurrguubru +burbwwwwwwrgwbuubwwwwrbwrrbwwwggrguguugggubwgwwgwbgrg +rgrrgggrwbwwwbguubgrwuugwgubbubbwwruwbgbrrbguuggu +rugubgurbwbgrggugwuwubuurguwwbwuuuugbugwruwrwruwrwgurwwgbu +bgrggwgwuuurwburugwbubguwwruwubgbrrgbuwwbgubgwrwbwwwg +gwwuuwrggrbwruuurbugwwguwuuugwuggubgbgwgugwbwwwwrubrwrggru +wrbrgrbbbruruwubwgrburugwwugrurrrrrugbrrwggbwwgrggr +burwuwgugggbwurrurbrbrggbgugguuwwwrurwwbubbrgrgrrugrurrrg +urwbgwrbbgguwguwbrwwubwwgwbrwgwububbgwrgwu +gwgbwguubwrrgurrbbuurrrugruwbbbwrgwgwuwwwbubuww +burrugbwuuugwgrwwbwrrbgwuwwwwrrwgwrgugbuwbb +burwbugrbrrrrguuggrrgguggbrruwwbuwbgruwbwugwuwr +burwbrrrrwrwwuuggbwruuurwuwgbrrbgwbwbrbrrbwrruuugugu +burruubwwrwrbrrugwugbguugrwuurwrrrurbrbrgbgb +buwwuurwgubuwbgbrrbrbwbbrwgugwgbwuguubrguwg +guuubrbgwrgrbrbuggbgwgwbugrbrubbgguububwgurg +brrwwguwubbgwgurbgrgbuwggwbwbuurwgubwgwuuwwrububrubgubu +buruurbbruwgbrggwrgwrrwrubburbggguuwuubbrbw +buggrrgwwggubwgbbggguwuwwguuwruuuuubwggggbbrub +bgggrgbguwwubrgbwrubrbwwgubbbrbbrrggrbbguwuwwwubb +grwwrggrwbwgggrbbgggwugrwwurwbgwbuugbbgwrwwuwrbwubwbrbgu +burbgwwbwwwugrbgbrgggrrrbgrbbubgrwrwwurbu +rgwbburwrbbwwgwgrgrggwuwrbwubuuuwgubruwwgwrbg +burbbbrrruuruwwubuwwrruwruwrbubrbbbwbwugrurbuggrwu +ruggrbgwwubbrrgwggwbgbrurrurgubgbbbuwggwrbr +burgruruwbbgbuwbwwbbrrrbbguwrrgwuubrbgbruwubwuu +bugwwggrggbgubwwwbrrgrwbbrwrgbgwbuubbwgbwbwguwrgubwu +wurgbwbwrbwrbbggrggbgwugbubwgubwgburwgwuuggwgrwbbrrwwrub +grruruwrrruurbgwurgrwubbwgbwwbgwugbgrwbrgbrwgrwgbgubru +grgrrwrgggbwuuurwwrbbbguubububrubrgwbwbbgggbrgug +burbbbwrbbrbuubbgrurwrrbbwrubwwbrrgwbwgwgrwrwwrubbggrbwwbru +wrguuuuurgubrrgwrrgggwgwbgwwgbgwbgwubburrbubgb +wrbgrugwrubuwbgbrrbugwruwwwuugrbbggggggubwbbgw +bgububbgbgburgwubgrwurwgrwgbbwuggwbggggubbubbwuwggrgu +burbwurwbuuurbrugbwbuguwgbbrrubrgbuwwrrg +burwguuurrrwrwggrwwgrrwbbwubuwggrgwbbuwrubbrbubgggbbrrbruuu +burggggbgrbbbrgubwuwuburbrgwbwwbgubrgrwububuurubbggu +burbbugwbruwuubbbguwrggggwwruuburwwwgwbubwubbwbrrbbbwuwb +burwrrggugrwuuurrrggrbruuwbwbwuurbwbubuwgbrwbgbbwwgbwbwwurgr +wbruguurrbuburwgrwbwugbgbguwuwbgrrbbrwburwgwbwww +guwbgrgruurggrrubwuuurbwruwgrrgububuuwgbbwwruwwrwbrgb +gbrbbbwgbbggwrbubrrugurgggwbuwbbwbuwwwbgrgbr +buruubbggubbrrwrbrrurgrubbwrbbbgbgrbbggwugbgrugw +gbuuwruwgrwgbbbggrrrbwbugrgurrgbrgrbrbggrug +bgugbgrbrbrburgbbrbugwgrrbgrugurgwguubguwgwuuuw +wwwbbbubuwubgurgrggbugwurrwwrwgrbgguwrwbgrwuuugb +bugburbrbwgbrgrwwbuwbrwuguwgbbuwbwubugwb +burgwwurwwrwugbrugggwwuwgbrgbuwgbgurwgwbugubggugbuubrg +gugwugrrbgggggugbwuuwbwwrgwwgwgbrgwwrgrgrguguwwwwbgr +bggbrruguwuuuurwrrbggrbwrgguggbgbbuguwuggrbrurg +buwburrrbrrrgruwbwrwrbruguuwurrruuuwbwbgruwwgbrwubuwbgub +ubugwbrrrbuuuwrbrugwrwruuugwrwbggguuwbuguwwrwbbbbwrwgr +wwwgwbbbwwgbbgrrbbrbruggwuugwrrgbrbugbbguu +burgrbrbwbuwrgwgbwbwwuuuuururbrugubwwurbwwgrwbggbwbgwuuwg +burgwwurgbbuubwbwwrgrrbgbuuuwbgrgwwwrbbgwgruruwbuug +bwbrurbugbruurrwuuuwbgrbwrwgguugbrbburrwugubgugrbbgruuuw +burgwrgrwwrrgbggburuwbuuwbuuuwbwbugwwwwwguwgbbwrurbgwu +bgbwwbuwgwwrrwwwuwbbuugrrgwwuwbuuurbbbguruwrrugbubuwbbbwwb +burggbbgbwrwurrwwbuwgrrrubbbwuruuwuurgrgwgbwubu +wguggubrgbrubbrrggurwrrurubgwgwuruugubgrwugbruwbbbr +burggwwuwuwbwrwgwrgwwrrurggbwuwugwbgggwrbw +bwrwuruggbrbwwgrrrubbrbbubbgwwgbbgggrgwwrbbbrbgbwwggrgrrr +wgbgburrbwurbwrbubrrrbwwruggbrrgbugruugrrgrggrbwbuwbg +burwbbbbgruuuwbubuwbbbbrugrwwbrrrrwgguubr +burrbguwuwgururbuuuuwguurbgurbwgburrurwg +burwubrubgrrgrgubrgbwugubgbbwburwgwbwwrrwuubburr +wrwrwbuburbrbburuuugubwwrrbggbgwwbrurwruuugbbbwgugw +burrugrbrbwwrwbbububrububbrwugrwurubrwbrggwwgggbrbrrw +burrguwwbruwrgurrrgwrbgrbrbgurwbgbuwrgrbggwwr +burwgurgwbrrggrrrubrwgwrugrgrgbrwgrbgwbgwwrbbbgguwrwgggw +rbrurgrrugrbubwurubwgbbrbbbbwgubuggbbrrrwruurugruggu +uugwrwbuwrbgbgbwbbuwruwwgbggbburgggwbwwggrgbwubg +burbrruwggbrruguugwrbbgubuuwuuwrbwwguubwbwbubbburggg +bururwbggggbbggbwwwwwbrbrbwwbrbbbgrguwuwrbbr +bwrgrgrwbbwbguugrwuuuububgrguwwbbgbbguuuwrub +burbrwwbgguggwguwgbrugbruguwbuguugwwubbbuugbuwgrwbgbwgbwuw +ubbrgbbrrgbugwwbgrwugbwugrgubguuwgguguugrgugwwbbgwuwgub +burbrbrwrwwbwgbbuubuwwgggrgbwwrrwubrguwwwgrrbwwrwwgbug +wwrbbwugwugguruugrbuwwgbwwububrguubrbrbgugbrrwrb +uurgwwrbgugurwwwbbwuubwuubbgugbbwgrbrbbwgruwrbgrbrrrgwbb +rubrurrgbburwggwbrrrubwrbrbgbrwgubwuubbggubggbg +rruurbrbgurggurrbubrgbrbugrbrwuwgbrgbbubwwrbwrgwguguwurru +buruwwrugrrwwbuugwwggubwbrgwgurbruguggwrrrbuwugwwwrbgrg +gwwubrguwbbbuwwubbbgugbgubbguwubrwbrgrbgrbrbgwwrgbwrrbr +burgggguwwwwurgwbwggurgggggbrgrbrgrbrwruwwbuwgwrb +bbbrrrurrgurrbbwbbwurrbrwrbbrrbrgwgrwgubgwwgwwbuwbbrwub +urwbgwwugubwuwbrwbwgubwbrrwurwuurguubbbgwuugbrbgbggg +bbuubbbubwrugruuurggruburuwubrgwbwwwwwbbrgwwgbrggwubrrrr +buruwruwbrruwrrgrbwrrggwbgrububbrwubgbgwrwbwuwrwuwwbwgw +wrwwwurbwgggbgubwbwbgwgrbgwrbrbwurbrwgrgrbgwuwrwrwuuwwr +ubgbuugrggbwbuwwrbrgguuurrwguwburbgwbwugurubuugwrbwuw +burrwrbuubugbbbgrwbugwbgugrbgwurrwrwbgwwbrrbbgguggggwug +burgwuwuwwrbruwrgwurgubggggwrrgugbrbgubgrwururbrubrgrr +bugburuuuggwggruwwgwbubgbrruwrrruwwggbrwrgurrbuuwwgrggguw +buruwggurbrbrbbbburwgrrbrbbrgurwwugggrww +burgrrwbrwuwbrrbbuwgrwwrurbwurgruruwwwuuugrggrwgbwbugbuwu +rbrugruuugbrbwrbwwbgbrrbbrruwbbuwgrubgggrbgrrugbrb +rbbwbwwwggwrwwgwwubbbuwubggbrrruwburruwwguwwggrugbbwru +bbrgwubggguwrruwwrurbrbwggbwwrbguguugwugbgwbbubrg +wbbguuwrguugwrurbbubwuwrgbbwburbbwrgubuugwuuuuwgwu +burgurbrgwugguuubwuugwuwuruuwruwurgggbrwgbuugugg +ugrrwrwgugrrurguburrgwbwwugwurugbbuuwurrgbrru +wgrwbuurugwbrgrrrbrgggwbrbuuwgwgrrurruugwrbgbgbwbgbuugrubr +wuugwbuuuggwbrrwggwwubbrwruuwwwwbrgrbbruuwwugbwrbruurwgu +burugguruwgrgrbbrbrbrwrbbruwgbrgwrubbrwrgwubbwubuwbg +bwburbwrbggggrgbwbwbwubwburbgwbbuuugggrrgrurwgbrru +gwgbbbwgrrbgugwwbbwuugwrwwbugbggbugrbgrgbrbur +buruguuwgrugbuwuwgrrgrbbuwbguwgguggubgbbguuggbgrrrwruur +buruwgbbgrwgwrbubggurbgrbrbbbugbrwbrbwrgr +buwburgwuuubwbwwuuruuwbbrwbrbwgwrwuuwggwwguuwurggrgggwbw diff --git a/inputs/19_test.txt b/inputs/19_test.txt new file mode 100644 index 0000000..29648be --- /dev/null +++ b/inputs/19_test.txt @@ -0,0 +1,10 @@ +r, wr, b, g, bwu, rb, gb, br + +brwrr +bggr +gbbr +rrbgbr +ubwu +bwurrg +brgr +bbrgwb