This commit is contained in:
dobiadi
2024-12-20 18:27:31 +01:00
parent da86193181
commit 7b0996cd95
4 changed files with 674 additions and 0 deletions

BIN
day19/c/day19 Executable file
View File

Binary file not shown.

262
day19/c/day19.c Normal file
View File

@@ -0,0 +1,262 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <omp.h>
#define CHARS_MAX 4*1024
#define MAX_PATTERNS 1024
#define MAX_PATTERN_ELEMENTS 1024
#define MAX_DESIGNS 1024
#define MAX_DESIGN_ELEMENTS 1024
#define COLOR_COUNT 5
#define cti(a) ((a) == 'w' ? 0 : (((a) == 'u' ? 1 : ((a) == 'b' ? 2 : ((a) == 'r' ? 3 : 4)))))
typedef struct sequence {
char *colors;
int count;
} sequence_t;
typedef struct node {
struct node *children[COLOR_COUNT];
uint64_t variants;
char key;
uint8_t is_leaf;
} node_t;
node_t* create_node() {
node_t *node = calloc(1, sizeof(node[0]));
return node;
}
node_t* search(node_t* root, char* word, int len) {
node_t* node = root;
for (int i = 0; i < len; i++) {
if (node->children[cti(word[i])] == NULL) {
return NULL;
}
node = node->children[cti(word[i])];
}
return node;
}
void insert(node_t* root, char* word, int len, uint64_t variants) {
node_t* node = root;
for (int i = 0; i < len; i++) {
if (node->children[cti(word[i])] == NULL) {
node->children[cti(word[i])] = create_node();
}
node = node->children[cti(word[i])];
}
node->variants = variants;
node->is_leaf = 1;
}
void free_node(node_t* node) {
for (int i = 0; i < COLOR_COUNT; i++) {
if (node->children[i] != NULL) {
free_node(node->children[i]);
}
}
free(node);
}
int possible(sequence_t design, node_t *pattern_trie);
uint64_t possible_variants(sequence_t design, node_t* pattern_trie, node_t* variant_trie);
int main() {
char *p, *buf, c;
buf = calloc(CHARS_MAX, sizeof(char));
p = buf;
sequence_t *designs = calloc(MAX_DESIGNS, sizeof(designs[0]));
for (int i = 0; i < MAX_DESIGNS; i++) {
designs[i].colors = calloc(MAX_DESIGN_ELEMENTS, sizeof(designs[0].colors[0]));
}
int design_count = 0;
sequence_t *patterns = calloc(MAX_PATTERNS, sizeof(patterns[0]));
for (int i = 0; i < MAX_PATTERNS; i++) {
patterns[i].colors = calloc(MAX_PATTERN_ELEMENTS, sizeof(patterns[0].colors[0]));
}
int pattern_count = 0;
int reading_available_patterns = 1;
while ((c = getchar()) != EOF) {
if (reading_available_patterns) {
*p++ = c;
if (c != '\n') {
continue;
}
if (buf[0] == '\n') {
reading_available_patterns = 0;
continue;
}
char *q = p;
p = buf;
do {
while (*p != '\n' && *p != ',') {
patterns[pattern_count].colors[patterns[pattern_count].count++] = *p;
p++;
}
pattern_count++;
p += 2;
} while (p < q);
memset(buf, 0, CHARS_MAX);
p = buf;
} else {
if (c == '\n') {
design_count++;
continue;
}
designs[design_count].colors[designs[design_count].count++] = c;
}
}
uint32_t shortest_pattern = UINT32_MAX, longest_pattern = 0;
for (int i = 0; i < pattern_count; i++) {
if (patterns[i].count < shortest_pattern) {
shortest_pattern = patterns[i].count;
}
if (patterns[i].count > longest_pattern) {
longest_pattern = patterns[i].count;
}
}
node_t *pattern_trie = calloc(1, sizeof(pattern_trie[0]));
for (int i = 0; i < pattern_count; i++) {
sequence_t current_sequence = { 0 };
current_sequence.colors = calloc(MAX_DESIGN_ELEMENTS, sizeof(current_sequence.colors[0]));
insert(pattern_trie, patterns[i].colors, patterns[i].count, 0);
free(current_sequence.colors);
}
int part1 = 0;
uint64_t part2 = 0;
// Try to build each design out of the available patterns
#pragma omp parallel for
for (int i = 0; i < design_count; i++) {
sequence_t current_sequence = { 0 };
current_sequence.colors = calloc(MAX_DESIGN_ELEMENTS, sizeof(current_sequence.colors[0]));
if (possible(designs[i], pattern_trie))
#pragma omp critical
{
part1++;
}
free(current_sequence.colors);
}
node_t *variant_trie = calloc(1, sizeof(variant_trie[0]));
for (int i = 0; i < design_count; i++) {
sequence_t current_sequence = { 0 };
current_sequence.colors = calloc(MAX_DESIGN_ELEMENTS, sizeof(current_sequence.colors[0]));
part2 += possible_variants(designs[i], pattern_trie, variant_trie);
free(current_sequence.colors);
}
free(buf);
for (int i = 0; i < MAX_DESIGNS; i++) {
free(designs[i].colors);
}
free(designs);
for (int i = 0; i < MAX_PATTERNS; i++) {
free(patterns[i].colors);
}
free(patterns);
free_node(pattern_trie);
free_node(variant_trie);
printf("%i\n", part1);
printf("%lu\n", part2);
}
int possible(sequence_t design, node_t *pattern_trie) {
node_t *node = search(pattern_trie, design.colors, design.count);
if (node != NULL) {
return 1;
}
for (int i = 1; i <= design.count; i++) {
char *pattern = calloc(i, sizeof(pattern[0]));
memcpy(pattern, design.colors, i*sizeof(pattern[0]));
node_t *node = search(pattern_trie, pattern, i);
free(pattern);
if (node == NULL || node->is_leaf == 0) {
continue;
}
sequence_t subdesign = { 0 };
subdesign.count = design.count - i;
subdesign.colors = calloc(subdesign.count, sizeof(subdesign.colors[0]));
memcpy(subdesign.colors, design.colors + i, subdesign.count*sizeof(subdesign.colors[0]));
int good = possible(subdesign, pattern_trie);
free(subdesign.colors);
if (good) {
return 1;
}
}
return 0;
}
uint64_t possible_variants(sequence_t design, node_t* pattern_trie, node_t* variant_trie) {
if (design.count == 0) {
return 1;
}
char *pattern = calloc(design.count+1, sizeof(pattern[0]));
memcpy(pattern, design.colors, (design.count+1)*sizeof(pattern[0]));
pattern[design.count] = '\0';
node_t *node = search(variant_trie, design.colors, design.count);
// We already know the answer
if (node != NULL && node->is_leaf) {
char *pattern = calloc(design.count+1, sizeof(pattern[0]));
memcpy(pattern, design.colors, (design.count+1)*sizeof(pattern[0]));
pattern[design.count] = '\0';
return node->variants;
}
uint64_t count = 0;
// Try all possible patterns
for (int i = 1; i <= design.count; i++) {
char *pattern = calloc(i+1, sizeof(pattern[0]));
memcpy(pattern, design.colors, (i+1)*sizeof(pattern[0]));
node_t *node = search(pattern_trie, pattern, i);
pattern[i] = '\0';
if (node == NULL || node->is_leaf == 0) {
continue;
}
free(pattern);
sequence_t subdesign = { 0 };
subdesign.count = design.count - i;
subdesign.colors = calloc(subdesign.count, sizeof(subdesign.colors[0]));
memcpy(subdesign.colors, design.colors + i, subdesign.count*sizeof(subdesign.colors[0]));
count += possible_variants(subdesign, pattern_trie, variant_trie);
free(subdesign.colors);
}
insert(variant_trie, design.colors, design.count, count);
return count;
}

