diff --git a/2024/src/main/kotlin/day19.kt b/2024/src/main/kotlin/day19.kt new file mode 100644 index 0000000..b95c49c --- /dev/null +++ b/2024/src/main/kotlin/day19.kt @@ -0,0 +1,21 @@ +fun main() { + val iterator = readInput("day19.txt").iterator() + + val towels = Sequence { iterator }.takeWhile { it.isNotEmpty() } + .flatMap { it.split(",\\s*".toRegex()) } + .toList() + + val part1 = Sequence { iterator }.count { isPossible(it, towels) } + println("Part 1: $part1") +} + +private val patternMemo = mutableMapOf() + +fun isPossible(pattern: String, towels: List): Boolean { + if (pattern.isEmpty()) return true + return patternMemo.getOrPut(pattern) { + towels + .filter { pattern.startsWith(it) } + .any { isPossible(pattern.substring(it.length), towels) } + } +} diff --git a/2024/src/main/resources/day19.txt b/2024/src/main/resources/day19.txt new file mode 100644 index 0000000..e6f57ce --- /dev/null +++ b/2024/src/main/resources/day19.txt @@ -0,0 +1,402 @@ +gwrgb, rwwr, rrgwbgg, rwgw, wwgu, rrwuww, wgrw, wbgw, gwrg, ugbr, uuru, bgu, brrur, wggbrb, rurrggw, rggb, wgww, bu, ubwug, bruuu, u, ggbrwgb, burgbub, wrbwguuu, wgb, burugbu, wwgr, uwb, grr, ugu, ggbuu, gbrb, guw, buuguu, rrbrrg, wbgurw, wurr, rgbr, uubu, gwr, gbrwu, ugrru, ugbur, urrrwgw, wrbgrw, rruwr, uwwurwu, wbgbbrb, rbwugu, wrr, wub, rggwg, rgw, ugwgbbr, gggg, uwuuwbww, wwwgw, uub, ugurwwgw, ubrg, rwww, grgu, uwu, gbu, gru, rwrwb, wrw, ubugrb, ruu, grw, wbrggg, wbwwr, wruburw, wurb, wwg, bwburg, gwrbg, guwgr, gwu, wwwuw, wwbrw, gruw, uwbggr, uww, gwb, wurrgg, uuww, rwgwgr, wubg, uuur, uwrrrwu, bbww, wgbwb, rrgg, grggwr, bb, ug, wbwr, rw, rbbru, bwbbub, bur, ggbg, gww, buruggrr, bgbw, rru, rur, brbbr, urug, ggrburu, rgb, bwrwrubu, uuugw, uwgwwb, wgu, wguwuww, ruw, gub, bbwb, ubbgrr, ggr, rug, brg, rwg, ubgwrgr, bwwbw, rww, bgruwuwu, uuw, guwr, urg, urr, gggbwu, brub, gruwub, gbbr, uru, wwur, grrrwbg, rr, guwwuw, ruwr, bubw, bgru, bbggb, wuwbrrg, w, rgr, rguu, wugr, rrbubrgg, wugrr, bru, ggguubr, brwgw, gwbbgbgr, bbu, brr, rubgu, burgrr, wwgw, rwu, rrgubgu, uwr, bguwbr, gw, gur, ruurb, wbur, urub, wrwbubg, ur, uggwr, bbbb, rrg, rgwg, rguw, rbwgr, uugb, grguwwgr, bgubw, bbg, rgbw, wgwrubrr, gwug, ubrugwr, uuwgur, bwurw, ggu, gubb, gbbub, gwg, gugw, r, wgg, wwbb, buubg, rgbwubug, urbb, bg, wwrur, rwr, ugug, bwg, rbb, bbwgru, gbr, urgwb, rbuwub, gbb, rwwgw, grb, wrbw, rrbbwr, rrrubb, rrggr, uugug, rwbr, rguwuuw, wwu, wruggur, wurbb, urrg, urgwrrr, uuu, wrggbg, www, rwrgg, wbguru, bwgr, wu, bbgr, guu, wbrgurw, rbg, ubgrrg, uggrw, wbbwgwbg, uur, brbrbggb, uwbrr, gwrr, ugw, wg, wrrurrb, uggb, bw, urgwg, wwrbwu, bwwbguw, bwb, brguu, ugrbr, bwrg, bbw, bugwu, gb, gugu, gwwurwu, rbw, wuuw, guug, ubb, wrg, uguw, brw, bgg, wrgr, wbrugb, gwgug, uwuurug, rrgu, brrrwu, wbr, uu, rwrru, uwrgugw, gwugu, gugrg, wgr, ggurb, wrur, wgwrug, bwuw, bbrguu, grru, bwur, grgbgbgr, rggub, ggb, wbb, uubbrw, wubb, rubrwb, gggrg, bwbb, uw, rbgwrg, wbgr, bggbb, rwb, buw, ubr, gg, rurrgu, gr, rrb, ugb, gbrrb, rub, rgubbbg, wuwg, wrgu, wbu, wbwgb, ruwbguu, gbbrgbu, urgbgb, bgr, buu, wbg, uruuw, bwuwugw, wwbrr, wguu, rubru, bbb, urb, bug, wgrbw, bwu, bgur, gu, ubgg, gbbw, uguu, rwrb, wru, bubrwu, wwr, wuwub, bbr, uug, burw, uwg, rurwbbr, wbw, wbwb, wuw, wur, brbwr, wr, wbrwug, ugrgwu, wb, ubu, ggg, brb, wwb, ubg, gug, urbuwg, rgg, b, br, wrrbbw, ggbbg, rrggw, rbu, brbrw, rbwrgb, ubw, wuu, gbwur, gbg, bbbggubb, wguuub, grrbwu, gwwgb, rbwru, ub, gwbub, burgu, wgw, uurbwbw, brrw, rb, brrbbbu, bggg, rugr, ugg, ggw, gwgwr, grurw, bwrgbw, bbgwuuw, rgbwwu, rrrbg, bggu, brwb, bbbgur, ruubrb, wubgrru, brrg, uubbr, ubbrugrw, gubrurwr, rrw, wrb, rgwbw, uubgru, wrwg, bgw, ruuw, gbwrg, ww, rrrbw, gurbrr, ruuug, wrrr, ugr, wubbrwbg, gbwrwrgb, bugr, gruuwg, rrr, bubg, bgbrwr, wug, rgu, buugwb, grubgr, grur, gbw, wwrgb, bgwub, rbr, rrwb, gwuwrb, rwwbbrr, grurbbgr, wrwubb, urbrwug, bbrw, ubbb, bub + +wuwburgbbuuwbwrgrgbrrrbrbuuugwbgbuurrwrbruu +wuwgbububbrgbbuurbrrrbbrwgbwgbubrubbbubwgwubbwbbrrgrwbrwgrg +uruwrbbguwugrggbuuwwggrwgbrrwrwgguwbbugwruubrbrruwgrg +wwgwbuubgbgwwrbrrrwurwrguubwwwwgwwuuurrruwbrurwgwubwgb +gwrruurruwuurrwwbrwgbrgggbbbwwugugrruwrwuwwwuwbrbbrwrurgg +bggrwwubruuururwrrrgwwggwwguguuubruwurbgwbwwuuguggrruggrg +ggbuburwuwbbrwburgrwbwuwgrbruwgwubugrurggrru +wbrgbwruguruwugbgbugugrrruwggubgurubbrubgrrruwrwurrruggbbb +rbbuwbwrugrggrbrugrbwggrrggwgbwrwruburwggb +wuubuuwwrbgbwrwbwwrbbbbbbuugwrgruuuggbbgbubrbbbbwuurrbuwr +bgggbrbrbggbgbbwwrbgrwgguuguwbrurbbrgurrgwgrrggbuugwgrg +wwrugbrbbbrrwurrggrwgrubuuguurwgbggubuuubrubuugwg +ggrbbwrgbbubgwgbwgrgruwgwrrgwggwuwbuwrgrg +rbrbuwwugugrwbbwgwbgbubwrrrruguwguwugbwbrwuw +brrugbguguggrgurgbwwgbbruwrrrrwguggguurruuwrgwwbrwbuggrbb +bgbrbwbbbrbbguurwgwwgrbuwgubrurwrbwwguuwbbr +rgubwrubugugrbrbguggruuruwwuuwwurwgrbgguuurbbuwuurbu +gwubuwuugwguugwbrrguugggggrgubgrugwwgrwbgbbbww +wgruwrbrgwwbuguwgwwugbuwbbrbuguurgwbgbgbbrgbrgruwbbgrg +rrggwwwuwgwrbbgrurgbrggruurwguurwuwrwwbgruugrubrgbuuruurggrg +rbuwubbwbwguwuwbwbrurbubguubuurruuwugwwuggrggrrwwuuburrwbu +wwurbrugubugbbruugrrggbgwuggubbgubgwubwrbwrubwubwgrwburwgrg +ubwubruurwbrugburguuububgwgwurgwrbgbugggrgrgugwgw +rgugbbgwbbwubgrggruuwwbgrgrbwwbwwbbbgbggbruurbgwruggbww +ggubwwrggbuugbugrbwuugrrwbuwrgwgbwwrrwwgbuwbrrurgw +buwgbbwruugbugwggrbgrbugbguubgwwuurrwgrg +uwrbuwurgurwruugugwbbbwrbbrurbwguuguwuwwuwwgwwbbwrubbgrg +rubrrurguubrugrbbwbwgruruwwbgwwgbwgbgbgwubbrubuwwgrg +bgbguwrbbwgbbwugwwruwrrwwrbuggurrwwuwwwuwugrg +urbrbwwbrubuggubbuwuububugwrubrbwurgrggguurbuggrg +rrwwuwgugrrwwwbgbrrrbwgurrgurwbrbrwuwrrugwrwbubrggw +wwbrwuwrguuwuugbbwrgggrugbgbgburwrrgrubgwbbrwbwbbg +wgwwrrguwwwwwbgubrwwrgrbwgggubgrubbuurgrwubbbbbwbgubgguwr +gubrggugwbbwuwwrbgbbbrbwbgruwbrubbruwwurbuwrgbgwwwrwurgr +wubwrgubrrwbbbwrwrwrwuuruubgbrgrbgbwbrwrwwubb +bbubwwrugububrbggbwwbuwbrruwwrwbgbbrwrwurubrwbwgurgrg +grbwgbuwgburugurwbgrwbuggubbwrubbwwbrrbrrugguwgbwgbggrg +gwuwuwbgwbwwrbguuwwgbuwurwwgrgubuuwrwuugrubwgbbwrggwwbbgrg +uubbbbbgwwrwbwbugrgbruwgugwrgwrgrgwuubggrg +wgggrwuwggwbrubuwgwgwrubwbuwwbubuuggrubbugwbgurrgwwugwrwr +bruwbbwrrwgrwrruuwgrbbbrurbbrbwrwbwrbrbbggubrbgrgrg +rbggburgrurbbgrgbwrguurbugrwwgruburuwwwburrrwugbugwuwugb +wubgbububrwbrbgbwuwbrrrwwwwwgbwrwurwrbwgbubgggburwbrwbgrg +rgwrurgwburrwgwwbwugbwbuwgugbgrgugurwbuuuwbugrg +gguggwwwbbwggwrrrurwbbubrrwrggurrwuuwwrgrg +rrgbbgwgwgbbbbgbrrrbgwgrrbgrruuruwuwbubwggrg +rrbbwrrggbwbwuurgbwrgruguubwgggrrgurrruwruggrg +grgruwurwbbururbwrrbrgubgbrwgrbbwrrgwwrggrg +rrrrbwwwwwubgbugwuwubgurruuuubrbrrbrgbwbgr +ubrgwwgggrwuugbbbbggrbugbwbuwugrugwwwrbbubruwwbwwuw +rurrwugwbugubrbrbrrwwbrgwwbwuwgwwuuuubrruubgggugrggwrgubgrg +rbrgwwrwrubrgwwrwgrrrbuwbbgwggbbrbuguugbrrgruwbubgur +rrwrrgbbruggubrubuugwuwbgwgwrubrrrrbrwgubwgrgu +ggwugbuuguwrgrubrgbgurgrbgbrwbwbwwguwwwruug +rububwugbuuugrwrbrugburgwwgwgwrwguwbgbwgbbbbbgggbbgrg +ggbuuwrwbrgwrbbbwruurwgrbbbwwgrgrrgrgrwgrwbgbubbgggurbgrgurg +ggbwbgbwuwbrgwuggwugrrugbrurgbggrgbuuwruuwwburbuwgwrgrg +gubguwruuwburrbgwgwwuwggbbbgwgwwggrguwwgrg +uwgbbguwrrgruwbrwruwrugrwwggwwuuwrwrgwrbugbgrg +uwwrbwguuurwgrurugurwbrruruurggubggbwuwrrugrg +grgubbgbuguggrbrggrugrgwwwbwrwbuwwwbgwbrrrruuubuwwgrubrugrg +brrruguubbuwwugugrrrgggbrwrgwbbwbbruguwgrwwuwbgbrgbgrg +wbbbwgrrgrbugwwugugrgwbrbgwwuwwurwwrrgrwwuguubrgrg +wrgrwwrwbugububbgrguguubrgbgugwurggbbrgurwgrg +wbruwbuubbwrbrrurwbgbgurrgrgurbuubbbrbbruugrbuwgrg +bggruwgugrwurbwbbbwbrgggwbgguwwbrbwwbggggguwwwgrgubrgrg +rbwuurrwgwbrubgugwrrugurbugwgruuggbwgwurrubgrg +wrwrrwbbgwuruwrubgrrbububrugbrurwrrbbrrgrg +gurrwgrbrrguurbwrurugrwbbubwrwwgbgbrubuurugwrrrbgurgrg +gbgwuggguuguggrrrrwbrwgbrbwwurubuugbwbbbrbwruwbgguu +rugruuubwruurwbwburwuwgbbgggrwwuburuwwbwwbwrwbrgrg +wrwurbrgwrubbgwbubbuubrrwwgurggguuburugbrbwrurrugwgrg +wgwbbrugguurgrwuugbbwbrgrbbrbuwwgbbuwguwwwgruburggbugbwgg +gbrbbrbuurbrwbbuubwbgbrwgwwbuubgggrubrugurbubwgrgbrbugrg +rggruwgubuwruurrbwwgwrgurrbbguguwwgruuurgrrbuugrg +brrgwgrwgwurbgrrgbuwbbrrrwwbrbbbgwugwgrg +bwrgbbrwbwggwrgugruwurgwbgwuwugbwgubgwwgwbubgrrbugggrw +rrrrrwwbbgurrwbgwwbwbbguwuuwgrbbbggbwgrg +wrgugwugwbbwuubrugbggbwwbrggruggrwbgbbbruwuuuwwwbbbbggrg +wbgrgrbuuurrwgubwgrwwwggbbwuubggurbgguuuugrr +wugwrrugwbwbrbuwbrggurgrggrwrwbwubrrwwbwuugugbbgb +guwrwuubbrwggwburbbgrruwbuubggrbubrgbuuwuwguggrg +bgrubrbwwgurbrburrgwgbgwwbwbwwwubgrrrwubgurubwbubrrbwugrwgrg +rgwurrgrrwrbwbwrrwwgbbrgwwugwwwugwbwgwuwuuwuw +bbugwrgwuurugbburugwwuuruwbwurwwbgbbggwurwgbgguruwr +rwgrurgwurbgrbwgbgbbgurggrrrrubgbrbuwwwrgrrrgu +grwgguugbbruwruuwgwrbugrrbwbguurbrwrbgrrruguuwwuurwb +ugguwgwgrrrrrwbwbrrwgubbruruurrrubbbugugwwgrg +rrwbgurruwggbbgrbbgruuguwrggwgwrwgrwwbrwbggrgrg +rbwrubbwrwbwgubwgbrbrrugbwbbwbbbggggggurugrbgbwuwrrbgwbbgrg +brugwgugugbbbbruwbruwuburrrgrwbbbgrwruguggbgwgwrwgurwub +wuwwgrbrguwugwbgrgwggwruwgwbrwgburruwubrbwrgrgrg +rgwgbbgrubgwrbwrruuwgwgguuwgrbugbgbguurgrg +wwggwurgbrwrwrggguwrggurbwwwrgwuwrubgbgbbggrrrgbburw +bwbwbrggbgbbwgrwuwrbwbgrgwrwrbgwrubugwwuwuuwrwbubggrg +gbrbrwbwruwrwurwuuwuuwbwwwggwggbbubgbrruwrrbrwbuwbbbwgrg +wruuwugbbugrbruguugbgwbrbwubguggrubgwurbbggug +gbbwwurbugwwwguuuburuurwrubrrrbburwugbbwgbbgugrruugrugrg +gwguwgubbrugrwwuwbguwbrbbggwgbwbwgbggbrggrg +rbgrgugwubwwwwrbuurbbwbbgugggbbgurgwwbbgrgwurw +brwgrgbbbwbuwruubbrwrbuubbrrggrruwuuwugrwgrg +grrrubrurgwrbbbgrgrrbgbrrrbwrbwguuubgwbrbwbw +gurguuwruwrbbrrrbwwbrbwrgubrubggrwrrggwbugwugubugwugrg +uwwubbggbrwwbgrwgrbrubuwbgugbwwwbbgbuwbwugr +wuurbwwwbrbrubbgwrrrruwrruruguggwubggrgrg +wwubwwgubgwrruwuwgbuubrrgbuwugrgbbrugrwwgruwbwgwbubwuugwg +rubuuwwuburgwururrbbwbbgwggbgrggbuggrwwgruuuwgbrwgwwrug +ubrububrbgrgwbrwrrgwrgrgbuwrwrugwbwgwwuwugrg +ugwgwwwrbbgwgbguugwbwuwruwwrguwwbgrwrrbbwgwggwbgwbwrugubrgrg +rwubwubrgwwrwuwubbrwrwbbrwbbubruwrgrrruwrwwruwwuuugbwrbgrg +rbrguwwgruuuuwbugwbugbbrgurrgugwuwurwbwbubuwrbrubgwbrwurr +bwgrgbrubbrrwggwgwugwrgurguwguwubuwbbugubgrg +rgubgwwgwrrugbgrbrurgrwbrbbggwwrgubrurbrurubggrugugur +bbgrwwrgggrrrrgrbrwubgbbbwuwuwwuuwuurgrgrugwugrwugruwbburb +wgurrurgrbwwuwbwwbgbuwugbgwuwbgwgbwbgrbbwbrgbwgbbrgbub +bgwbuwuubbrbgwbgggbubuwgubuugggbuurwgrggwwrbwwuwwbwgrg +bgwwbrwgwwgrubgrbbggrbggbwbgbgwgrwbwbwuwugugrwww +ubrrbrrwgrubgbbbgrbwbuuwwbburrrwgggrbgbubbrwgrg +bgwrwuubwwwggwrrrurbwgwgguggrgwbggbrrwggbggrg +rrwuwubwurburbgubrbggwwbbbuurwbubgrurgrg +wwbwubbwwbwuggbgbwrwrgbwbrbbugwwuburrugrbb +ggggbwwggrugbrurburrbbwgwbubwgugrrrrbubugrg +gbwgwuugwbrwurwbubuugwuwubbbgbgbuguuuwbbgrgbb +bbwbgrubrwbwbbgrubuwrugbggugrgwurbwubwgwwbrurgbrugrg +wwgrbbbugbbugbuugrruwguguwurbuuuubbbbrrruburubbwgbburbrggrg +wrwggrgwbgrwwgbrgubuuwrrbwgrwbwburbuubrrbug +wwwgurwbuwgwwrbgbwbggrbwrrwgurwgwrwwwuubbb +bwbrgwruuuwwwwwwuugwwbgubuwrbgbwbgwwbubbwwbrugrg +grbugurggurwwbugbguuwbgbububwgurrbwrgggubrrgbgwgguwbbgrg +rwbrggurugbbbggbrbgwbwgbuwrwgbrgrgbubwubgbbuuugugggwugugb +bgwbwbgrubbuubggwrrugrubwgbbrruwrwruwrwuwbgggwbwrrwbwwgrgurg +guguurwuuuwuwrbuuwggbwbgbwuwbuuwubwwwbgugbrb +wurguugrgurwgbuwwgbwrgwrgbgbwgbwurwrbwrbwwr +bwwuwrwuwrrburwggggwwrgruuwguruugwgrburgbburrrburrgb +rwruwruwbwgbbruurgbrbubwrwbggggubugrbrbbwwggggu +ggbuwugugggurwgugrbbbugrwwwuwgbugguuubbugrgbbrbugrg +uguuwbbuwwbuuruwgwrrrrbrwwrbubrbubuuwwbgrg +uurgwbgwrugrrrrgbwubuguwrwwwguwwuuwbbgrg +rrrrbbwugbwbuurggbrwuwbgwruwgwugbbwwgurwgwwu +rwbbbbwggburruurguuubrbubrbruwrbwurguwwwuguguwububw +uuuwbggbbgrubruwgwbuwbwgbwrwwrbwbbggrbuugrg +brubgrgwwrggubwwuugurrbrbbubbrbgwwrbugwgrg +buwbgbgbwbbbwgwgwgwwurgwuwggggwwggggbugwwrbbwwrruwrburrwug +ugrwrrbbruwwbrrbgbrrwbgwggbbruuuwrggbwwrrwrr +bwurbwuggwgwruurrgbbgugrwbguwwgrrrgubwwrwrbbbuur +rurbrggwuwrurbrrgbrwrrbbgbwwgrbbrggwbgurgrg +uugbrbgurgwbwgwugrwurrwwrwgwwbburwbrrugbgubgugwrrrrgw +rwrwgwuwuwwrggbwbrbrbggbrgruguwgwbrwwuwbbwwwwrgr +grrwwwubbgbrrggwbbbuuugugwwrrgrruggwbwugwbwuuwru +ggbrrbrbbrbwburuwbgwuwugrrbrbwwgbwubgrggrwguwrwrrrwggb +uwgugurwwgwbgwuguurwwwgrwbugbrwgrbbubwgbwgbbruugrb +wggbugwrbrwruugwurwwbwggrbggugbgbbwbuwbbbrwggrg +buwrurgguugwrwbbguubuwwgguggbgbrwgrruwwrwgrwwrbrwurubrwgrg +grwrwuwuwbuuwgbwgggugbggwuwrwbgbgrwwugrwwgbbubugwbgrg +gwrurbrrguguurgbwubugguubwbwbuguubugwrugbwbubg +rwuguwbrbwbbwwwurbwrugubbrgrubbbwuwwbbbrurbwggwb +wuwrrwwwbgwgwgbuwuuwugwwgrwuuggrrubrgrgwgwwgrg +wbrrwgwbubrwwrgrrwurubwrbggbrubuubgrguruggwgr +bbggwuugurgrbguuwrgrgwuuburbggrwbwwurruwbbgbuwwwggr +ubwbuuuwurwbubbrrwbrbgbbgbrggbuwrwgwbwrbwwwugburww +uwgwgwggrgbgbgrrburugugubrbrgrwgwrwwrbwbgubbgrrgrbrrgrg +gubruwugbguwgguuwbwgruwbururbbrbrwwbrggwwwbruwgbrg +burwurwbgrwugwubrbbruubwuwgrugbbbggubbuguwuurbrrrrbbg +bgugurbwwgbuwurwwbgbrubgubuwrgugwrgbruubwrrr +ugbwwuuguwbuggguugrgwuruuurgwrgugbrggwbbuuuuuwwrrgwbgrg +bggwgwuubbwbggwubrrwbrwwggwrrgrrbrggrrurwbwbuggrrbwrgrugrg +ubgrwbbgburwrbrgwurgbbbbgurgbrwrbwbgbruruggr +wbguwubgwurwwgbwuwrrbbbbggubbbbgugbubwgbbggrg +wwwgbwuuugwugurbwubgrrggrrububwburuwwguwbbgwuwwwu +brbgruwrurgwwbrwbuwuwuuwrwbwgubbubwgguurggbuubrgug +rgurrbuuurgwuuwuwbbrubgbuubwgwgrrwwbggbrugwuuwuububrb +rbwwrwrrwggubwwubwuurwguuwruugrgrwbrgbuguwwgrg +rguwuwrwruuurbgwgbuwrwgwbbrbwgguugwbrrrwrbwrrr +gbwuburbgwburuwurguubbbubbgwwwwwwggggwgrg +grugwbwbwurgwruurwwbbbgbguuwubwbbubbubuuwguwbwbgrwbrbgrg +brbugurrurgguguguubwbbuugurrubbrugrwbbrurububbbrgwgrg +bbggwbuwgbuuuwbrrwbbbrgbrugbwgwrburbrgurrwgwguwgbrgrg +rrwwwgwrugbgbwrbwbwwwuwuwrwbuwwwrrwuwwgrg +ggbrbrwgubgwrwwgrwurbrruwrbuwwwwwrwbbwgwrwbguggrg +gbugggbugwgwrgrurbbbgwururwuugwwurrrrurbbwgwrrugrg +burgubbgwuwbgwbuwbwwbggggrurrwrgbrrgubwwwrgr +wubbrwbgwgubwbwwbgbggruwbgrbrgggbrbubbwugwubggrg +bggrwwgbuwrggurbwwrruubbbuubbgwrwurrugurgw +rwugwrrbgubgrubguubbbggwrgwbbgrbgrrwbbbuwbbrwgrbbuwg +ggrwwgbuwwgrrbwugbguwbggwrugrbwbrbbwrbrgrgrrbwrbwugwbwg +urbguwguwbwwbuubugrwgbuuubrbrgwbruwubuwrwruwg +gururbbubrbgbguurbbbrbgbgrbbbbuggwwugbgugwbugrg +bgbrurgwwwgrgbgrbrbgubuggbuwburrubrrbrbuwbbrgwgwwrbwuw +rwrgwwugurbuubrwubbbbrbuggugubbggbubrrrrbrrrgbgbbbururrwgrg +grwbbbgguwuwrwwgbbbwgwrbubugbbuwgurgrbwgrrruurbwrgrg +ggwwbubgwwbrgbbgwrbugurwuwwgbubuurburgbrwwruguwgwrubrrrbgrg +bgbguuwwwuuubbuuwwurgbrbrwbruwuuuuurgwwgrg +ggurugrubruwgbggbbwrgrwrbwbwuwrbgwwgwgbbgwwur +rubgrwbbuwbruwrrbubrggrugrbbguwgggrrwruwbbggbuwbbg +wbuuuuuwbggugrugbwrrrgwbgggwgguwubwuwbgwwugrg +rgbubgrwrubwuugburbwwwwwurwubwbgubbgwwgrwuuwr +rgbwuggburwrgbwwguurwbugbuwurrrwgurwggrg +bwbubwuwwgruugwuwbgurbgwgwwgrbrgbuguuwubwubwbugugbgr +bbbuwrurgwbbubwbrrwbrbuurbrrbgrgbbubgbruguruubwgbrrgg +gwbbwguggubwubrbwgburuggrrruwurrubbugwrgrgrg +gbwgurbbgubbbrubbgrgbugugwrbgwrwwurgwbwrrbrrwbrrurwru +wbrbwrggubwbrguuuububwrrbrbgrwwgwgrggwgbgggurugugur +rwbgrbwwwwrwruubbwbgbbwwwbgugrgwwwwbwuruurggwbbgbgrg +rbwbrrwrrwubbrwwrubrrgwbugwbbwgwuwubrugrrbrugruwwrbbrrg +brwwgggwurggbugurwwgwgwgruurrbwugruggrwrbwwgwgggurwwrggrg +rbuwbuwbgbgurruuwrgggubwrwgggbgruuwrrrrrubub +grurrugbruwurguurgurrrbuwwwbrrwrbuuwrwguguwwbbgbgrg +uuwugugggruugbruwgrwwrrbwuuuwgbgruwuwubwbb +rwwwuwwrgurwrggbuuggurbgggrurggurrrwurwwrbwrgwwbgwgurbur +urrburbgrgwrbbwbwggrwwrubugbgwwwuwguwwurwwrgrggwwuwwgbgrg +rbuubrgwbggbggggrbbugwwggrbrwgbgbbbubwwgrwgrg +bwrgbrruubrurwubrgwgrgggwgwgrgbbbrggwwrgrg +rubrbbrrbggurrrbbbwubgurwwgwrrrbugbuuurgbguguggrg +rwbuwwwurbuuubwugwguuubgwruggbgrruwgwgrwrgubwwugrwruu +buuubwggwgwwbrubwwwwrgggbrwwuwgrgbrwrbuwggwuggwr +gbwggrbrbbguwugruggrbbubwuwugwgwuguugbbbwurubguubrruu +rurbrgwbwbwuuwrbuwgrrbwuuwbgubuugwgbuuugrbwrr +bbuggrwrubgrwuwgrwgrrgwgrrruubgrugwbrbbuugb +uuubgrbrgrurwrbbbbrwwurrbugwgugbrwwurwguuubgrg +rwbbrbguwrwwubbrugrwwwrggwbugwuwbrrrrbubbgwrgwurgwu +rwburuggrruurbrrwubgbwbbbrgbguuwrubrggurrwrgwgub +gurgbwbggurrwwugrgbwwrbgrrbgbbrugwgwurrubwbwgwuwwbrrwguggrg +wbbrbwgrbwbrubwbrurrruurrgggbwwurguguubbuguugugbwggwwgrg +rrgbbrwuwbgwuuwbubwugrgbwwrrububrwuggrwgbbg +ubgugrrubuwgwgbrbrruwrrrgrguruuurgwuuwwwwbggugwubwbbwuu +bruugwrwbbwbbwbgbugrbggrurburgwrbbgwugrrguwgugbgru +ggrwuwbgwgugrwurwggburgwbgbrbbbgrrggurgrg +ubwubuuwbrubugbwggwrugrbwurgwbwbwgwrbrwrgwrubw +gwrwurrgwwurrbgwbgruwggwugwguubwbgguugrrrrgug +uubwwubuwbgugurbrgggugrrwrrwwurgrgurruwgggrwbwwgrg +bgugurbbuuugbwgrwbbbrubgggwbuuuuwwugurwuuwbrugbbrurg +brbbbbrrgwubwrwugurbggruuwuurwgrgrrggbugrg +bbruwrwruwuuuggbwruwwbwurgrgwgwrbrbwuuuuggrg +ubrrubruwuwwwrubwuugrgrrrruururubrbuuwbwgggwububwubgbgburr +gbwrgwrgrubrrbubrggwurugggwuwrwrbwubbbrgburgwbubwwrgrg +bgbwrrgwurguwrurgwwwuwbuwwrgbururbubugggwgubuuu +rbrbuwrwrugbburwuuwrwwrbugrbruubbbgwbbwurrgrg +rrgwuggrwbbgwggwuruuguubwrubggwrguurrrwurbuuubwrgwrrgrg +wggrrrrubrgbwwruwwguwwuwubburgrbuuwgwugbrgubwgbwbbgwruwub +ubggbwwgruugwwuwbwguwrrgruburbbwrgwbguwwrruggwbggr +gwrrrwgburrguwbbubwggwbwbgrguwrurubgggwuwwbrbbrrb +bgwgububrgwrugbuwwubuguubwbbuwbgbbgrwwbgwwbuugwrugwbbgwu +rrgrrrgugbubrbuwwrubuwwbbwgwugrbggwgwwgbubgbugrurbbgrbugrg +rbbrrwubbbwuggbuwrbwwbuuuwrbubrbrgwwuwuwwuugwrbrrgwubugrg +bbgwuggrwgubwwgbuguggbwgrgwrgwgrrrwrbuuggwrgu +uwbguugwwbgwwrurwwuuuwuuubuuuwgwwwwrggwwwgburrugwuw +bubgwuggwuguubrugbggrbrwgwggwbruubggbrwuuwurgrg +rbwurbbuguubbwrugrubwggguuugrugwrgrbgwwgubbgrg +rrgrgrwbwgwgbgwrwwbrgbrubbwbbggurgwruwbggubrurwrbwrurgrg +wrburguguwubuguguruwrbrrugbbgbwrgbgbgbuurwugbgbrgrg +ggbururuggrwurrwbwgrbgrugugbrwgrurgrbrwwuuwwrrruwwbwgbgru +rbwwbwgwggwugburgbgwgubwguurgbruurrgbuwbbg +wrgwrbugbrggbuwgrgrruugwgurgbwrbwggrbbbgubwrbugbgwubbgrr +ugwgwwubwrrbuurbrbrrrrrwbubgwrrggrbggbrbbgrbugrg +guuwbbwubbwbubgwuggbgrubwwruuwbbggbwwgrg +guuuubwwuuwggwuubwbrurrggwrwwbwuuwuggbgrbugbwggruwwgrg +rbuuugbgbgugggwgruwrbwubwbbubugrbwguggbwubrwrbr +uwgrbgwwbgbrubrgrwuburgwugrwrrgbbwbbbgurwwug +rwwwrggwgwrwgwwbbuwbuubbrubuubwbwrrrrubruurrbwgrg +wbbwrwgwrubgggwbguwgurbwurubggwwururbrgrg +wrwwwbbubwuugbwwuugbrbwbbbwubugwbwbwbuubwgwbwguuggrgubwbg +bubgbrgurbwgrbwbwuwugurbrwgbbwgwwbbgwgbbubbg +uwbburuuwggbgrwggwruwbbrbrgurbwgbgubwuguwbbwbwurwurbububg +uuuugwbwbwburuuuwbgwuwbwrrwbbgrrrwwrrgrg +rwgguuwgggbrgugwbggrbggwrgwggrrbbwgubguwbbrbbwwrrgrgb +wgbrwrrggbgugrwwuwruwbrguwrrwuwbwubbrbgrg +ggbbubbwrwbbrrgguugrbwuwrubguurrruwuwgrg +wwrrbgggwurwurbgubgurrbrbbwgbrrggugwbbrwwruwgw +ruguwbgbbrbrwwugbwrwrgbururuwrrwgurgwwwrggrg +grbuggwrburrrbggugbrbwgbgguwggubruwgrrbubbb +bbwuwguuwuurrggggwwwgubugubgbrrwbrwgruuwbg +bguubwuuuuguurbrurbwgbrrbgggrwrwrwugbbwgubgubbgrur +wrrgbwwrwbrubbgrurbwbwbubuuugurwgbbwwbrrwrwwurggurruubbbub +bwggbugrgbbbuwwrwgguwrgbwwuurrrbgrwwgwwwgrg +wgbgwrbrwbrwgwwwwwwwgrrrgwgbbwrwbwgrwbrwbbwbbwggrg +uggubwwbbwgwbgrubbgwgggwubbbwrbgugrgubbbrbburbbgrg +brurugwbbwgbrgbrrbgguuguwgbgrwrgggbggrurrbbbbubbruwrurbbbg +grgururbbubrgugbrwbwwbwgbuggbgrgrwwgbwgrg +burwruruwgrbuwugbgbgbwbugguwgwruwwbburuubwwgbbuubggrg +uggugrwgbwbgwgrrgrbwggbgruuwrurgwgwrwgbururbgwbrwb +bwubuubrbuuruwubbgbwrgwrwwbwrrbrrbrwurgwbrbwgubrwbuw +gwuguurwuubuwgbbwububrburbwrbuwrrugwurgbwugwuggrbb +wwwrurbgwgwbbubbubgwgbbuwwwwbbgugrwgwruubbrurrwrugrwwgrgrrg +gwrgwrgbgubbrbuwbugbguuurwgruurgrubbrbgwgruru +bbwwgwrurgbugbgubwbuwbwrwrrggwwgugwrgwgrguwwgrbuuuggwu +bugruwwubbbbguggggbrruwbwrrggguugrrgbgrgwwwrgwwuuuurgrg +uwgbbbuugwgggrbuugwggbgbbbrgggbbbbgbwwbuwggbwwubwrr +uwgrbwrurguurbwuruuwbuwrgwwwgrrurwurruruuggbgrg +gbbgubuwwgwubwrbrrwrwgwurgwbrrbrbrbggbbrguwguubbggrg +ggbgrggrbugrrrugrguwbwgwbwwrrgugurbrrbgrbbwwguurrgbubgrg +wrwwbururbbwwrgbggrubgugrbuugrugubbbguwgrg +guwrbrwwuwgruwrwburrrgrgrbrbggbbrggurubrgggubbbb +guubbwwrbwgwurrrbwbwrwuwugbgrwrbrubugbugrgrrwruug +wuwggburbgwrwuggbwbgbwubuwrgwwbrbgurubruuburgrg +ubguwgrgwggbugrggggruwguruwgbgubrrbggurwru +ubgbuwgggwggbgururbbburbwuwwbbbwuggggggguw +bgggbwwugwuwbggbugugwrurgurbuubwggbggggbuurubrrbggwwgrrwgrg +uggwgrurrgrggugbbruwrurwrwbrwrbrgguugurubrwbrgrrwwggrg +bgwubgrbugwurrubrwuwuguruwwubwgrgrgbbgruubwgwbgrg +wuuuwugwgrwgwgbugbuggggugbgbwuubbuwwwgrwwbwuurg +brbwuruwrgugbubgrgrrwguuurwurwubwwugbrbruwgrbuggwbwuwrw +guwwwrbwbgbuurwwgubgwwbwgbrbwuwgrgrbrwurgugruwggrg +ggwwwruuwwguwwruubgwuggbrwgugurgrugbwubgrbbbwbubwwwggrwgb +bguggbbbrgwbgwbwwrgbwurgbgugwurbuurggwguwuwurbubugbgrg +rrbbbrbburrbrubggbbrbgwrgwbgrgrrrbrbbbguwrrurrwburrb +gbwbrbwubbuggugbrgbbugggrbrwrgbuuuwuguuugg +wggrbbgbrrbuguggbgwgrgbuubbgwwbrugwbgrbbggrgwrw +uurwguuugwgbbrguugbgbburrwugburugbgrwwgrwwrguwbbruuugurgrg +wuuwuuwbwwggbwwugbrbgbgruwbbuurrbwrburbwwuggggugbrrrwruuur +gbuwwwruruguwgurwbbbwuwwubbuwugubbwgruwrurgwgburguwburb +grubugwbrbbgubwbruwrbwwwbggubrgbubrbgbbwbgrubgrgbg +brbwurwwrwgwurggugubruububrrgbgbuwbuubwbbwugrg +uwuuburgguggrrrgwbguwrguuugwbwbrruuggruguwuwrwbbgbrwuggrg +uurrrwuwurbrwrwwbubrgrrbuuwurwuwwgrbbgwgruubgrubrwbgw +rwwbruwubgbrwgugrggurbguubwubwbuburrbwrgbu +gwrgbrwgrrugbrbbugbgbubrbrwbwbrubbbguwbwrggrg +gwrbwguwuwrugwrggwgrwwrbuwbrbgwbwbrgubrrwrrrbrrggrwbgwbgrg +wrubbggrrwgwwburubuwubrgrbbruggggbggwwbwrrggggrubbugrg +brugubuwwbrubrgrwrbgwbggurbbwurgbbuwwrwwgg +bgwuurgwgbgwuwbgbgububbgwgbgwgrwbwgubbrgbwuwwgbbguuguwrwwr +rbbggggbgrwgwrwbrrgwgbrgbwggbubrwurwbbbbwrbbwgrg +wuuwurbwuwbgubbbwbguurrrbbuwurrgruwuguguwggbbwgrrggrwbbu +wwbbwwruuuggrbugggburgbwrbwburuggbrguuwbbbug +burrruburbuggrbuuwwguggwwugwbuwuuwuguwbbbggbrguur +wbbwggbwuwwwbbuwgrwrgggbrubgrwrgggrrwgbugwbrbrwguwubgbgrg +ruwubuwrbuwwrwbugbwrbbwbbruubuwbrugbgruwgwbururrugrg +wwwwrbwbgbuugrwwububgguwwbrrgrbubgwbwwrbugrrb +ruurbuurrgugwrurwuuwbwwgwrwugwbrbrrgbgubwrgguuwgrg +grwrurubwrbuwbbwguruggrrgwuurgwbrburbrrgwwb +gbrwbbuwbwwguwgbuururuwrwrgwbwuruwggbwuurwggbgubwugrggggrr +uwruuwwwrgrrrguuggwbbgbgrggwwuugrgrgbugbwbwuubgbbru +wrwubgubugubgrrrwrgbrgwbgrbwbwubgbuuwruwrrbwugrwrwbgbrgwbr +ubwwwwuubwwwwbwubgwwbrgbuurrbgbgbrugurbrugrgbrr +grwubrbwguubrgwuburbgbgrrugurwrgrwwururrwgwbuw +bbwbgwrgbbwrwrububuwugrbgrrwuwgbrbgwbuwruwwruuuubbbrrurrgrg +uwrrbrgbrrbwbbubbwbwgbwbbbggwugguuwwrbwruurrbgrrwgubgrg +grrrwwrwwubrrubbrguwugwgbrbgubgrgwbggwwrurrubggrggwwrwrb +bwrgwbrurgbruwgbbbuuguuwggurbbwguuurwgbbubuwruu +ggbwgurwwubgrbruwrrgbbwbuwurwgguwgrrwwugruwwuuguugurgrg +gugurgwurrwbruugubruwrbbrgrwrwgrrbbggbbggwbwrw +ugbubrbguuuwwrggrgwugbgrugrgbwrwwwrbruugrgrrg +guwwuuburwgrgrbggrggbrruwrbggugwbbrbrgbwwwugrg +ruwgwgrwrwwrbubrgrgggbbggggrrggurggbubugurrrgbgbrugww +bbbuwwwbrwguwrwbwgwgwrgwgrurrbwrggwwuguwrurrugurrgbrruurb +rwbuuwbggrrbuwggwgurbuwrwwwguugwbuurbgwurru +rwrwrgwuwburrwbbwbbbgubguwugrwbwwuuwbgbubrrbgg +gubrgbwbgbrbgrggbuwbrgbwbbwbrwbwuggrrgrg +bgwwrwubbgrbwgrwbgbubgbwgrbwggrubwrrwwubwubuu +gugrrgwgrgrggurubrgruwuwubububgwbwbrbrrrwrgbbwbggwwbbwgwu +grbwrwbuwruwrbwrbwububrrubgbguggbwgbrwgrbbwbbgrg +wbubgrubugwruwbbgrbrwbuubgwubgrbuugurbgwwrgbrggrbw +urbwgwuubrgubwurugubgwgbbwbrbbbrwgrgbubbwgbbwwbgurgrg +ggwrwwrwbbrgugwuuguburrburgrbrgbrwwwwrgwuggrgrrg +uubgwrubruurwbugwrrrwwwurbgwgbrugbwrrguburbwburrbbbg +gbggbgrugurburwbbrbgubbgugbrrrgwuuwbwrgwbguwgbg +uggwwrgggwwwrruwuuwrbuuugrbwugbrgruuuuwugrg +rrgbwuwgggrgbgbgrggruwbbgwuwggbgwbggbrbuurbrwu +rwuggugrwrgrggbrgbgruwuwgrgwrurruwwrwrwgrrurggurbbrrwubb +rubbrurrwgguwurggwbbbgbrrubwrwgrggrbgrugbgbw +wrwuurbgrrbrrbbrgggurubrgguruwgubgrurgrg +urwgururbwgrgbrbgggruuwgrbrbrgwwgubbwbrrrgwgggrwubbrwrubbgrg +grguuwggrwrrrwbbrggwbrrubbgwubbbuwuurwrbwbwrbgrbuwbubgbbgg +buuurgwurrbwwruwwurruwrrgurwwugggrggubbwugbrbbbrrwurubugb +grbgruwuwuwwgruuwrwuubwrbbrgbrubbrgruubwrrggrg +brugwwbwurruwgrbrurbruwgwbrwwgrwugwwrwwurbugwburbbbbbwurw +brugugwguruwbwugugurwwwwrrwbubgbrbbwwgrurgugwgwwbgbrrrruru +wgwggbbrugrububgggubbburwbgbgrurwwguggrwrgwu +wbburuuuwbrgggubugruwurgrwugwuuruuwubgguggrwrubg +uugwurguugrbrrgrgurrgggwrggwwgrburgrbbwrwggbrurgruuuwbwgrg +bbggubrubrguguggruuburwgbgwrgbbbugrruguuwurrgwggwrrur +bburbggwrgruubwwrwwgwrrbrwruurbbrwubgurwgrg +rrwbgbgbwuuugrgggrbwgwgwbggrggugburrbrrrbruwgurbgrg +brrwbrbugubwuubrubwrwubbbbuwwbrwwuwuwrggwr +rgwwrbubuwugurwgugwwbgrgurggwwgrburwbggrgub +brguuugwwguggrbbruwwwrgrbrrurbwuwwgrbbbrrrbbuwuggg +gwwburrburrguguwrggbugwruurbbwguruwbguuugbwbrrgg +gggubrrgwgwggggugbbrrrggruwgrwrgruwgbrurrggrwbgububruuwwrgrg +wrbrwwbrbrgbrrwrwwrgwrruwugrwgruguwubruwbrrburbwgbgr +rgwbrbrbwgbrwrrwrrugwgbrugbrbuwgwbrwbggubrgrg +ggbrrgurgurwguubrbgruwgrurwbwubguuruurrwgruguguwgrg +rrbugburbbrggwgbrwugubrwubgbrubbrrwubbrwbgbguwrbubuwuuguw +ruwuwgbwbgrgubrwrggrwwuuuwbbrruwrrbuuugrg +gugwgwurrbwuwwrwwwurbrruwbrbuugwrubrbbuuubwrgrrwbgbrwbg +rrbgbgbwwbwuwwrbwrugbrurwubruwwgwbwbwbwurgrg +gwurgwugwbrguwwugrrbrwbwwrbuuwbuwguurrburggugwggbbguuuuu +ubwggubwbggrrwgurbrbubruwguubbbbggwwbbwbbwrubuggrg +urggwrburbbgwubwugbruwguwggbbrwgbugwbwwuruwwwgrg +bbgwuwuuwwrwuwwgbgugwwwgurgwrwubrgugrrrgwuuwruwuubrwrbrr +grgwrgubburwwwrwwugbgrgwurruwrrrrwuruurbrrbgbbbgwrrwgrg +bbbggrggrbwbgrbrgubwwggugrwgrbrrubburbrugbgugwgwur +wugrgubwrrurgrgwbgwbwuubgwgbbwuwugbwgbwugrgguuwwgrg +uwwbguguggbbbrwrwbguurrgbrwwuwwruwurwbrbrwguuurugrgrg +brwuwbwwugrbbbubbwbbubbrgrwggbbbgbgggbuburbwggwuugrg +gwrbgrrbbuwwuugwggubwbuwuwbgggbrrwrubwbubgbgbgwggrg +grbbbwwwggugbrbwwggwwrrwwugrurwgugbuwuuugrbwb +urugguuguwgbwurwbwrrurbuwgwgrbwurbbgrbbrgrwbuwwburbbgruwr +bgrugbwwuggrrwgrbbrgrggubrwwuuuurggrrgurggbbr +bruuwbruurwugwubbguwurbububgrgrrwugburrwurgb +wwuwgbbuuubwwguwwugrrwbgrwguggugguuwbgubgrwu +grbgrgbuwgbuwburwrurubrguwrrbbgwuuwgruurburwwwubbrrurgwbgrg \ No newline at end of file