commit d3341a010cf05403d0fc1c3899270ea56976acec
parent 8cba5f39bbb00b20635b31f852ba132ead4aef53
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date: Thu, 19 Dec 2024 06:32:23 +0100
Day 19 2024
Diffstat:
6 files changed, 544 insertions(+), 0 deletions(-)
diff --git a/2024/19/.day19b.cpp.swp b/2024/19/.day19b.cpp.swp
Binary files differ.
diff --git a/2024/19/Makefile b/2024/19/Makefile
@@ -0,0 +1,24 @@
+CC=g++ -std=c++20 -g -Wall
+
+a:
+ ${CC} -o a.out day19a.cpp
+
+b:
+ ${CC} -o b.out day19b.cpp
+
+clean:
+ rm -f a b
+
+atest: a
+ ./a.out
+
+btest: b
+ ./b.out
+
+arun: a
+ ./a.out < input
+
+brun: b
+ ./b.out < input
+
+.PHONY: a b clean atest btest arun brun
diff --git a/2024/19/day19a.cpp b/2024/19/day19a.cpp
@@ -0,0 +1,54 @@
+#include <algorithm>
+#include <cstdint>
+#include <iostream>
+#include <map>
+#include <queue>
+#include <ranges>
+#include <set>
+#include <sstream>
+#include <string>
+#include <string_view>
+#include <vector>
+using namespace std;
+
+vector<string> gettowels(const string& line) {
+ vector<string> ret;
+ int j = 0;
+ for (int i = 0; j != -1; i = j+2) {
+ j = line.find(",", i);
+ ret.push_back(line.substr(i, (j == -1 ? line.size() : j)-i));
+ }
+ return ret;
+}
+
+bool ispossible(const string& p, const vector<string>& towels, vector<int>& mem) {
+ if (p.size() == 0)
+ return true;
+ if (mem[p.size()] != -1)
+ return mem[p.size()];
+ for (auto t : towels) {
+ if (t == p.substr(0, t.size()))
+ if((mem[p.size()] = ispossible(p.substr(
+ t.size(), p.size() - t.size()), towels, mem)))
+ return true;
+ }
+ return (mem[p.size()] = false);
+}
+
+int main() {
+ string line;
+ getline(cin, line);
+ auto towels = gettowels(line);
+ getline(cin, line);
+ vector<string> patterns;
+ while (getline(cin, line))
+ patterns.push_back(line);
+ vector<int> mem(1000);
+ int count = 0;
+ for (auto p : patterns) {
+ for (auto& m : mem) m = -1;
+ count += ispossible(p, towels, mem);
+ }
+ cout << count << endl;
+ return 0;
+}
diff --git a/2024/19/day19b.cpp b/2024/19/day19b.cpp
@@ -0,0 +1,54 @@
+#include <algorithm>
+#include <cstdint>
+#include <iostream>
+#include <map>
+#include <queue>
+#include <ranges>
+#include <set>
+#include <sstream>
+#include <string>
+#include <string_view>
+#include <vector>
+using namespace std;
+
+vector<string> gettowels(const string& line) {
+ vector<string> ret;
+ int j = 0;
+ for (int i = 0; j != -1; i = j+2) {
+ j = line.find(",", i);
+ ret.push_back(line.substr(i, (j == -1 ? line.size() : j)-i));
+ }
+ return ret;
+}
+
+int64_t countpossible(const string& p, const vector<string>& towels, vector<int64_t>& mem) {
+ if (p.size() == 0)
+ return 1;
+ if (mem[p.size()] != -1)
+ return mem[p.size()];
+ int64_t ret = 0;
+ for (auto t : towels) {
+ if (t == p.substr(0, t.size()))
+ ret += countpossible(p.substr(
+ t.size(), p.size() - t.size()), towels, mem);
+ }
+ return (mem[p.size()] = ret);
+}
+
+int main() {
+ string line;
+ getline(cin, line);
+ auto towels = gettowels(line);
+ getline(cin, line);
+ vector<string> patterns;
+ while (getline(cin, line))
+ patterns.push_back(line);
+ vector<int64_t> mem(1000);
+ int64_t count = 0;
+ for (auto p : patterns) {
+ for (auto& m : mem) m = -1;
+ count += countpossible(p, towels, mem);
+ }
+ cout << count << endl;
+ return 0;
+}
diff --git a/2024/19/input b/2024/19/input
@@ -0,0 +1,402 @@
+bgbuuw, brwbg, gbrw, uuugwrw, buurwrrg, gwbgw, wgrgb, rru, ubgu, uww, wubbg, bww, gruu, wurggb, rbwb, ruubb, urbbrrgb, ugg, brr, rbrrbrbb, bur, urwg, gwwu, rbwg, bgg, uguuuwu, ruuu, wwgwub, rbrg, grrgbrb, wbwbww, buruug, rrgg, gbgwwwrb, wgwwbg, wbggb, wbgrg, b, ubbuww, grw, ru, rgb, uuggwbr, rwwwrbu, rwrwwug, wubgw, gw, gwg, buwwb, uwubub, wgw, ggw, bru, bw, rwbbur, brbw, rgrwuwb, grr, gubrw, grgw, buw, uurg, uur, bbug, wbug, buug, gbrbu, u, bgr, brbbwrg, uwwbb, bwbbwr, bwru, wugwgg, rbbrug, bgbgu, wrbb, brbbwwb, gwbwgu, bub, gwbbbr, uuw, rbrrgw, wuug, bguuug, uurgwuu, uwb, bubg, urrb, grrg, wubr, rbgurww, ugw, wbub, urw, ggbwgg, rr, ggbbub, wbrr, rwrr, wub, gu, rgrub, wgwbub, gguu, rubbrg, wr, bggwb, uwwbggr, gwu, rwbb, wbwur, wuuur, rwg, bbrgb, guww, rurbgrr, ggb, bbwgggb, rur, wwuwu, gbb, grug, grugr, rbguwwwu, ggrrr, wbr, bbg, bwrwwu, wrb, guruwu, uuru, gbw, wwrwggug, gwww, bbw, uwbrg, wuwb, bbgb, wrr, rg, rgr, buubgbrr, rbuu, wbwww, guuwr, gbbg, gurgr, wrgwuu, gurwbb, bgrbw, rbw, rbwwww, rgrb, gub, guw, wgg, gbrbbu, bb, rggg, wb, rurrbrrw, wwubg, gbwgbu, uwuurr, wgbgu, bg, buwu, ugugrw, wwrg, wgurgbu, rrggwg, ugrrg, wrbu, ugrbubgg, gbg, brruwuu, ruuw, wgb, wgubw, urb, wwb, bwrwug, brbb, gbbbwr, grwbbr, wbwgbu, ugbwb, rrgu, ruub, rrrb, wug, rwu, rubbbwu, bbwwgu, wgbrr, guwbr, ggr, rbrw, ggu, uurw, ub, uguru, uuu, bgugu, uru, gr, gur, gwb, wur, grwwugbr, gwrugu, rgwbr, bbgwu, rwbbbrg, bbuu, gg, ruw, ubgb, bubrbb, ruwwr, wwg, gbr, bu, rgg, wwr, wugbrwu, uu, brgwg, bbrbu, ubgruu, uubu, wgr, bbru, uwurr, wubur, bwgu, rbuw, gbwb, rug, ugrguwrg, wwrrg, bwu, grgub, uwu, rgguwbg, gwrbg, urbbbr, wbu, wubb, rww, wuww, gwr, rwrwwg, bbr, ugwuu, wurr, guuwurgb, urugb, bwrbu, ruwbrbu, bwurg, guu, gwbw, wrrbrrw, wuugw, gbwr, ggurg, ubu, uug, gugu, rguuwg, gug, brg, rgu, wrgggu, urruu, uwbgb, wbbbwg, rbbug, wgwg, bbrg, bbggrwb, brwr, wbgrwur, rwwugbu, uwbwgbw, buwg, ubr, guguub, rrubr, rrr, wgrwr, rgruu, rrwr, uggw, wwwrw, uw, ubggwg, bgur, gbu, rrw, rbgrgbw, guugrrr, gugw, uub, bwb, wbrrbr, ugu, rb, bbu, guuggbub, uwr, bgw, rwuruu, wbru, gbrrr, uguu, wbrw, ugbb, wuggr, wbb, ugrww, grg, bgb, rugguub, ug, urg, gwwur, ugwb, gbguu, grbgwbgu, brgggw, gwrru, urur, ruu, bbbwurw, w, grb, brb, rrb, ruur, rgw, ggwg, rruwwur, ugr, wuwwrwg, gwrr, bbgru, ubb, wbbbb, wuu, rrg, wggb, uwww, bug, rrww, ggbguru, wuw, gru, ggrwr, wrbbgru, uwrwb, ugrw, rrgwr, brwb, gww, wubw, wggr, wrww, bbwrr, uwg, wgru, ur, wwu, bugwru, gugguw, wbw, rrwrgr, rurbbu, rwb, bbb, wrgugr, buu, bugrru, rw, r, bwwr, www, gbgwbu, brggbu, ww, gwrrb, gwgw, rwwbgbr, bwr, rggwb, wwrrrr, uwwrb, rbb, bgbrwbbw, rrgr, rbr, bgbbgbb, wrbrb, rubr, guwr, urr, wrw, wurubguw, rwr, ubg, uwwrrgrb, uugwwwgu, grrbg, wru, ugb, br, bgurw, bggb, rrwruw, bwrwu, wwbr, bbww, bggr, rbg, wgu, bruu, gwbugu, gb, rrgrgbb, wrg, grbwwb, bbgwgbru, bgu, bubb, wrgru, rrub, ggwgu, wuwubub, brwrw, ubw, wbg, gugubbu, ugwwurgr, gggb, wgwrggr
+
+wuubgwbggwbgwugwubgwrgwuwrbwwbbugrruwrbwuubgwgugubbuwg
+ubugubbgggbwubwwuguguuguugrbuuuugrbwuggbbgrwrb
+wrubbuwurwruruwrgbbrrbugrwruuwugbbwgwwrbwbwwugrrurugwuwubwg
+burgrgrrburrggrwubrrurwgbgwwwbrrbggbruwbbgbbruwuwbw
+gwguwgururuwwrgrbwgrwuwurgrwugbuguwubwbbggurruwwgwrgbwbwg
+uwbwwrrwwwwbwgrggrurwuggwwbwubbbgwbbwwwuwguurwbrguwgbubrbr
+uuugrgrrrgwugbrrggbbgburbgwuubbbwuuuurwbruuuwwrg
+wbubwururruguwwurbubgwbgbwwuwuuwrubwbbwrgwgwrggr
+gbbwbruuubbrwuwburggrrgrbrrbrbbwbbwubruwbuuwuwbuwwwgrrbbwg
+uwuuwurgbwgurrwgrrrurbwwwrbuburrgggbwrbgrububgguugggbbwuw
+uwbrrwgwugrgrbggbgurbbwuuwwrrwugbwgwrrrrruu
+rwgrbgwurwbuuwwrwggbwgruggwgrrgbgwuurwwbub
+bbubuugbwbwwgwbrrwgwuwugbwbrbbrwwrbrgggruw
+bbwwugbbubwbbgwrwbburrgwbrwwuguubwrrguwrgrugrgurgrrbru
+gguggwrwggwrbburubuubuwwwruwbgwbbuuuuurbbrurb
+buwgbrbrwwgwrgbgrwbruugwbrrwbrurrgubbwrrggrwubgwbrrw
+rurwwuwububrguwgwgbrwgggwggwbgrurggrbbruruurwuwwb
+rggwwwurbgwbggubbuwrwubgwwbbbbggwwgguwrguwuu
+wwuuubbuwggguurrrwgggrrbwwwwurwgwugwbrwurgubbgwuuuwub
+gguuwgrgrugrrubuguwwuruwbbwgbwugruwggbbugwwgggw
+bgwbgbrrrgrruurbrruwwgbrrrbgwgguubbrbgwwrburbbwubggr
+rbwbwbgrbuwwbrwwurbubggrwwugwgbwrwwgwwrrbgbwbbgwug
+uwgbbwrbgwrwrbubuuugbgrurbwwwwbgwbrgrwuuguu
+gbgbwuwwrrrbwbuguwguwrrbuuwurugrwuwrruurubwg
+rgrguugwbrguuggwruwwrrbrgrgurbrbwguruwubgbwuubu
+wrwwggbbgrbuwburubgrgbbbwgbgwburubbwgubwrbbwgbg
+brgrbburuuuubugwwbrrrguuurgbuwbgwwrbrbbrbubwrbrrgrgrru
+grgrwbuwrbbrwrbubbrgugwuwruguuugwbrrgwburgrb
+rgrbubbuguubbbwgbrwgrggubwwwwgbubrbubgbgbwwuuggwr
+gggwugbrbgrgbwrugbrwrburbgbwbwwubgbburbrbugurwbbwg
+gguruwwuubggrrubwwuurrgbgbgbbuubwbbbgwrggwbrgugurwgrubu
+urbgbuwbrwgrguwguwbuggwrrgwrgwwgbrbwruuubbwugg
+rrurbwruwwugbbwbrurbrwrguuguwugrbrbruurbuugggurruggwgr
+ggrrgrwwguugbgwwwrbgwrbrruurrubrgwggbrwbgbug
+urrubbuwurwwwuuuuuugwggwwrgurrrwbuwgggurbug
+wrbgwggrbuubwbbgubbwugbggbuwuurubbgwuwbgwgurwwwrwr
+wggburuuwuubbbuwbgrgwuuubggbrgbuwwgguwrbwguwuuuwrur
+rbguuubwbbuubuggwbrurgbbwuuwwgwugwwrurguguw
+burrbugwbgwubbguwbbbbgruwbubuwrgrggbwguwg
+bubbrbwgwgrurrbrrwggruggrguurrwrgwrbgwbbgwgu
+rrwbbwubruuwrbbwubgrbuwurwrwugbrbbruurwbwurg
+brrbwguurgbrbwrrurbgwwgbrgggwwwgrgggrwubgubbbrgwuwuugwrgbwg
+wbbugbwrbuubugwbwubggbuggrgurbuuuurbbrrgbbwg
+rwburbbwwbwurgwubbgbgbggwbgwugurggbbwgggwub
+wgwbrrrubwgwwwwwbwugbgggwubguwggrggruwrubuwbbb
+wgurbbguugbbrwrwuwwbbbrguggwurgruruggbuggurubwrgu
+rrgwwwrgrgwuuuwrgubgrgwugrbuwwbbwurwubrurbuugwbubrgwrbuwg
+brgrbggrgurrgbwurwrwgbggwrrrwwrbwruuuwrbbrwbwu
+wguururrrwrrbbrrrugrwuuruubrbgrgbwurwubrubbuurbb
+wrbrugrgrrubguurbgwwrrrgbrgwbwuurguurwgurrrruu
+grwuwggbwrubgbwwguwrwbbgruwbwwuuwggbwgurwgbggbwgbwwr
+uwugurwrwgrbbuwgrgbwuwbgwgugwbggugruubuwgwbwr
+bwwguggwuuwuwuwuwubbrrgbbwbguwwrbuggbgrrgwwwuuwrgggurwbbu
+grbbuwrrrwwuwuwrwgguruubbgwgwbbbuuuggburguurrbbubwbgrguuwb
+gwbuuuuugrubgguuuuwbgrbbgbbrbwrgbgbwwgwurugbugrwrbrwbwbw
+rrwbwgbwgbrwgrubwuruurbgugrrwwgwgwuwrgubggubruwubuwgugbbw
+ugburbuuuubwwwwrwrbruwrbuugubrbrubwwbgbuubu
+bwwrbwwgwgrwrwuurrubggbbrwrbwwuwwurugbrwrbbw
+gbubgrwbugwguwgrrgbruuguggruburbwgggrbgrbgrbwguwrrgrrbu
+wrbbwwuugbwrgruubbrbwubuugugbrurrwwbbburruuwubwrgrrubwgw
+gbwrbbgbugugggruwgrgbgwbgrbrrurruuwwrugwwbgwgwrbwb
+urggbugwugbrrwugrguwrgrwbbrgwwggrbubggbuwugrb
+wrugbbgggwrrbbbuuurwgbwburrrwrrrwbrbbgwwrwuu
+uuwgwrbgrwguwggbbubugwugurbwrwbbgugbugurbggubwruguwrbbbgu
+bwugbbwbbguggwrugwgwrbwgwuuwbwwrgrurubwwgguwgrrburrgrubbg
+wbwrbruwgbgguwubgubwgbgwugwwwbuwubuurwrrggbwg
+rwbrbbrwbrrrugrgbgrgbrrrbggrbgbgrwrrrbgubwrgrwrrgwbbb
+bwgggbuguggugbwrugbrbbgguwrguuwgrugugbggwurrb
+bggrbgburguuurbbrrrrwguuuguwgguurrwwwuwrggwrrrubr
+ubugbrwgbbgbggubbguubbuuwugbbgwwrbrbgbgrwuruububbg
+gbrwuururrgrbgwbgugggbbugruuurwbrwugwgurwuugwbwg
+rgrwwgrwguugggbguruuwrugwrwuwwwgbbruguruburwbrwgurbu
+uurgbuwubgwwrbbuwuwggbgruubbrgbgbggwwwbrbrugrbrgrgrbww
+brrbwbubrgbwubwbrbgbbwggrrrwwbguwuuwrggrrwbggugwgbug
+bugurrbwbgbrbubbbrubbrgwbggwgurubbubwrggrbubbgg
+ugwggggbwrbgwubggguuwgrubwrwbwurrrbuuwurgbbbbrbgb
+rurbwuwggrwbwrrwrrbgrgbugbwgbrrwuwguruuurbgurbgwrb
+bubrwrbwuburguwwgbbggururgurwrrgrwwurrbbbguwugwuwwwurr
+bbubgggwbrbwugwbuwrwbwugurrgwbwbwwgrbgubggrrugrbru
+wgbguggrgrugbwbrwrrrubbbbgwurbubbbwurwwgwgbru
+urbwrugbgrugbrbbrrbwwwrwbbuugbrurwuurgurguuubbbwrbgburubw
+wrwbwbrrbugubrwbwrggurwrrwugrruwbwrwuwgrburgguwbw
+bruggwgwubwrbrrggwbrrbbrrbwrbwgbrrwggbbbuuuwwbbg
+gbbrgwggbbrbguuburwrwbgbgrwwwwrwrgbrwwwbbbrrwgbbbbuurgrw
+grbubbbrwbwbwrgrugrrrgurgrbugbbbbrwbwrurbuwwbuwrwwubgbwrg
+guuuugrrrgrbrbuubugubwuugggugguuuubugggwbuuubwggbb
+bbrgbugubgrgbbbgbrwbbwbwbururuwwgrbwwrwgubbuu
+wgwrwuwugbbrwggbwuwwgwwbgbbwwrwgruruubuugwugrbbbgr
+ruuwugwwwurwguruururbrurwbubuguuuggwuwwwwuguggrug
+ugbwwrbuwbguugrbgwbguruugbbwwggrugbgguwbgbrbu
+grwuguuwgggrurrbrrwgwbwrbubrrbwgrwbgwbbbuwggbbwg
+uuwuwwwwwrgwrbubruwbbbwurrrubuggugbrwbrrgwrgr
+wruwgugbuuwwrbwbwwbuwrrbrwgwburwgrwwwubwbgbwrbgbggrgur
+buuubbwwggubrwubgbbugbggwuurbwrgrggbgruwwwbrugwub
+rwbguuruuubuuurbrubbrubbrrrgbrbwwgbbggwbwuwbubbrurbbrrgbu
+ugbrwgguurguwbgbuuubbugwubbrrbgbrrubrubugbubrrrwbrrubgg
+guwugrgrrguubuugbggwgbuwuugwurubuubguwrburrbgbwwguwurrwgbbwg
+wrrrurrurgbggguurbwrrubbbwurrbwbbbgrrbururrbrbbr
+wubuwwurugbbgbrwrgwurbwbrgggwwgugugruurggbwubwuuwru
+ruwgwubwggwrgwwubuwuuuuggbgrgruuuuwguggwrr
+buggwrwwgrrurruwbrbwgrrubwbbwuuwggrurubbwrrwbggggrrgrbw
+wrgrburbbggbguuggbubbgrwbubbwwgrrbrbuuruuuwr
+uwuuwbgubrwwgruwgbgugrbuwuggrurrbwubbwbrbrru
+wwbbbgbbwrwbwbbwrbwrgbgurrurgbwwrbgrwgbgurgbubrgwbgbbugbur
+urbrgrbbuwuubuugwubrbguburwgbgrrgwgwgbwgwrgbggwbw
+wbgbuuwggurrrrbwbbbggbuugbwrwrruwwuwwbbgrwruuugwwwguwbbubwg
+rruurgbbbrwbugrwuuguguwggwrwrgwuuubuwbbbrurubbw
+bgugrbrbggrrrrgbwwbguuruwwrrgrbwurugubwwwgrrrbuwb
+uuwuururgrgrubuwubruugwbbbuuwurrwruubrwrwubrbbwrrbgbgur
+rwugwgbbbbwrbgggrwbgbugubbgrububwgwrbrbuwgguggurbrurwgrb
+ggbuubgbrrrbrbgwgrrgwwwwbwwubwwwgbwwrwggwrbubbgbwg
+rbugurrbrrrburwbwwgwbrgburwwwgwubuwgggrbrbwbwwrbrbwur
+uwrguuuguggbrwwubrgruwrbrggwuwwbrrrbbwgrrrbrbuubgbuugwr
+rrgbbgubbrwwbbbwwgugwgrguuuwguurbwgugburwrwgwwwg
+bburrwrurwbbwurbguuurrwurrwbbggwurgrbbrgggbbuwwbrwrruubgbwg
+rrubbuwruwwururwbwuwwwrwrwwubugwgrggrrubwgbwuwwbwgbbgb
+urbgrwgbubbwwgrggrugububuggwurubguwurwwbwg
+brwrrrwubuuugwguwubggwuwgwwbgwgurubgwbrwbuw
+gwruurbugrbwggbrbbwwgugwrwbrgrbggwurrwwwbgwbww
+bbbrrwggrrwubrgbrrgrwwgbbbbbgbuwwgwugrrrrwwguwbgw
+bbuugwguguwurrbgbrbgwrwrbrrguuurrwubuwgurgwrwgr
+bwgbgggbgrbgbrwubbbwubwwrgggbwrgbrwwguruggrwwbugrwru
+wubbbrgbwuwburrrgrubbgwrrugrgrgrgwbwrggggwuurbwggrgwggg
+bubrrugguwruugwuwuugbwgwbwgbwrrbugbguwwgurgw
+wwgbggrggbwuuuwugbgubgwbrugrwurwwbbgwbwg
+grbbwwuwgbbgwuurubgggugbugruguuwrwbguwguwuggbgubug
+wgruwruurbwubrwubgrwbbuwgbrugbbrwrgwrbgwbggggwurugburuwr
+urrwbgguwrbgugwbrrbgbrbrbrruuburugwgugrgubrgrwgurbbwg
+gbbwrubuwubwubuurrbbggbrbbwbwrbuuwubwuwubuwguruwrurbw
+rbrugbuubrbrurwuuwurbrburugbgbwuruwurwbururguuwruu
+ruurwrguwgbguwrwggbrubwwbrubgwgubgrggbrguuwrrurrrgrbubr
+uwuuugbgwwwrbguugrgugrwubrrgrbuwggrwbrrrrrgrgurrbrbbwg
+ruggrwrwwrbubgrwrwrgurrbgrgbbgrrgwugubrbbgrrbuuwwrwurrrb
+gurgrbwbgwwgbbgrbrbubuuwrwuubuubgwbwbrbrbbguuuwgwugrwbuug
+rwgbwurwwgubrgggrgwrgwbwrwrguubrggwwuurbgr
+brrrbburgbrbugwggrubgbgwrbugwuruubgbbuggrbgubrrubgw
+gugrgrurwbwurrrburwbwruggubrbururwwgwrrrrrgburugwugb
+ugbuggbrbguugbwrgwrwbwbwuggrgwrbgrbwwgwuwbrgwgbbrgbgrbw
+rrwggwgwuubuwrgrubggrgwbbrbgbgwwwbgbwrguubguurugurgrbb
+bwggwgrgbrrrguuurugrwgubuuruurwuwwbwwrwwgbbrrbwbwbbrrbbguu
+ubrwrrgrrgwrwugwwurgrubrwbrwgguurgwbwwwrrggbrbbguuuuugugwbwg
+bbwbgugrurburwugrrwbwguugrwurrbbbgwbrugbgbrwrgb
+wgbuwgwwgggbgrbwguwgugwguuuwurgubwgwururwwrrguwww
+gwwbwuugwwwguwurugwwgrubbubbgbubrbwurwrbuuwur
+rrwuwgbbbbwrgwururbgrbggbugrgrrwwgrgrrbwwwggrrgwwbggwgu
+urrwgggrgbrrbbgbbuubrurbrubwwgggbugrbugwrbuuuwwburwurrrbg
+wruuugggrggbwggbguwbgrbwgguurwwrbrrugwrrgubrbgrbbgb
+wbburrbrgwrwrwwrrwwbbgbrurgrrguggrrugwubugwr
+uwgguwwbbgwwuwrwrwrwwggbwubbuburburwggbbwg
+uwuwwuggbwrrbrrwuugggbwgrgugwgwrwbgrwggggwwggrrggbbru
+bbuggrrurbrbuuurbrwwururubbrguuurbrugurwwwwwbbwwgbbuugrr
+gwrwgwwbgrrrubbruuguwgurrrrwurrwurrbuuuurrggbwg
+wruwbuuurwwuruugubbuguwrurwubwbbuwrrrgrwub
+bururrubgrubrggwrgrwugburrubwgbrurgbwwrbugwgbbgugrrb
+wwburwrwbgbgbggrwwurgrgubwwgburgbbgbrwwrurrrwuwwubgr
+ggurgwwrrruwwgbrrwugubwwuurwrbbbrrbguggugubggruwbwbrrbu
+wugrbwbrrgwwwrubwwugubrbwwbwbbwuwugugubuubrurwwwgbwgrbwg
+rwurugbruugbwgrwurrrwrbuwrwgurgrgurgrwwwwwbub
+uuwbruwgrrurbbuugwbwrrwubbbwuggwrubugrgubbbgrrrrwruu
+gubburwwrrgwbbwwbubwwbrrggwwbwwbwwwubggguuwuubwbgrrrb
+gwrugggwuurwbwugrgwuuwgrwurgbuwgwwurugrbwbwwrgbbuwggu
+gubuugbwgbwgbubgugwrrrwgubwgrbuwwbwbbugbrbrug
+urbgrbwurburrrbbrgbwuubgugwgbgrrbbubrugbbbggwgrgguwbuwgb
+rguwwgrrrbwrubuwgrwgguurbbbguuurugbguwwuugggwbrr
+brurwuwgrwggrwrwwwwrbwgruruwuwwwugrwugrguuguubbgggb
+bwrbgbrrwgwbrbbuggrbwrwggrbwgrwgugbguwbuurrb
+gwgbwuwbgugrwbgbbwrubwuuwwugrugrurbbbwrgwur
+uwugbubguugburbbrwurwwgbuuwugubwbbgggbggbgururr
+grwuubuwwbgwubwubuwurwrgbuwbwruwguguwgrrrbuwuwwrwbrbrwr
+urbubuuwbwgggwgrrwgbrggbrgbwrwurrubbbrwbrrbugbgubwg
+wbgugrwgwwrwbwgwurbwwbguuwwbrgwuggrrbugubuuuub
+bgbwugrgurgbuuuggwuubbrrggbbbugwugggguwwgb
+wrwrburrbbbgbubugbgruguruuburrgwwrbwbwwggbgbbgurbw
+burrrrggwubgwuwwbrubbwuwguugrwwgrwuggurwrrwrrrburu
+rwwubgggwgwgrrrbubbggrwrwwgbwwgguwguugurbbgwbgbburw
+bwugwwrrugurugbrgwbbwurrggbuwbrgurrbugwwrrwugrwgrwu
+wugubugwubwrguuuwubbrggrruurgruwwrgwbbbgbrwwbrwrbguubguwrb
+uubrbgurugugrbwwwwbrurubbgruubbuubrubgwggu
+rwwrrggbrurwbrrguwbwgbrgrgbbbrbuuuwrbgrgggrbbwbwruwwrwuw
+ugwgrrbugrrwgwwwbggwbbrgruuwwruurrugwbwg
+wububbuugggruwrgbggbwrguwbuwbbwuggwwruurwurwbrwbb
+gubwgwwgbgwuwbuugbgwggruwwugrrbubwuwrrburgwgrgrrrurggbbrbw
+rwrgbwrgbrbrugbwbgwuuwgrwbwrwwurburgubbrgguugbugwggug
+gwgbruwuguggwguwgguwbgbbrruubbwbgburbrugug
+wbuuguuwrrguuburbbbwggubbggbwggwurrbubguwrrubbgbbggububwug
+urwrwrubbwbwwuuurubgruwggbrgwuwgwbbuwbrurwgbwuruurggwrrbgu
+bwbwwgbwbrgrgwwrrrwubrwbwrbrgrwugbbubgrgbwgruububwgru
+ubrwrgrrggwgrgwrwbubbbgwrwwugbwubrrbrguwbubgrbwbwg
+wrrbrwrbgwbrbuwbgubuubgububrbburbwrrwwugbwgw
+grwgubbuuubrbwwrurwwugwubrbbbrruwuubbgguggrwrrwbw
+rrbgbwurgrrrwrrwgruwbugggrbrgruubwrbuwgugruguuwwbbrub
+rrgbgwwgrbrwuwgwwrwwggurubuugrbubbwrbbrrbwuw
+ugbrbgbbgwgbrubrbrurrwubuggbbuuggrgrbrbgrgbubbuubggbwg
+gwugbrrwrwuwrrwbrbuwrwuuuwrbwgggrrbwbwwgbgrruguuuwbu
+urrurubgbggurgwuurwwggugwubrgubrgrbwuwwbbbugwbwbrrbrbgbur
+uurbrwwbwrbrbuwwgguggwgggrwwuguuggbubgugrwbwbgubggrurgbwggg
+bbuuwwbrwbwwrwrgwrugubbgbrgggugwuuwggwwgbwggubbrguwbbbwuwb
+bwwururbbbgrrrrwwbwgubrbwwggurrrrwrbugguurwbuwuw
+rbbgrruwrwubbrugrbrbrwgrbwwrbrbggwbgbuwgwwur
+wuuwggwubuggwbgrrrwubwbrrwwurggrurwwbggwuubbwg
+uwggbgbbbwbugwubrubbubgbwgwrugurwwbrgrrgbwgbubbgrrgrwrb
+uwrwbwggwburwwuggbuguurgrbwbbgbggrbrrbrbburwurruwbgrbwub
+bbwuurwwurubbgbwbrurbgwwbbwggwurrugbbbugruurbwggrrbrr
+gbuwubbgrrwbbguruguwgbgrugrwwugrrwrrwuuurwgurrrg
+grgwbbgbbggbbrbbrrbuwgwwguwwgugubwuurbgbwubbrbwburrb
+ururrwurubrgwbugrggggbwbggguwwbbwubbggugwbgugwbuwgb
+ubuwubugrwwwwrrbugbrwrbgugrgrwgwrurwbgrubggurwggwrugrub
+ugwbugbwgurubwggrwgrrubrgbbwbbbbrgugubuuwwbbrbgu
+wwbubbubuwwguuburwugwruwggguwbgrruuwrbubbuubwwrw
+gbbugwrrgrubrbgggbugbwubrubbwuwrurrgrbgbbrbgrwwgruw
+buuwugbuguuwurugburbrrbrgrgbbbrurgrguwguwugugbbwbgrwwww
+gwgwrrugwugwbggrrgrbuwgbgburwbggwwgugrrwgwuwwwwrubwg
+bwrgwwrurrbbubuwwrgurwbrrubgrwuwubrugwrbuwwrubwuwrbbb
+gbuwuggwrrbubgubgrbbgrburrrwwrwgwwgrgurgwwrbbgbbuwuu
+rbrgwgwwuwbrgrggrgrwwugbrguuuubrguwrbuggubugwrgbbbbwg
+rbburwgugwwurgrggbugrrrrwwrbgrburgrgbugbugguruwwwrurb
+bwwwwwurbugwruwuwurubwggwrbbwgrwurbwwbuwruwbruuugwgbwgbb
+wwguuburgwrubrrbgbguggguwuuwwrrwuuruuuurwrbubgbu
+rburbbwgbgwbbburgbugrrwugugugwubgwwruuwwgwrubww
+wrggugbgrgbwuurgwgbguwurrrbggbwggrgbwururbgwubbwg
+rguwuwugbubbrwuurwrgbrbuwrbbrrbgurbwgbbwbg
+bbgwrrbuwbugrbbgburwbwrguwbbrgwbubwrrggbbwrubuub
+bbugbrrurbrgrubrugugbubbwwwwbuwbgrgbbbbrbu
+brrwburgwbuugggwwuwwwurrbugrrurruwgwgbbbwrubgbwg
+gbwwbrgwwugbwwbuugbwrbuugrrbbrgrrwuururbggurugggrwurgr
+wubbbwrrgwwgrrgwgwgrbgwuugugwbrugugubbwbruuubuuuurru
+gubrwgubwgruugwbgbugwuubruuuuurbwwruuruurwrgruuuwuurwwwr
+ugwwrwgbburrwrbwgwrrrurbuuburgruruuwgugggbbwwwrrrggrbu
+gwggbbbwuwbwurugubruubwburgwrbrwwbgruurbbgrbrgbwgugg
+brgbrwbbgbrwwuwgwrubbuwwruugwbbburuwbwugugbwrgbrg
+urwbggwgggrrbbrubburwrgrgrggrbubwwbrbuburwwbub
+brwbgrggrgugrrwurwgrurrbugbrwrbgwubgrbgrbwgbggrwuur
+bbbrgwwrbrurwuuwrgrrguubbruubuwwrrgrruruwwwrgwrububgbgbg
+gwubrgwwuuuwwbuuurgwrrwbgggrgwgurgrgwgugrrgrruw
+wurguuwrrwwggrbugwruwuwwgrugwbgbgwrrrugbruug
+bgwurwrrbwrrugbwwwrwwggbbruwwrwwubwwurwurrgwubrbrgbwbwuww
+ugggbrgrugubugurrbgwgrbrbwbwuguruwurburgwggrwwguwbbgr
+bubrgrubbrgbwwgburbrrbuugwrrrbwruruwbgwgrggwwbbguburwruww
+wggwbbuwugrgwwbrrbwrgbwrggbrggurbwgwwbuwwrgbbrwwbrurrurubu
+ubuggwuwuwbwuurgrrbugrgwurwuuwugrbwwgrwwwbwrugurgrbrwggrug
+rgwwbuwbwbwrgwgbuwwwrbgruubugwrgbgwburuwwugwwrburubggbug
+uuwwwrwrbrrrrbwrguurgruwggrubrwgguwbbubwbgrruwrurgwru
+ubwuwurbrggrbrgubbuubbwrbgbuugbbwrgurrbgbrrbwgrurubwggwgu
+wbgwbuwbwrggggrbwguwggwgrwwgrbwbwgwwwwgbggurggrggbwbbwbgwg
+rruruwuruuurggwugruuuwgruggruwgwwwurwwrwuwrwugwrbg
+rrbrubrwgbbgwrwwrrrrbuggrwburrrwbrgggggrrgguwgr
+gbubgguwrrwuwruwrrgrrbwbrwguugurbwgurgwwrbguubgwrwr
+grgrrrbbgbrbbuwwruuwguwggwgurubuubbbrgrrgwgrgbgguwbuubg
+wrwurbwgwgugggbuwwruwbgrurggbbbuurgrbrugbrgw
+rrwgrwggbgbggurubgrbwbugugbgrwrgwwbrrggwbbggwrrgw
+urgwubgugwbuwgrguurwwrbbbguurwwwwwwgbrwubggwubbwubgbwbg
+bgbgrubwwrwggrwwbbbbbwwgggrbuwrggbbubbugbwg
+ugwbgwguruuwrrgwrugwrrburwburbgrugwgwrbbrbuwww
+ubuuuugggrbuubwgrwggwuguuugbwggubbgrrwggrbgrbugbbgu
+rwrubgurgugggrggwuwrbbruwrguwuubggwrrgrgbguwwbbrggg
+brubgbwwbwbubguuwurgbubwburwubbruuuuurubguruuwgwbwg
+ugubrrrugrgwwggubuwrrrbubrbuubruggugggubwwwbrruwuww
+rgbugbwggwugurrrugbrwubuwbbgbububwrggrrgrug
+wrwrrbbwuubgrbbubwgbggwwburgwurrgrubbuwwwgggwgwr
+bbuwgwbggbguwwwuwguuwguwbubruwwgwgwwbwuurbuubgbbgubuwurgg
+gbbbuwrguwrwuuwrrwbrburrubgrbgwggurrbgubgu
+wgurrwrwgwguburugggggwbggbuugguwgrubwbrrbgurbwrwbbwrbwb
+rwbrggbwruurgwbwrwgwrwbrbugbrgwuwuwrgbwgubuw
+gwrbrrrrbrwwrgbbrggrbrrubgbwbbwbgbggbwugrugrbbru
+gwgggbbrbgrrbgubwbbubwwuggwgwrguuwuuwuwgrwgwurrbrb
+wuwwbggrwuwburuwburwbrbwbbbbuggrbwwwrrburgwrgbrwbrburbbwu
+ruurbbwbuubuuubuguuurggurrggwububugggurrgwruuw
+wrrrgrgbguruubgbgurbuwgwrwwbggubwwrbbbwrrbwwbwbrbuguuw
+wggrrbwgwgrwwugwwugbwwubrwwrwgburuwugwurgrbwwrwbrguuwwugwb
+bgrwwugbrugurbgubwrgwwbrurgguwrgruurrwgbuguguugr
+rrbwwrbgwubugurruuwbbuwgbwubgbbrwuubbruwwuwbguggwbuwrwrbr
+gbuuggrugurbwugggurwggguwugrwwgurgguruubugrwuubuubgwbwgw
+uwbggbgbwrrwurbwggrrwrrwuwbbwrwugugbrwbrrwrgbbg
+guggbburgrbwrbwuwgurrwwbwwuuwbbgwgbrgwwrguuuurrubuwguu
+uwbrurwwrwwbwubrrggrugwurgbwbubwgwwrggrrubbuugwbwggg
+bwwubwugggwbugurwurgggwbwrrrubugrggwrwbrwgwwb
+rbgubwwwugugggbguwbrwgubbrbbbwbwwbwbrbgurrru
+ubuwwrbbbuguurrbruwwgburuurwruubggwwwrbwguwww
+grrbgbrubguwwrbbggugbbwuwrwugrgubbwgurrurr
+rwwubgrbrrbbbgrbbbbugwrguuwgwrgwrrgrwuwrwbuwuwubgwrbrbuub
+rbbubgbbgrbrguwgguurbububbugbbbwbrrrrgubwgwuwggwb
+gwwururguwwbbbbwuwwrrrgrugwbwbbuurbwwwuruwwwrbbbuuuguggr
+wwbrbwrgwwbbrugbuugwwggwgbwwguwuugbgbwuugb
+ggggwwuguurubugrrwguubwruwrruubbrbbubbwurwgbuuwbb
+rrrbguuwguuwbrruguguwgwbwrgrrrgwubwrbgbwwgwrwugbbr
+wgrrbwrbbbbuuugwurruwbgubbubrubrggruubwrgwurbrwgrwrgr
+brwuuwrrrrurrbgrwgrrgrrbbubwbrrwggwrbburrwrggwgbuuru
+wburugurrugrwgbrwwrwggugbugububwwgubwrwbuwwgwwguu
+rbwbbwrbwbwwrggurbgubwuwrrbrgbgwwbbugrugbbrrgwgrugruwrug
+bgguwwurwwwugwgwwgbbbgwgbrurggbwwwuwubwbwwuwwwwr
+gwbrwbgrwgbbbwrurwbrwgwuuwbgrguuuwrbrrurrrbgrbrggurwgrugw
+uububwbugruugbubwrwrbbwwrbwbggrwrrugggwwwwubguwg
+rwwburugbwbggwbwgrbgugugrguguubgbrwbbwggg
+bgubbwbuurbwrurwurbuubuggbwurbgwrgggrbrbwbwgrggbr
+gurwbugbuuubgggrgurrbwbwgbrgwrwgugubbugwwbrrgrwuuwwr
+urgbuugrubugrgbgubwruubrrrubrgbrgwgurgggrbrrwuruuuubrrg
+wurrrrruwrwrwruwwggwwwuguuurrurubrgbuwgrrubbubrubgbrgu
+gbubbbwggwwrrbuwrwgbrgbuugwrgwrgwwuruuubrwbwg
+gguggrrgwbgbbrwwrgrbgbrrrwgurwgrubgbgwwbgbwrwubbw
+wwwrggrwrgrwbrgbbgrrbbubgrrwwbgwubbugwwwruwrwrwgwuwgbub
+rwgwrggwrggwgugbugrguwrgbwgbwwgwrwbrububguruubwg
+guubbbggurbggwuwwbwrruuwububgurwbwruggbgbw
+wgubwwgggrurwbwrbbwubbubrrwgrurbggbgubrwgubrwrrgwubu
+rgrrwggwbuwuurwrwwwbuwuwggrbrrubggbwurrwwwbbwugu
+gbgbgggggrbrwrgrwgubuwbggwbwgurwuguuwrwuugrgwgr
+ruurgwwbgbgruwwwuurburwuwuubrubbbgbguwrrbburbubbuwb
+bgwgwrbrubwugubugrugrrggwbbrrwwggwrwbgwbwrurbubrbubgg
+gggbruwggwurugbbbuwrbwruubwbwrburwwruurgwruururrwuuwgrbbg
+rwwbwuggguuruggrruwruwgwrgrbrwwggrbrbuwrgrggbwrwb
+grbbgbbgbrrbwruggrwburgwwwuwrbbgbuwgwbubwu
+wwwwgwbbbrwugugrbubgguggbuggbuugbwruwrubbubggwgrgugbbwg
+uwbgwrbubrrrugwbuburuwbbggwgbrggrgruwruwgrruu
+brurgwgbuwuwwgbuwgruuwgbgwwbubbbrbrbwrwugwuuggwg
+rgruwrrwgwuugrbubggbbrgbuuwwgwbbwbburgrbggrurbuuuguw
+uuwrgwubrrbwbrwrbgburgbrwbwbgbbgrgrrwwrbrrrwbwwbburwgw
+wwbgbbugbbwbguurubuggrbbrbuubuwbbburwbbruwwugu
+wbuugruruwwruuguwbwrwgrgbwuwurrgbgbgbguguwwbugu
+rgrruuuwwrrbbuwugwwrgugbbggrwgbrbggururgbwg
+urwugubuwbrwrbbrbbrgbgbwggwggwguwwubwbruwwu
+grbugbgurwgrgubrwgrgbubbrggbwbgwbbwgrbrwwrrgrrug
+wwwgbbwburwbwgbbuurbgrwwrbgbbwbbwwbgrrrggrrgbug
+uwuuggguwrburrgrwgburwbuuggbbwubgwgrugwgguwg
+wgrurrbrwugrbrubrwrgrurbururwgrbrgbwuwguwwwbggr
+wrbrugrbwggwbwbwrbgbuurwrrgwwgugrruuguuuubwwbrguwgww
+ugwwbwwuwgwuwruurwwubwbrurggbbruwruwwwggruguuwrrwgbwurgr
+gurrrgbgbrbbrrbrwuuuwgubgrgwggrwrbrgubwrubbur
+rwubgbwurubbbwggwuubrbbrgwuwuruwuwbugwgrbbr
+brrruurubwwwruwggugbgrwrwugububwwwururbgub
+uuwubrbwguuubbbguuwguwwwurwrugwbruwuruuwrrgurggurwwbbbwrbb
+ugbrrggwbwwububbbuwbugrruuugugwbwwrgbrwbrwgg
+gbugwbrwbuwwruubbbbwbbbbrwrrbuwgrrgburwrbbrwgwwru
+wwbgburbruurbrbwbgwbuuwrwgbwruwwwgrbrwrgrrbugrr
+wruwruwwrubuurbgbrgbwgrwggrbwgwbrwgugrurgruwb
+guurruwubuuwubwrubwguwurgburburwrwggbuwbugbburbg
+bwrugbuuwbgurgwwuwrurbgwgggrbgbrbubugbbruwggur
+buuurggbgwuwurgbwgrgwwrbwuggrguugbgrwgrugr
+rbuwwrbgwbwbbwguwuwubrwwrugwguwurubguwrugwgggr
+rgugbbwrbrgbgwbbrbuwrrgrwwuuuwuwbrrgbrrubgbwbwg
+bwwbrburwwwrrrruwgwggrrrwgugruurwwgubwurwrbgbw
+ubugbwruuubgbwwbgwbruuruurgrubwwbgrurggbrguuuwwrwbwwrg
+gwwwbwuwrggrbwurwwruwuwrbwgrbrwwbwwrrbuubb
+bbwgrwwurrgwwrwrrrbwbwrbguwwwurggrrbbwguwg
+wubwggrrbrbugwbrbrrubuwwbrbubrubrgrgbgbrubwbwg
+uubwruuwrwrgrrwwbgwbrugrgrwwbuwgwbwwuguwrbgrgruwwbbwg
+uggrwbggruubguggwbgrbbggrurrwwruggrrbubwuuugggwugbwgwwgbg
+bwguwrrbbubgrgugwbwrburugrrgwbuwubbububwugurrwubuwb
+gubbugbuwguugugwbwwbwguwuggbburubbwrwgwwubuwbguurbrgrwrrbb
+brbbwguwrwuwwbburwwuwgrrwrbugruuwbuwbwurbubgbr
+rwuuguuwurgbbgwrbuwgwuurrggrbwwrgruuruurbw
+gwrbuwwwgrugwbuurwwbggburruruuubburwwurruwbubugrgbru
+rgubugguwwbwbgrrrwbuggggwrrggbururrbgbgbrbuguguggwb
+bwwwwrbguuwgbuwuwbbrbugurrrgwuguugwrwwrrugburwuruwubwg
+grwrggrgubguwgbuubuwggurwwrgrbwubwrbwrrugwuwruuww
+rggwwrrubbguuwgwbwrrbuububguubwwbbrrbbwuwbrugrbrwwrggr
+bbgbwbwbuubbgrwgggwwuuuwrwbwbggrbgwbwuwbwbuwb
+uurgrrbgggbrggrurgbwrugrgbgurgruwbwwbwuuguww
+wrwguwrrwugwggbrrrbwwuguwrwgugwgbbbbrgwwgwrurgwggrwbwbgr
+ruwrurugbwrgrbrrrrwbuubwgwggrrwwrwgugbugbgwww
+wbruwuuuugbbggruwwrrgrbbwwwrwwgwwguwbwgbwg
+wgbgrwwgbruwbrrbgrburwwwgwrgwwwwwwgbggbgbugbgruuwrubugbw
+rbrbbwuubuguuubguurbrurbugrgrubbrgugrbguwwwubwruwguwrgu
+wwrwggugrgggwgrrrwurwbwgubwgbrrgrgurbrgbwuugugbwrrgbwg
+wwwgguurwgrwgwrbwbuwrrguwuugwrrgubbuuubrubgbbrw
+brbbbwruubuwrurgwbgrbbbugrrrbwrgbbwruwwbrgbugrwwgwuru
+grurrbgubgrgwbwruuwrgwwgbugbwbbbuubwrrbuguwgubrbgwgwwbbr
+wwrbguwuwbuwbguburwrggrrwbbgurruwubwbbbwrgwb
+rgrgrbbguuguwwwrburrrgwggwrbguwwbrgbbwguwgbgugbw
+wrwrugggbgrwwgwrwruubugugrrrurubwrrrgrgrurub
+wgbbwgbrugbrrwbuuurrubruurrbwuwguwwgrggwrguwrugbwg
+wgwuuwbwbuwrurugbuubuwuugguwguwuggrggubbrbuubwu
+wwwugbrgrgwbbwggubbgwrgwwugwrrrrbbwbbrgugugwggrub
+rrbgwggwugbrwurbrbbbbwrwrrrgruwrbbgugrgrrwrgrururgggw
+rwrrwgwbgbwrbrburuuruggwrwugubgbuwwbwguwbugbgwrggrbrbug
+uubuwuuwbwwurugbggbubbgrrurgwubbrwggwbbwwrr
+burgwbwbgwbuwgubwgwgruwbuguwrgbbggugbgrwggbrrug
+bgbwbrruuuwbbrrgwuwbbrbgbrbbwwbbuubwuuurug
+rgwrbruwgbugruwgrrugbgwwugrguuuggggrgububbbrgwgb
+rgubbrruwubgwgrgrrbgbubuuubrbburbrrwwbgwubuurggwurbg
+grrwbwguwubuuwrgrwbuurbwuwbrbrugggwgurrwwbwrg
+wgwbwbgwrbbrrrrubuurrwwggurwurwrrwgrbugrwgwguubgrgubguw
+brrgwbbrwrwggbbbwwwruugwwbguggbwbwbrwbubbbbbbbgwgrbgrgb
+rbwbbrrrwbuwrbgwrrrrruguugrrbuwbbgrrrbwguwrubggugrubugwgg
+brbgbgbwwwbwurrrwwguguggrrwgbbgrrwwuwbgwwrwuguuuwubbrgb
+grbgbgwrrwbuubgbrrwuuwurggurwbbwgbrubgbrrgwgb
+wuggrrwbbgbbbbwrururuwrgrgurgbwwbwbwwwgbgrbubbrurgu
+grgbbguurbgrwwbwwgbrruuwubrwbrgbguwrbrrrgbubwurbrbruwruuw
+buubrbrwguwggbgbgrgruuuwrrbwuuubgrggrbgbggrrbbgr
+rbwwbbuubbrrwwbbwgrwrgbgrrggrubrbgwurbrrgwwrbwgbwg
+ruggruwuruugggwbggwwgrbgubrbgbwgubrbwgggrurbgrbgrgwugr
+bugwurwbrrruuwgwbruwgrrwrrurrgbgbuwgggrrwgrrbuuggbuub
+brwguuruubwggrgggurbrwwrbwwrugbbggurwubggwuugubgbrg
+wrrbggurgburbgrwurbgbrburbbbuggwrrwbbgwbuwgbbwgwwg
+uwwbwbbbgguggrrgwgrbwbwwgrgwwwgwububgbugwbggguubwg
+urrwrgrrbgubbwwrwbrgbwburbwwbrwgrrbwrugwugrg
+ururguwwbwbwgrwuugwbrgwrwbrwrwrurwwrwgugrggbwrrbbbgrwwguu
+gggbbwrubgwwgugrbwbwbbgubrrbggbgwguuuwwbuwgruwbwu
+urbbbgbubrbbwgubwwwrrrwwggwuuggbwgruruuwrurbrugbb
+wrbugwgrbwggrrgrwgrrgurrbuwbggggrwbbbgbwbrrwbuubwg
+wbbrgrgrbrguurggwrwgbuguwwgwrwgrrwrubwggbbggbbwr
+bwruguburrrruwwrbwwrgbrrbwgwrrwwbbbuwgbgrurrwuugwgrwwbgbb
diff --git a/2024/19/test b/2024/19/test
@@ -0,0 +1,10 @@
+r, wr, b, g, bwu, rb, gb, br
+
+brwrr
+bggr
+gbbr
+rrbgbr
+ubwu
+bwurrg
+brgr
+bbrgwb