402
day19/input.txt Normal file
View File

@@ -0,0 +1,402 @@
uurgw, burbgur, rwgbrg, ubburu, rgr, wug, bbwrg, gbbr, ugwuu, ugu, wwrgwwub, rwurr, uggg, rwb, bwwub, gbb, rbwuw, u, guwrr, wbgw, gbrwbwb, gbrgwu, ubrrwuru, wrwur, rru, uuwgbbug, bwu, bwgggrgb, brbgg, bbgr, wrugg, gbwb, rwuw, wuwb, gwb, rgwr, bwrug, wrrb, ubru, wgr, wuuwgb, wgbbrb, uubgr, rrw, bggwuu, wrgb, urr, urbg, rwggbg, wrw, ruwub, uub, rgwgrgb, bubwr, wrg, rrwrrrbw, gu, rgb, bbr, bgb, burrrbr, rbu, gbbg, rwrwuw, wwgw, ruuu, wru, rur, rrwg, ggrb, ggb, bbw, wgub, ww, uugw, ggbbrwr, ubbgwg, uwwubr, bgurbb, buwgbw, uw, bubr, wgubwr, guw, rr, ubr, uww, uwr, ru, bub, uggbubw, bb, rguwu, grbgw, wrgr, gbwwrb, gugg, rrggbrub, uuu, bwb, brb, wrrwr, brww, ruw, rgu, wbguwgu, gbrguww, gbg, buw, uwgr, bwru, bwg, wwwb, grgg, ubg, ugr, gg, rurrb, w, uugg, rbw, gurbbw, rugrrg, gbug, wwu, gwwgr, wrr, wgwrbr, guruw, urwgr, ugruw, rg, gwuw, ugrwubrb, bgwrw, rbur, wgw, brbrub, gwgwgu, rrurbwu, bgr, ugbwwuub, rgrrubuw, bwr, wrru, wrub, gwbu, wbbwgbr, uu, wbubb, bwurwbr, wb, uguwu, bbgb, wruu, ur, ggwb, uug, rwwuw, wuuubwr, ggu, gwwg, gw, rgrg, bggu, rbg, wbu, uwu, ggbbgg, rwgrr, urrw, ruu, bgg, gbrug, brwr, bg, gwwr, brgbw, uwg, wbrub, gbw, ggw, rwguw, gbbguwwg, bgrubu, gug, gb, gwu, bbuu, wbbr, wgg, ggggg, gbru, ugggrw, ggwu, rrr, wbgrg, ruugwb, wu, ruru, uwwgg, brbru, uwbbguw, ubuu, ubwbrg, uwwub, ugbubb, bgggw, rubwrrg, br, ub, ggr, wgwgr, ggbr, bru, gwg, gruw, rb, bgug, buugg, grgwgbg, bgu, wuur, gbuubg, rruwg, urbb, brw, wbgbbbg, rwu, wwr, gwr, wur, ubuw, gbgwbu, wg, wrb, rug, rbwwwgw, bbww, wwbbr, ugrb, bgub, brwgr, wgrbwrbb, gbrw, uubw, rguug, uubu, urw, rbbw, gur, wgb, rrbgr, ubruwu, rggr, rugbgu, urg, rwbww, ububwr, urggb, ruubu, rbgr, wgrrwbb, rbrb, uwwrur, ruwbgwb, wuwgr, gww, wuu, gwgwgr, bgwb, ggubgu, wuwwwub, ugb, uuwbrgr, bggbbwu, wwbwgruu, wbgubb, uuwgb, rbwg, rw, uwuugrr, wguwgb, wgu, wrgg, bwwr, brrwg, gurgu, ruwgu, wbb, gwgrrwrr, bwubbg, ugrguru, grr, bbg, ug, ubwruwu, brgbwrgu, ggbuwru, wuugwu, urwg, bubrwb, gbub, wgbw, ubrubbw, ruwwu, rbrgb, wbbrgg, ubugw, gurb, gub, wwrggrwr, wubgur, gwbww, wwwrwgr, wuw, ubbwwur, grw, wbr, wwg, buwgw, ugbug, brg, brubwbw, buubggg, ubu, urgbw, rwbubw, grg, bubu, gbugw, ubwbubb, uuguw, wrugr, uggb, wugu, rbrrg, bbb, rgw, urwwrb, gurggub, uwbb, uwgg, rbrgu, gbr, ruwur, wwrgu, wub, bgw, ubwb, rwg, urguw, brr, rwr, bwgrwbrb, wbwrbbrg, wwug, buur, wuwwr, rbb, gwug, grwrgub, uwrrbr, gwrw, ubw, ruuub, bgrrrwwu, rub, rgbr, ugw, rbrggr, ubb, gggr, brggrb, bbbw, gugguwb, rbwub, gr, rww, wbgb, uru, ggg, wbg, rgug, ugruugw, bww, urru, bubb, bwrg, guu, rrgrrg, gubrgg, rggwwrgb, bwgrbr, bbgbgg, wwrgw, uur, bgruwu, ruwbrrb, rrww, bbrwgb, brrw, www, rbr, grb, uwb, gru, wubgb, bgwug, uwgwg, ubgruw, g, rwuugr, brrb, uugggb, grrb, urb, uuw, urwgg, gwbr, gbu, ggrwgu, bwbbwgb, wbw, bgwbgb, r, buu, brrg, ggubg, grrgbur, bgbwbg, wgbb, bwburb, guuggu, rggrwrw, wrwrbwwg, wwrw, uugbr, wr, rrb, rwrww, urug, ggrgg, uurrr, bur, ugg, ruwbwg
ggbgrrgrbwrbuwwgwgbwbbuwrubugurwbbwubbuwgrgurwwgrggbg
grbwbugrurrrwrwurguuubbubgwuugrwurwrbbbgrgu
bugwbgrrrburbwwgwbugguuggbwgrrwgbrbgbuwrgguwubwwbwwrrwrrgrur
ruubrbrbguwgguwurrubwbrwuwbrubwguggbgbrbwurrugrr
uubwbbugurbrrgwuwwguruurbwwrgurrubwwuugbuuuu
bugrbbrrugwrbwgwrbugwruugrwuwwrggrwrwugwguurgwrwgw
bugrrrgggugwwugwrbrurggbwwwbgruwrbubrubbwwbwwwubru
rgurbgwruwbugbgwbrbguwggbggbggwurgguwrgrgubwgwu
grwwubgwgubwrubwgrrbwwugrbbgbgbwurgwgrbbwrgburur
gurbrggubwrwwuurbwrbgrurgwwgubwwubwbbuuwbgbrgurbbbrug
gbuuruuuwbwwwwbrurugbbbwuurrurggwwbwgwbuwgbwruwbgu
ggwugbggwrwwrggrwrgwrwwruurbgbgwuuuurwgbbuwrwgbrug
bugbbwubrugbbrgbwrguurrbbgbuubwwbubuubwrww
ggubuuwuubbwgrwururwbgwrbbgwwgwrbbgwgrurwbgbrwbb
rwgurbbbgrrbwwuwrrbwbgbburuwuuurrrbguwrrrrwbbgggbb
ubgbugugwguwrbbuwgrrgbbrrbwuwrggggwuurwwwgurgbru
wuwugrgbgwgugrrwwurbuguuwggwuwbwwbgwbgrrbuwbr
wrrrwbwruggrwgubrbgubgguurwubuuwwgrwrrurbruuurrww
bugrbuwwggrrbuurrwbrggwrbrbbuwugbbrgurrgggwggurw
uwbbuwuwrwrbwwggbwbrubrwbbgggrrgbrgbwgrwwwubuguuubwuru
ugburwurugburuuwgugrbrbbbwuugwwrbuwgwugguugruugrgbgrguubwb
brggbuugwubggwbubbuurwrrggggrbbrgggrurwggwb
gggwuwrugrguugwgrguwgwwgguugbrurrwrbwuuwwr
bwrgrwrbguwgwbggwuwubgburgurgbgrbgrgwubbwgbruub
bugwgrrwrrrbguwgrwwrgurbruugguwwgbwgwrwrubwb
wrrubuurgrwrrgrubbgwgugbbbbgguggrwrbguwbgrguwrububwg
ururbwuuuguugubgwgurwwwbbguuubwbwbwwugrwbub
bugrbrugrgbwwgwwgwuubggugwuwbbwrwugurbubruwgbbggwur
ugbuwwbwuwbwbuuwgrbbrbuuuwwwuruggwgwgrwgbrug
ruurrgwbgwrwwurggurbgbuugwwubuwwwugbrurwgub
uggubbbwuruwbuuggbbggurbubbbburruruwuugrwuwbgrugggu
buggwbwgurbrbguwbuwgwgrbwuwruwwuwbwwubuugbuwb
gwugrgrwgwwrrrgrwrwrburwuwbbwbrgwbgwbrgguurbbru
ububwbuggrrgbwgbbrubrguuwgguurrugugbbuuubrbrbwbwbbbrgwb
wwwrwbgrwrwwrbugbburrgbuwuwrgrwubguugbwugwggrubwuggu
rgbrbuwuruuuwwugbggrrwgwbugbgwwwrgrgugwbugbrwwwbrrrgggwrrg
bugggwubbbbbgwugbrguuugbbgwuurgwgwbwbbuuu
bugwgwbbbubrrurrrugbrbugugrwrbgurwuwurgwuubuwbuuuru
ubwrguruwrrgbbuugruwgruwbrguurwgrurbuwuwrrrurwrwrgrbwbbu
gguwrbrrwwwggurwwubbgbwbwuggwubggrugbgubuwubrrugb
brrruwuuuruubgururwbrbwuwrgwrbuwurgruurwuubggww
rwuwruwurbgrrgubgruguwrwwwbugbbuuurruguuggu
rugrruggrwrbuubuuwbrbwrrggguugruwrbggbwbbuugbwuugugrbwwrb
bugwgrwrggbgwwruwwwwbrrbrurbruwuuwrubuwurbgrwgwugwguburwurb
bugbbbubrwburubugrggrrwgubuuubuuuuguwggbugguugbrbgurgwuu
rurwbgubgbwgrbwurrbburrurbrrbwgugwuuwuwrubu
rrrwbrwrruruurgwrggbuuubrbruubugbbwuubbgrggruw
bugwuuruuwbwbrwrgwurgwbgubuguwgbwrbwrubuwgwrwb
ubrrruurgwruwgwrbwggrurgbrbuuwrguurbrrbwwbbrbruwrgggbr
bugugwggwbrwbbrgugbwugwwgrgubwuwwrrwbrub
rwubgrgrbrggwugbbrbgbwwgrbwbwuwrgrgwwugrgwg
bwubugrubwugrbwwrwgbggwwgubwrwbrgrbggubuw
ruggwurbgubbbrugwrwubwrbwrrurbguwwgbgwwgwubbwur
urubwuwrguguwwrgwgurgwggbbbruwgbggububbrwbrgb
uwuwgbgbuwubbruwrgburugbrgbugrwurwgwrrrggbrubgguwrugrrgwww
wrbubbwgbgbrwbwbwbgwgrgurggwuwguubwbbwggwgwgwugrrwgwg
ugrbruubrgbgrwgugbgwbugugbrbubrwwuruuwguwrguguwguuwrg
bbguwgwwgubwbwrrwrbrubggruguwwbbrgrgggwgwrrugggwwguwurbugr
gurrggrbruwburruwrbbbbbggrrbwrurbbgbuwgrbbr
ubgrrbubruwbgrgrwwrggwbgrguwwbgburbuugbruurwbu
brgbwuuggbbwbwbwrrwburggbbgwwrwwwguubwwurwgrwuwggwgwrgbr
wgwuggrwwurrbrgwugrbrubrbgurrbbbwgugbwuugugw
bugbwrgbbwbgbuuurbbwrrrwbggrguggbgugurwrggwggrwwggbbrwgrb
brrbrbwbgrbwgggurbuwwgurbrbgwrwguwruwruwgbwwwrrwbugr
rbrrrruwbubgbwwbwgruurgggbbubbwgrgruburbwuwru
uwrrbgwugbggwrburrrbgbururuguwwwwgrrugurwgbbugubbb
rgwrbbbwbwuwbwrrwbbuubububrwbgwbrubgbbwubrgrbuwwbbwgur
uwguggwrggggggrburwwgurgwwgwrgggrurbwrurrr
wgggrwwgbubrurrbbgwrurbbgrwgwrbguuuwugwubruuwurbrggwg
buubugrrrgwbwgubrggrgbbrgwwrugwugugubwggwwgurgubbgu
grbbururwbwwburrwgrwbrgbrbrrruwrrwgbwbrugrbgwrwugggbru
uruubgrrwrwrrurbugwbuwwwwruuwuurbrwbbuwggrbrurwgb
wgbgwrwuwburgurrwuuwguwgurbbrwgruggggurgurguwbbuubug
wgwwbgwgbrwruburugburuwrbbrbuwwguwbbubruuuurgb
wbuugggrgruuguwbbrwrurgwrgbuwgggbbgrruwubbrbww
rwrgrbuwrwgwgwwrwwwbrbwrrruggwguwwgggbuurgrrwwrb
grugurwbwgbgrgbgguruubgbrugbbrbgbrggwgrbrbrru
gugrgwwgruwgugubwwggwwgwrugwurgbwurrbgbbbggw
buggwguwurbgwbbrrgggubbwwrrgrgbrrwwrggbgrbwruuw
gbubrwburbbwuwrbbbwbubwuwwburbgrgrgburrwrwgrwgwgbwbgwug
bugggbwbbuwbugrwgubrggwwwuwrrubwurbrbbgwurwwbbuuubruuuuguruu
brwugugwuggurbrugurgwwwbugbwbgruwgbruburrggww
gwuruururbuubwbrbrubwrbwuwbwgubgbwrggwgguwrbbbwgrbu
bugbbbruuwbrwbgbgrwruuuurgwrwuwwuruubbbrggrgbbguwwggbwwwu
rgugwrbuwbwrubbrwugbwwbbwgbrwwgubggggbrbugrrwbww
rbgbbwbuwbbruubwrgrwuuugbwrubwugwgbbrguwrbwgrbbugubg
bgwuggbrggbbbbrwrgrwuuuwbgbwbrwwwwbwrwrrgbwwgrbugwwub
brbuwwwgwgggrrburwwgbbgwwrwrgguubwwwbugguwrwbwwuguuurg
gggbwrwgbrbrwbrwgrbrbbbugrgbgbrbbwuwurbrburbw
rbbrrugwwwwgrgwbrgrrguwbubwubwururbwbuwgrwggurugrruwbug
grrubrgwuwugrbuwbgwuwrgwuwwwgrburrbuurwgggubguggbwrbrru
bugguguurgwrgggbuugurgugrrbgggbwwbwgwruggwubwgruggb
wwwbgrggbwggrubbwrububwrrurubrgbbbwrurgwguggw
bugruwwrrruggggugwbwwwburwrgwgggrrrgguuuuuwrubwbbuu
grbgguuwruwwbgwrwwbrubrbuuggugbuwuuwbwwubgrrrwbbbwb
bugurbbbwgruugburgggbgwugwgwuwrbbbrgrbgggwb
rbbbguuubrubgruubwgrwuuuwwbwrrugwburugbuwgubwg
bbuwgbugrrrguwgrugguwwbbwruuburwgbwwrbwbwburgrwggbrgrrw
wbwruruwgrubwrgwwgurbuwrbruwgrubgggrwguurwrbbwu
brwwrrbguwrbwwrgbuwbuwuubgbggurguwuguwbgguwrwwgubrrbgrrbw
bugbbrwbbgrgguuwbgrbgwwrubgwbbwrrwggurgbubbuwbwgwugg
wrbuuububbbrwwwwbgrgwuwugwbruugbggbbwgrgurwgruwwruwwgr
bgggrwrbwgubgurbrrwrrguugwwgwbuubwwrrgggbrwrbgbubgrwuru
buugrggbrbwgbggbbbgrrwwugburbbgbrrbrbuuwbuwwbwgrrwrubuwwgw
wurbuurwwbrbwburugggbwwugrrurrwrrwgrbruwrgruuw
guubuwwbbbuwrugbwwuubrbrgwgruwguggbrurrurrrwurr
gwubrgrbgbrwbgwuwwruugrbbbwurwuwwrbwrrwbruuwbr
urrugrrggurwgbgrbgruwrwwuruwwuubrwuurgubwugg
uwrwwbuuubrgugwbwuwgbggrurubbrrgwubrwbbrbrb
bugggbruwwgurrrgwwbrrgbrrbuwbugrbbugbwgrruwubuwwwbwrbrrbgbgg
bugbgrbguurugwwbruugbggbbwuwbrruuwbrrgwggwurwgur
ugwruwbwbwwgbrwbuubrrwgrruuguuwgbrburbwuubrbbwbuwr
uwuguugwbguwbwwugbrbwrrgbuwggrbwurgrwwbrbr
bugrubrugbgwwrrbrubrurgrgwurbruwrggbrwuwwurwrwuguu
urrugwbrwurburgwubuwwuwbbbguwgubrbugrruuwwruugbbwrb
bwuurbwuuubwubrwbugrwgruubwggubrrbwgwubrrrgbburrrwg
wwwrrgugburubbuwrbggwrwrrrrurwgwbuubrbrguuurrwurrwggrwrb
wgrrrbuuwrwwuwbguurburgbbgbruwbuuubwwbbrbgubbbwbubruuguw
gwwgbgwrrrgrrrwuwuuwubuwurrruuwwuwuwgrgrgwbuwgubgbgubuu
uuurrgurrwrrwrrwrgwgrbgugugbbwuwubbrwrubrgbwbgbuuwubbrwwb
bugwwgrbuwgbwbrubuuwuwrgrwgrwruggwwurwbwrw
rrgwubrrwbbgrbbubbbggbgbwuguwurgwwrguwuwburww
buwgbwbbwwggbrgbgguwwurrbwwwwgbburubwguwwrr
ubbubwgugbuugrugwrwuurgubrbrgbrwgrwwgrbwbwbbwurgubbbbbrgw
ubbgguwbgrurrrgbwrbwuguwgbbuuuwurrgubwgwuggu
gwgwggwrwbwggggggurrubwggggwwbwuugbggbwrrwug
rgwurbbbwuguugubruuuggrgwwuugrubruruwbgwgrbbw
rbwgwrgruruugbrrbbrbuwuugrwuguwrwuuugububwg
gwbuububugrguwbwgubwbubbrrrurwwurugwgbgurwrbguuwggrrrubbgb
rubrgurrbbbwgwbwrubbgbbuwrwruugrwbbgrrgwwwgwruur
grgrgbggwruubuguwuugugubgwgbwrbguggbwrrwrgbrubwwurgugb
rburbrbwbgrurrggrwggruuwgwbggbwwbgrbuubbgububgrwgrugwru
ubrrrwrggrugwgubrwgwggurwrbgrrwugrggrgrwwugubgruwubgr
bugwgubgurbgbgwrbubrgbguwgugwburbrurgwrrbwubwgbwrww
bugwugwbwuwwwurbwuurugwubwurgbbgggrgurbbwgrwwwwr
wguwrbwbuwubgugwuuwrwubgruugugbgbugbbwbrbuwbrgwr
uwrugubwbwwbwrburwrurugurbwwbrugwbgbugubgbrguwwrrruubub
urrbrwwwwwuubrggwbbbbuuwgwguugbwrrgbgwugbwgubr
wruguwuggrguwbgbgwbwgugrggbwgbbbuurrwwbuugwgbbguurubruu
rrwwwuugwubruwbwbrubguuwruugwuguubwbwurrrugruuugruw
wubugurwrgrurwgbbgbburgwbggurwguubbrbugurugrguuggg
bugrggurburggrwrbuubbubbgrwwgwgguwrubuugbrurrwbw
gggurugggggbuwgwguwgwgrwgbwbgurbwwrbugbwwuw
wrwurwubwgrgbgugrbwwburwguubbbgwburruggbwgwbwgrur
bgurgugrrwugggubwgwwwwggwrrbwbggrwurgubrrruwwbwbgugrubugu
wbuwwrwbgbgwrwbbbgrgwugrgguuurwgrbrrbbbwrrwrrugggbruwwb
urrwwuruwurgwugbuggrwbwugwbbbruwrgugrwwbrrbrrwwgrwwr
wbwwwrwuurrgrrgrguuubwwgugggguwbgbrrbgbbrwrbwuwruwggubrwr
buwrrwrrwrubwrwwgwrrugbbugbubbbuwrrbrgbubggrwgwgwruwbub
rgruwbrwbugrrbgrruugwrwbwwgguubrrrwrururwurrurwwbbburuwu
grburuubguwbuwbbgrwgrwrrubwuuuuwwrggrwwgwbbbwgrbwbg
rugrgguubgbwugwwburrubrwrwgbrgwrgbgrrgrwwwuwgrbg
bugwwwrwwwgwuwbgggbrbgurgurwwgwbbgbgwwguwubwubbbguu
bwubugwbrgbuuwwuwrbbbwuwguwrggrguururbrgubwrrb
gwuurbbgrguwwbwgbwgburwwurbbgrrbbguwrwbubrrwuru
ugruguubruugbggbrwuguruuguwwrurggrgubugrwwgbbbugwrbu
bugubburwbuuwwbubbrwgbwrrbgggbrubbbguwwruwu
ugurwgbuggbugruwbggrrrwrrrbwbrbubbbbuwruwrbwwrrrbwbg
wrgubrbwwgbubuwuurggrbruwrrwrgggwuubbuuruurbbbwugub
ubrurbwrwrrgrrrrwgrrbbuurbbguuwrwururrgwbg
gugbwwuwuuwurubbwuguuuwubgbgwrgrbbguurwruwbrwugwgugwrrruw
rrubbrwwrwggwwrwwwbbbgurruwggwuurggwgbrrguwwwbrrrwrggwwwu
bugrwrgbbwurubugbuubruuugrwubrbubgugrurw
urguwrrbgbbwbwwgrwuwbbuwwubrrrgrwrwbrrrruurrgrrruwuugu
rwugrgbbggururrbbuuubrrgrgggrwuwbrgrwggwgwbuwrurwbug
bugrgbwbgrruurrwgwgbwgwwuuwgrbwbbbuubgrwuwgrgwrgur
wuuwwwrgubbburrrrugrwugubwburwrugbuwuwugbgwggggwbrugbuwwg
rguuurwbgbrubbbuwwbrbbggbburubururbbwwbbruurrgwbrwgwggb
brggrwubuwubrwbgrguwrubburwwgbgbbrwugruubbugwgb
bwrrrguwbbgbwgugbwgggrgbrbuwuguuwrwrwrbwbrbwb
rwbrgwguurguuubrbbgbgubuwuwwbgrggbbwbbwguu
wgrbbruguggrubbwwwurrrwburwrwuwubbwubruwbrgwwubwubwugr
bugrrwurrurwurrbbgrwwrgwwubuwurrbuwwgbwuwubrwbbubbgu
wbbwwgburuwbwgbwwrugwgwwwrrbrrggwrbbugwgub
wrbgbgrugrurwrwubbgrbgurgrbgrgggubuubwwwwgbbwu
wwrruwgubggbwuggbwrugggrbwwuwwrbururbuubbbuuubbr
bbrbbuubgbrbbgrburrwwggrrrurbuwggruugwrrugguruwurbbr
rrbrbwuwbbuwbuubwubbuuugubrubbruurbrggggwugrbbgurbgw
rbrugrbrbwwrbrgwubgbbrwubgwbbbbrgggwugwugwbb
bugwwburwurbugwguwrrrgbbgrrgbgrgurwwurgwwuwggrbrw
buwwwggbugrgugbggbuwbwwurrbwwbbuwuggggbbguug
rrrwbgrbuwuruwbuwbgrwbrbbuuwwruurwggbrgbwwggwgrwrrbgrwgr
rrrugrwuwwrbwgwwrwrubbbwuugbguguwggbrbrwbr
bugugubbggurwwgrrwbuwrggwbgwurbbwrgugubgbugrwrgwgruwugggbrb
buguuwwubbugbwbugggrwbgruuubrrgbuwbwuwrgbwbbwguburwrg
bugwgbgguwugubbrgrwrgruwuwwrrbbggrwwbggwrggb
bugburrrrrubgrgguwwuwrrwbgbwwbbbwubgbbrrru
wgwugrubrggubwwwruubrgbwwggrwubbguwguurrurggr
rruwuwggbbrbwuwwgurrurrwrrbwruguuwbrbrgrrbguwubuwbg
gwbgwgwbrwguwwwwwbubbbwbbbrwubwgggrgugururgrwbbrwbuguubu
bugggubbwggrburwrrggbrubwuubruburbrrggrbgubbrw
rrwubwrgrwgwrbrgbububwbwrrrbwgbruwuuugrgubgwrb
bugbwwuubwwbwwubrbbbrgrrrwubgruwgbgrwgbbbrwbgb
ubbuggrgwrwrggwbbwrrwbrggurgbbbuwbbgurubbwuwruwg
gbwgbgbgwrwbwrbgwuwbbggbrbwgrwrwwurgwguggwuuwubu
bgugbguggrbrwbwggwbbggbrbbrbgbbbugwgwwbgwwwruuuubww
bggrugbrbgggwgwwrwrubwbwuruuggbuuguubggubgwrgbwuubrbrg
bugugggrwrguwrguwggrggbbbwuruuwrbwbuugwgw
gwbugbgwbwwugwruurwgruwwrbbuggwwbugwrugubwgurbugb
urrbgwgubrburgrugurugubuggwuwwbrwwguuuwwruurbbw
buggbrwbwrwwbwgruuuuwrwbwrbgwgwbrwgugggw
wrrwbbgbgrwggbuggrbwwubrwrbuwuuruubbwbrguu
rbwgbrurwuwguubruwubruwwrwguwuwwurggguwburbgu
rggwwwrubrbbrgrurbuggbgwwbrwwwgbwwbgbuugwurbbbrr
urugrrbgwgbrgbrgbgbuwwgrbubrugwbrggggrgrrbguwbuwwruuw
wgugrbwwwurbgwuwubrgrrwbuwrguwwrbgbubrbgwrbwbgwwwu
wbbbuuwwburbgbwwggbbgbrurgbwrwuwuwgrgurgbbubggwbrrggwbbb
wbbwuburwgurgurruwbbrgbrwubuuwrwbbbbwgwggubuwuwubb
gbgbgwrururuggruuuuuurbwbgrwwurggbgggwwurbwuruw
wbrgubgwrruwwgbwrwuwubggugruwurwwbbrggrrgrrwurbwwgwguww
wgwruugrbuguggrubuuurgwrgguuwbbgwrrrbwbgwrrgbrrguurguur
grrwgrwrwgbbrbugbwrbbwburbuurbugwuwbrwbwgrwbwwbggrgwww
wwruwgwuwrwgburbrbuwwggbubbggbugbgbwgururwurrgwbwrbrbbwbrg
bugwwwwwbwgrbwrbbwggbrwgbwubuwwwwwgruurgbgwb
ggwwugruugggbgbwbgbbugwuubwuwwuggugbuuubgbgu
buuuwgbrrwurugwwuuwbgwbuwbbbrwgwgbugbrubbuwwguww
wubwurbwbrrrbubggwrwggwuwubbgbwbrbgbugguguwgggwugugr
bbubrgrwbgwwwwbguruwwwwwgbbruggrbgrrgugrurrggbgrwguuwubwb
ubbwbrubwrbrwurbgrwbgwrrgwrbwwbbgwbgbbruwrwgurubrwbrgbru
wgubbgbgbrbrrgguuubbbwbwgguruwwgrgrgwwurggbgwwruggwrguwwbw
rburwwubguubrgrrrrgrbggruubrrbuggwwrurrbgrguuuwgrrgw
rbruugrrgrggwgwrrrrbubrrrwrbruuwwwguugwubguuruurgrg
bugrbugbrwbugrbbruburugrbugurbubbrwbrruurgurrwgggrrugruwrrrw
rrrrguubrgubbruuubbrwbguwgubwbwwbbbwgrwbrbbwbuwurwguugwwu
buguggrwgwwgrguwgwurbwwwrgwbggwwruuwrbgb
bugubbrrwrurguuuurwgwwrggbbgrrugbrurrgbuugwwwuwbubr
rwbrbuurbgwbbbuurbrbbrbubrbrwrbrbbburbrwuuurgw
uwgwruggrubgwbrwrwgurwuwrwrgwuguubbruwwugbbbg
rwwrgrbgbwwwurbwruuuugbrbggugugrwubrbwugwubwu
bugbbububbuubugwbuuwwurrwbwgrwrrrgggruwuugwuwururugugbbwbggw
gwgbrugggwgruuwgwwggrwwbbwuwrgguwrrbrbubbbubw
bugwwrgwrrbwgbrubbruwgrubbrwwugrwbwrbbrgbgbbbrgbwwwuwwrrgrb
rwbwgwbwuugbbwwrrrrwwbbwrrrrwugwbugugugrgwwwrbbgu
brubuggwuggrbwruubwgrrwgbuurururgugrwurgwbbwbugbgg
wwuuubwurruuwrwwbubgwgurrubwubwbwgrbruguggwgbwwubrwubuwguw
bgwugguubrgurgubgubbwrururuwbwruwwrbbwwgrwgggbrb
rggurbrbrburguwrwwrrwugwgburrrgwbbubwrggwwwuwrgb
buguwgrgrggwgbuugwurgbugwwbbrbgubwwubgwbgwguggwgu
wbuwgubwbbuuuburgurguurggruuwwrbbbwuubgwrwugwwbrwbg
bgbgwwbgrbbwbrwuuuurbuubgruwgwbrwwubwurbuugurrwwuwub
ruwgwwbwrbbrguguwuguuwbguwrggbugbgrgbuggugg
urubrrubgwgbgwgburbbbgbwrbubuuugwwrwuguwrugwwbbr
rwwwggwuwguururrurrggwgbbrwwbwwrwbbrbwrwgw
ugwgbgwrbbggrgggbbgwbbwruguwgurggwbwwrgwrubbwugggwgww
gwwburgwwrwbruurbugwrgwgbbgbgbuguugrgubbugwguwrrrb
rggbwbubwuubugbuubgwurwwgugubwbbgbggrgwbrgbr
bugwuwwgwgurgwwrrrbwuruuggggubgbrrguruwggw
urwrwuugbgrgubrrgubbuwurwbwrbwrwrugrbrrgrburwurgrr
brgrwbubwgrururrrwwbrgubuuuwubwwgwbbugwruwwurrrw
gwbwwurbbgwugwuubggwuuuwggrbrggwgrwurubrggggrwwurggugggbu
bugbwgggwbwuugggbwgrwbrbbbubwwbrgggggbgrurr
bugugrrgugwrbbbggbrwubwwggubbuwurwururgwwrwuwwrgbgbgbug
rrrubrwrwugrugggurbwbbrwwugwruuuuwgrgwurwuwrrrwu
wggrrurgbbwbruurwrggrubrburgrgguwuwuuwbwruwwrugwbbggrggub
buwbrrgwugugburgrruwbgrgrruburbbuubrruwuwuuubwwg
wwwrruurgrgurugurrggggruguuwuurgwrgrbwrrwwgww
bugwwbbrubggwrbrubwbgubrbwuwwbugugbrbgrrrwwug
wbgrwgurrrrwbbuubwgwruuugbugwgbgrrugrrburur
rgbggrugurrwugwrggwwrgbrgwwrwgwugbruurwrbuwgrrgggrgb
wwwwgguwrbrbbgggrggrbrgwgbubwwrrurgubggbrgggb
gbbuwggugwrrbbwbwbrrgguugurrwwuwbbguuwwbrrwbgr
bbuwrububbwwwwgggrrgwwbugwgguuguggwuuwwbwrbbbgwgw
bugrrgbwggrwrubrruwggrwgbbgurwgubgrbwruuggbbbbw
rbbbgubbgggrbbwgbruubrugbgrurrgbrguwgrwugbuuuuuuugbbwrubrb
ugrbrggbwurgbwgbwwbwgwbugwrrwwbrrrwrurugrwurrwgrwgbrwbrb
bwwbugrrbruuwrwrwrbbrbugbbubrurbwwrwrbwwguurbrwurr
wrugbrbggburwuwbrwwubugrgguwrubugwbwrggrwuwrgrgrwuggbgbwr
wburrgbrbbwrbrwuwwuwbrbgbgwgububurrgbuwruguuguwggurbbbr
ubwggwgrwgbbrwuggbgwwbrgrrubuwggwbwrguruwrrgwbbu
bugrbrguuggurugrgbrrurgbgugrbuguuuruwwwr
urrbrwgrgbgwbgggrbwuwggrrrruugbrugbuwwrwguurggbbbg
uwuwuubrurrbrgurgrurbgguuuwgurruuuwrruurbwubww
bugwrwrwubggrwggrubrbgbrurguuugbwubuurwwggbwruggrwggr
ruwgrruwrrwwwgbrubwrbggrburugwbgbrwguwbwwwugrwurwurubg
rrbrgbubrrrwwggwwbbwbgurbgrrrwwuwwurbwwrwugwbrrubru
wbuwgrurbgbururbrwggbgguwwubguurbuubbrbrbug
buuggwgrugrbugwguuurwruuurgrwggrugrrgbwugrrrg
bugbgguurgbwrurrbwgbwgguwwwwrrbrgwrrgubbbugurr
wugrrgrubruubrggugrgrgwbwrrbrrrwbbbwruuurgururrgr
wbgwbguwruwrwwrwbrbuwrgbuurbwuubbrwbwwurbruuurrgwwr
buguwrubuwgwbruburrugruwuburgrrubuwbwrwur
wbwuwwgururwbrurwuurgwbbuwrrrrbbgbgbugrrgwgwwgww
rrguuubburuugugbbwwuwwuwrwrggburrwugrgwrgggrugg
grgwurguugbruubwwbubrrwuruwbuubwbruubbururg
rrgruwbwbwrwgrrrugbwbugrwrguwbgbubwwbrbrrubguurbu
urgurbruggbwrwwgrgrggrrrwruwrurrwrgubbrwbwwrgrwgrwru
rbugrrguwrbrwubgruuwbwgrbwrbbrggggbwgrgwbrrgrwwwbb
rwbugbgugrgwggurguuwrwbwuggwugwguguwruwuggbbwu
bwgbbrbbbbuubrgrbgbwbubwbwgbgbuuuwwuwuwbgwgwbrbgrurwrwbgg
bgrbbwuuwbrrggbwuwwrbggbwwgggugbwggburwrubw
rrrbgrgburwurwgggwwggbbgbgwgugwguuuwuubgwrruw
bugrrbbwgggubwbrwrggubwurbwruwgwuwrbbubrw
ubwrwgwbrgguburwgbguurgwwrrrbggbubbggbrggwbwwwggbgrrbw
uuggbgbgbuubwrbrwwrrwuwbbrugwbbrwwbrbrbuwgruwrr
rwbwbwgrubwurgbrgwgbuburbbugguwrrrrurbbubwgr
rwgubbbugrrbburbbuwgwguguwbgwggbwbuubbuwuwrubuw
gbrbuugbgwbgbbubgbuggwbbrrbgggguuugwbrwuruurrgbwwrbubguw
rrrugbbuurwggbwgrgrugrbgrgbbrubuwbrgwrwgwgwbwgrugbwrb
rgwrwrurgugbbrbubgbuwwwugwrurgwggwbgguruwuurrbuburgrbww
ugbgggubgrrwubugbuwbbgwrrguuuwgubwggrrrgrgg
wbwwggrggwwgwuuwubgwgwuuuuuuwrbrgubrbugbuwrwgrbguburb
bugbwwruurrwrbguwwwbrggrguggwbgrggbbwwuwurwuwrgwuwuubuwuw
buggbggrbggrbbrgwrubbbwgbrgwrwbwrbgwwugburgwuubggr
bgugbrbbgruuguuuwrgggrwuwgurbguubgbgrbbggwgbrwbbrrguuwgrgg
uwwbbuubrrggguwbuuwrurggburburruwggrrrgurgbbu
wwbrurrgbwgbubwbgwbgbgbbwbbbugbwgubwggbwwbbgbgrrrbwww
wbgwuurbggwurbrggwrgwwbbbrwbbrruggbwuwbbbgbwubuwbguwwgg
rrrgwrbguurwrrgrwwubwwrbuwggbgrbwugugwbrgbbbbwrubbburg
brbrrwurugururggbwrwurbwwurubrwrgwbbrubwuu
gbuggbubgwurgrrgrbggbuwwgwurbubrwgruuurrrubb
buguugrwwugbuwgubuugwuubbugrggbguurrrwgwwuru
rgwgbggwuruwurububrbbrbbrwrwgrbwrbuurgwugururbuwu
buggbwgggrgbbwuggbggbubggwgbwuwwgbrwbruubbgwrgurww
ggurwggrburgbrugggrggggbbbbwwbubwbgwgbwgwur
bugwuuuuugrgguwwrbbrgurbuggbbbwwwuurgrug
bugrgbgurbwwrrbgugbbbbburgbrrbugugwgwgbrrgbwrbwwgbbgwgbgwgrg
bugwrrgrbwuggubrrruwggrrbrgggbrggrurrgurgrwburwgu
bugugrwubgbgrrguwwugwbbbrugrwguuwbrrggwwrgbw
bugwuwgrrbgurwbbuwgugguwugbbrrubuwrrguwurrrbwbuwbwbuwb
ubrggwubrgbrrrwguuwbrwruwbguburgurrbbuwwrg
ugwuubbbgbwubbbrugbwrubwgwuurrgburgrrbbugurbwu
wugwrgbbrubggbwruguuwgwuugbgwurubbbbggrgrruggbbgwburg
bgrurbbwgrgwurruwggwbgrgurguwuuguwubugwuuwwuwuuggubbg
wubgruuwburuugrggbrrrwwwuwrgrgrggrrrguwbwrwwwgwwbguguwu
gggururbuwwrgrrrgurgwuggwrwggwuguubwbubugbruuww
rrrggbwbrbwbrggruurbburbbgwguugbwrgububurrggbgruuwgbr
uurbugwwgbrrwwgrgbrrbwwrwwrbbbggrrggggrruwgwururrgwbrgwg
gbrgurggrgwbruwwrwuruwbrbbgwbggwwrbrurrbrrbrgrurbbuuurwwrr
uuwbgugrugrrgwbwwgwwrrguuuwrrggwurbgbugbbguwwgugrw
wrbuwrbrwbugwbrgbubgrwgrugbgrwbwwbwggruugugrbbggwgrwrubrg
urubbgrguggwbwgbuurwurgwgwbggbguggbrrrbbbwu
uugwgrbbuggrwuwwrbbwbuwwgruubuuwguwugrgrwurwrbw
grgrbugwubwgwgrgrgrggggbwururwwuurrubbruwubwguuuguugurwwug
bugwguwrrugrrbbrubrrbwwrubrrwurugwgubgru
bburbwbgbwurwuwuurubwwguwbuuwrrggubbrrgugr
urgwwwurrrbwgugbwgwuwwrwugubwbuubgrruwguugugbuurubwg
uwggugwwgbburgwgbbgwwuuruuubggbugugurgubuuu
guwrgwrbrbwgwbbwwrwubwbrurbuuruguwwuugubbggrwwbbuuugg
buuugugugwbwgrbgwwubbubrbrwrrrgwwgwwgurgrrurguuuwrrgbugw
ubugbrgbbgbguugbbuwugguuuuwwbbwgruuuwbrurwbbbbuuuugrwr
rurrruwugwbgbwgbwuburrurugruuugbwbgbrbwugguwuuwwruwwbw
urrbwuwrwrwbwwwwrwrggbrubrbbwgbrrrbgrgrwbrbgb
bwbbbwrrwgbggwwgrurrrruwrgbbwgrrwbugrbbwrbbrgrbbbgu
uugwuwbwgrugrgwuwgurwbrrrbuwburwwwrgwgggwbugwwurbggbubbgu
urgubuwbwwwgugururwrurrggugugbbwbbubbrubbwwbgguur
bgwbgugugburuwrwwwbgrguurrrguuwubbburrwrugrrrgrguwwwgrr
gggrwrruwbrbgwwurbggwgrwgwgguruwwrgrbrwgrbrwrubbuwwwgbu
rrgrbrguwbwubugrbbguggurwgrwgwbgruuugrbggbuuwuuurwuwgrwwrb
rgrgbbbgbrrwbbruguwgubbgrbrubuwgbrwwuuwbrbbguurgg
wgurbwuubrgurbrbgwgrrububuggubuwrugbuugwbrrgbrwrugbruwwbww
wuwgwuwuruurugbuwrbbubggbgubwggbwbrugrggbrwrgr
rrguggwwgwrurrwuubruwwgbbwrwbwwruurgwbugubbuwbwwruruguwub
rugubbuggurrggrgbwbbuuguwbgggwuwgrgwwbuububuuugrurrwgr
rgwgrrwrrwbrggbgbggrgguggubgrrgruwrrbwguwwbuggrubbgbwurbgw
grbwurbgurrbuwwwrgbugurrrrubwuwgrwgurgubwubgrrbu
gurbgrbwbgurwwgrwgrggugrbgbgwggrwggbbbruurwb
bugrwbbgggugwrrbbuuwrbgrwwbbbwuubwwwrrrb
wgwbwuguwwrwgrwgrwbuwbbuwgwruubbbbrgbbrgbwrguwbwgbu
rrgwrbbuurbrrggrgurrbwubugubuurgbgbgrurrbbwbubguuu
ugrgrgubwbbwwugubgrurwwwbwrwubbwguwgguuwgwbugrwrw
wwbwwrrrbbugbrbwwbwruuuugrggggwbrwbgurwbgbbrbgwguub
wbgwgwgwwrrwbubrgbwrbwrrgggrwwuuuwgurwbwburrubwrurrbruwug
bugugwgurgrbuwgbuururwrrruggrbwwrubburwwbuwrg
bugbuburbgwwurrwgrwbrbuurggruuwuuugbuwwbgwurrubrrbbubuwbgrbr
ubwwwuwrgrwwrgrwrrwbwbrbrubuwguwgbbgbruubbrugw
grgrwurgbbwgubbbgrubrurrbbuguuuuuwgbbbgrrwbuwub
wgwgguuggrrrrwbbgubgurbgurbbrgwgrbuwuguwrbwbrubg
wbwwwbgggwrwgrrwgwububgbrgwrwrrbbbbwuuurbwggguruwugbr
wwurwubrbuubbgwgwurrbbgrguwgbbbgwgwrrbugbrurubwruug
bugbguugugbrggububrrbbrbgbwgbbrrggrruguwb
bugwbuwwwrrwwgwurburrruggbbwugrgwbbugrrbbwrgwuurbrbwg
burbugrrwrugubrurwubgwbwwbbrwurwwgwgwgwwrw
ugrbwguuruggbgwgrbgwwggwgrwrgrgwbwrgwburubgwwr
bugrwwubrgrurugbbwwrggubwgwrbbbgugbrrwrrrbwguwwbbgbbwgur
bwrbugggrwwrruggbggwwbguugwguuuwgbbugbbrbrbrrgugwb
rrwrwgbuwwbruggbwrwwburbuguwuuwwrbrrwbbguwbguwrgwb
gwbgruwrgwrguuugbgrwuwrbubwrwuugubbugugurgbrur
uuurwbuubbruurubugrbbbuurrbuwwbuurrbuggggwwwuguugrgbgr
bggguubrbuguubbrbuwrgurbwrwbbbwwuubgbwrrwbubgbgbuugwrgrw
ggurrgrwruwurggwggbwwuggwuubrbwgwgrwuuuwbwgwggruuwrb
grbubrurwggurruubbrbbguurgrgwbugwuwbgrwgwbwrbbwggwubwbwbb
wbbrbwwugwgwgwgrbrwurwwburbggggrrruububrbbwggwbuu
ubgbggbuubuguwwgbbbgbuwuwwuugggbgrwrwrruwbrgg
bugggwuwrugrbugbrubgwuwwubrrgwgwgbugbwwruggrrggbuggbgubrbb
uwwwwubbuwwubrwrrubbbwbwbrubwwrbwwuurrgguuubr
grgwwwwwuuubwuuwgbbugwbwurbgburrgurbbbgrbwggrburugwrwgrg
brurgugggrguggwrwgrrgubuwwguuwbbrbbwwwburb
buubwrrrgrbrggbuwrubbbgwgubrbwguuwuwwrurrbwwuwr
brgwbrwurwgwwbwwuguwbrwwgggwgggrwbruguwrgubrguuuwgurrwb
bugwwuurbuwbbugrwwbwrubgbgwuguuuubwuwwurbgurr
bwbbrbgurbbruggrbubbrbburbbugbbrrwbwbwbrbgbbgbwrrgru
ubwgwrwgbbgbbrggbrugrubwrgrwgrbbuwbbbguwruwggrg
rrgbrrugwurggggwwwrwbwrgruugrwgrbwguwrgggbwwrgwwubgu
gubwruuuugbwguruwwgbbrwuurwrgrwgubbruurggwggbuuuwbbg
gwgrgbgurruugruurrrbugruugbgbuurbrrrgwurwgbwb
wbbrbwguuwbwgbubrbwggrbbbrgbrubwwwbrrbrwugbubgwrgu
bbwwgbbggbbgugggbrwbugwbbugbburgubgrbggbrbwwugr
rgruuuuwgwbgwuuggbgurrwbgrbwuwuwbwwugbbrrrbgrgbbwurugwuw
ubwwgrrwbbuuugrgbuuuruggbbugbrbbgrwuuuguwurggwgr
buggbwrbbgwwwbubwubwbugbuwububgrubbrwgwgguburwbg

10
day19/sample.txt Normal file
View File

@@ -0,0 +1,10 @@
r, wr, b, g, bwu, rb, gb, br
brwrr
bggr
gbbr
rrbgbr
ubwu
bwurrg
brgr
bbrgwb