aoc

commit 7025ccc7d4f1443a67ac4ef6c776e21ce127d49d

Author: Honza Pokorny <me@honza.ca>

Add 2020 clj files

 project.clj | 8 
 resources/input01.txt | 200 ++++
 resources/input02.txt | 1000 ++++++++++++++++++++++
 resources/input03.txt | 323 +++++++
 resources/input04.txt | 1056 +++++++++++++++++++++++
 resources/input05.txt | 859 ++++++++++++++++++
 resources/input06.txt | 2042 +++++++++++++++++++++++++++++++++++++++++++++
 resources/input07.txt | 594 +++++++++++++
 resources/input08.txt | 636 ++++++++++++++
 src/aoc/core.clj | 7 
 src/aoc/day01.clj | 48 +
 src/aoc/day02.clj | 81 +
 src/aoc/day03.clj | 73 +
 src/aoc/day04.clj | 90 +
 src/aoc/day05.clj | 65 +
 src/aoc/day06.clj | 52 +
 src/aoc/day07.clj | 99 ++
 src/aoc/day08.clj | 96 ++


diff --git a/project.clj b/project.clj
new file mode 100644
index 0000000000000000000000000000000000000000..c023e04fe03b711ea568eaa7564dd8239e51840d
--- /dev/null
+++ b/project.clj
@@ -0,0 +1,8 @@
+(defproject aoc "0.1.0-SNAPSHOT"
+  :description "FIXME: write description"
+  :url "http://example.com/FIXME"
+  :dependencies [[org.clojure/clojure "1.10.1"]]
+  :main ^:skip-aot aoc.core
+  :target-path "target/%s"
+  :profiles {:uberjar {:aot :all
+                       :jvm-opts ["-Dclojure.compiler.direct-linking=true"]}})




diff --git a/resources/input01.txt b/resources/input01.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3c039b7ba24e88f68dce34a38df090ffe61bbba8
--- /dev/null
+++ b/resources/input01.txt
@@ -0,0 +1,200 @@
+1895
+1732
+1660
+1658
+1878
+367
+2010
+1989
+431
+1946
+1614
+2003
+945
+1856
+1934
+1937
+1781
+1947
+1991
+1917
+1604
+1707
+1966
+1959
+1182
+1828
+1880
+1908
+1942
+1687
+1611
+1922
+1913
+1803
+1976
+1718
+1885
+1971
+2000
+1912
+1981
+1776
+1901
+1941
+1935
+1977
+1907
+1893
+1898
+1975
+2001
+1833
+1951
+1939
+1988
+1870
+1985
+1932
+1930
+1938
+1926
+1931
+1982
+76
+1979
+657
+1872
+1933
+1961
+1987
+1998
+1994
+418
+1914
+1929
+1810
+2009
+1712
+830
+1990
+1900
+1876
+1753
+1859
+1965
+1963
+1905
+1921
+1685
+1694
+697
+1899
+1997
+1964
+1927
+1952
+1894
+1960
+1986
+1883
+1616
+1993
+1892
+1943
+2005
+1995
+1915
+1663
+1954
+1902
+1191
+1948
+1875
+1850
+1955
+1962
+1984
+1957
+1969
+1887
+1953
+1786
+1638
+1909
+1881
+603
+1973
+1784
+1869
+1925
+1968
+1737
+1807
+1950
+1992
+1936
+1918
+1891
+1897
+1940
+1919
+1910
+1862
+1958
+1832
+1904
+1791
+1920
+1874
+1729
+1643
+2007
+1871
+1999
+1584
+1890
+1924
+1974
+1701
+1906
+143
+1725
+1945
+1783
+1873
+1903
+167
+1855
+1633
+1956
+1996
+1808
+1884
+1916
+829
+2002
+1852
+1835
+1889
+1983
+1949
+1970
+1774
+1764
+1609
+1882
+1857
+2004
+1911
+1896
+1980
+2006
+1967
+2008
+1972
+1648
+1923
+1978
+1675
+1831




diff --git a/resources/input02.txt b/resources/input02.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f4997c30891eed45500c538ec98feed1af7d4301
--- /dev/null
+++ b/resources/input02.txt
@@ -0,0 +1,1000 @@
+6-10 s: snkscgszxsssscss
+6-7 b: bbbbbxkb
+2-4 n: nnnjn
+1-2 j: jjjj
+5-9 z: jgzzzqhbj
+4-11 m: mfmmmpmjmkdr
+12-15 t: twqrxttwttthtkxbz
+8-9 z: ftzjzzzzr
+17-18 h: cpkhssvpphzvprfnft
+7-8 b: bjbbbbbb
+4-5 p: pppppppppgppps
+16-18 r: rrrrrrrrrrrrrrrrrr
+9-16 v: vvvrpvbvvvvvvvvvwvvh
+11-15 d: ddddddddddddddjd
+9-14 g: ggbggghggggggggw
+1-5 d: ddddbd
+1-4 x: xxxwxxx
+1-2 l: bdjjddlqg
+1-4 b: lbbxb
+15-16 f: ffffffffffffffmz
+10-16 m: mmlmmmvmmmbhmmmq
+4-15 v: vlfvvqphhjfvlgt
+5-12 m: mmmmjmwmmmmcmmm
+7-8 q: qqqqqqxkq
+4-9 h: hhzhhhhhhhhhsh
+3-7 t: thltdtjtstzrtwtt
+6-7 k: kkkkkkk
+1-5 q: jqwqd
+4-13 x: xxxxxxxxxxxxxxxxxx
+1-4 l: llfl
+6-12 n: nnffnfnnmnffnx
+4-6 m: xmvxnmpmm
+5-7 m: mmmmbmmmmmmmmm
+9-17 f: ffffflffbfffffcffff
+4-10 k: kkklkkkkkhktkkbkzq
+8-15 z: kdxxzzlhpzgbzjzz
+2-5 q: qrqqbqqqqqqqkqq
+3-5 t: zrttht
+9-12 t: ttxgntjmvntctpfrt
+2-3 k: kkkk
+8-10 j: jjjjjjjjjj
+2-9 k: vkwkhcqnk
+9-10 t: ttttttthtt
+4-6 b: bbbbbbbb
+9-12 n: xnvnnvldhthlsn
+2-4 w: wwwwwwj
+6-10 t: tttttwttttvtt
+3-10 j: jqjjjxjdjnjjjj
+15-18 q: kqlncdqwclqpjzrbnq
+7-8 p: gpwbjppp
+3-13 m: mmmmlsmfvmhmmmm
+7-10 s: wdshsrsgsl
+8-16 f: fffffffxfffffffcf
+16-18 s: ssskswhsvslwsssrsq
+12-14 j: gjjjjkjgjkjhjvj
+13-14 t: gtttvftwtgvhlt
+6-7 v: vvvvvgbv
+2-8 l: ssldslmvl
+3-9 l: bflzllqkqlkll
+8-9 n: rrnnnnnnsn
+7-14 p: bqsrxgplkpdvbpkn
+2-5 z: wzbclnsxt
+2-4 k: knkxk
+6-8 d: drddjddjdd
+15-16 p: ztgptpfpcwppqrzppps
+1-3 k: nmsqksv
+7-10 n: pwhbcwnlznfnvrlnds
+13-15 t: tttttttttttttttttt
+10-12 b: bbbbbbdbbgfxbbbf
+3-5 w: rwwwj
+18-19 x: xxxxmxxxxwpxxxfxgln
+1-4 g: lfsjtgggg
+13-15 x: mxzgtxhrxjhxtnf
+13-14 d: ddddddddddddlx
+3-5 r: rrrtrrtmlr
+1-7 t: thttttttttt
+2-5 g: sngggj
+8-9 n: tnnnnnnnn
+6-10 w: wkwwjfwltk
+12-18 n: nnnnnnnnnnnnnnsnnh
+14-18 m: mmmmmmmmmmmmmmmmmmmm
+5-15 v: fvvfrcqkvkggnpl
+13-19 f: ffffffftfffdnffffpsf
+13-15 k: kgkkkmkkkgftklb
+4-6 h: hhhchvh
+7-14 l: qmbdhdjbrglxql
+13-17 w: kwwwwwwwwwwwdpwww
+1-5 q: pqqqdqqqq
+8-9 p: vhwphvpfp
+2-4 h: hljmh
+1-2 c: tmcc
+3-5 f: dpnvwffhlp
+3-5 m: mmmmmm
+10-12 c: ngjnczmcscxc
+2-4 x: mxxj
+4-6 m: xbmkmm
+1-6 l: kllllsblqhngl
+11-18 x: xprkjcrxkgxxgwtbmx
+4-6 k: vwxshkkkkbtfbhl
+11-15 z: dzzkzjjzzzzzzzlmzbn
+5-6 f: ffffnfffflfjff
+3-6 d: ddddddbd
+6-9 r: wrrrvrrrr
+8-9 n: nnnnjnnnt
+2-7 b: bxptdkctbrxfllpvj
+3-4 x: hxxv
+5-14 n: nrnnnlsnznnzrqnjxnp
+1-3 w: wwww
+9-12 x: xxmxxxxxxxxxtxx
+10-14 j: jjnjjjjlvjkcsjjdllvj
+4-6 w: wgwbwwww
+10-12 t: ttqttttttttl
+10-11 t: ttwtttttttv
+9-15 t: ttttttttftttttttt
+2-3 p: pfgp
+2-4 z: brrksnvqjzwqjvjs
+8-9 n: knnnftzjbqj
+6-7 w: swjwwdwwwwwwwww
+1-2 j: xjlrkjjztrjfpss
+13-14 l: llllllllllllvlllllr
+7-12 l: lllllllllllblllll
+7-8 j: gqdcmjqh
+3-9 g: gchkbvgvgw
+15-17 b: bbbbcbbbgbbbbbmbg
+1-7 h: qlmhhcdhhhhhhhhhh
+2-15 c: ccccccccccccccscccc
+1-2 q: xvch
+3-9 w: wwwwwwxwww
+2-4 x: jskx
+3-7 t: btwsnvts
+9-11 g: gkhgwctggbm
+2-7 g: xvgwwltdvnzscbtqwb
+1-11 k: kkqkpkkdkkkkkkkhkk
+4-12 h: nbqlhjbqhxtnxlzlr
+3-4 d: dwdd
+8-9 k: kkkzbckklqqkhfkqkk
+7-8 c: pcxmqdwc
+2-4 v: qbvwvvnvvp
+3-9 c: pfqcblwxcrmx
+1-9 t: fwgtcrftktt
+7-8 p: pppppppp
+6-13 w: dnwfhwkjffpdwgzdf
+10-14 k: kkkkkkhkkwkkkkkk
+2-4 s: zscssddtpmqblmd
+11-13 b: dbvzwthlcmbkb
+1-4 k: kqlxwvbkckwzmqxvtcc
+2-10 s: sxssssgsssxsssnss
+3-9 w: nxrmwlpgw
+10-13 w: wwsgwwwwwwwkw
+9-13 v: vhvvwjvcvbvvg
+5-7 n: fbvnjpt
+3-4 x: xxxx
+9-10 l: rlllmlllll
+7-9 d: ddddddddhd
+4-8 z: zzzhzzzf
+11-12 m: mmmmmmmmmmkf
+4-8 m: bmfzppcqttct
+2-4 m: mfmcmmmcx
+2-9 p: rppzgvshn
+7-8 r: rrrrrrrrrrvr
+6-7 p: hkltppp
+7-10 m: mmmmmfmmtmmmpbmm
+6-14 p: pppppppppppppxp
+4-6 p: wbspppnlmc
+2-4 n: xnfnl
+2-5 q: nqkcqmvwp
+2-3 d: ddkbkdjd
+5-9 b: qxjbblbrb
+14-16 b: bbbbbbbbbbbbbqbbb
+5-6 p: dppppp
+5-8 j: kxztnjjn
+14-18 k: krkkkkckkkkmktkkkkd
+7-8 n: nnngxnfpnn
+16-17 c: ccmccccccccccccfcccc
+1-3 g: wggg
+1-2 c: cqcckc
+2-8 g: gjwdkbds
+10-17 s: hswqssmttskspdlkkss
+14-16 b: bbbbbbbbbbbbpbbrbbbb
+12-16 r: srrmcbrrcrzrdwzng
+2-3 h: fcws
+9-13 p: gkgpqpghpjbpz
+9-10 m: mmmmmmmmmmm
+3-4 b: brbb
+2-3 p: gncvqdhp
+2-7 g: gdggggggggggggg
+2-7 j: jjjjjjrjqjjj
+3-5 v: ltptjlntf
+1-7 w: gwwwwwfww
+7-10 z: zzzzzzmzzzz
+10-12 x: xxhxxxxxxgxsxxxx
+11-12 b: bbbbbbbbbbbbd
+16-17 v: vvvvvvvvvvvvvvjht
+1-4 x: bxxx
+16-19 g: gggggggwggggggjgggg
+5-10 q: qjpqqvlnkqxmlv
+4-6 p: qrpffplvpp
+7-9 r: rrrrrrgrb
+2-3 g: bgjg
+10-12 t: ttjttttnttdtt
+2-4 g: dgng
+11-12 r: rrmrrrlrtrrj
+1-5 v: qvvvvvvvvvvvvvv
+3-18 p: ftnfnpmjprmrzmhbnxj
+10-12 w: dqnsjjxsqrwq
+2-4 z: lzgkzsb
+8-9 n: dwclxdtnndtpcgqmx
+10-11 w: zjwdsphbbwlhp
+2-9 d: zzprkgzczbs
+14-19 c: gpjfrvsrcnbxbclctxc
+1-9 f: fmhfvfffrfws
+12-14 d: ddrddbddddddddhmdg
+14-15 s: sslsssmsnssdxsj
+2-10 v: ljppzjfvfnfp
+1-2 z: qbwbzknrzzs
+18-19 l: llllllllfllllllllll
+2-3 p: ppgp
+13-15 k: knkkkkkckkkkhkxk
+3-6 v: vbjvmv
+4-8 h: hmhcxfhg
+12-14 v: vvngcvvvvkvgvs
+2-3 j: xdjjrk
+5-13 s: sssssrqsssssq
+1-7 s: sssssssss
+6-14 b: ptlvmbbrbxnvqbrmp
+16-18 w: wwwswwnwwmwwwwwwwf
+1-4 k: kkknkkkkk
+1-4 g: ggrbk
+9-11 r: rrrhrrrrrrrrr
+11-13 x: xxxxxxxxxxxxnx
+3-8 x: nsxvlvdfbkpxsgscn
+12-15 h: hghhchvjhhhhlvhhhhh
+11-12 n: nnnnnnnnnnjqn
+10-13 r: jrzfzrzrqblmks
+7-8 w: wwwwwwwh
+3-4 k: kkbft
+1-9 c: cccccjccccccn
+2-7 r: rrvnrxrvrzsrbrs
+3-10 l: llgdldmlplqlhdlll
+4-8 m: mmzmbmgm
+5-6 q: sfxqnftnbnqwq
+5-6 v: vvvvgvvqv
+9-14 h: dhmwrhzqqvhhhfhfhhht
+4-7 p: jwwppvpklc
+9-13 z: zzzzzzzzzpzzzx
+13-14 l: fllklltlllllcphllll
+12-15 m: htmbmqgljcmvmclgnm
+9-10 b: bbbbbbbnbb
+6-12 x: nxjbxxhxxxxgdxx
+6-7 t: tttbwlk
+8-11 q: fqqjtlswqgkqdqc
+16-20 t: xplwqxbwtsfptbvtvcxt
+3-4 k: kklkkkkkkxkkkk
+3-9 m: kmmsvmpmxmgmb
+6-12 j: jjtjjjjjjjjpjjwj
+3-4 m: kkmbmzkx
+7-8 f: gmfxlgfjtfst
+1-3 w: wwwn
+1-7 k: knkktkkn
+13-16 v: vvvvvvvvvvvvvvvmvv
+10-11 h: rhvdhnfhvtchlfhh
+10-12 x: xgxwbqxkxxcwsfd
+10-14 m: mmmrdxpcmcmmmkmmmmm
+2-5 x: vvxpx
+8-9 h: hhhhhhhmfh
+16-19 j: jmwjjjjjjjjjjjjjjjz
+2-3 r: sqrnr
+14-19 p: ppppppppppppppppppk
+2-5 w: wwwww
+15-16 q: dppxtnhmxrhmncrqq
+4-5 v: drhpp
+1-4 p: pkhn
+3-6 q: gwmrfwh
+6-10 v: dlvvfhvvkb
+1-8 q: qqqqqqqqqdqqqqqqqq
+17-18 n: nnnnnnnnnxnnznnpnng
+3-7 m: gmxzffwmbdm
+12-14 m: dmzmcmmhjmqltm
+3-16 w: drcbwtvqgbppbwzvm
+8-10 d: ddbddddzdddddkpd
+8-9 m: mmmmmmmmmmmm
+1-3 l: glll
+7-11 x: fxrxxdxxxqxnxx
+6-7 d: ddddxgdd
+7-8 g: hgggbggg
+2-3 w: pwwtww
+7-10 h: lhwbhjhzhx
+3-14 b: bbbrvrbsfbnxrgqbbq
+4-7 l: jzqkxlnpxlglfsll
+6-7 b: hbpbbbb
+2-4 w: pskwwxzpjvmwcnfr
+13-15 m: mmmmmmmmxmpmxmmm
+4-9 k: krxkzqzkkhrpqth
+4-7 f: xfffkvfqzwhcfwkhq
+4-10 q: qqqqqcqbqqq
+14-15 s: lgszsdststlpgjbs
+7-12 s: sspbsssskfns
+7-8 d: cdddqpnd
+13-15 p: ppppppppppppxppp
+10-11 r: rrrfxrrrrrrrrr
+10-12 z: zzzzzzzzzvzvzz
+3-4 l: lllwll
+7-9 p: ppppkpppqpppppsvx
+3-4 k: kkkrk
+4-5 v: zxmmvmhvr
+14-15 r: rrrrrrrrrrrrrfjr
+6-10 b: vwbgbbbbdbqsbb
+5-7 j: jsjjjkv
+3-4 m: tzmhr
+11-13 r: rrrrrrrrrrqrhrr
+1-4 s: psqmcssnk
+5-6 z: zdkzzzz
+3-5 p: cnpmbtknqdppmcjpzvcn
+13-14 g: ggggkggggmtggd
+14-17 c: nxmzcczccnvdcxpcmb
+6-10 w: wlwwbdwwwwwwww
+9-17 l: llllllllllllllllll
+2-12 j: jpjdjjjzmjxj
+1-3 n: szjntnnl
+7-8 l: dpxlmhlbts
+5-16 s: sssssssssssssssrs
+1-6 m: pmqvlc
+7-15 f: ffffffffqfkfffdxff
+10-11 w: wwwwwwwwwwswwww
+7-12 p: tkppvfpwksrp
+4-7 f: fdjdgdvsksbfbnjkspc
+4-11 b: bjmvfrmlmlbndl
+1-3 r: rrrnxhgbwr
+5-10 h: xhhmhhhlhbh
+10-11 h: hghhhhhhdlhhh
+5-6 g: gptglg
+9-11 t: wtgtxtttqtmttt
+5-11 f: jxqffhfsfmz
+4-7 f: frjffbf
+1-15 m: mmmmmmmmxmmmmmmmm
+1-12 d: drwlbpdbzdgdjpnzmj
+9-14 n: nfnmktjnncnnnln
+1-2 h: pshhjhhhhf
+2-4 t: tgttttttfb
+2-4 w: dwpwhnxbf
+7-11 b: vbcbzhbwhpb
+4-5 k: hknck
+5-12 m: mmmmtdmmmmmmmm
+5-7 w: qwflwxq
+2-5 g: jdnxdlclplvb
+5-7 t: ttrtttttkr
+8-18 l: lwscjwlmdlzlllnsllpw
+2-8 c: cccxtccchbrkr
+1-3 q: qqtqqqqq
+3-13 d: dddddddbddddddd
+1-7 r: jkpzrpfnrgpkc
+9-10 t: ttttttttttt
+11-12 w: wjwplwwwwwmw
+9-12 r: rpsvrhrbnrwqch
+6-11 p: zpzbpkpmtnptsnpbswc
+4-6 t: jhzstt
+3-4 t: ddpkcgpzhd
+4-6 s: cvzshjfrsslxnslqddwt
+1-3 c: cgsczhl
+1-4 d: lddqdqd
+6-7 v: vvvvvvb
+5-8 w: wwwwwwwwww
+5-11 p: ddswpbpppsqpp
+5-6 x: dfzxxxhhqjvj
+3-7 m: mmmmmmmmmm
+4-8 g: ggggggggg
+5-6 j: jjcjjn
+5-6 n: nndtns
+4-5 t: ltxkdpst
+2-8 b: ldwkbzbxgpbbbb
+11-12 w: wwqwdqwwwqhvwww
+15-17 k: klkcxqbwrktxcmqlnb
+5-6 k: tkqhkkkkrkjfd
+12-13 x: nxxxrjxxxdjlxxbt
+9-12 m: mmzmmmrmmfmgmmmmb
+2-5 v: tkbhvlvp
+12-14 v: dvbvvvvhrcvvvxxvvvvv
+14-16 x: xxxxxxxxxxxxxrxxxx
+6-7 v: xvswnvvm
+6-9 c: vcpcksxwbdlc
+5-11 s: sssssjssssrsdjsssq
+6-16 j: jjjjjmjjjjjjjjjnj
+8-12 g: ggggwggggggnggg
+4-5 c: ccczk
+14-15 l: lllllllllllllkm
+10-11 r: rrrrrrrrrrrrr
+3-5 n: dwnvnlj
+2-4 x: xdxxxx
+5-6 j: jjjjjjj
+3-9 k: kkkkkhlrkktt
+3-7 t: stqtgfdprtqjsgznrtjh
+11-16 n: hsnnnnnnnnfnvnpqnnn
+13-16 v: kdvbvxvvtvhvvvvq
+1-3 v: vwpvkvdpxgc
+14-17 v: vvvvvvvvvvvvvnvvhv
+14-15 m: mmmmmmmmmmmmmtm
+6-10 m: mmmmmhmmmm
+5-8 t: tttjrttdsttfttwstf
+6-7 c: ccqcvcc
+2-5 v: vvvvvv
+8-16 c: cccccccccwcpcccmcccc
+4-5 t: ztvttktttttt
+10-11 n: rnmnnnnnnnnnnnnpt
+5-6 g: lgsggggg
+15-18 s: lcsmgkjqzdpcgvsrng
+2-6 p: wwpppp
+9-10 v: vvvvsvvvmvv
+6-11 c: qrmdjxzsmxcmcccgrr
+17-18 b: bbbbbbbbbbbbbbbbbbbb
+6-10 t: thtxgtpxwt
+2-8 f: xkgbrpqfsrhhbnfpdg
+3-8 c: gqkkvgkcqfwdc
+5-6 c: jjcsjf
+8-16 q: fbwdmlwljqqcrqsq
+3-10 m: mjmmsmmmmmmcmm
+5-15 x: xmrvcsjwxxdpsrxzcrzj
+3-7 x: rxngzxxg
+17-19 z: mmvfgzpmbvzsrmkgmmmb
+3-4 z: zdzz
+4-5 v: vzcvb
+3-11 z: tzllpgzzmwxznh
+8-11 x: ptgvnbxzsxwdb
+2-3 r: rrrrr
+6-10 b: bbmbbbbbbb
+6-11 q: wvmqrzrllhxfzmpkp
+13-17 v: vvrgvvsvvcqkvvvvbvvw
+16-18 p: ppppppppnppgppppclp
+13-15 g: gglggggggngggggggggg
+15-17 b: bbbbbbbbbbbbbbbbb
+3-6 t: tpwzktlzkdt
+2-3 m: lmvtnfjzmm
+1-7 j: jzjjfjx
+15-17 r: rtfdnhrrhrrdcswrl
+1-3 d: gdfdmddddwdddlsd
+3-4 r: qrtr
+10-11 m: mmmmmmmmmkc
+2-5 n: gntnnnncc
+9-14 b: bbbbbbbbbbbbbb
+10-13 f: fxfffznffffzwffflz
+5-12 j: vjjrjjjjngjjjjm
+6-8 k: kkkrkklkkkkkkk
+5-7 r: rrhzsxrjjw
+17-18 g: gggggggggggggggggf
+2-3 h: ghhvrh
+1-3 j: hjjxjjjj
+3-5 q: gbqnqkprckxqglkhw
+17-18 n: ngnnnnnqnnnnnnnnnnnn
+2-3 m: xlhmmq
+6-7 p: kvvphgj
+9-12 k: kpkzkkzkkkkkbwk
+9-10 k: kkrkkkkkmt
+5-10 t: tttttttttttttttt
+10-11 l: ztdvlllzfltlwlglkhcj
+7-12 t: bttttqtqttttttttg
+3-4 z: xzvb
+5-10 h: lhcdhkhhhhb
+1-6 z: jqzzqzzzzzzzzzzzzz
+6-7 x: qxxxxtxz
+13-14 g: gggngggggggrgsgg
+1-2 t: tttt
+11-15 w: hpwhwmwlkbwtwmwlj
+8-10 r: rnrhrrmprnrrr
+5-12 z: rshzhwgzhfjb
+15-16 s: sssqssssssssmsss
+9-12 z: zdzzzzzzkzmz
+10-12 c: mfgpskncfcfctjmt
+5-10 p: sppwnpdpptppwdppppp
+3-14 q: mnzfgfmvmsdlqg
+1-13 s: sssssssfssssbsss
+6-8 d: ddddddddd
+2-5 j: vsbbjh
+14-16 m: nmklmsrpjxwpdbmj
+3-8 v: rfvvvjqv
+18-20 p: pppppppppqhpflppbppp
+7-11 x: xxxxxxwxxxx
+3-4 l: llmvlll
+8-9 w: grmvwtwbz
+2-11 m: mmmmmmqmmmsmmmmmmmmm
+6-13 h: hhhhhrshshhhlhhhh
+3-12 t: tnttblttttcvrtttx
+5-18 f: cfffcffvgffffrmlfx
+1-3 n: rnjnnnnnnnnnnnnnnn
+1-2 w: smmdq
+1-5 v: vvvvvv
+5-15 s: tssssscssffhsswssss
+3-11 b: bbbbbbbbsbkbbbr
+13-15 j: xjjpjjcjjjjjjcj
+5-10 g: bvjvgpzgdgkmmzwnwrxz
+2-7 q: qqqqqrq
+10-12 d: fddddbdddxdqpd
+5-7 c: hsccjccrlm
+11-15 r: nrrrlrrvrdlrprw
+13-14 r: drrtbrrrrrrrrcrrr
+8-10 c: ccccxcchfjcccccxpc
+8-9 s: sssssssss
+1-10 r: rvlgkrrrrm
+8-13 w: jwbwcwmwwvwwwwww
+7-12 k: fxkkcnkkbvkxbkphx
+7-8 l: llllmlvll
+11-15 q: qdjpqwgfqjdqnnq
+8-9 m: mmmmmmmvmmm
+6-7 k: kkkksmkb
+4-6 h: hhhlhhhhfhhhhhh
+2-5 k: xzjlwb
+3-12 j: sjwqrjzjgqrj
+5-18 p: ppppppppppppppppphpp
+1-3 g: gggrggggg
+14-15 n: nnnnnnnnnnxnnhnnn
+19-20 d: jkpzsxwsddzccjdkcptj
+2-4 v: wpdz
+1-8 w: dwjtngwwwrwhp
+13-15 t: tttttctttttxvfrt
+6-11 h: ksvshqhhdth
+8-9 k: khfkdkppl
+11-12 d: whlmcdmfgfddd
+11-12 p: htvxpkfngthz
+6-9 v: vqvmvvbbv
+5-8 m: lghmmmrmmw
+14-16 q: dtmqqrqqqqqgpgqtqr
+2-11 f: bfjskxzlgvfml
+10-19 p: kpppppppphppppppppp
+5-7 j: rfbpzmjtjj
+9-10 p: kpppppppqpp
+3-15 k: hgkgrqblnjmsbvrghzdk
+6-7 r: rrtwrwlfrswwr
+3-4 k: fkkdv
+12-20 g: ggggggggkggggggggkgh
+3-5 x: xxxxpxxxxxxxxxb
+8-10 k: kkkkkkkzkh
+4-10 q: qqqmqqqqqcqq
+4-12 t: ttgtqblzqzpttcxdtfn
+18-20 s: sssbbsscsjvslsvsssss
+3-6 x: xxxxxxx
+4-5 t: tttttt
+5-7 q: xqqqqqqqxkqqqqqqqtqq
+2-4 s: zsvq
+6-7 b: mmbcklx
+1-13 z: zzfzkshpslwcn
+1-14 d: ddpddtdddddmmf
+8-13 j: jjjjjjjjjjjjjjjjjz
+5-6 c: cjjlxb
+10-12 v: vvvvvvtvvmvv
+2-3 b: wfbbg
+1-10 l: llllllllllllllllll
+5-10 d: hdbhdgxcjd
+10-13 t: ttttttttttttnt
+5-6 h: vhmhhh
+16-17 x: xxxxxxxxxxxxxxxsqx
+6-14 g: gzggggzhggggzgg
+15-20 f: ffbfxffffvfffffffhfd
+2-3 d: xdvw
+5-7 g: zgggjgq
+2-12 g: ggggggggmgggggg
+6-8 h: hhhhhhphhhlhjhhxfh
+3-10 j: knjklstqxwcsjf
+2-3 h: hvnwjxhpsc
+7-8 w: wwwlwwgw
+14-16 s: chgtpswssxsqtwzrsqt
+5-6 d: zdbdkl
+3-4 p: lwkpbrbp
+8-14 c: cbhtccjmrccrcp
+2-3 s: tctflmgdtsjjfxpl
+3-4 g: gggjkctwdsgl
+2-4 h: ghbh
+4-13 h: fczphhvflghhhd
+3-10 x: jkzhgljwsblcrmbwfx
+12-13 p: npfgppprzpppc
+7-12 l: sqbplmqnlmwph
+1-8 p: hpppvpprppp
+12-18 n: nhbznznxncnkcchscl
+9-10 g: grjxmgzpgk
+6-7 g: rcmkggggggg
+1-7 b: bbbbbbbb
+2-3 t: ttftzqt
+8-10 l: twbjlnblhck
+1-2 c: cvbc
+4-9 d: mfpdddsnd
+5-8 f: flpvbdrfl
+7-12 s: rhspsxlbpsmsclzrdsfc
+2-4 h: vhhh
+1-10 k: bhkkkkkkxkkkzk
+5-15 q: qqqqqqqqqqqqdqdqql
+12-15 c: ljvcklwjvngfgfgrjsv
+8-10 w: pwwtpbwwvwwrwww
+5-13 b: tbjmbfmknjhbb
+1-2 v: cssd
+2-5 s: ssssss
+3-4 h: bhhxxhfh
+3-5 p: pfppp
+13-20 l: lcxxllcfjmllclljllfl
+2-4 p: sqpzk
+2-4 l: xlllb
+1-7 t: ttttttrttttrttttttxt
+10-12 m: bwmmghzmqmmpmj
+5-8 l: jtlljpql
+5-6 d: lddddd
+6-8 c: nljczccdwvnmrlqvlsc
+8-9 d: dzdddcddt
+10-11 z: zzzzzzzzmqj
+3-4 s: msssss
+3-5 z: xzvdzbzt
+2-18 v: bvcbpwkbdmclbnbmsv
+9-12 b: jrcccsndstzbxprkvtq
+3-11 n: vlntglzvvcnngn
+3-8 v: rpgckwptlvdqsrqqt
+6-11 q: qdqdkqvkvhdrdqm
+9-12 b: khbmbgbbvbqb
+9-10 g: gtggggggczgg
+3-5 c: zqctcs
+15-18 z: kbzsdhbbzxfzzqdjzc
+7-8 g: ggggggzx
+9-10 s: sswssrssqms
+14-17 g: ggggcggggggggpggcgg
+10-15 g: qgzmbkjlggrhgkg
+9-11 j: jjjjjjjjqqjjjjjj
+5-6 c: cgcdcchcccbcc
+2-4 g: gggg
+5-13 h: plkhhrmxhxhmh
+11-16 v: vkkqrvbvbcvvnvvvvv
+6-7 c: rlfmqphqrhqkhch
+3-5 z: hzspz
+8-9 d: kddmdddpdvddln
+5-11 k: wkqkcfkpvnkvh
+4-7 r: fnzzwxrxr
+15-16 r: rrrrrrrrrrrrrrwr
+2-19 f: fvffffffffffffffffwf
+9-11 v: hbvbvvgcvvvj
+2-4 m: mrxpv
+13-14 z: zztzgzzpzzzzzg
+4-10 t: qtvtcrfmlkrgtwsvwtw
+3-7 g: ggggggfgggggggg
+5-8 c: ccccfcccnmccc
+6-12 z: bzfcjzdznzwzrzbzzqrn
+14-15 c: ccccccccccccczkccccc
+3-4 j: jjjjjjf
+1-2 x: kxxxx
+3-4 s: sksj
+17-19 c: hvchccvccdxgccnxdcc
+3-6 r: trrrrrrr
+10-11 c: ckcjzcrzcbc
+1-7 p: pmqplfpvgq
+3-4 h: hhmx
+5-6 n: nnwndln
+5-10 v: bkkvfgvqwdt
+7-14 h: hkjlwvhdnhxhwcnhs
+4-12 f: xxwfjfcwslrfzrxfkxj
+2-3 c: ccccc
+4-13 k: kkkdkkkkkkkkkkk
+8-10 b: mqlljkpbbbxbrbfx
+1-4 p: pppp
+14-17 n: nnnnnnnnnnnnnnnngnn
+5-6 d: dddddddvw
+9-10 r: rjtrrrmqrrrzrrrrjrrm
+7-11 x: bxxxxxrwxpmn
+13-14 w: gwmwwwlwwjwjwx
+2-4 d: dddddvddd
+7-9 p: pjmdppgpspcslh
+13-16 l: tllllzllpvllvlzd
+9-11 q: qzmwqqzqtqqq
+4-5 d: dvdngdd
+9-11 j: xxxvjrmgjpk
+3-4 c: rvvcn
+15-16 r: rxvmlslkpmqdqtdd
+2-5 b: sbflb
+4-5 w: wntpw
+8-16 n: nnnnnnnhnqnnnnnnn
+5-6 n: nnnnnnn
+2-5 q: bsjfhq
+6-18 r: prrrqkmrrrvbrrrrdfrv
+3-5 g: xnxlp
+4-11 s: jsstsssjssfssss
+14-16 d: dddddddddsdddddd
+18-19 n: vgngvbhdjfrbnznhhjzn
+11-13 f: ffffffffffgfgf
+5-11 n: dbgvngchnkngt
+3-4 f: gsff
+2-4 r: rfdrlznkzg
+10-18 z: zzgzwzzzzzzdzzmzhzzn
+4-5 s: qscmbssss
+11-15 x: xbxxxxgxxxbxxzw
+2-10 h: dkrnxknmthcv
+12-13 b: bbbbvbsbbbbgcbnb
+4-5 m: mmlmmsmmh
+3-6 j: njrjjkcr
+10-12 x: xxxxwdnxxxxx
+14-16 g: hggggggggngggggg
+8-9 x: gjqfxxxtxxxb
+16-17 f: ffffffffjffkffffmffb
+2-8 z: tsktkzfxntrv
+2-6 v: hvvswd
+1-2 w: xddl
+2-6 k: svwvvkqmzwjkx
+9-12 p: ppppppppbppspppb
+12-19 m: mdjmlhsmxmwcmmmmmmm
+3-5 x: rxjxb
+17-18 r: rrrrrrrrrrrrrrrrwk
+2-9 b: cbfbqcfwbmwd
+1-11 h: hhhhhbhhhhmvhhhh
+2-3 j: jkjjgjhxj
+5-6 f: fffffffffhf
+17-18 j: jprvtszvgsbtxlrhljsz
+1-4 m: mmhmmmp
+2-6 p: xvfkpkc
+1-2 f: xqtfcf
+1-5 r: brrrrrr
+7-10 w: wwhwwwdwwj
+1-4 w: vwwdh
+1-3 f: hnpvgfwth
+10-12 k: kkkkkkkkkdkq
+5-13 r: rrpqrrvrqrswzr
+9-17 x: xjxxvxvbtxxxtpxpx
+12-13 j: njrjkcjgbjjnj
+2-4 l: lvll
+12-17 p: dpppprpbppnvpppprp
+4-18 b: zftbmbxgzfzdvdnvhb
+12-16 r: lcqgqjthprlxrzrrx
+2-7 m: msclccmxhsmf
+3-4 b: bfkb
+2-6 k: skfgrk
+4-5 q: qqqhhx
+6-8 c: cccmvcch
+16-17 l: bxnlvbvwzvfvbcmxl
+7-12 c: cccccccccccc
+6-7 b: bbbbjsjbbbs
+2-7 q: phxnfxqrqv
+4-5 h: hhhhhh
+9-15 n: nqnnglsjnnghxrn
+3-4 h: hkkh
+5-11 r: rlsjvrrrrrl
+5-7 b: bbbbzbwbbbb
+2-3 f: qczff
+8-14 c: fccqccccccclccccck
+1-8 r: rrbfmjsr
+4-5 p: dpphz
+11-13 d: wdmwkcqddrdvdz
+8-15 h: hhhhhhhhhhhhhhhhh
+6-10 l: dhgdclhlkltnc
+14-15 t: tttntttnthtttzw
+4-6 p: pppppdp
+13-14 l: dvlnvlgtbpnhll
+11-12 s: brsqgfsnpmwskhdnm
+6-7 j: httjvjj
+2-14 w: wwwfwjzwrzfwnwjwwm
+8-9 w: wwrwwwwgt
+2-5 r: dvrwb
+7-9 b: wwvqbsbjb
+1-12 l: lljxlbslwlgn
+11-12 m: mmmmmmhmmmwbmkmmt
+10-11 l: lblllmllldl
+3-9 w: wwpwwwwbfwwwm
+9-10 q: pcrqfqlskz
+7-9 l: llvlllblklllx
+6-7 g: qgggjmwg
+5-10 v: vvvvvxbrvvp
+9-10 d: hqddgkkdrpdd
+17-18 q: qqqqqqqlqqqqqqqqdt
+6-10 h: hspnhhzldxphdh
+8-13 l: vvvscdnlblllml
+6-12 p: ppkrprpxwpppwx
+4-5 k: tkslb
+7-8 d: hdjdhnzdd
+9-10 x: wkxtblgxxjxxlqnfxxlx
+8-9 g: rggggggdk
+10-20 d: kcgdtbbswwdtvgdgxfwd
+3-4 g: gggggg
+16-17 l: llnzlqllllzllllmllll
+4-10 r: nsrrrbzrfzcrrzrrdqk
+4-6 k: kkkkkpkk
+4-8 n: nnnmntnnrnnn
+12-14 l: lllllllllwlqllll
+3-6 r: rrrrrrr
+1-6 s: ssskcshsxtd
+7-15 d: ndrbdnntdmkddxd
+9-10 j: pjjjjgjsjhjj
+7-10 k: pkbkkkkkgkq
+4-8 m: mmxmmmdmmmmm
+9-13 c: ngjcrcccvbcvqdjmph
+3-5 q: qqqqqq
+7-10 s: fcssnsssssslxspr
+3-5 k: kkkkvv
+5-10 f: tlbcvgwfzlf
+5-9 x: xxxxqxxxx
+2-10 q: qrprhbrhjhb
+3-4 g: gggmgg
+8-10 j: jjjjjjjgjpjjj
+2-4 v: dvzvvtfm
+7-12 q: zvzqprjhqdcqfzr
+12-13 f: ffffffffffffqf
+2-3 f: fffsdwq
+10-11 z: ztzzjzjzzzlzzz
+5-7 k: kkkkqtkkkkk
+6-9 z: dfbzhgsrzsp
+2-4 b: wpqb
+9-15 c: cwchcdhxlqzccxbb
+8-11 q: qqxptqqvqrgqg
+5-7 t: ttttztcvtjtkts
+2-6 n: nnbmdnjxclwkffrnxff
+3-7 p: pppppph
+9-12 d: xhmfndzcddfddvgddf
+1-5 h: hthmhvlthhhhh
+6-7 m: mmmmmmm
+6-7 j: jjjvjjjrj
+1-5 q: mqnqwqqqqqjq
+10-11 b: bmbbbdbpbbbbzbb
+1-4 k: gvccvdltkwcdd
+12-16 s: sssssssssssjssshs
+4-10 k: wzvlkmdhcklhdp
+10-13 z: zzzzzzzzzfzzj
+6-12 g: bmzmvvggpgtm
+3-11 m: nvcpfgvnsqmwxmmz
+1-5 n: dnwnnnnnnnbndnnn
+4-5 h: lhhhh
+4-5 g: gggdg
+2-5 h: xthqhfj
+2-4 f: lfkf
+4-6 k: rqbhrtzktmvmrxck
+4-5 q: jqdsc
+10-11 h: hhhhhhhhhvjh
+2-17 r: rrrrrrrprwrrrfjrr
+16-17 b: bbbbbbbbbbbbbbbbhbbb
+3-5 z: pkvzzfrljrjctw
+13-14 w: wwwwwwwjwwwwww
+8-10 d: dddddddldzpq
+1-4 b: sbbgb
+2-10 d: vnhpzmvpcddhs
+8-15 t: zftpwtrtqjqtfntp
+11-12 j: djjjjjjjcjjcj
+4-7 r: jrrtrrrvmzzrrvsl
+2-4 r: rpkp
+3-4 b: qbxc
+10-11 w: wwwwwwfzkdmnwwv
+6-14 z: mztxzzztmzwzzqvm
+12-14 w: wwwwwwmsgwdwsqwjwww
+6-10 f: zfhqjfhnjfdvwsfftf
+2-11 q: mwbbqdncdfq
+8-11 v: zvtvvwvfvvq
+6-8 n: xnwhzmdskwhn
+8-15 q: qqqqkqqqqqqqqqst
+1-4 n: nnnnn
+5-18 c: sqczchcwcccclccccccc
+3-4 j: klgr
+11-12 m: mmmmmmmmmmmm
+2-3 d: qdxfmqwbmdnvj
+1-5 m: cmmmm
+6-7 l: llllllll
+1-9 m: zmmmmmmmlmmmmmmm
+9-11 m: dwspwrmjsxpc
+5-6 p: qpppfz
+10-19 t: fvtphwzsptqzntbkxqt
+7-9 m: mpcmpmmmvptmm
+3-9 h: hhhpqqwhhtm
+11-16 p: pppppppppppppppvp
+1-9 k: ktkklkkkkkkk
+10-17 q: rthtqvgspqkvfkgkqfhj
+11-14 g: ggxgggggxggzggcnggg
+3-4 t: tttt
+9-10 t: sqtbdttthtttm
+1-4 t: ttkbgdzztbxd
+3-8 f: gxfcrrsfntftvffnfqff
+9-11 q: qqqqqqqjlqqq
+12-13 v: vvvvvvvvvvvvk
+7-11 b: nbxbbbsmbtkb
+7-8 k: kkkkkknn
+4-6 j: jjjjlv
+13-16 m: mmcmmmmmmmmmmmmvs
+7-9 k: kdkkkkrkgkk
+1-4 c: crcdlrdbzc
+1-16 k: kkkkkkkkkkgmkkktkkk
+2-12 l: llllrlllllllll
+4-9 g: gggbkgpgz
+6-7 q: qqqqqqjq
+6-7 v: hvvvvpm
+10-14 t: ttfxmqtgtttttbtct
+5-7 h: hwhhfrnch
+4-13 w: zdlrqvxwwzsfrfq
+4-5 h: hhhshhhh
+2-4 n: vhjfnz
+5-6 s: sssssss
+11-13 n: nnwrnnnlnngnn
+3-4 s: wbss
+3-4 s: wnss
+16-17 p: ppfprptkpmzkbjppp
+2-4 v: pvxv
+8-9 w: swwwwwwhwwnwwwxj
+4-6 s: pzhkvss
+4-5 x: wnxpx
+4-5 f: fsfwp
+4-5 z: zzdjz
+3-6 v: vnvvvvvvvvvvv
+5-6 f: wfxfff
+4-7 z: zzzqfzz
+3-5 q: qqjqsqqqf
+3-7 w: kwwkmww
+6-7 h: hhhhhhgh
+2-5 v: vvbzvvkn
+8-15 r: svrqpqrgrrhmzbms
+9-17 n: jnnnncnnnnnxnnnnnp
+5-6 n: dgnhsc
+5-7 l: lplltbv
+4-6 n: mmrnsbcqr
+7-8 w: wwjwwwwww
+1-16 c: bccccccfcccccccdcc
+6-9 l: sjnlmxwllg
+3-9 q: cqvhkwhtstwrl
+5-9 h: khvxhhhgfchhknhhhz
+8-9 c: ccccccccdc
+2-19 n: jjxbmbwmnqbblfbgzsz
+3-4 p: pppp
+1-3 b: jzxbbb
+3-6 h: hhhgjhhw
+2-8 f: vfxftzkmlzk
+11-19 h: mmdptdzhwdbjhvkccrhk
+4-14 s: sssvsdpsssssspns
+11-12 f: fffffffflfbk
+2-13 h: nhbgtbjvbpmrnhf
+1-3 t: ttttttttttttttttttm
+3-4 t: tsttr
+2-9 n: fnkknptqn
+1-8 j: qjpjjjjjjtpxjqjw
+2-12 c: clccccccccckccc
+18-19 f: dpftffzcfhqffddfpff
+1-4 j: trjj
+9-11 z: zwzmzzczsdd
+5-8 g: vrpbggfn
+2-5 k: qksvzkj
+2-4 f: wfdfjlfwmjrdmxx
+4-12 l: bnplnlgqcwql
+13-14 n: nqlfdnnnnnnnvbnwnlh
+4-8 l: dgxhsrql
+10-11 k: qvwcrkxtkjxlq
+5-6 g: ckgggg
+6-14 h: xbhhvzvxbhhhhhbhkzhh
+6-9 w: whwdwrxgc
+7-9 b: bbrbnjbfb
+7-8 w: brwwkfvwwwww
+2-11 g: gmggghngggg
+12-17 l: bgslljzntbmvtkbgllgg
+12-18 g: gggggggggggkggggggg
+1-3 l: gllllllll
+14-16 k: jkkqkkgkrkvxkkkkskgb
+2-3 v: vljvgnvm
+7-8 r: jrjvrprr
+7-8 f: xxffrnff
+2-18 j: jhjjjjjjjjjtjjfjjpjr
+8-9 q: rfllhmnqtrkv
+2-3 n: lnndv
+2-15 s: hzzsrprnnjlwdfs
+1-5 q: vqqqq
+9-18 b: gxbpbbppbrbbnlkmbb
+2-13 b: bbbbbbbbbbbbpb
+6-7 t: mtrftthtttftttztttst
+1-7 z: nfzzzzvzzczzzzzzzz
+4-12 m: mmmcmmmmmmmmmm
+9-11 p: jpswppqbmpfpzpg
+10-11 c: ccccccpcccc
+2-6 t: ztscdrkxxctdft
+3-13 q: mqfqqqqjqqfqdqqq
+16-20 z: zzjcxdmzgzzzppbtztzz
+5-15 w: wwwpwhwqcwwwwwgw
+2-4 p: pczp
+5-7 d: ddddmdfd
+2-3 f: fftc
+1-3 v: vvmv
+11-15 k: tjkcvkkkkgkzkkxqv
+4-6 b: vdkvbn
+7-8 c: wbcjhswc
+9-10 l: lllbqrllll
+4-5 s: sjnlw
+12-14 j: mjtmzfjjtsgvgtq
+1-3 l: llrllml
+12-13 d: dngddlqdtgdcd
+3-5 l: cblhld
+3-4 r: trrq
+1-3 c: kcccc
+9-10 g: bgbgjggpvgpgpggg
+3-6 d: szwlfm
+13-14 f: ffffffffffffzfff
+6-7 d: ddddddddddnnddddr
+7-16 h: xmbpwmhsznmldhnxflc
+4-6 q: qqqnqqqg
+2-7 t: ttwbpmnthmjr
+8-16 x: xbcxxbwxxrpxnfxd
+2-3 d: dngdd
+9-10 n: qkxfdljnnl
+4-5 f: ftfffff
+12-15 n: nnnnnncnnnnnnnsnn
+1-2 d: dkdd
+2-5 v: vvvvgv
+1-14 v: jvvvvvvvvvvvvmvvv
+5-6 r: rrrrrr
+2-3 b: bnvbbbtbjgxfchnkhcjb
+1-14 g: wjggxgggggggxgmrvcg
+1-6 x: bhvxhxxxx
+1-2 r: rprr
+6-7 c: cccccccqc
+4-8 b: bbgplbbcdtbbdbgbbhbz
+1-4 w: wjgw
+1-3 h: zhzzt
+2-11 j: sjjrtjkjhjj
+6-7 m: mlmrrmm




diff --git a/resources/input03.txt b/resources/input03.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e1bd0f655fb0729445f15cd68aeb4a8e8cd5887c
--- /dev/null
+++ b/resources/input03.txt
@@ -0,0 +1,323 @@
+.#.......#...........#.........
+..##.......#.#.#.....##...#....
+.......#..#.....#...#..........
+...#..........###...#........##
+#.#..#.#.##.#........#.#.....#.
+#..#....#..#....#..............
+#..#........#..................
+..#.#...#.#...#....#.#.#..#....
+..............#..#.............
+.##....#...................#...
+........#..........#......#...#
+.##..#..#...##..........#...#..
+.#...#....#.........#...#.....#
+.#........##............#.#....
+...........#..............##...
+.#..#......#..#..............#.
+..#.#.#...........#........#...
+..###..........#....#.#......#.
+.......#...##..........#.......
+........#...#..................
+....#....#..#.......#........#.
+.......##.#......#.....#...##..
+..#.#........................#.
+.#.....#.##..............#.#...
+..#.#...#.#..#....#....#.......
+.#....##.....#....#........#...
+..#...........#.##....#...#....
+..#.##...#....#.#.....##...#...
+.......#...####...#...#.......#
+.#...#.........................
+.......................#.......
+.....#.#.........#..........#.#
+#.........#............###..#..
+.....#.#.............###.......
+...#..#........#.#.......#.....
+...................#....#......
+...#..#...#............#..##...
+...#.....#....#.......##......#
+.....#....#...##..#..#...#...#.
+..........#...........#.#.#....
+..#.......#...#.....#......#...
+.........#.......##......#..#.#
+..#.....#..#.###...#.#......#..
+#....#...#..#...#.....#........
+..#......#..#.......#.#.....#..
+#......#...#......#.....##.#...
+........##.......#.......#.....
+.#.#...............#...........
+..............#...#.#....#.....
+....#......#.#..#......#.......
+...##....#....#...#............
+.#...............#...........#.
+.#.#...#.#.....#.....#...#.#...
+...##...........#.....#..#...#.
+.#.#...##.#.#......#......#....
+.##.....#.......##....#.#.#....
+.......#...........#....#....#.
+....#...........#......#.####..
+......#....#...#...##.......#..
+......................#.#####..
+..#...#.#...#..#..#......#.....
+....#........##.......##....#..
+#.#......##.........##.#..#...#
+.#.#....#...#..#...#...##....#.
+.....##...#....#....#.#........
+......#..#....#.#...#..........
+.........#...................#.
+............#.###....#.#.......
+...#.#.....#......#....#.#..#..
+..............#..#.#.#.#.......
+#..##...................##.....
+..#.......#..#.........##..#...
+.........##...#......#........#
+..#.........#........##.###.#..
+...........#.#....#.....###....
+..#....##.#..#.##....#.....##..
+..#.....#.##..................#
+#....#.........................
+..............#..#...#.#.......
+......#..#.#.##....#..........#
+..#.........#.####.....#.......
+......#..#.#..........#...#....
+......#.................#..#.#.
+.....#..........#..............
+....#.....#............#....##.
+.....#.....#........#..........
+............#.....#...#........
+........#....#.#...............
+#.....#.........#......#..#.#..
+...#..#......#......#.......#..
+.....#......#.#....#..#...#...#
+......................#..##....
+.............#.........###....#
+#..............#.#..........##.
+...#.#.................##......
+...........#.#.....#...........
+.........#.................#.#.
+........#........#...#..##...#.
+........#......##.......###....
+..............#.#.#............
+.#.....###...##.#......#.....#.
+.............#......#.#.#...#.#
+..#.........#.......#.....#....
+......#........#...##......#...
+.##..........##......#.#.....#.
+..#.##....#....#...............
+......#...#..#.....#.....#...#.
+.......##..##..#............##.
+..............#...##........#..
+#....#................#..#.....
+........#.......#.#.#...#......
+......#.......#..............#.
+#.#..#...#........#....#..####.
+..#........#...........#.....#.
+.##...........................#
+.............#...........#.....
+.#.....#.#...#.........#.......
+..........#...#....#....#......
+.#..#........##....#...........
+.......###......##...#.........
+..........#.#.#..#.#....#......
+........##..#.........#....#...
+........#.#......#.#...#.#..#..
+....#....................#.##..
+##....#..#...........#.....#.#.
+...#..............##...##..#.#.
+......#.##.#.......#..#...#....
+....#..#..##.....#.....#.#....#
+.......#....##.##..............
+#..##....#.....#.#.............
+..................#......#..#..
+..#......#...#..#.......#...#..
+...........#....#.#.....#......
+#..#...##.........###..#......#
+.......#......................#
+#.......#....................#.
+..#..#..........#..#..#....#...
+.##..#..#.....#.#..##..........
+#..###.......#..##..#...#..#.#.
+.....##......###.....#.#.##...#
+..............#...#....#.#.....
+#...........#..................
+..............#....#..##..#..#.
+.........#.............#.......
+.#.#....#....#...............##
+.##.##.#.....###.....#.........
+....#..............##......#...
+....#........##................
+....#.....#....#....##....##...
+.#........#......#......#......
+....#..........#...............
+##..........#......#.....#.....
+........#.#..#.#..#.....##.....
+..##......#.#.......#.#..#.....
+.#.......#......#...........#..
+..#.#..#.#..................#..
+...#...#...#...##......#.......
+.#...##....#...#...#...#.......
+.......#.#.......#.............
+.#.##.#.....#...........#.##.#.
+.#.##.#........#...##..........
+.#.....#.....#....#..#.........
+...##.............##...........
+.#........##.....#.......#...#.
+...........#..#..##........##..
+.....#..#......................
+..#.......#....................
+.....#......#....#....#.......#
+........#..#.#.....#......#....
+..........#..#.....#......#....
+..........#####.....#........#.
+........#..#...#.#....#......#.
+.........#...#....#.#..........
+......#....##..........#...#...
+#..............###.#.#.........
+.#.#............##......#.#..#.
+......#........................
+...#..#......#.......#....#...#
+.......#....##.....#.#......##.
+...........#..........#..#.....
+...........#..#.....###......#.
+.......#....#..##......#.......
+.........#.#.#.......#..#...#..
+.......#.......##.....##...#...
+..............#....#.....#.....
+...#....#.....#.#..........##..
+###.........#.............#....
+...##......#.#........#....#..#
+#....###.......#...#.#......##.
+....#...##.......#......#.....#
+.....#......#..................
+#........##....#....#.#........
+........#.......###...#........
+........#..#.......###.........
+..............#......#..#......
+#......#.....#....#.#..........
+.#......##.#.#.....#...#.#....#
+.##...........#..#.##.....#....
+.....#.....................#...
+.#..#...#...##.#...#...........
+.......#.......##..#.#..#......
+.......##.....#.....#..........
+.................#.............
+#........#..#.......##.........
+#...#..###.#..#....#.#.###.....
+..#.......#.......#.......#....
+..............#............##..
+.#...#..#...##.........#....#..
+#...........#...#..............
+.......#.....#......#..#.....#.
+..........#......#.............
+##.........###..##.#....#..#.#.
+..............###..............
+#..##.............##.....#.....
+....##...................#..#..
+....#.....#..............#..#.#
+........#........##...#.....##.
+#...........#.##..........##...
+#......##.....#...............#
+..##..#....#.................#.
+#.......##.....................
+...............#.##..##......#.
+..#.##..#.#....#.......##......
+......##....#............##....
+.#..#..##.....#.##....#........
+#.........#..........#...#....#
+...#.......#.............#.#.#.
+..##............#...##........#
+.......#.#.#........#..........
+.....#.............#.....#.....
+.........#.........#.........#.
+#.....#....#.......#...........
+.........#....#.............#.#
+.##..#.......#...#......#......
+....#....#....#........#....#..
+............#.......#..#......#
+.#............#.##........##...
+..#...##...#....#...#.#...#..#.
+#...#..........#..##.........#.
+..#.........................#.#
+...........#.........#..#.##...
+.#..................#..#.......
+......#......#...........#..#..
+...##.....#.....#..#.......#...
+.........#.#.......#......#....
+...........#................#..
+.....#...#..#............##....
+.#.......#..#....#..........#..
+#.....#..#.....#..##.......##..
+...#.......#...#....#...#.#..##
+...#...##......#....#....#.....
+.......###.#..#.......#......#.
+........#.#...#..#..#...#....#.
+....#.........##.#.....#.......
+....#.........#..##........#...
+..#...........#......#....#.##.
+.....................#.........
+...................##......#..#
+......#.#.....##..##..........#
+..#.##........#.#.#..........#.
+.#.......#...##.#....#....#....
+#.#......#..#..#.......#.......
+.............#........#.......#
+....#...#.....#........#...#...
+..#..............##..#.........
+..#.................#..#...##..
+....#..#...#...................
+......#.........##.#..#..#...##
+........#..#....#.......#.#.##.
+.#...#...........#..........#..
+##.....#...#............##...#.
+.##.....#...#..................
+.#.......####.#..##.##.#......#
+.............#...#..#..#.......
+...#.##.........#.#....#.......
+...........##...##....#....##..
+........#......#...#...........
+...........#..#...#....#.##....
+..##....#..........#....#...#..
+#....#.#.#.......#.#...........
+......#............##..........
+#.#.###..#....#.......#...#....
+.#......##..#..#.#.........#..#
+..#.........#........#....#....
+......##.#.......##....#..#..##
+.............#...#............#
+......#......#...#.#.#.##.#....
+#.#...#.##.....#..............#
+..........#.............##.##..
+#......#....#...#.#.#.#..#....#
+........#........#...#.#......#
+.....#...........#.............
+...........#....#..........#...
+....####...#..##....#.#........
+.#......#...#..#...........#...
+#......###..#.##.###...........
+..#...........#.........#....#.
+................#.#....#..#.##.
+...................#......#....
+....#.#.....#.......#...###.##.
+.#........#.#....#...#..#...#..
+....#..###.................#..#
+.....#.#..#........#......#..#.
+....#.....#...............#...#
+............##.#.........#..#..
+.......#..#..##.#.#...##.......
+..#..........##..#..#........#.
+..............#..#...#.........
+......#.#....#........##.......
+.#.....##....#..#...#.......##.
+..............#.##.............
+#..#..#...##....##.#.....##.#..
+..#...###..#.........##........
+........##......#.....#..###...
+.....#......##.###.............
+....#.....#.#..#.#..#..........
+....#..#.......#...........#...
+.#.............#..#......##....
+..#.#......#.#.................
+.......#.#.#............#..#...
+......###....##............#..#
+.........#....#......#.........
+..........#...............#..#.




diff --git a/resources/input04.txt b/resources/input04.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cecabe26162287d74e0cfc706e175c7bc43bce1c
--- /dev/null
+++ b/resources/input04.txt
@@ -0,0 +1,1056 @@
+iyr:2013 hcl:#ceb3a1
+hgt:151cm eyr:2030
+byr:1943 ecl:grn
+
+eyr:1988
+iyr:2015 ecl:gry
+hgt:153in pid:173cm
+hcl:0c6261 byr:1966
+
+hcl:#733820
+hgt:166cm eyr:2025 pid:79215921 byr:1952 iyr:2014 ecl:blu
+
+eyr:2022
+hgt:165cm hcl:#733820
+iyr:2013 pid:073015801 ecl:oth
+cid:101
+
+iyr:2013
+ecl:brn hcl:#623a2f
+cid:246 byr:1948 pid:122719649
+hgt:160cm
+eyr:2026
+
+eyr:2028
+pid:229371724 hgt:154cm hcl:#ceb3a1 byr:2000 ecl:hzl iyr:2017
+
+eyr:2029 ecl:amb
+byr:1980
+hgt:177cm pid:914628384 hcl:#623a2f iyr:2013
+
+iyr:2019
+eyr:2026 hcl:#efcc98 pid:475316185 byr:1945
+hgt:76in
+ecl:amb
+
+pid:371759305 iyr:2018 hcl:#623a2f eyr:2026 byr:1984 hgt:174cm
+
+iyr:2010 pid:184800910 ecl:amb cid:108 eyr:2028
+hcl:#cfa07d
+
+iyr:2012 hcl:#b6652a hgt:160cm pid:223041037
+eyr:2029 byr:1920 ecl:oth cid:212
+
+pid:775975903
+hgt:163cm byr:1966
+eyr:2023 ecl:amb iyr:2010
+
+pid:465404256 hcl:#7a54af ecl:blu hgt:180cm iyr:2018
+eyr:2024 byr:1933
+
+hcl:#18171d
+iyr:2018 hgt:185cm
+byr:1929 eyr:2024
+ecl:oth
+pid:#b0990a
+
+byr:2017
+hcl:#cfa07d pid:184cm hgt:187in ecl:#e97c0d iyr:2022 eyr:2013
+
+hgt:176cm iyr:2019 eyr:2024 ecl:brn byr:1943
+pid:532967054 hcl:007b47
+
+pid:171225044 hcl:#888785 byr:1992 ecl:amb iyr:2012 eyr:2030
+hgt:180cm
+
+byr:1969
+pid:689216275 iyr:1934 eyr:2031 ecl:#e5bc14 hcl:#fffffd
+
+pid:166619054 cid:125 hcl:#cfa07d hgt:164cm byr:1946
+ecl:brn iyr:2014 eyr:2023
+
+ecl:#c1ae72 pid:458692331 hcl:#b6652a eyr:1966 byr:1951 iyr:2023
+
+cid:253 pid:9096156879 hcl:9911e5
+byr:2007
+iyr:2019 eyr:2033 hgt:181cm
+ecl:blu
+
+ecl:oth pid:180428876 iyr:2019 byr:2001 eyr:2024 hgt:172cm hcl:#7d3b0c
+cid:81
+
+hgt:167cm
+byr:2007 eyr:2030
+iyr:1961 ecl:lzr hcl:#cfa07d
+pid:#e254d8
+
+pid:377737133 hgt:160cm byr:1958 hcl:#866857 ecl:oth iyr:2015 eyr:2022 cid:350
+
+hgt:188cm
+eyr:2025 ecl:brn hcl:#efcc98
+iyr:2015 pid:321192707
+byr:1996
+
+byr:1956 iyr:2018 hcl:#b6652a
+eyr:2024
+ecl:blu cid:343
+hgt:152cm pid:192659885
+
+hgt:163cm
+iyr:2012 byr:1952 eyr:2022 hcl:#efcc98 ecl:grn pid:337866006
+
+cid:134
+byr:1941 eyr:2027 ecl:oth
+iyr:2012 pid:303690324 hcl:#7d3b0c
+
+ecl:grn byr:1945 eyr:2028 hcl:#cfa07d iyr:2012 cid:108 pid:388941584 hgt:171cm
+
+pid:962215061 ecl:brn iyr:2019 eyr:2025 cid:163 hcl:#cfa07d byr:1958 hgt:187in
+
+ecl:amb
+byr:1989 pid:118257086 iyr:2019 cid:320 hgt:158cm eyr:2027 hcl:#733820
+
+pid:813286578
+iyr:2019 eyr:2031 hcl:#341e13 hgt:161cm byr:1950
+ecl:oth
+
+byr:1976 ecl:blu
+eyr:2024
+hcl:#fffffd
+hgt:153cm pid:552154655 iyr:2019
+
+eyr:2025 pid:109518209 iyr:2013 byr:1923
+hgt:162cm
+ecl:oth
+
+hgt:178cm byr:2007 hcl:#7f431f pid:7365694093 eyr:2037
+ecl:blu iyr:2018
+
+eyr:2021
+cid:105 iyr:2013 byr:1995 ecl:grn hgt:181cm
+pid:733189859 hcl:#b6652a
+
+hcl:#6b5442 eyr:2028 iyr:2013 byr:1958 hgt:169cm
+ecl:gry pid:651263830
+cid:51
+
+iyr:2018 cid:59 eyr:2027 ecl:blu
+hgt:174cm pid:269821917 byr:1971
+
+byr:1936 eyr:2025 ecl:hzl hcl:#b6652a
+iyr:2019
+pid:670202082
+hgt:186cm
+
+byr:1958
+ecl:gry hcl:#7d3b0c pid:000522430 eyr:2020
+hgt:168cm
+
+iyr:2015 eyr:2022
+pid:630105579 hcl:#7d3b0c byr:1935
+ecl:gry hgt:153cm
+
+ecl:gry hcl:#fffffd hgt:172cm byr:1944
+eyr:2021
+iyr:2013 cid:58 pid:554670072
+
+byr:1983
+eyr:2022
+iyr:2012 hgt:176cm
+ecl:brn pid:201965494 hcl:#dd8296
+
+cid:124 byr:1935 eyr:2020 ecl:blu
+hcl:#a97842 pid:666776663 iyr:2010
+hgt:68in
+
+byr:1943 pid:139343878 hgt:181cm hcl:#733820 cid:206 iyr:2018 ecl:brn
+eyr:2029
+
+pid:114742677
+ecl:amb hgt:160cm
+byr:1975 eyr:2030
+hcl:#866857
+
+iyr:2012 ecl:amb hgt:170cm pid:221200950 eyr:2028
+hcl:#733820 cid:274
+
+eyr:2020
+pid:167438086 iyr:2020 hcl:#fffffd hgt:178cm byr:1996
+ecl:blu
+
+iyr:2015 hcl:#b6652a
+pid:905439259
+byr:1962 cid:209 ecl:brn hgt:150cm eyr:2024
+
+iyr:2016 ecl:amb
+pid:855119486
+cid:77
+hgt:192cm byr:1947 eyr:2021 hcl:#888785
+
+hcl:#341e13
+iyr:2011 hgt:157cm eyr:2030
+pid:103806645 cid:90 ecl:grn byr:1976
+
+hcl:#fffffd byr:1957
+cid:284 eyr:2026
+pid:031705251 iyr:2019
+hgt:166cm
+
+eyr:2019 byr:2019 hgt:167in
+iyr:2014 ecl:gmt
+
+hcl:#18171d cid:93
+eyr:2027
+iyr:2013
+pid:821161144 ecl:brn byr:2002 hgt:170cm
+
+hgt:181cm
+byr:1972 iyr:2018 hcl:#fffffd
+pid:745667222 eyr:2023
+ecl:hzl
+
+hcl:#602927 byr:1996 ecl:blu pid:503245375
+hgt:166cm eyr:2028 iyr:2018
+
+hgt:59in byr:1966
+ecl:oth iyr:2016 eyr:2029 hcl:#866857
+
+cid:179 iyr:2012 hgt:182cm eyr:2024 pid:451186596 hcl:#6b5442 ecl:blu
+
+eyr:2023 iyr:2016
+hcl:#18171d hgt:173cm cid:182 pid:979409688 ecl:brn byr:1972
+
+iyr:2014 eyr:2027 byr:1977 ecl:brn hgt:171cm hcl:#b6652a pid:124307431
+
+byr:1929 pid:048990845 ecl:hzl hgt:193cm cid:159 hcl:#b6652a eyr:2028
+
+ecl:gry hgt:181cm iyr:1934 byr:1970
+eyr:2015 pid:5818817055 cid:98
+
+hgt:179cm
+iyr:2014
+eyr:2030
+pid:397317466 byr:1967
+hcl:#a97842
+ecl:grn
+
+pid:138485312 ecl:hzl
+hgt:151cm
+iyr:2010 hcl:#866857 byr:1936 cid:345 eyr:2021
+
+ecl:oth
+pid:687490850 eyr:2028 hcl:#9bd268 hgt:157cm iyr:2012 byr:1994
+
+byr:1933 pid:575158994 hgt:192cm iyr:2017 eyr:2022 hcl:#602927
+ecl:gry
+
+iyr:2012
+hcl:#7d3b0c
+ecl:oth
+eyr:2023 pid:615952261 byr:1959
+hgt:152cm
+
+byr:2010
+iyr:2011 hcl:z ecl:grn hgt:152cm pid:6079261766
+
+hcl:#18171d iyr:2012
+byr:1986 ecl:blu
+pid:836367740 hgt:191cm eyr:2024 cid:200
+
+ecl:blu pid:909247319 iyr:2019 eyr:2026 byr:1958
+hgt:170cm
+hcl:#b6652a cid:256
+
+eyr:2027 hcl:#efcc98 iyr:2010 hgt:191cm ecl:brn byr:1933
+
+byr:1921
+pid:414637667 hcl:#8d840f cid:291 iyr:2013 ecl:amb eyr:2029 hgt:172cm
+
+byr:1961 iyr:2020 eyr:2025 pid:675731511 hgt:71in
+ecl:blu hcl:#623a2f
+
+byr:1959 iyr:2002
+hcl:#ceb3a1 eyr:2027 ecl:#633ff4
+pid:815877728
+
+ecl:gry pid:812104470 byr:1938
+hgt:70cm
+eyr:2028 cid:285 iyr:2016 hcl:#b6652a
+
+cid:99 hgt:152cm byr:1971
+eyr:2020 hcl:#733820
+ecl:gry
+iyr:2012 pid:020521112
+
+pid:803066169 hgt:157cm iyr:2014 hcl:#b6652a eyr:2025 ecl:brn byr:1981
+
+hcl:fafcd9 eyr:2021
+hgt:76in
+pid:359286290 cid:207 iyr:2018 ecl:grt
+
+pid:179471060 byr:1966 ecl:amb hcl:#18171d eyr:2029 iyr:2015 hgt:190cm
+
+hcl:#efcc98 ecl:gry
+byr:1942
+eyr:2026 iyr:2011
+hgt:158cm pid:721512314
+
+ecl:oth eyr:2024 hcl:#8bc738
+hgt:167cm iyr:2014 pid:729168992
+
+hcl:#b6652a
+pid:179977662
+iyr:2018
+ecl:gry
+byr:1973
+hgt:155cm
+cid:126 eyr:2030
+
+byr:2012 eyr:1955 hcl:z iyr:1981 pid:#66167e hgt:175in ecl:grt
+
+hgt:154cm cid:301 iyr:2010 hcl:#7d3b0c pid:573851812 ecl:grn eyr:2030
+
+pid:601712917 ecl:hzl eyr:2001 cid:70 hgt:162cm hcl:#6b5442 iyr:2018
+byr:1959
+
+hgt:183cm byr:1996 eyr:2023 hcl:#866857 iyr:2018 pid:259910953 ecl:brn
+
+pid:751991211 hcl:z iyr:2015 eyr:2024 byr:1939 ecl:oth hgt:161cm
+
+eyr:2026 byr:1947
+ecl:grn iyr:2018 cid:248 hcl:#ef5900 hgt:66in
+
+iyr:2028 eyr:1994 pid:9211015765
+ecl:amb
+hcl:cd429d
+byr:2013
+hgt:176cm
+
+hgt:193cm ecl:amb eyr:2023
+iyr:2020 byr:1933
+cid:50
+hcl:#efcc98 pid:482745318
+
+byr:2014 pid:619629999
+ecl:oth hgt:159cm eyr:2027 iyr:2018 hcl:#b6652a
+
+hcl:#b6652a eyr:2028 byr:1921
+ecl:blu
+pid:866536313 hgt:185cm iyr:2020
+
+eyr:2027 pid:904225608 iyr:2010 cid:57 hgt:161cm hcl:#83ee3c ecl:gry byr:2001
+
+byr:1968 pid:120450875 iyr:2018 hgt:165cm ecl:grn eyr:2022 hcl:#7d3b0c
+
+hcl:#a97842 byr:1964
+eyr:2027 ecl:oth hgt:186cm iyr:2010
+cid:226 pid:632344779
+
+pid:135449714
+cid:348 iyr:2019
+hcl:#602927
+ecl:oth eyr:2029
+hgt:184cm byr:1992
+
+eyr:2027
+byr:1929 hgt:181cm hcl:#fffffd iyr:2019 pid:369478657
+ecl:blu
+
+hgt:177cm eyr:2021 iyr:2016 ecl:gry byr:1938 hcl:#602927 pid:034365656
+
+iyr:2020 hcl:#866857
+eyr:2028
+pid:183612456 ecl:#9e25d3 hgt:159cm byr:1934
+
+pid:664990234 hcl:#efcc98 cid:185 iyr:2018
+ecl:brn
+hgt:192cm
+byr:1942
+eyr:2029
+
+eyr:2027
+hgt:163cm pid:760854338 cid:228
+byr:1958 iyr:2014
+hcl:#efcc98 ecl:gry
+
+iyr:2014
+hcl:#18171d hgt:157cm ecl:amb eyr:2025 byr:1957 pid:347369874
+
+pid:013801431 byr:1999
+hgt:181cm eyr:2029
+ecl:amb iyr:2010
+hcl:#b6652a
+
+hgt:153 eyr:2030 byr:2022
+hcl:z cid:84 ecl:hzl iyr:2020
+
+cid:315 iyr:2011
+hgt:151cm hcl:#ffb5f9
+pid:427813663 byr:1999 ecl:brn eyr:2025
+
+eyr:2024
+cid:205 byr:2000 iyr:2020 hgt:173cm ecl:gry
+
+eyr:2026 byr:1996 iyr:2018 ecl:grn hgt:158cm pid:026432567 hcl:#602927
+
+iyr:2014
+ecl:hzl
+byr:1964 eyr:2020 hgt:184cm pid:031793197 hcl:#fffffd
+
+ecl:oth hgt:165cm byr:1982 pid:172329608 hcl:#733820
+iyr:2019
+eyr:2020 cid:347
+
+byr:2014 iyr:2011 hgt:179cm
+hcl:z eyr:2020 ecl:grt
+cid:134
+
+ecl:gry
+iyr:2011 hcl:#a97842
+byr:1942 pid:789953865 cid:172 hgt:180cm eyr:2027
+
+hgt:179cm pid:975853536
+iyr:2018 byr:1989 hcl:#602927
+eyr:2021 ecl:amb
+
+byr:2011
+iyr:2015
+ecl:oth
+hcl:85d233 cid:207 eyr:2020 hgt:138 pid:6169876
+
+ecl:hzl eyr:2029 hcl:#efcc98
+hgt:188cm iyr:2018 cid:143 byr:1973
+
+hcl:#ceb3a1 pid:762609805
+byr:1962
+hgt:150cm
+iyr:2016 eyr:2024 ecl:oth
+
+iyr:2012
+pid:181821528 byr:1922 ecl:gry hcl:#a97842 hgt:169cm eyr:2028
+
+eyr:2029 pid:776605704 byr:1964 hgt:175cm hcl:#623a2f ecl:grn
+iyr:2011
+
+byr:1989 iyr:2019
+ecl:gry pid:397990288
+hcl:#602927 hgt:67in eyr:2030
+cid:259
+
+hcl:#866857 iyr:2018 ecl:blu byr:1938 cid:227 eyr:2028 hgt:171cm
+pid:779192850
+
+byr:1974 hcl:#cfa07d eyr:2026 hgt:59in cid:51 iyr:2019
+ecl:oth pid:091591737
+
+byr:1952 cid:301 pid:804465935 hgt:152cm eyr:2025 hcl:#888785
+iyr:2013 ecl:hzl
+
+hcl:6a32f0 eyr:2027
+iyr:2014
+ecl:amb byr:1933 cid:185
+hgt:75cm
+
+byr:1945 hcl:#b6652a
+hgt:163cm ecl:brn eyr:2025 iyr:2015 pid:829875350
+
+byr:1940 hgt:174cm iyr:2014 pid:9989523268 ecl:gry eyr:2026
+hcl:#efcc98
+
+iyr:2011 ecl:lzr
+byr:1998 hgt:182cm
+eyr:2029 hcl:z
+
+pid:091142801
+hcl:#c0946f byr:1983 ecl:blu iyr:2017 hgt:183cm eyr:2027
+
+ecl:oth iyr:2011 hgt:158cm byr:1950 pid:902512428 hcl:#623a2f eyr:2028
+
+eyr:2020
+iyr:2020
+ecl:oth byr:1938 hcl:#d5eb7e
+pid:829945241 hgt:171cm
+
+byr:1971
+pid:998912876 eyr:2022
+iyr:2012 hcl:#cfa07d cid:338 ecl:brn
+hgt:183cm
+
+ecl:amb hcl:#7d3b0c pid:331124964 iyr:2013 byr:1945 hgt:189cm eyr:2028
+
+pid:012740434 iyr:2019
+byr:1998
+hgt:172cm eyr:2028
+cid:102 hcl:#866857
+ecl:amb
+
+hcl:#866857
+eyr:2027 hgt:181cm byr:1954 ecl:blu
+iyr:2010
+pid:211721858
+
+byr:1984 pid:876360762 hgt:72cm
+eyr:2040 hcl:a60c15 iyr:1948 ecl:lzr
+
+hgt:167cm byr:1930 ecl:oth pid:740024142 eyr:2024 hcl:#341e13
+iyr:2018
+
+byr:1968 hcl:#623a2f ecl:brn
+cid:210 hgt:155cm
+iyr:2017 pid:216618180 eyr:2024
+
+byr:1966 pid:131332466 hgt:174cm ecl:amb
+hcl:#733820
+iyr:2013 eyr:2023
+
+eyr:1985
+pid:#fde6c1
+hcl:z byr:2017 iyr:2027 hgt:163cm
+
+iyr:2016 ecl:hzl hgt:171cm
+hcl:#888785 pid:390140479 byr:1976
+
+cid:327 eyr:2023 byr:1954
+hgt:192cm iyr:2012
+pid:413357852 ecl:blu
+
+iyr:2014 ecl:hzl hgt:154cm byr:1962 pid:904474869 hcl:#6b5442 eyr:2023
+
+ecl:hzl iyr:2012 eyr:2027 pid:663644982 hgt:175cm cid:56
+byr:1980 hcl:#ceb3a1
+
+eyr:2020 iyr:2012 hgt:190cm byr:1993 hcl:#a97842
+ecl:amb pid:418635216
+
+pid:845398140
+byr:1933 iyr:2016 ecl:oth eyr:2024 hcl:#cfa07d hgt:169cm
+
+eyr:2040 hgt:161cm
+byr:2018 ecl:blu
+iyr:2022 hcl:#866857 cid:252
+pid:286344655
+
+hcl:#6b5442
+eyr:2027
+hgt:191cm iyr:2012
+pid:642929864 ecl:amb byr:1934
+
+iyr:2015 hcl:#cfa07d ecl:grn
+eyr:2029 pid:163012663 hgt:150cm
+
+eyr:2030 byr:1938 hgt:188cm iyr:2018
+pid:652645847 hcl:#b6652a ecl:grn
+
+pid:157056211 iyr:2010 hcl:#cfa07d ecl:gry
+eyr:2024 byr:1961 hgt:177cm
+
+eyr:2020 hcl:#60945e ecl:brn iyr:2011 pid:688090869 hgt:171cm
+byr:1941
+
+eyr:2023 hgt:188cm byr:1964 hcl:#7d3b0c ecl:gry iyr:2017
+
+byr:1996
+hcl:#733820 pid:142902538
+eyr:2023 iyr:2012 ecl:oth
+hgt:166cm
+
+hgt:62in cid:125 eyr:2022 hcl:#b6652a iyr:2011
+ecl:amb pid:220826562
+
+ecl:grn hgt:72in byr:1991 eyr:2020 pid:281076310 hcl:#6b5442
+
+iyr:2030 hgt:78 eyr:1966 byr:2008 cid:260 ecl:grt hcl:5d2e21
+
+iyr:2017 pid:388674097 byr:1950 ecl:grn cid:338
+hgt:159cm
+hcl:#6b5442
+eyr:2025
+
+hgt:92 eyr:2031 cid:52 pid:169cm hcl:2695be
+iyr:1987
+byr:2011
+
+pid:396358436 hcl:#ceb3a1
+byr:1976 eyr:2025
+iyr:2012 ecl:brn
+hgt:174cm
+
+pid:389292752
+eyr:2027 cid:335 hgt:65in byr:1974 hcl:#6b5442 ecl:oth iyr:2019
+
+ecl:amb iyr:2010 hcl:#602927 hgt:164cm byr:1966 pid:749383114 eyr:2026
+
+pid:656206688
+hgt:175cm
+hcl:#6b5442 byr:1961 eyr:2028
+ecl:amb iyr:2010
+
+hgt:179cm eyr:2028 byr:1958
+pid:095076581 ecl:gry
+hcl:#733820
+iyr:2017
+
+byr:1960
+cid:309 ecl:utc iyr:2012
+hgt:172cm pid:395100903
+eyr:2030 hcl:#cfa07d
+
+eyr:2021 cid:98 pid:387957353 byr:1941
+hgt:192cm
+hcl:#efcc98 ecl:brn
+
+pid:143359781
+hcl:#a97842
+byr:1996
+hgt:184cm eyr:2020 cid:319 ecl:blu iyr:2020
+
+eyr:2025 iyr:2013 hgt:154cm hcl:#b6652a ecl:oth byr:1979 pid:976151938
+
+iyr:2017
+hgt:118 ecl:#f0f31e
+eyr:2028
+hcl:z
+
+iyr:2016 hgt:153cm hcl:#6d55cd eyr:2026 ecl:hzl byr:1943 pid:257485710 cid:165
+
+hcl:#ceb3a1 ecl:blu byr:1937 hgt:152cm iyr:2020 eyr:2026 pid:032844291
+
+hcl:#fffffd byr:1937 pid:122104515 ecl:hzl
+iyr:2018
+eyr:2027 hgt:163cm
+
+byr:1987 pid:052848077 hcl:#341e13
+iyr:2015 hgt:172cm eyr:2022
+
+pid:897642631 iyr:2015 byr:1941 hcl:#733820 ecl:brn eyr:2020 hgt:179cm
+
+hcl:#7d3b0c ecl:grn eyr:2029 pid:232785519 cid:258 iyr:2013 byr:1999
+
+hgt:152cm ecl:gry hcl:#18171d eyr:2020 byr:1971 iyr:2020 pid:211826434
+
+hcl:#866857
+eyr:2022 pid:979633771 ecl:hzl iyr:2014 byr:1963
+
+cid:124
+ecl:utc hgt:77 hcl:#866857
+byr:1979 iyr:2013
+pid:92518200 eyr:1968
+
+hcl:#888785 eyr:2022 pid:233642738 byr:1959 hgt:191cm
+ecl:blu iyr:2010
+
+pid:#adbcd3 ecl:zzz eyr:2025 cid:129 byr:2028 hcl:z hgt:166cm iyr:2011
+
+cid:131 hgt:169cm
+iyr:2020
+byr:1994
+eyr:2021
+ecl:amb hcl:#c0946f
+pid:243158461
+
+hcl:#18171d byr:1980 ecl:oth hgt:153cm eyr:2028 iyr:2020 pid:629055498
+
+hcl:#b6652a
+hgt:152 ecl:blu pid:175cm iyr:2015 byr:1941 eyr:1961
+
+eyr:2025 hcl:#7d6ede byr:1988
+hgt:150cm
+ecl:hzl cid:267
+pid:794369607
+iyr:2012
+
+pid:538963835
+ecl:oth byr:1958
+hgt:173cm
+eyr:2027 cid:63
+iyr:2018 hcl:#602927
+
+hcl:#866857
+hgt:163cm byr:1925 iyr:2011
+ecl:oth
+eyr:2023 cid:163
+
+ecl:grn pid:411555227 byr:1974 eyr:2020 hgt:153cm iyr:2015 hcl:#a97842
+
+cid:111 pid:473064654 byr:1948
+ecl:brn iyr:2013
+hcl:#16fa7a
+eyr:2024 hgt:184cm
+
+iyr:2016 hgt:170cm byr:1993 pid:487807940 hcl:#efcc98 eyr:2024 ecl:gry
+
+hcl:#a97842 pid:891517350 iyr:2012
+byr:1937
+ecl:amb
+eyr:2030
+hgt:171cm
+
+cid:330 ecl:gry
+hgt:163cm eyr:2021
+hcl:#733820 byr:1991 pid:109734880
+
+ecl:brn iyr:1934 eyr:2021
+hgt:62
+hcl:z pid:720470429
+
+ecl:blu
+pid:669045673 iyr:2015
+hgt:164cm
+hcl:#866857
+
+hgt:158cm hcl:#623a2f byr:1950
+eyr:2020 ecl:gry pid:708073090
+iyr:2018
+
+hgt:158cm iyr:2017 eyr:2027
+ecl:brn pid:840573419 hcl:#18171d byr:1968
+
+ecl:oth cid:81 hcl:#ceb3a1 eyr:2021
+iyr:2020 byr:1959
+hgt:62in
+pid:634019849
+
+hgt:180cm pid:651174767 iyr:2013 byr:1948 eyr:2022 hcl:#efcc98 ecl:grn
+
+eyr:2021 ecl:grn
+cid:95 hcl:#733820 iyr:2016 hgt:174cm byr:1931
+
+hcl:90e96c eyr:1948 ecl:zzz
+byr:1984 pid:8325286529
+hgt:59in
+cid:180
+
+cid:293 hgt:193cm ecl:oth hcl:#602927
+eyr:2021 byr:1959 iyr:2016
+
+pid:425216058
+hcl:#7d3b0c hgt:67in ecl:blu eyr:2022
+iyr:2016 byr:1936 cid:182
+
+ecl:#c93c79 byr:2021 iyr:2021
+hgt:69cm pid:#fa092e eyr:2040
+
+hcl:#733820 iyr:1964
+hgt:190cm
+pid:121828083 byr:2028 ecl:blu eyr:2030
+
+byr:1986
+eyr:2023 ecl:hzl hcl:#c0946f hgt:152cm pid:750393977 cid:308 iyr:2015
+
+hgt:152cm byr:2004 hcl:z eyr:2038 ecl:#e92725 iyr:2023 pid:55783937
+
+ecl:grn eyr:2023 hcl:#7d3b0c byr:1940 iyr:2017 pid:312213917 hgt:166cm
+
+ecl:grn pid:293691668
+byr:1949 hgt:60in
+eyr:2021
+hcl:#efcc98 iyr:2017
+
+iyr:2018 hgt:156cm ecl:oth
+hcl:#ceb3a1
+pid:622764582 eyr:2020 cid:124
+
+eyr:2021
+pid:146888876 byr:1962 iyr:2010 cid:63 ecl:amb hgt:188cm hcl:#a97842
+
+pid:861542171 hcl:#866857
+ecl:brn
+iyr:2010 byr:1975
+eyr:2020
+
+hgt:157cm hcl:#18171d eyr:2022 byr:1936 iyr:2014 pid:478341738 ecl:amb
+
+ecl:brn
+eyr:2026
+pid:553753060 hgt:186cm
+iyr:2019
+hcl:#623a2f
+byr:1991
+
+iyr:2018 ecl:blu hcl:#cfa07d hgt:162cm byr:1924 pid:721804049 eyr:2023
+
+byr:1970 hgt:181cm eyr:2027 ecl:hzl pid:171cm iyr:2012 hcl:#5f4282
+
+cid:52
+ecl:blu iyr:2011
+pid:027908077 hcl:#b6652a hgt:158cm
+byr:1986
+
+pid:160cm hcl:91324c eyr:2034 iyr:2015
+byr:2021
+hgt:175in ecl:brn
+
+cid:164 iyr:2014 byr:1948 hgt:163cm pid:701930596 ecl:gry
+eyr:2020 hcl:#733820
+
+byr:1951 hcl:#fffffd pid:456803587 hgt:157cm ecl:blu iyr:2010 eyr:2020
+
+ecl:#663e48
+pid:9157891148 hgt:66cm iyr:1989
+byr:1932
+
+byr:1993
+hgt:167cm
+ecl:amb iyr:2010 hcl:#3da943 pid:340209998 eyr:2021
+
+byr:1968
+eyr:2021 pid:915482982 hcl:#84a907 iyr:2020 hgt:176cm ecl:grn
+
+hgt:190 ecl:oth hcl:#6b5442
+byr:2023
+pid:5211866539
+iyr:2028 cid:276
+
+hcl:#ceb3a1 hgt:177cm byr:1966
+pid:#9f5b93
+iyr:2002 eyr:1958
+ecl:oth
+
+hcl:#888785 eyr:2025 iyr:2017
+hgt:187cm pid:856993600 ecl:oth
+
+hgt:186
+hcl:z
+eyr:2025
+byr:2013 pid:6869591443 ecl:oth
+
+iyr:2015 pid:317156655 cid:144
+hgt:151cm hcl:#623a2f ecl:brn
+byr:1966 eyr:2021
+
+ecl:hzl pid:161653223 eyr:2026 iyr:2017 byr:1980
+hcl:#18171d
+
+iyr:2009
+pid:618443261
+byr:1989 hcl:#23ef8c eyr:2026 hgt:167cm ecl:grn
+
+ecl:oth
+hcl:#fffffd iyr:2018 eyr:2022 pid:953490888
+
+eyr:2026 hcl:#c0946f hgt:165cm iyr:2016 byr:1921
+ecl:blu pid:490419824
+
+hgt:150cm hcl:#b6652a ecl:brn byr:1937 iyr:2013 pid:824096447 eyr:2027
+
+ecl:amb
+hcl:#733820 byr:1997 iyr:2015 cid:269 hgt:96 eyr:2022 pid:475968048
+
+byr:1985 hgt:186cm eyr:2022 ecl:gry
+pid:050842095 iyr:2014
+
+ecl:hzl byr:1942 cid:294 hgt:191cm pid:768437232
+eyr:2024 hcl:#623a2f
+
+byr:1974 eyr:2022 hcl:#afb1a8 ecl:oth
+hgt:159cm
+cid:252
+pid:619988658 iyr:2018
+
+ecl:oth eyr:2029 hgt:175cm
+pid:548668762 byr:1982 iyr:2020 hcl:#c0946f
+
+ecl:gry hcl:#18171d
+hgt:166 pid:#3f6172 iyr:1978
+eyr:2031 byr:2021
+
+byr:1933 hcl:#c0946f ecl:gry eyr:2028
+pid:594772420
+hgt:167cm
+iyr:2020
+
+cid:332 hcl:#623a2f iyr:2018 pid:706055429 byr:1971 eyr:2022 ecl:gry
+
+hgt:187cm hcl:#888785
+pid:224041851 eyr:2029
+ecl:blu iyr:2012 byr:1991
+
+ecl:#9c38d0
+hgt:161in
+hcl:099d45 byr:2015 eyr:1994
+pid:2730108307
+iyr:2024 cid:229
+
+hgt:184cm ecl:grn byr:1938 pid:996091727
+cid:115
+hcl:#866857 iyr:2020 eyr:2020
+
+pid:883396674 iyr:2019
+eyr:2023 ecl:blu
+byr:1979 hcl:#733820 cid:125
+hgt:181cm
+
+hgt:190cm cid:325 hcl:#866857 eyr:2027 ecl:gry
+iyr:2013 pid:317703100 byr:1968
+
+hcl:#866857
+ecl:gry pid:652638412
+eyr:2025 iyr:2015 hgt:158cm byr:1953
+
+byr:1956
+hcl:#cfa07d eyr:2025
+pid:728272575 hgt:162cm
+cid:291 ecl:blu iyr:2020
+
+hgt:189cm byr:1980 hcl:#97fd64 ecl:grn iyr:2013
+pid:181599378 eyr:2029
+
+iyr:2018
+hcl:#007101 ecl:brn byr:1947 cid:265 hgt:159cm pid:288707610 eyr:2024
+
+hgt:62cm pid:2407695078
+eyr:2039 byr:2014
+iyr:1930 hcl:z
+ecl:grt
+
+hgt:65cm
+ecl:hzl
+byr:1994 eyr:2004 hcl:z cid:130 pid:863191800
+
+pid:125685599 byr:1995
+ecl:blu cid:57 hgt:172cm
+iyr:2020
+hcl:#b6652a
+eyr:2024
+
+ecl:gry byr:1961
+iyr:2010 eyr:2022 pid:591409441
+cid:314
+hcl:#341e13
+
+iyr:2020
+ecl:hzl hcl:#efcc98 byr:1983 hgt:174cm
+eyr:2028
+
+eyr:2029 byr:1924 iyr:2013 pid:662719101
+ecl:amb cid:77
+
+ecl:oth
+iyr:2013 byr:1947 pid:532607157 hcl:#7d3b0c eyr:2030 hgt:191cm
+
+pid:528940525 hcl:#18171d
+iyr:2014 eyr:2029 cid:181
+byr:1967
+ecl:gry hgt:64in
+
+hgt:71in iyr:2019 hcl:#cfa07d eyr:2029
+pid:785691813
+byr:1996 ecl:hzl cid:335
+
+byr:2015
+pid:174cm hgt:79 hcl:z iyr:1970 cid:66 eyr:1993 ecl:lzr
+
+hgt:188cm
+eyr:2025 cid:107 ecl:grn
+pid:286480470 hcl:#623a2f byr:1967
+iyr:2015
+
+eyr:2027 hcl:#7d3b0c cid:287
+pid:319840760 iyr:2017 hgt:179cm ecl:gry
+
+byr:1976 ecl:brn iyr:2020 eyr:2023 hgt:154cm pid:964286153
+
+iyr:2015 eyr:2027 hgt:173cm byr:1983 pid:500176757 ecl:amb hcl:#7d3b0c
+
+cid:282 pid:697942299 hgt:185cm
+eyr:2026 hcl:#7d3b0c iyr:2017 byr:2002 ecl:amb
+
+iyr:2014 hcl:#18171d pid:044482202
+ecl:oth
+hgt:163cm eyr:2021 byr:1982
+
+ecl:gry hcl:#7d3b0c
+iyr:2019 eyr:2020 hgt:187cm
+pid:617117265
+
+eyr:2035
+ecl:#5525a9 cid:123 byr:2009 pid:15381071 iyr:2028
+hcl:#b6652a
+
+eyr:2021 hgt:165cm cid:207
+iyr:2010 ecl:gry
+byr:1929 hcl:#733820 pid:442632632
+
+pid:69132960 cid:84 hgt:107 eyr:2023
+ecl:gmt iyr:2016
+hcl:z
+byr:2020
+
+eyr:2027 pid:281765118 hcl:#ceb3a1 hgt:193cm
+byr:1955 ecl:gry cid:321 iyr:2010
+
+ecl:brn hgt:71in
+cid:189 byr:1962 eyr:2023 iyr:2018 pid:780797141 hcl:#866857
+
+pid:984503466 ecl:amb hgt:192cm byr:1942 hcl:#dcc50d iyr:2020 eyr:2030 cid:250
+
+hcl:#7d3b0c eyr:2028
+hgt:178cm
+ecl:gry
+iyr:2011
+byr:1923
+pid:960277768
+
+byr:2000 ecl:amb cid:199 eyr:2027 iyr:2020 pid:785585164 hcl:#888785
+hgt:164cm
+
+iyr:2015 pid:619005249
+ecl:brn byr:1955 eyr:2028
+hgt:183cm
+hcl:#a97842
+
+ecl:grn
+byr:1970 cid:339
+iyr:2011 hcl:#a97842 pid:952307953 eyr:2027 hgt:159cm
+
+hcl:ff4451 iyr:2022
+byr:1972 ecl:#86cbc5 pid:29044223 eyr:1985
+hgt:62cm
+
+hcl:#623a2f iyr:2013 eyr:2023 hgt:164cm byr:1956
+ecl:oth
+
+eyr:2028 hcl:#733820 pid:767003752 byr:1935 hgt:167cm iyr:2016
+ecl:oth
+cid:215
+
+cid:125 ecl:amb
+iyr:2019 hcl:#18171d eyr:2022 hgt:163cm
+pid:239764055
+byr:1954
+
+ecl:gry
+iyr:2019 hcl:#cfa07d byr:1929 pid:221011852
+cid:274 eyr:2026 hgt:158cm
+
+hcl:#a97842 iyr:2016 hgt:159cm
+byr:1998 ecl:hzl eyr:2020 cid:207
+
+pid:051242790
+iyr:2024
+byr:1975 hcl:#602927
+ecl:grn hgt:160cm eyr:2014
+
+ecl:#0b3ea5 hcl:z pid:#122ff0
+byr:2007
+hgt:178 iyr:2013
+eyr:1950
+
+hgt:171cm hcl:#cfa07d pid:674448249
+ecl:hzl eyr:2026
+cid:297 byr:1928
+
+ecl:hzl eyr:2021 hcl:#b6652a pid:856617617
+byr:1949
+hgt:153cm iyr:2015
+
+hgt:164cm ecl:gry
+eyr:2025
+pid:147932207 iyr:2011 byr:1984 hcl:#fffffd
+
+eyr:2027 hcl:#7d3b0c
+pid:377701492 ecl:gry byr:1971 hgt:174cm
+iyr:2023
+
+byr:2001 hcl:#4784a2 hgt:161cm iyr:2014 eyr:2025 pid:955262336
+ecl:amb




diff --git a/resources/input05.txt b/resources/input05.txt
new file mode 100644
index 0000000000000000000000000000000000000000..17dfa0b17f1390a7319a15ec730cdc959fa9700b
--- /dev/null
+++ b/resources/input05.txt
@@ -0,0 +1,859 @@
+BBFFBFFRRR
+FBBFFBBLRR
+FFBFBFBRRR
+FFFBFBFRRR
+BBFFBBFLRR
+BFFBFBFLRL
+FBBBBBFRRR
+FFFFBFFLLR
+BFBFFBFLLR
+FFBBFFFLRR
+BFFFFFFLLL
+FBFFBFFRLL
+FFBFFBFRLR
+FBBBFBFRRR
+FBFFBBBRRL
+FBFFBFFLRL
+BFBBFFFLLL
+FBBFBFBRRL
+BFFBFFFLRR
+FFFFBFFRLR
+FFFBBBFRLR
+FBFFFBFLLL
+BFBFBBBLRR
+FBBBFFBRLR
+BBFFFFFLLL
+BFFFFBFRRL
+FBBBFBFRRL
+FFBBBFBRLR
+FFFFBBFLLL
+FBFBFBBRLL
+BFFFBFBRLL
+FFBFBFBRLR
+FBFFFBBRLR
+BBFFFBBLRR
+BFFBBFFRRL
+BFBBBFFRRR
+FFBFBFFRRL
+FBFBBFBLLR
+BFFBFBBRRR
+BFFFFBFLLR
+FFFBFFFRRR
+FBFFFBFRLR
+BFBFFBFRLR
+FBBBFFFLLR
+FBBFFBFLLL
+BFBBFBFLLR
+FFBFBBFLLL
+BFFFBFBLRL
+FBBFBBBLLL
+FFFBFFBLLR
+BFFFFFFRRR
+BFBBBBFRRL
+FFBFBBFRLL
+FBBBFBBLRL
+BFFBFBFLRR
+BBFFFBFRRL
+BFFBBFFLRR
+BFBFFFFLLR
+FBFBFFFLRR
+BFBBFBBLRL
+FBFBFFFRLR
+FFBBBFFRLR
+BBFBBFFRLR
+BFFFFBBRLL
+FFFBFBBLRR
+FFFFBFBRRL
+BFFBFBFRRL
+FBFFBBBRRR
+BFBBFFBLRL
+FFBBFFFLLL
+FBFBBFBRRR
+FBBBFFFLRL
+FBBFFBFLRR
+FBBBBBFRRL
+BFFFBBBLRL
+FFFBBFBRLL
+FFFFFBBLLR
+FFBFBBBRLL
+FFBBFBFLLR
+FBFBBFFLLL
+FFFBFFBRLL
+BFBBFBFRLR
+BFBFBBFRRL
+FFFBFFFLRL
+FBBFBBFRLR
+BFFBFFBRRL
+BBFFFBBRLR
+FBBBBBFRLL
+FFBBFFFRLL
+BBFBFBBRLR
+FFBBBFFLLR
+BFBBBBBLLL
+FFFBFBBLLL
+FBFFBFFRRL
+FBFBFFBLLL
+BFFBBBFRRL
+FBBBBBFLLL
+FBFBBFBLRR
+FFBBBBFLLR
+BBFFBFFRRL
+FBBBBBFLRR
+FBFFFFFRLR
+FBFFBBFLLR
+FFBBBFBLRR
+BFFFBBBRRL
+FBFBFBFRRL
+FFFBFBBRLL
+FFBFBFBLRL
+FBBBFBBLLL
+FBBBFBFLRL
+FBBBBFFLRL
+FBFBBBBRLR
+FBBFFBFLLR
+FBFFBBFLRR
+FBFFFBBLLL
+BBFFBBFRRR
+FBBFBBBRLL
+BFFBBBFLLR
+FBFFFFFLRR
+FBFFBBFRRL
+BFFBBFBLLL
+FBBBFBBLLR
+FBBBBFBLRL
+FBBBFFFRRR
+FFFFBBFRRR
+BFBFFFFRRR
+BFBFFBBLRL
+BFFFFFBLLR
+BFBBFFFRRR
+FBFFFBFRRL
+BFFBBFFLRL
+FFFBFFBRRL
+FFBFBFBLLL
+FFBFBFFLLL
+BBFFFBBRRR
+FFFFFBFLRL
+BFBFFFBLRL
+BFBFBFFLRR
+BFFBBBBRLL
+BFFFBFFRRR
+BBFBFFBRLL
+FBFFFBBRRL
+FFBBFBBRRL
+FFBFFFFLLR
+FFFBFFFLLL
+FBBFFBBLRL
+BFBFBBFLLR
+FBFBFFFRRL
+BBFFFFFLRR
+BBFFFBFLRL
+BBFFBBBLLL
+BFBBFBFLLL
+BFBFFBFRRL
+FBFFFFBRRL
+FBFFBBBRLR
+BFBBFBBRLL
+BFFBBFFLLR
+FBBBFFBLRL
+BFFFBFFRLR
+FFFBFFBRLR
+BFFBBBFLLL
+FBBBBFFRLL
+FFFFBBBRLR
+FBFFBFFLRR
+FBFBFBBRRL
+FFFFFFBRRR
+FFFBBBFLRL
+FBFFBFBLLR
+FFFBBBBLRL
+BBFBFFBLLL
+FBFFFFBLLR
+BBFBFBBRRR
+BFBFFFBRRR
+FBBFBFFRLL
+FBBBBFFRLR
+FFBBFBBLRL
+BBFBFFBLLR
+FBBBBBBLRL
+BFFFBBFLLL
+BBFBBFFLLR
+FBFFBFBLRL
+BFFFBBBLRR
+BBFFFFFRRR
+BFBFBBBRLR
+BBFFFBFLRR
+FBBFBBFLLR
+BBFBFFBLRR
+BFBBBFFLRR
+FBBFBFFRRL
+FBFBFBBLRR
+BFBBFFBRLL
+FFFBBFBRLR
+BFFBBBFRRR
+FBFFBFFRLR
+FFFBBBBRLL
+FFFFFBBRLR
+FBBFBFBLLR
+FBBFBBFLRR
+BBFFBBFLLR
+FFFBFBBLLR
+FFBFBFFLRR
+BFBBFBFRLL
+BFFFFBFRRR
+BBFBFFFLRL
+BFFFFBFLLL
+FBFBFBFLRL
+BFBBFBBLLR
+BFFBFFFRLL
+BBFBFFFRLR
+BBFFBFFRLL
+FFFBFBBRLR
+FBFBBBFLRL
+FFBFFBBRLR
+BBFFFBBLRL
+BFBBBBFLRR
+FFBFFFBLRL
+FFBBBFBRLL
+BBFFBFFLRR
+BBFFBFFRLR
+FFFFFBFRRR
+BBFBFBBLRL
+BFFBBBBLLL
+FBBBBFBRRR
+FFBBBBBLRL
+FBBFBBFRRR
+FFBBFFBRLL
+BFBFBFBLRR
+BBFBFFFRRR
+BFFFBBFRRR
+FBFBFFFLLL
+FBBFBFBRRR
+BBFFBFBLLR
+BBFBFBFLRR
+BFFFFBBLRL
+BFBBBFFLRL
+BBFBFFBLRL
+BFFBBFFRLL
+FBFFBFFLLR
+FBFBFBBLLL
+BBFBFBFLRL
+BBFFBBBLRL
+FFFFFBBRLL
+FFFBBBBRRR
+FFBBFFFRLR
+FFBFFFBRRR
+FBFBFFBLRR
+FFBFFBBLLL
+FBBFBBFLRL
+FBFFBBBLRL
+FBBBBFFRRR
+BFBBBBBLLR
+FFBFBBBLRR
+FFFFBFBLRR
+BFFFFFFRLL
+FBBFFFBLRR
+BFBBBBBRLL
+FFBBFFBLRL
+BFBBBFFRLR
+FFBFFBFLLL
+FFBBFBFRLR
+BFBFFBBLRR
+FFFFBFFLRR
+FFBFFBFLRL
+BBFFBBFRRL
+FFBFFFFLLL
+BBFBFFBRLR
+FBFBFBBRLR
+BBFFBBBRRR
+FBFFBBBRLL
+BFBFFBBRRR
+BBFFFBFRLL
+FBBFBBBLRL
+FBBFFFFLRR
+BBFFFBBLLL
+FFBFFFFLRL
+FBBFFBFLRL
+FBBBBFFLLR
+BFBBFBFRRR
+FBBFFFBLLL
+FFBFBFFRLL
+FFFBBBFLRR
+FFFBFFFLRR
+FBFFBFFRRR
+BFFFBFFLLR
+BFFFFFFRLR
+BFFFBFFLLL
+FBBBFBBRRL
+BFBFFFBLLL
+FBFBBBBRRR
+BFBBBFBRLR
+BBFFFFBRLR
+FBFFFFFRLL
+FBBFFBBRLR
+BBFBBFFLRR
+BBFFBFFLLR
+BBFFBBFRLL
+FBFFFFFRRL
+FFBFBBFRRR
+FFBFFFFRLL
+BFFFFBBLRR
+BFBFBFBLRL
+FBBFFFFRRR
+FFBBFBBRRR
+BFBBBBBRLR
+FBFFFBBLLR
+BBFFFBFRLR
+FBFFFBBRRR
+FBBFFBFRLR
+BFFFBFBRRR
+FFBBBBBLLL
+FFFFFBFLLR
+FBBFBFBRLL
+BFBFBFBRRL
+BBFFFFBRRL
+FFBFBBFLLR
+FFBBBFFRRL
+FBFFBFBRLR
+FBBFFFFRLL
+BFFBFFFLLR
+FBFFFBBLRR
+BFFBFFFLLL
+BFBFBBBRRR
+BFFFFBFLRL
+FFFFBFBLLL
+FFFBFFBLLL
+BFFFBBFRRL
+BFBFBBFRLL
+FFFBBBBLLL
+BFFBFBBRLR
+BFBBBBBLRR
+BFBBBFBRRL
+FFBFFFBRLR
+BFFBFFFLRL
+FFBFBBBLLL
+BFBFBBFRRR
+BFBFFBFRRR
+FFBFFFBRLL
+FBFFFFFLRL
+BBFFBBFLLL
+BFBFBBBRLL
+FFFBFFFRRL
+FBBBBBBLLR
+FFFBFBBLRL
+FBBFBBFRLL
+FFBFFFFRRR
+FFFBBBFLLR
+BFFBBFFRLR
+FFFFFBFLRR
+FFFBBBBLLR
+FBFFBFBRRL
+FBBFFFFLLL
+FFFFFBFRRL
+BFFBBBFRLL
+FFFBBFFRLL
+FFFBBFFLRR
+FFFFBBFRLL
+BFBBBBBRRR
+BFFBFBFLLL
+BBFBFBFLLR
+FFBBBBFRLR
+FFFBBBFRLL
+BFBBBBFRRR
+FBFBFFBRLR
+FFBFBBFRRL
+BBFFBBBRRL
+FFBFBBFRLR
+FFFFBFFRLL
+FBFFFBBRLL
+BBFFBFBRRL
+BFBFBFBLLR
+FBFBFBBLRL
+FBBFFFFRRL
+FFFBBFFRRR
+FFBBBBBLRR
+BBFBFBBLRR
+FFFFBBBLRR
+FFBBBBBRLL
+FFBFFFBRRL
+BFBBFFFRLL
+FBBBFBFRLL
+BBFFBFFLRL
+BBFFBFBRLR
+BFFBBBBRRR
+FBBBBBBRRL
+BBFBFFFRLL
+BFFBBFFRRR
+BFBBFFFRRL
+FFBFFBFLRR
+FBFBBFFRLL
+FBBFBBFRRL
+BBFBBFFRRR
+FFBBFBFRRL
+FFBBFBFLLL
+FBBFFFFLLR
+BFBFFBBRLR
+BFBBFFFLLR
+FBBBFFFLLL
+FFFBFFBLRR
+FFFBFBFRLR
+BFFBBBBRLR
+FBFFBBBLLR
+FFFFBBBRRR
+FFBBBBFLLL
+FBBBBFBLLR
+BFBFBFFRRL
+BBFFBBBLRR
+FBBFFBFRRL
+FFFBBBFLLL
+BFFFFBBLLL
+BBFBFBFRRR
+BFBBBFBLRR
+FBBFBBBLLR
+FFBBBBFLRL
+FFFBFFBLRL
+FBBBFFBRRL
+BFFBBFBRLL
+BFBFBFBRRR
+BBFBFBBRLL
+FBFFFBFRLL
+BFFFBFBLRR
+BFBFFFFLRL
+BBFFFFBLRR
+BFBBFFBRRL
+BBFBFBBLLR
+FFFBBBFRRL
+BFBBBFFRRL
+FFBFFBFLLR
+FFBBBFBLLL
+FBFBBBFLLL
+FFBBBBBRLR
+BBFFBBBRLL
+BFBFBBBRRL
+FFBBFBBRLL
+FBFBBFBLRL
+BBFFBFBLLL
+FBFBFFFLRL
+FFBFFBBLRL
+FFBFBBFLRL
+BBFBFBBLLL
+FFBBFBFRLL
+BBFBBFFLLL
+FBFFFFBLRL
+FBFBBBFRLR
+FFBFFBFRLL
+FBBFFFBRRR
+FBFBFFBLRL
+BFFFFBBLLR
+FBFBFBBRRR
+BBFFBBFLRL
+BFBBFFFRLR
+FBFFFFFLLR
+FBBFFBBLLL
+FFFFFBBRRL
+FFFBBFBRRL
+BFFBBBBRRL
+FBFFFBFLRL
+FFBBFFFLLR
+FBBBBBBLRR
+BFFFBBFRLL
+FFBFFFBLLR
+FBBBFFFRLL
+FFFFBBBLRL
+BBFFBFBLRR
+FFFFBBFLRR
+BFFBFBFRLR
+FFBFBBBLRL
+FBFBFBFLLR
+FFBBFBBRLR
+BFBFBFFRRR
+BBFFFFBRLL
+FFBFBFFRRR
+FFBFBBFLRR
+BFBBFBFLRR
+FFFFBBBLLR
+FFBBBBBRRL
+FBBFFBBRRR
+FFFBBBBRLR
+BFFBBBFLRL
+BFBBFFBRRR
+BBFFBBFRLR
+FBBBBBFLRL
+FFFBBFFLLL
+BFBBBFFRLL
+FBFFFFFLLL
+FBFBBFBLLL
+FFFBFFBRRR
+BFBFBFFLLL
+BFBFBFBLLL
+BFBBBFFLLL
+FFFFBBFRLR
+BFFBBFBRRL
+BFBBFBBLLL
+FBBFBFBRLR
+BFFFBFFLRL
+FBFBBFFLRL
+FFFFFBFLLL
+FBBFFBFRRR
+FBFBBBBLLL
+FBBBBBFRLR
+FBFFBBFRLL
+FFBFFBFRRR
+FFBFFFFRRL
+BFFBFBBLLR
+BFBBFBBRRR
+FFBBFBBLRR
+FBFFFFBRLR
+FFBBBBFRLL
+BBFFFBFRRR
+FFFBFBBRRR
+BFFFBFFRLL
+BFFBBBBLRR
+FBBBBFBLLL
+BFFFFFFLLR
+BFBFFFFLRR
+BFFBBBBLLR
+FFBBBFBRRR
+FBBFBFFRRR
+FBBFFFBRLR
+BFBFBBFRLR
+BFFBFFBRLL
+FBFBBFBRLR
+BFFFFFBLRR
+BFFBFFBRRR
+BFBFFBFLRL
+BBFFFBFLLL
+BBFBFBFLLL
+BFBFBFFLRL
+FBBFBFFLLL
+FBFFBFBLLL
+BFFFBFBRLR
+FFFBFFFRLL
+BBFBFFFLLL
+BFFFBBBRLR
+FBFBFBFLRR
+FFBBBBFRRR
+FBFBFBFRLR
+BBFFBFFLLL
+FBBBBFBLRR
+FBBBBBFLLR
+BFBFFFFRLL
+FBFFFBFLRR
+FFBFFFBLLL
+BFBFFBBLLR
+FFBBBFBLLR
+FBFFFBBLRL
+FFBBBFFRRR
+FBBBFBFLLR
+FBBBBFFLRR
+FBFFBBBLLL
+FFBFBFFLLR
+FFFFFBBLLL
+BFFFFFBLRL
+BBFFFFBRRR
+BFBFFFBRRL
+BBFFFFFRRL
+BFBBBBBLRL
+FBBBBFBRLL
+FFBFFFFLRR
+BFBBBFFLLR
+BFFFFBBRLR
+FFBBFFBRRL
+BFBFBFFRLR
+FFBBBBFLRR
+BFBFFBFLLL
+FBBFFBBRRL
+FFFBBFFLLR
+FFFFBFFRRR
+BFFBBBFRLR
+BFFFFFBRRR
+FFBFBFBLLR
+FFFBBBFRRR
+BBFBFBFRLR
+FFBBFFBLLR
+FBFBBBBLRL
+FFFBFBFLRL
+FFFFBBBRLL
+FBFFFFBRRR
+FFBBBFFRLL
+FBFBFFBRRL
+BFFBFFBLLL
+FFFFFBFRLL
+BBFFFBBRLL
+FBBFBFBLRL
+BFBFBFFLLR
+BFBBFBBRLR
+FFBFFFBLRR
+BBFBFFFLRR
+FBBFBBBLRR
+FBBBFFBLLR
+BFBBBBBRRL
+BFBBFFBLLR
+FBBBFBFLRR
+BFFBFBBLLL
+BFFBFFBLRL
+BFBFBFBRLR
+FBFFBBBLRR
+FBFBBBBRRL
+BFBFBBFLLL
+FBFBBBBLRR
+BFFBBFBRLR
+FFFBFBFRRL
+BFFFFBBRRR
+FBFFBBFRLR
+BFBBFBFLRL
+BFFFBBBLLL
+BFFFFFBRLR
+BBFFFFBLRL
+BFFBFFFRRR
+BFBBBBFRLL
+FBFBBFBRLL
+FBBFFFBLLR
+FFFBBFBRRR
+FBFBBBBLLR
+FFFFBFFLLL
+FFFFFBFRLR
+BFFFFBFRLR
+FBBFFFBLRL
+BFBFFBFLRR
+FFFFFFBRLL
+FFBBFFFLRL
+BBFFFFBLLL
+FFFBBFFRRL
+FBBFBBFLLL
+FBFFBFBLRR
+FFBBFBBLLL
+BFFFBBBRRR
+BFFFBBBLLR
+BBFBFBFRLL
+BFFFBBFRLR
+FFBFBBBRRL
+FBFBFFFRRR
+FBBBBBBRRR
+FFBBBFFLRL
+BFFBFBBRRL
+BFBFBFFRLL
+BFFFBFFRRL
+BBFFBBBRLR
+BBFFFFFRLL
+FFBBFFBRRR
+FBBFBFFLLR
+FBBBFBBRLR
+FFBFFBBRRL
+FBBBFFBLLL
+FBBFFFBRRL
+BFFBFFFRRL
+FBBFBFFRLR
+BFFBBBBLRL
+FFBFFBBRRR
+FBFBBBFLRR
+BFBBBBFRLR
+FFFBFBFLLL
+FBBBBBBRLL
+FFBFFBBLRR
+BBFFFFFLLR
+FFFFBBFRRL
+BBFFFFFRLR
+FBFBFFBRLL
+BBFFBFBRRR
+FBFFFBFLLR
+FFBBFBBLLR
+FBFBFFFRLL
+BFBBBFBRLL
+FFFFFFBRLR
+FFBBFFFRRL
+BBFBBFFRLL
+FBBFFFFRLR
+BBFBBFFLRL
+FBBFFBBLLR
+BFFFBBFLLR
+BBFBFBBRRL
+BFFBFFBLLR
+FFBBFBFRRR
+FBBBBFBRLR
+FFFBFBFLLR
+FFBBBFBRRL
+FFBBBFFLLL
+FFBFBBBRLR
+FBFBBFFLRR
+FFFBFBBRRL
+FFFFBFBRRR
+FFFFBBBLLL
+FFFBFBFLRR
+BFBBBFBLLR
+BFBFFFFRRL
+BFBBFFBLRR
+FFBFFBFRRL
+BFBBFBFRRL
+BFFFFFBRRL
+FBBBBFFLLL
+FFBFBBBLLR
+FBBBFBFRLR
+FFFBBFFRLR
+BBFFBFBRLL
+BBFBFBFRRL
+FFBBBBFRRL
+FBBBFBBLRR
+BFFBFFBRLR
+FFBBFFBRLR
+FFBFBFBLRR
+BFBFFFBLLR
+BFFFBBFLRL
+FBBBFBBRLL
+BBFFFBFLLR
+BBFFFBBRRL
+BFBFFFBRLL
+BFBFFFBLRR
+FFBFBFFRLR
+BFFFFFFRRL
+BFFFBFFLRR
+BFBBBBFLRL
+FFFBFFFLLR
+BFFFFFFLRR
+BBFBBFFRRL
+BFFFFFFLRL
+FFFFBFBRLL
+BFFBBFBLRR
+FFFFBFFLRL
+BBFFFFFLRL
+FBBFBFBLRR
+FBFBBFFRLR
+FFFFFBBRRR
+BFFFBFBRRL
+FBFFBFBRRR
+BBFFFBBLLR
+BFFBFBBLRR
+FFFBFBFRLL
+FBFBBFFRRR
+FFBFBBBRRR
+BFBFFFBRLR
+FBBFFFBRLL
+FFBFBFBRRL
+FFBBBFBLRL
+FBBFBBBRRL
+FBFFBFBRLL
+BFBFBBFLRL
+FFFBBBBLRR
+BFFBFBBRLL
+FFFBFFFRLR
+FBFBFFBLLR
+FBFFBBFLLL
+FBBBFBBRRR
+FBBFBBBRRR
+FBFBBBFRRL
+BFBBFBBRRL
+BFBFBBBLRL
+FBBFBBBRLR
+FFBBFFBLRR
+FBBFBFFLRL
+FBFBFFBRRR
+FFBBBBBLLR
+BFBBFFFLRR
+FFBBFBFLRR
+BFBBBBFLLR
+BFBFFBBRRL
+FBFBBFFRRL
+BFFFFFBLLL
+FBBBBFBRRL
+FBBBFFBRLL
+BBFBFFFLLR
+FFFBBFBLLL
+BFFFBBBRLL
+BFBFFBBLLL
+BFBFBBBLLR
+FBFFBBFLRL
+FFFFBBFLRL
+FBBFFFFLRL
+FBBBBFFRRL
+BFBBFBBLRR
+BFBFBFBRLL
+FBBBFBFLLL
+FBFBBBBRLL
+FBBBFFBLRR
+FFBBFBFLRL
+FFFFBFBLRL
+FFBBBFFLRR
+FFBBFFFRRR
+FFBFFBBRLL
+FFFFBFFRRL
+FBBFFBFRLL
+BFFFBBFLRR
+BFBFFBBRLL
+BFFBBFFLLL
+FBBBBBBLLL
+BFFBFBFRRR
+BFBFFFFRLR
+BFFBFBBLRL
+BFBBBFBLRL
+FBFBFBFRLL
+FBBFBFFLRR
+BFBBBFBLLL
+BFFBBBFLRR
+BFBBBBFLLL
+BFBBFFBRLR
+FFFBBFBLRR
+FFFFBBFLLR
+FFBFFBBLLR
+FBFBBBFLLR
+BFBBBFBRRR
+BFFFFFBRLL
+BBFBFFBRRL
+BFBBFFBLLL
+FFFBBBBRRL
+FBFBBBFRRR
+BFFBBFBLRL
+BFFBFFFRLR
+FFFFFBBLRR
+FBFBFFFLLR
+FFBFFFFRLR
+FBFFFBFRRR
+FBFBFBFRRR
+FFBFBFBRLL
+FFFFFFBRRL
+FFBBBBBRRR
+FFFBBFFLRL
+BFFFBFBLLL
+FBFFFFBLRR
+FBBBBBBRLR
+FBFBBFBRRL
+FFBBFFBLLL
+FBFFBBFRRR
+FBFFFFBLLL
+BBFBFFFRRL
+FFFFBFBLLR
+BFFBFBFLLR
+BBFBFFBRRR
+FBFFFFFRRR
+FFBFBFFLRL
+BFFBBFBLLR
+FBBBFFFRRL
+BFFBBFBRRR
+BFBFBBFLRR
+FBBBFFFRLR
+FBBFBFBLLL
+FBFBFBFLLL
+BFBBFFFLRL
+BBFFBBBLLR
+BFFFFBBRRL
+FFFBBFBLLR
+BFFFFBFRLL
+FFFFFBBLRL
+FBFBBBFRLL
+BFBFFBFRLL
+FBFFBFFLLL
+FBFBFBBLLR
+FFFFBFBRLR
+BFFFBFBLLR
+BFFBFFBLRR
+BFFFFBFLRR
+FBBFFBBRLL
+FFFFBBBRRL
+FBBBFFBRRR
+BFFBFBFRLL
+BBFFBFBLRL
+FFFBBFBLRL
+BBFFFFBLLR
+FBFFFFBRLL
+BFBFBBBLLL
+FBFBBFFLLR
+FBBBFFFLRR




diff --git a/resources/input06.txt b/resources/input06.txt
new file mode 100644
index 0000000000000000000000000000000000000000..066f613981adda1259e599fc6b6b1df87167e742
--- /dev/null
+++ b/resources/input06.txt
@@ -0,0 +1,2042 @@
+ybcgtxznorvjel
+brlyvoexnjtgcz
+lnbgtxvoiyecjrz
+
+lcajnyxgzqwim
+qznygxmlvwja
+gmjzynxaqwls
+
+cmljinrupeykatzdsfox
+ugwqhknvb
+
+gsdqbrnhotmfwivl
+prozsgfwnthvmiq
+
+vsjpurgokf
+dfxpqzabeulknwmjvcsr
+pfuvstryihjk
+
+islxfdrtvzwkyoguh
+ogylskzvuftqhirxbdw
+fkrtgsxudhioylznvw
+
+c
+c
+
+uvwigmrlpbqh
+qvgriwlbmhpz
+nhlsptgbvwimrq
+
+izhmeksc
+zarebypguktc
+fzxkveoc
+hzcneqkl
+
+wsaklcyumfjgxpe
+gjlueyimxawpkoscf
+tgpaeywujxkslmf
+
+uzxkhngrtem
+heumxtrkzgj
+kzxtqvehmfyurdgi
+xmhtzrukeg
+tkhgujzmxenr
+
+veaxitpwqlkmfcdgu
+tuylgfjb
+ftuglh
+
+uqnklfemcd
+fueknldq
+eqkfdhnmtl
+opyelgnqdfkxw
+qzkslfden
+
+q
+bu
+k
+q
+
+wqeaklcysthvrb
+srhcatklwbqyev
+ylrqbthswkceva
+tsbryhlavcwekq
+aketrswybhvlqc
+
+tyd
+ymt
+yvt
+
+hwvclzeby
+vywecbhl
+wecyqsohlvb
+cvlwheyb
+blyvewhgc
+
+wieapdrco
+edicwpa
+cpdwia
+hdwgyvpica
+
+jvy
+fjv
+vj
+vjf
+
+czdf
+dfzc
+dczf
+
+gpmrwtuoy
+tymroagbipw
+wombgpcyktr
+dtrlongqypmwhsjvfxz
+gmrwpyto
+
+ocnmpvjx
+pvjxcm
+bmyjrgvxpkc
+
+jeygorhmxiak
+hxifjagoemr
+
+ncjziqtmpawdufxye
+eubydnxpatfwjzkcm
+
+abmysdl
+cpqbifaynmdsl
+mjsbdyla
+mrdbvjswyal
+bvsladmy
+
+qafokiv
+oqhaik
+oqmkifa
+qaligznro
+
+aiblwmouqx
+mqwbaxolui
+oxuibwlmaq
+
+zvefqkjusco
+xuewoskj
+kuzfqjsoe
+puankilsjodbre
+kutoqsjefh
+
+celsgxhzpjrodmitfukvn
+ejkrmnpsgfxvoaihulcz
+zuimrfyohspkjvcxelgn
+
+lbrxfchematouyniw
+labiudxyoenh
+ikelubxgaoynhz
+jnahsdibeuxylov
+xovbhaiunlsey
+
+ipsrknazqblw
+dgxutyvejmfc
+
+sxizpwamjhn
+imhnzxawsjp
+ahnpswxmizj
+wmisxanjzhp
+
+gtbhymj
+zawfkbsiud
+
+gylpjarczexv
+zyajpvoecrlgx
+kzrlojeayxgvp
+veztfaypxqrljg
+
+xfivwhodjknmzauqcletpygb
+hypeczniafgkoqultxvbdwjm
+qxfhjptgnlkvycoudwmizaeb
+jizanpbfcyuetmqokhlwvxdg
+gjwtexvdfpuamiconybzhlqk
+
+tvy
+yv
+yiv
+yv
+yv
+
+whueklivtpca
+iplkuahwe
+tlsekhiuwap
+mizpgjwlbahuekr
+
+mdp
+mdp
+mpd
+pdm
+
+xjnhkvoewc
+osfjprwxhcieavkd
+hqjxwkvonec
+jlgxctoqhevwkn
+kzvjhyxweco
+
+yk
+yk
+
+hdnxtrvyeiwam
+asrwvdhmxeycint
+vwxptebdzyioagqmhr
+
+tfczy
+ctyfn
+tycf
+cwytf
+ytfc
+
+rmtbfezuojpa
+utbjepomarzf
+rbatejfumpzo
+frtuoepamzbj
+faejrztmbpuo
+
+afenbkzjyugowxcpvr
+wouafcenbpjvkygzxr
+gvneprcbujxzayokfw
+vzyparnkxcgbfwouej
+ubzxvkrcgnjeapfowy
+
+vwuqrecngfdlk
+lkrnvqgufwdc
+wrnldgkqvcfeu
+cuwnbgvqfdrkl
+
+xbh
+vacqro
+snxumhe
+
+gxlf
+fglx
+gxfl
+xlgf
+lfxg
+
+uzlryvkmdbweqjocatxnhi
+lzjedxqowyhmnabkiufvcrt
+ntkrmlwcqdbzaxejyuhvoi
+
+fbns
+nbf
+nabylt
+
+arsif
+qzorln
+apb
+gcvyuhxtkwe
+jm
+
+svu
+uvz
+pvuf
+ucv
+
+hpjfklnwizys
+pzrcfhyslkiqwn
+zskfylihnpow
+wgfbdkszlypeihn
+
+vkmcijegnxar
+bvknimxrejcga
+vegkjcxniram
+egkjvmxciran
+akgixcjrnemv
+
+ewixgnuavo
+unoeayxkgi
+yeiaucxnm
+ixaekznu
+ajulsenirbqtfhxpd
+
+frqlmnxdbgewzo
+rdtmqlzovkbuncj
+qmzxrndoeiyflb
+
+ukpnyzjiohf
+gjfpkinzuoy
+ygjozinfupk
+iyvjpeozkfnu
+kiupfhoyjngzs
+
+hrpwvsugjafeoyd
+djawruhovfezcb
+
+cepdjoqftlbanyzxgh
+cgnayjbfxzeophtdq
+
+xqg
+halqr
+qub
+qub
+
+po
+ldjb
+
+zxnqu
+zduxsbq
+nzuqxgf
+niqzxu
+zquxl
+
+qn
+ev
+cz
+bmwjfhlg
+
+kpfrostvwjqzd
+ukbsrjpdzfcowq
+
+yjtl
+jytl
+ltyjz
+yltj
+
+dwty
+djsct
+gtdj
+
+hoj
+jyho
+jhos
+ojh
+
+eupzntdmk
+pulhzta
+
+vdfuricnlkjq
+cdufvkijqrn
+fkdrpnjcuviq
+qnfvjudcirk
+drijcfkuqvn
+
+nvbldpqsx
+wbdzhqp
+iamjtyfg
+
+iwqexpmtoadjvryuzshk
+twzoyhjukxmqsreaipvd
+umryqtvxsdpziohaejkw
+eruvdmyzapthwqixjkos
+
+wtgkdqunxroablp
+uqmljdantokrpwxg
+nkoupqzlgxwdat
+
+vepioalcghjydn
+zutlfxvorkn
+qbvnlo
+
+lmie
+ebim
+ykmhei
+smie
+msbeic
+
+segdzmcnijfpy
+pmngjzisdcey
+daumgeznqikljcyp
+
+hocwkeizbmvgnsd
+jfirpydx
+itqjdyl
+
+dbwtrzqo
+bwdztr
+pwbdtzr
+wrtbdz
+
+tcl
+ctl
+
+izfnvwsygkjp
+nkfpvyzsgij
+ygjvfipksnz
+kvpgjysnfzi
+jxiboavkfnzgpsy
+
+gxulavdzi
+xeorucjdlym
+
+hfc
+cfh
+
+oaixdvhwf
+kuivdwfxzha
+
+jsxny
+ynsxj
+yjxsn
+nxsyj
+xysnj
+
+usnjaimqdl
+dnuxgy
+hdnpcugz
+
+ejofu
+ufe
+uef
+feu
+
+defovtzlc
+avocyzft
+zxwcvftb
+
+cbga
+vgb
+
+rac
+a
+jgzaxotn
+av
+
+ugnotpd
+ntugodpx
+pudgomt
+tdislogp
+
+filsprncvbdamgozwuh
+fzqucamrswpihvdlgob
+
+keaqcjtmzwipdyonvufsl
+voysnkmwlzqpfeguiacdtj
+ndacvykmeozbsuwpiftlq
+wodcqfputzknsyevilma
+
+aobpjhfwndq
+wnbjofqdpah
+fnwqdcgxphabj
+wadfqbhinjp
+
+dfegup
+pdgyu
+
+qmdthgnfsoacekpjr
+zwqjois
+
+cuqwdn
+cdnwi
+cwyvd
+tokwjdsxcr
+
+hlbrqytujx
+fdcxlwjquyznksv
+wyupmxqjfilsk
+
+hkrsp
+yhwpsrk
+krhsp
+gorspkh
+
+kdnsfavte
+snadektv
+namkstved
+etavlknds
+esdatkvn
+
+zbvuponkx
+zkjybcanxi
+xbunzkv
+
+sixh
+xbgha
+
+uxfay
+urqibka
+uao
+
+lsjkxqirzbcw
+sqkbzwjclixr
+qsclikrzhxwb
+
+ozldp
+dlpz
+dztglp
+
+rl
+lr
+lr
+
+xchdwlniyzjvfskqgu
+jczdgywxisl
+jxyspdclgizmw
+
+dblfawuprytvz
+mceiqnsxkgltp
+pmcxtohlg
+
+s
+s
+r
+zdkl
+
+xsftzi
+rhmvobe
+gitkn
+ucgzt
+
+zfboewhsdi
+sfozwbdhie
+
+iulc
+cilu
+iluc
+ucli
+
+orlegwpi
+polwidg
+pomlwiy
+
+wuzngeba
+bnazuce
+ubzane
+
+vywm
+ym
+
+nfmsueclkpqgwai
+utlevwmrcxosqkpd
+
+stkubmdgxnprayjvihocf
+jdnhiurkyopfsbmagxtezcv
+fokmgyscrpijnbhxtudav
+caogfvytximuhrjdpbnsk
+
+rsabjcmtdwynx
+bficzdrnlsjouhta
+
+mw
+wm
+mw
+
+iebmfugxoyqlrpcvjztkwdnh
+pelfsdutxqcymaozjhnr
+
+pebjavucfqyrdzgml
+cbzypflawgmjuvredq
+yzrujflgcqebvdapm
+gbfuqznldejsyvparmc
+jcaqeuwvplbfgdmryz
+
+hkg
+xelcms
+f
+
+lihonytfdumjsewrzabpc
+hlpcdubrwoazsfmiynetj
+owuibptxmdhzyrecsfan
+
+riosndbpujgcwethz
+hwfrzietbougpsdqjn
+drntjpzeguiowshb
+pwubneoztjsgdhri
+rezkbtghcjwdoinspu
+
+njsa
+u
+fb
+
+sfx
+s
+s
+
+ucqsmn
+istuq
+
+ingklxq
+cnoekp
+
+jlygxaiwrpdfnheouvc
+dvfaingtxwpkozjhylercu
+pigfacjweynhuovxlrd
+
+vpxbtozuemlny
+jkgymlvebinctudpxa
+byzxemqvtulpn
+ytvunxzwqblepm
+
+jfbkglhtpqudix
+grnicbtpqzdxv
+
+bfokwpmzhtlgquaiejr
+iawgbmqvzleoxrhtfpu
+zwompxutlbhaifseqrg
+xpbqhitclyzrunwodgfesma
+
+q
+qg
+q
+vq
+q
+
+ekipdozabfsxvugqltjwyrc
+dztsokinlyrfxceqjwuavpbg
+
+eqnkifs
+ifqknes
+
+laecqkp
+pugqayce
+elcxpraqoj
+pecqvfwa
+qcepljak
+
+arnb
+qnab
+nbaq
+dnbaomv
+
+cbormguajxfiplwvts
+dxifemjgwzrobtlpcqvua
+aofmcpilxjvbguwtr
+
+umvdxnwzfqapk
+pwuqfzadjmne
+uzqpmfyacdw
+
+mhaeksjiqb
+bfqjokusih
+jgklnsivbywdc
+sxpkfirjomqb
+
+nhzaplu
+ahkipmvo
+brtjwg
+
+mkjxlagycu
+uckjxlgma
+kjcuxmgal
+
+ve
+ve
+
+jvkobmcq
+gjmqkobc
+qjbomcwk
+cybojqmk
+mjbqocfk
+
+ducqha
+qdlhac
+
+wlfkid
+hipcfkwdlryb
+fwlkdi
+kdifwvl
+
+ezs
+sze
+esz
+zes
+esz
+
+hz
+utfzphv
+ahzgk
+shz
+
+jxclzr
+rwfjmu
+jro
+ojrlny
+
+topn
+wbcojtesg
+yrdlqhfz
+
+wktxsnufbhygzraijlcoed
+ciokuzgyrsenbaxhdwjft
+nszoywipjhrfxgqbdaeutc
+tcxzrysbfuieaovndhwj
+bkyouicwtfzlxshjaednr
+
+aoylnseditpgum
+ounmkyzedplaibqs
+
+fahocyurtgvbsq
+byufcgohqvatr
+guvoyqthcrbdfa
+cbfhayvqrugto
+
+dgil
+dig
+idg
+apdgi
+dig
+
+rfzmeoyuq
+remzyhbip
+xtvrykdsancjzmw
+pzryfugom
+eryomgzlh
+
+ro
+or
+ro
+doar
+rpo
+
+tbomqznewpgu
+zpwbegtquonm
+gbunzwtqpmeo
+pmnobqtewzgu
+
+tzkielrca
+pwgouhfjvdybsnqm
+
+bqxr
+om
+
+fkvlmqye
+bnqlyda
+yojczstxupq
+qiye
+
+wcdl
+wcld
+lwcd
+wdcl
+
+udx
+suhx
+
+ypmrvaj
+aphrjxowvyz
+jarvpmq
+vpcwarbj
+tugveaprjsn
+
+cubgyqflopxnj
+apnxvc
+
+c
+c
+c
+c
+c
+
+ykdeblvoijpqtns
+sbnoigt
+nbmitoxas
+ibosnxt
+
+klbdfgmo
+va
+ylcu
+
+sgdrutfcbwxleyvmqjoz
+hztjqbduiefkvxwcygmolr
+eymudvjwlqcxrzfgtob
+
+jcghosr
+jpagrmecsho
+
+xtlgomkfpciezyq
+ylrgtxmchkq
+dgtlkwymvxnqc
+cgxalbkydwsjmqt
+
+lvg
+vg
+vjgka
+
+xulzdqyef
+xuezfldyq
+zduyfqexl
+lqfezuydx
+
+afpboknehzmculswdyjqix
+winjabfuyedmzoshxlcqpk
+smnaybfjzkowdpleiuchqx
+bqsuknafemzvpljihwycdox
+
+huvrzdawnce
+irvodxzmnksq
+tvrdneazfcu
+nldygvuezr
+
+ifwousayrbjvxcpld
+ugrnfjhvbcoatspxk
+vsiobyrcpjdfzuaxq
+
+ubeisxaw
+klqn
+ok
+rmf
+n
+
+j
+grpy
+mnwf
+
+yrsnckxbuvhdtmgeqapj
+asjkxuymdbrlechvqotngp
+adrjpnbhmutgkxecyvqsi
+
+agtlryz
+pywxhgqu
+okyghqduj
+mbycgvhjq
+
+aihswznpod
+bdaezc
+
+grdiok
+dtkoxqrnl
+
+vqjpfiembrcyohxlgdts
+uhvgxiceoyafmtpqs
+gqpcfextaviomwhys
+voygtpxhmiqcfse
+
+alv
+xohjegy
+
+k
+z
+h
+
+wdoc
+dwco
+domcw
+
+pencwlstgb
+toapxnsye
+taehsxpjn
+
+unhav
+dbslritz
+eucw
+ekv
+eag
+
+fewghvcj
+hcejwfvg
+jgxwfvclheu
+ewjfzvghc
+ehfcgjwv
+
+moaclkpxythqvesdgzuwib
+nrvlkyaiuhwsxfjzeoqmdb
+
+hda
+dah
+dha
+dha
+dha
+
+kgu
+efntky
+liw
+zyh
+
+zqtohusn
+jmuhq
+lxqvkruhciwey
+mjqthzanbu
+
+ljtief
+lijeft
+jlteif
+fiejlbt
+fjtlie
+
+qdxygilu
+tldagovk
+npmdckoaltg
+
+i
+i
+i
+i
+i
+
+wk
+dal
+uzmbsen
+k
+
+cqlxwzvetfakbidmgoujhs
+afzghkswqibynljtoecvrx
+swzkjhatgqvblxfneoci
+
+h
+on
+h
+h
+
+fzvckrajbeso
+ejrcfnsxv
+tlupewdmcirygv
+vjqrec
+
+hadxcqevfmr
+hxdarvmfcqe
+chdvexqmfr
+vrhmxecq
+ehoxqnrcumv
+
+wkdtuyegzqichna
+uihqapcwdmteznykg
+tnjrqcydihfgvwzbseuak
+dagetcyqizhnuwk
+
+jie
+bei
+ei
+eji
+
+td
+t
+t
+t
+
+dbqvtxjeranwmofhigc
+mtgcdevirwahnxjoqbf
+cftanqvibjmhxgowyred
+
+iqgphzrawkevmjfds
+jhifptdmra
+jdxaobfypmnhirc
+xtdamplhrfibj
+
+majypozns
+pomjzusayn
+zmspayjon
+mjnzoaspy
+
+puvwane
+avwpnue
+ewvaun
+dauqnevw
+
+jsvcumahzqktyp
+obifedg
+wnolrxg
+
+ewgot
+odycnb
+tjgwo
+
+di
+id
+id
+di
+idcw
+
+itovydpksgxmblqhun
+ogxaiurvmhlsfwdbpzcy
+gdemlsyaijofbpuvxhz
+
+kwdqozmvuegtsrxi
+uyetkxigdwosq
+
+cw
+cw
+cw
+
+aoh
+ano
+
+rnywdtil
+dpvhtrf
+tgblnpd
+keactdx
+tgrdzos
+
+mfip
+impf
+fmpi
+impf
+imfp
+
+kqpvbyjnewx
+ywjxpknqzeb
+nqeukpjbwxy
+penxzqbjykw
+
+zpyjigfcuxdktarq
+yapfiqrtdkcgjx
+aepjcrbgyxftikdq
+jptaiqdcykxrgf
+
+ftwedcvib
+btcdfewl
+ivdfwbtce
+ftcdxeqbkwu
+bvfeitwcd
+
+uiqj
+qi
+
+oxghqnsd
+udygoh
+hdoxg
+rpafchvogd
+
+hpbytijfwx
+jywtpixhbsf
+pwhyfjbxiqt
+qtipwfjxbhy
+xqhfbptywij
+
+dfslmxhie
+smzwlfqehi
+
+kpr
+stcve
+
+irt
+rti
+irt
+rti
+
+bunl
+nlb
+lprhdby
+
+bo
+ob
+ob
+
+bowdlaegtqypmiz
+wonjglmdyapqhike
+
+akwfdicyteo
+kaoewyidtcf
+wyafoeitckd
+ctwaifokeyd
+
+usikpnl
+plunkis
+nliskuwp
+upisnkl
+alinspukr
+
+fmosyehatupnxcrbl
+zmtfcoghsperajnbylxu
+ltnfweypcbmarosxhu
+fuabtspeojcrhknlmyx
+pcmdlsoxrytevqfnbuahi
+
+tpjvhomdzurfsbqgxieynw
+deopwshxkgtibylnzqmrfujv
+bpxszafutyhgdenwvmqijro
+ixtjfrpbozsngqwmduhyve
+elfvxrhspguyinzjwtmbodq
+
+kvgqfjtzonx
+lptjicfezk
+tbxkfjmvz
+
+d
+q
+d
+rg
+
+gvnmslbrqduhipyx
+sygxvmblqrjhipau
+ufirbqgpvhsklxmy
+bhrpgqxmivyulzs
+
+mdfikeywgxsqlbn
+ilqgnfbdkexymsw
+mynqlfgeidbkxws
+kndefxlymisbgqw
+bmgfeiwxkndsqly
+
+firjqazycdmlpebwvkuh
+nyopgcvhsxlujedkmfrq
+
+ctmupagrjydizes
+hdqxglckzvabwi
+
+uogtnvfbwa
+qkgxofaeictuvnj
+ngfuolytshmvr
+
+bhgrcpltzvqjwfas
+tchsrqzwbpgvafj
+wgharjbsptqzfvc
+qftchjazrgspbvw
+
+sbzjewryqhpxcivnk
+expnzhsqykirbjcw
+oyagjndwhkpxlqbmcrizefs
+
+sfhpqjndwvb
+rjvbwnphsqfedm
+ndbphlfwjvqs
+
+whrefxbvuma
+hxmrubvfwea
+
+t
+t
+t
+
+favkeblzcnt
+ymcz
+xucgdszp
+cjzrh
+irpqwozc
+
+my
+m
+m
+
+alsknvxifqcpjymrz
+fpjcrqzmlyxvsaikn
+
+yaj
+ykanc
+atx
+
+ilupyjozc
+zcjbiolu
+czjioulsg
+cokzbjuil
+auvmjzohqrwilc
+
+wsxunpgv
+vgwsu
+ugswvq
+usafwhvg
+gfwuqsv
+
+s
+sw
+
+wvqdzfolabmirjc
+ljwarzcmbfqodiv
+aswzbmdjtnlfqovgxc
+
+znrmjsy
+nsjrymz
+ymrnzsj
+
+vpgac
+dgjvpcua
+vycgpfa
+pvcga
+rapvcg
+
+mb
+mb
+bmnt
+bm
+
+gsnjzuby
+wntqv
+nhld
+
+onzrkyudwapxf
+dkupywnraxof
+
+lmst
+slmt
+tldsmvp
+tsmol
+sltm
+
+s
+n
+
+qsagxhkyeinrvb
+kiyeqrnbgxvash
+syerxqghivnkab
+rqkasenivxghyb
+
+ncfrvqmgkahtpbozdjy
+fvdzwkoam
+lixodafekmzv
+dokuazvfm
+zdoakvfms
+
+vlhbq
+ouqvrxhls
+sfhqlvx
+
+qxorudp
+peduq
+qundp
+qdpu
+
+rhpyabj
+brycauhjp
+apbhrxyj
+
+ygk
+ktpy
+kvyn
+yvkn
+
+xkhagnmpdcv
+hjoakl
+
+dxcjugqvpleairsytkh
+rqndpilgchysvoeutxma
+
+njeikmhawblcdxoygufrpt
+gnrxuicweofdtpkjhslamby
+perifdanxhwtbzokgumyclj
+
+ghpdecujkxzltysfbv
+xftkvhudgcplyjzesb
+cbksuezftdjhwvxgipyl
+
+wxtz
+wztx
+
+bcva
+acvb
+avcb
+
+oydfhxunzaijlpgeqb
+qzeafxwrpiycndmogbj
+finjbylagzdqxoep
+pyqbjondvzgefixa
+aonbixfejqdpgzy
+
+edzm
+ejmz
+mgliz
+
+q
+qb
+yn
+glq
+fwu
+
+whbkfvgpmjzdl
+gzmvwpjdbltfh
+
+prkxeaoygt
+zfrewaysbtx
+
+hoytqlezuxdmcnw
+zqtyewudcfnomxh
+hrxinwocqtdemzu
+wzmjhquxdngcpoe
+
+pnwldbucofxq
+nlwbcoqfxpud
+icwpxnbodyqmluvf
+ozfwdhclupxbqn
+dcqonulbwpxf
+
+ywfjkqrgidnhbuea
+aeyidkwghubrjqf
+ihjrakdwbuefgqy
+irdjgbwfeqaukyh
+hyeujqrkiwdagfb
+
+jstapqk
+wmeujqts
+utzmwqjs
+zxqbmstj
+yrsthdignvqj
+
+yva
+actvy
+
+okqvf
+mfok
+akfno
+oakvf
+
+cdfugre
+gedfucr
+dfcerug
+
+ingczmjrfp
+pmcfrgnijz
+mepzjirfcgn
+zsnmhpfguwircjq
+
+dpw
+zlpwd
+pwd
+dpw
+
+wbzluvga
+yiupsdj
+yfu
+ncfou
+pfu
+
+fbxnrjdosah
+rnfdasxjbhoz
+nohdxufrjkabs
+
+dfgyeismzkr
+nhukvdazrwgqisl
+xbzkgsmderi
+ksditprgzb
+zkdsgir
+
+gjytlskbrhdcwfq
+ljirabqwtygcosuhd
+
+bk
+kbdi
+yjk
+ik
+
+ksquemnvtlxofj
+xeqoflmadtunsvjkc
+jtvnequxslfmok
+qvnkmtxosljeuf
+
+zxqlnj
+qzkjl
+jqlz
+jlqz
+qjzl
+
+jniylks
+jiyheksb
+jydtiaks
+
+o
+o
+h
+
+e
+e
+e
+e
+
+hrpgqasc
+grpschqa
+rzgcsjphq
+
+ecitkohxdb
+okteihdcxb
+xobijctedhk
+ktboecaixhd
+
+paubelofzrwmsvhg
+pagezysfb
+
+esgvqfzkijypan
+zeivfdksgqapyrjn
+
+wi
+i
+inkm
+i
+
+zcun
+uc
+uc
+okcug
+
+trogu
+oyrug
+ozgrfuqn
+
+raj
+oz
+pbr
+
+iwhxjelgd
+jiwhexldg
+hlgjxdwei
+jlwxhgeid
+xhldjzgwtmief
+
+kclge
+srlkec
+kelc
+
+eofisurvqxh
+ukvfrisqxoe
+uexrqifsvo
+
+okdimecwvfuhrljtpxgyanbzqs
+xacwijpeqlkbuvdsgofmtnzhyr
+
+amwgdsovpnryclfeit
+rcwyfevgotlidanspm
+vtneaoylpdifcrwgsm
+tonlrdacsfigpyvewm
+pisgdcmtovwfelnyra
+
+uetxnmzilhksb
+kminofleutjwdpz
+tmeculxqkzin
+kqlimryetnavzu
+
+cmnjsbqvde
+qmzdbnjsv
+vngjtmpsbqd
+dqnmspbvj
+dmsqvjbn
+
+kgxdn
+gxndf
+
+onpwxkus
+sgnpkw
+pwnrvks
+sknbpwta
+wopksn
+
+gfqylwtcvpjsk
+cwvplskgfxty
+lkgvywscptf
+ogwspvfylktc
+
+dgbcvjfieurw
+iknqeztowur
+
+fzsar
+fno
+
+jiaxdfroq
+rqhxjigaynd
+iudjaqrx
+qmxardfvji
+qxjcdira
+
+ghfosy
+yfgs
+hfspb
+fucaiq
+
+ynrbkleixc
+sezybviarnl
+
+ywcanufmveh
+vafuecjm
+
+qcrmvuihkboexdlftp
+kufohcswxpearvbyqd
+hrnzpkocxfdevqujbs
+qoxuhjpfvbckdre
+gkdfvpbheqocuxr
+
+wtk
+ktw
+
+xcadnijfkvqystgluz
+kznliathwoxsmvybrgeqf
+klzsivxayqnfgut
+
+clo
+lco
+ocl
+oacql
+lco
+
+iyzkvsdhpngo
+remlyvz
+
+uyzw
+zuv
+zu
+
+tq
+t
+
+oeicrl
+byxrsfdz
+rcjog
+cr
+irck
+
+pgistdzl
+y
+xmq
+m
+afn
+
+g
+dhg
+g
+vwg
+
+nfgtoy
+ugyft
+tygfo
+futyegr
+gstlwpkyf
+
+vn
+nmv
+vn
+nv
+nv
+
+ozivnfbaktuedlrcs
+oramfqlcbuswtvdzjni
+
+jxp
+xpj
+
+mc
+wabq
+lrgsuezypd
+wiv
+
+eofl
+snpkflyqmdzwb
+jehlirf
+cjflrh
+fljc
+
+ltubcvkymoajwxzsrhndpgf
+ogvibsazqtujrdewfxymph
+
+egdchpsvwjfaqybn
+zndqagubwpkscyjh
+
+wlbjgnopeayszicrmf
+nosbgiezpjaywqfmrlc
+jgilbrmwosyzcafnep
+agycorlqmzweibpjfsn
+zjlrpnfbeasidmcgyowt
+
+vijh
+ndsfcamyxz
+woujvp
+
+uhealmbgtyix
+zilxmb
+pvxlfqmwsidb
+
+fjmdnvrbg
+gdlvuqhkpb
+kbczdvgp
+
+lqkt
+tkjqi
+
+wcrmtpf
+bkqws
+
+ngzltjq
+nlkut
+iwlrytn
+xltsmnu
+ztlnacfj
+
+exfviczl
+iczhelxv
+zelivxc
+vfilzexcp
+xlzvfice
+
+ytgac
+tacyk
+qacy
+candymh
+
+yrqczhgfovwnisbu
+vhlgknps
+
+sbwugclexy
+wbzuhlgsc
+umvwiknljcdotbfgs
+rluhbcqgsaw
+
+vymaruskjc
+akvrsmjuyc
+vrcyuasmbjk
+pursajkvycm
+czpmyusvajrk
+
+ofwvqmlr
+vmq
+vmq
+
+ysnwieoauzq
+nuyqesaowz
+yoesanuwqz
+kuzgoswayqnle
+
+eomivztrgn
+ivmretong
+invkmrge
+vnmzegcri
+vyrmflsjgiuen
+
+eqrmyzpvkwfbgtjlxshdoin
+gzolfstrvybjeqnmxpikhd
+nroxitkevgzmypjdqbsfhl
+ofgmtrjilnbekxhsqyzdpv
+dhlqnvgsjiyzbkpotxrefm
+
+hozruskcedfwiaq
+coptzfyuvxldrm
+
+l
+l
+l
+
+dyslqoiw
+ymjqdi
+
+syxnhbi
+dpkvjr
+eukgwozaf
+ekjz
+
+yvwbgqcrotjlnpeha
+lhpoetrgabvnqjwy
+blgszmfkhyntepwoaixqrvj
+byrpjoenhagwtuvql
+
+z
+v
+tgy
+
+d
+d
+d
+d
+d
+
+dc
+dca
+dc
+cd
+dcz
+
+locsfetpwknxbzgvja
+jxgnvfzphceiskaotwl
+fotrsavxmjyhnwpgzelck
+sfvpqhxgyjeonazclmwkt
+choefxapjniztgwlvskq
+
+kbyxoztlp
+ilptzojgvnexw
+atxmzkolcp
+uqkszlopdxt
+
+zj
+ojpz
+
+khjzinxbsvytagfwrdpclm
+gkfnjmrsaxublcov
+nxlacsrmgkvbfju
+uagsxkrfmbvcjnl
+kexajvcfrnlsmgb
+
+jwstzrmqyg
+qiolxndue
+
+aljc
+onxjpaltygwvucz
+qacrjls
+ajcfhl
+ijqralc
+
+hinlgsoyjrwux
+onlujsyxgirwh
+
+l
+l
+l
+l
+l
+
+eoqhmwpjxdkib
+dpewgjm
+epjmdw
+edpnmjw
+pjdewm
+
+wvhaks
+vrgoah
+
+dvqanm
+ladgcypwnmhjz
+xsidnmae
+fidranekum
+datnmb
+
+vkashdfylrcigpz
+fzpsydgrvwcl
+kdpglscryfz
+sgzqcytfoplebudmxr
+ldzsywpjfrgc
+
+gtme
+mgfptwe
+tmge
+
+ameogqc
+ogqcema
+meocqag
+ecmaoqg
+oeamicgq
+
+jg
+hgij
+fjg
+
+dgypvjbrik
+zriqkvgpdbjaxy
+
+ezfbiwhrtgl
+ozfxebispgdtnv
+btegzjafui
+
+jiabmdnuftcsgqw
+kazroxypl
+
+mqoaxjcuzhngk
+jgswxaykfmehvuiqzon
+lbuakqzjhdmnxgo
+
+bacszqyketnvpguofhrwmx
+ptszqxamuewikbngyfhvdroc
+heqrcosaxtwgbplfnzuvykmj
+
+knxabluhoyviedjfpsmrqcw
+scqixedwvumkoanjbrfyhl
+tisjfuywcqnremhobldkaxv
+shvojgwydialxekbmcufnrq
+
+nyxmrhszik
+mapcikqstjfrzx
+
+gdlctrjzek
+hjsgkeyr
+
+qepm
+eqlpm
+eqmp
+mqxepn
+pqem
+
+bvgkrl
+vboc
+wcbvziu
+vqfpdabh
+
+gpn
+ngmpc
+
+twpvxflgjqoumydkbc
+uprelhcmqwdksixynzta
+
+h
+h
+
+jhnxwesqrpc
+vpsgmitbaoyfudjz
+
+yuwbhtsmjlcqefdv
+ebmutvlfcqdsjhy
+utswqzjlbvycpadefmh
+sejvrxgqdlmbtouyhnfc
+zijctvqmlyuahfbsdep
+
+dflwcg
+mrflgw
+wfduygl
+
+ytnlzrju
+uvztnjly
+zljbryutn
+zyjlnut
+tljuozyn
+
+hskjpotzxndciuveygqbf
+tovpizqhkfjyxucsgdbne
+zchinjfgpxuvqodbtseky
+ewpzdvhbgqnkcfujixsoyt
+
+hwogmrjsanyfkxcuzlqip
+zgefdbcrvawhsknxlup
+
+vpnoqlyctz
+lazbrndtc
+cbzlduthn
+ztnslmcwkegjx
+
+g
+g
+g
+mg
+
+scdpkxnwevjzuliaot
+ieltzxk
+etkilxz
+ekrxizlmt
+lztxefikb
+
+fojsglve
+
+mpdxfg
+kfdxma
+dkfxavtm
+wnbxdmcof
+
+lsoytwjgnxfpu
+jxnluyisgp
+jygpxslnmur
+npsjlguyx
+
+rdh
+rdh
+
+apbutxfrwydzin
+xrgnqelbdtoczafhjm
+drkuztfnxba
+
+bdmstxhqnrzeyj
+fubwrmohipenjclkgya
+
+usrxcktp
+srxotup
+rulpxit
+euxptrn
+
+pryjxzemofknaqwh
+owzqrhmknsjaedxyfb
+ahkijzwfrmqnxolscvey
+uqnxfkrwmatcsgeyohjz
+
+gq
+q
+q
+q
+
+hbkieng
+behdikgm
+dkbeygh
+ebgshk
+
+xcdliskjvqhazmgp
+zdilgjchpavusmxk
+jwxavzlkchdobmgyspi
+vijgcxakdhlpqszm
+
+qkoxgd
+zkuxdmbyqcglf
+
+hjxscnryl
+nsmahy
+snmhy
+ovthdys
+
+vbwhoizkgsncaqr
+waobkhsivcrznjqg
+wzsrcgnabkhoqiv
+oanbsyrhicgwvzkxq
+hurqnbcgovfkawzis
+
+zxvbs
+bdpn
+qb
+bv
+
+hdkixlmqovte
+ihtrouqdnxlk
+ltioudhqkx
+bxidhtklufoqw
+
+s
+scvai
+s
+sb
+ws
+
+uaxeycr
+aubsiqxrv
+aohrdkxu
+reaux
+
+trcfn
+txbgc
+tcp
+
+udrgmasezv
+zotwyimlkq
+
+o
+o
+tdo
+o
+
+ambertifpjuzvwk
+dcyhwogqfiaxnlzps
+
+smzcqpikr
+szmqcpkri
+cqokmsrpzi
+
+tzkopc
+pkcz
+pckz
+
+avioqkyrntbesulwzp
+oylhrtfzvainkuxbw
+
+hqieuv
+hiqcu
+ihwuq
+
+itfe
+wcied
+uvnigke
+ltieq
+
+jrbmngvx
+wousyqdiehcgk
+ztfplg
+
+zdhewmyr
+wjgqt
+ynwdcef
+kmvnwhfep
+wyco
+
+x
+x
+x
+x
+
+phkfsnxwce
+dztiaygqu
+jvrmltid
+
+ayhkqv
+havyqk
+vyhkaq
+vyajenhgqk
+vakhyq
+
+dxlepoksgznvuyjcihwqtf
+lyqaihgexkcozwdsjnbtmfu
+ysecldonhztfkruwxgjqi
+
+epo
+azoeq
+mfg
+tbujywxr
+eod
+
+myek
+kmey
+meky
+
+iwyngr
+vishbag
+kinsq
+lzxoeticmudfp
+nhjswiv
+
+fbtscavdzrkxeqyuhiw
+orafstylxkgphmed
+fehrsanktydx
+
+covl
+ypkqdc
+xzc
+ejwsgafcbh
+vcutm
+
+mlsfecori
+ehpsya
+
+dpvgtqzocn
+ngdvoqptzc
+toqcdgvnpz
+vdqptznocg
+ncgzqdotvp
+
+adsqywe
+msdeawq
+edwaqs
+vedwasnq
+qdaswe
+
+bqmpnhvtoakiyr
+roufkiapnqeym
+
+fydeiohqas
+sqoycfhad
+safyqhod
+ghadsxfyqomv
+
+qdxmrofjwb
+qwkidye
+lgqyziawd
+
+erqsduihwmjcz
+umericogzyjsqhn
+
+hsct
+hsct
+thcs
+ctsh
+
+vtnbqai
+qtianb
+
+tdwhrmbvyalqfojzicpxe
+cltemhoxwbpqyrijvzad
+wxjmpyzdqoeabichtrlv
+ogzwhbdmtqxecvryjipla
+
+wnkjevsuqrtbfygih
+jzagctiudpbqyfvhomkr
+qtfkshvgryibujn
+
+qowgkyzsfetprnd
+sgrdfepwnyzqtok
+pgnrwdkzofyesqjt
+wfcpkntezoyshgdlqr
+dfrongetpszqwyk
+
+fdmxzviro
+odcszimujfqaknx
+xmoivfhdwz
+yoidfzmvxbg
+
+nxmtopbehydczsrj
+hrtspxjyiwczdngfb
+uzjranxksdbltpyhv
+
+zoia
+zioa
+cazoi
+
+kwfnrcbjushlme
+wsnmelhrjcubk
+
+lhf
+hl
+hl
+
+qvtia
+vqal
+ovqa
+qva
+valqy
+
+jxfkt
+evhj
+kgjo
+puyasnjliz
+xkmj
+
+cbhxvorjpgzd
+dcbxgjhporzv
+pjdbxhrogzvc
+ogbrpjdvxzch
+
+ks
+skh
+sk




diff --git a/resources/input07.txt b/resources/input07.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1390fba3afd7a0e2d60044dd00340162bbda4356
--- /dev/null
+++ b/resources/input07.txt
@@ -0,0 +1,594 @@
+mirrored gold bags contain 3 light teal bags.
+clear gold bags contain 5 light maroon bags, 4 pale tomato bags, 5 clear blue bags.
+dark olive bags contain 5 plaid black bags, 2 dim plum bags, 2 light cyan bags.
+bright white bags contain 2 pale violet bags, 5 mirrored orange bags, 3 faded beige bags.
+posh green bags contain 4 shiny gray bags.
+posh lime bags contain 3 muted lavender bags, 1 clear magenta bag, 5 muted orange bags, 3 mirrored cyan bags.
+striped turquoise bags contain 3 pale red bags, 4 wavy lime bags, 4 wavy aqua bags.
+pale fuchsia bags contain 1 striped purple bag.
+dark magenta bags contain 4 light indigo bags, 1 wavy lavender bag, 1 clear teal bag.
+drab teal bags contain 5 pale bronze bags.
+muted aqua bags contain 4 wavy bronze bags, 1 pale plum bag.
+vibrant brown bags contain 4 dull turquoise bags.
+vibrant green bags contain 5 dim violet bags, 2 dotted red bags, 2 dull indigo bags.
+wavy black bags contain 3 posh yellow bags, 5 wavy coral bags.
+light fuchsia bags contain 1 dull violet bag, 5 dim indigo bags, 4 plaid red bags, 5 dotted bronze bags.
+drab bronze bags contain 5 dim tan bags, 4 mirrored yellow bags, 5 dim indigo bags.
+plaid silver bags contain 4 pale orange bags.
+wavy red bags contain 3 muted chartreuse bags, 4 light silver bags.
+light aqua bags contain 4 dark cyan bags, 3 shiny aqua bags, 1 light olive bag, 3 wavy purple bags.
+wavy salmon bags contain 1 shiny blue bag, 2 bright green bags, 5 dark beige bags.
+vibrant indigo bags contain 4 drab lime bags, 5 plaid turquoise bags.
+striped violet bags contain 3 dim violet bags, 3 striped purple bags.
+dull salmon bags contain 5 vibrant turquoise bags, 5 muted black bags.
+dark lavender bags contain 5 pale gold bags, 5 pale silver bags.
+clear lavender bags contain 1 faded turquoise bag.
+striped crimson bags contain 2 dull turquoise bags, 1 dotted red bag, 5 striped yellow bags.
+posh chartreuse bags contain 2 wavy lavender bags, 2 striped black bags, 5 dim blue bags, 5 bright fuchsia bags.
+clear tomato bags contain 1 mirrored violet bag, 4 pale gold bags, 5 bright bronze bags.
+clear brown bags contain 3 plaid fuchsia bags.
+pale aqua bags contain 3 pale indigo bags, 1 dark lime bag, 4 dim magenta bags.
+bright maroon bags contain 4 wavy yellow bags, 4 bright tan bags, 2 posh indigo bags, 4 shiny white bags.
+wavy purple bags contain 1 faded beige bag, 2 drab salmon bags, 3 mirrored yellow bags.
+muted salmon bags contain 5 bright olive bags, 2 striped white bags, 3 dotted coral bags.
+dotted maroon bags contain 4 striped brown bags.
+wavy turquoise bags contain 1 dim indigo bag, 3 clear lavender bags.
+muted tomato bags contain 2 wavy turquoise bags, 4 pale crimson bags.
+faded teal bags contain 2 dotted yellow bags, 4 dull olive bags.
+dotted blue bags contain 4 striped plum bags, 4 striped cyan bags, 2 drab bronze bags.
+posh teal bags contain 2 vibrant purple bags, 4 plaid fuchsia bags, 2 light green bags, 3 light chartreuse bags.
+muted gold bags contain 1 muted green bag, 1 vibrant brown bag, 5 pale crimson bags.
+clear olive bags contain no other bags.
+dotted beige bags contain 4 posh beige bags, 2 pale silver bags.
+vibrant lavender bags contain 4 dark tomato bags, 5 dim black bags, 3 dim aqua bags.
+wavy maroon bags contain 1 drab turquoise bag, 1 shiny indigo bag.
+muted magenta bags contain 4 posh indigo bags, 4 faded brown bags.
+dull tomato bags contain 1 pale green bag, 1 plaid gold bag, 5 plaid yellow bags, 5 mirrored blue bags.
+mirrored black bags contain 5 drab crimson bags.
+dull green bags contain 4 shiny orange bags.
+dark cyan bags contain 3 pale gold bags.
+faded black bags contain 2 clear beige bags, 4 bright red bags, 1 striped black bag.
+wavy indigo bags contain 2 pale brown bags.
+dim white bags contain 3 clear violet bags, 3 vibrant indigo bags.
+muted green bags contain 1 bright white bag.
+posh coral bags contain 3 shiny purple bags, 2 light brown bags, 3 pale gray bags, 1 dull turquoise bag.
+dull white bags contain 5 bright plum bags, 5 light green bags, 3 plaid purple bags, 1 faded white bag.
+bright salmon bags contain 3 dull indigo bags, 3 muted plum bags, 3 muted bronze bags.
+dotted green bags contain 1 posh purple bag.
+posh salmon bags contain 1 shiny brown bag, 2 dark red bags, 3 drab gold bags.
+pale olive bags contain 4 shiny maroon bags, 3 shiny white bags, 2 dim lavender bags.
+dotted lime bags contain 4 mirrored plum bags, 2 dotted blue bags, 3 light salmon bags.
+dim blue bags contain 5 shiny lime bags, 5 wavy cyan bags, 3 dotted cyan bags, 5 vibrant turquoise bags.
+dim gold bags contain 3 wavy lavender bags, 4 dark silver bags, 4 striped green bags, 4 posh plum bags.
+drab lime bags contain 3 clear black bags.
+dim red bags contain 1 mirrored olive bag, 1 plaid violet bag.
+posh white bags contain 3 pale indigo bags, 1 pale black bag, 5 light green bags, 2 light maroon bags.
+dim brown bags contain 5 dotted black bags, 5 dotted red bags.
+drab gold bags contain 4 mirrored orange bags, 5 drab beige bags, 4 pale gold bags.
+shiny green bags contain 5 mirrored gray bags, 4 pale maroon bags, 1 striped coral bag.
+clear teal bags contain 3 vibrant crimson bags, 4 posh teal bags, 5 striped lime bags, 3 plaid green bags.
+wavy coral bags contain 3 drab beige bags, 2 drab magenta bags.
+plaid tan bags contain 4 faded yellow bags, 4 dull gray bags, 2 shiny lime bags.
+shiny blue bags contain 1 faded white bag, 5 dull turquoise bags.
+striped green bags contain 4 dull blue bags, 1 muted tan bag, 1 wavy lavender bag, 1 muted gray bag.
+wavy tan bags contain 4 wavy bronze bags, 2 pale plum bags, 2 plaid indigo bags, 2 light lavender bags.
+faded violet bags contain 5 dull turquoise bags, 4 bright orange bags, 5 drab lavender bags.
+striped magenta bags contain 5 dotted orange bags, 5 wavy red bags.
+drab beige bags contain 4 pale gold bags.
+shiny coral bags contain 3 mirrored bronze bags.
+faded indigo bags contain 5 clear violet bags, 5 vibrant fuchsia bags, 5 posh violet bags.
+muted maroon bags contain 4 wavy coral bags.
+pale violet bags contain 1 clear olive bag, 1 wavy fuchsia bag, 1 dull lime bag.
+wavy chartreuse bags contain 2 faded blue bags.
+faded purple bags contain 5 clear olive bags, 1 wavy orange bag, 2 posh beige bags, 1 mirrored salmon bag.
+dull fuchsia bags contain 2 dark tan bags.
+light gold bags contain 1 pale blue bag, 4 wavy cyan bags, 1 shiny chartreuse bag.
+bright tan bags contain 2 shiny brown bags, 4 drab gold bags.
+plaid fuchsia bags contain 4 shiny gold bags, 1 mirrored orange bag, 4 dark chartreuse bags, 1 faded tomato bag.
+striped indigo bags contain 4 clear brown bags, 3 wavy silver bags, 1 plaid teal bag, 3 pale maroon bags.
+drab salmon bags contain 1 wavy bronze bag, 2 pale violet bags, 5 plaid indigo bags.
+muted teal bags contain 1 wavy maroon bag, 2 pale purple bags, 4 clear blue bags, 2 bright salmon bags.
+clear violet bags contain 2 light chartreuse bags, 1 light silver bag, 4 dark brown bags.
+posh red bags contain 4 light lavender bags, 4 plaid brown bags.
+muted gray bags contain 1 pale olive bag.
+posh black bags contain 1 muted maroon bag.
+dotted silver bags contain 3 dull turquoise bags, 4 dotted black bags, 3 mirrored black bags.
+wavy olive bags contain 3 dotted coral bags, 5 dim silver bags.
+plaid olive bags contain 3 muted plum bags.
+dim lavender bags contain 2 pale gold bags, 5 mirrored turquoise bags, 1 dull lime bag, 1 dull beige bag.
+dark silver bags contain 4 light silver bags, 1 plaid fuchsia bag.
+shiny tomato bags contain 2 pale coral bags, 4 dim lavender bags, 1 dim purple bag, 3 wavy magenta bags.
+dull purple bags contain 1 shiny maroon bag.
+wavy orange bags contain 2 dim black bags, 1 wavy aqua bag, 4 dull turquoise bags, 3 wavy bronze bags.
+dim gray bags contain 2 faded bronze bags, 3 dull beige bags, 3 pale purple bags, 5 drab gold bags.
+muted yellow bags contain 4 wavy aqua bags.
+striped maroon bags contain 1 plaid plum bag, 5 dotted chartreuse bags, 3 dotted cyan bags, 2 bright plum bags.
+muted white bags contain 2 dark blue bags, 4 posh aqua bags, 5 mirrored violet bags, 5 posh lavender bags.
+wavy cyan bags contain 3 dim black bags, 2 striped lime bags.
+striped teal bags contain 2 bright blue bags, 1 vibrant black bag.
+posh olive bags contain 2 dim plum bags, 5 shiny turquoise bags, 1 vibrant tomato bag, 5 bright magenta bags.
+dotted crimson bags contain 2 clear gray bags.
+clear plum bags contain 4 vibrant teal bags.
+vibrant chartreuse bags contain 4 posh bronze bags, 5 light purple bags.
+vibrant teal bags contain 3 clear blue bags, 4 muted tan bags, 2 wavy fuchsia bags.
+striped beige bags contain 4 faded tomato bags.
+muted bronze bags contain 1 clear lavender bag, 4 mirrored gray bags.
+light lavender bags contain 2 plaid turquoise bags.
+dotted white bags contain 1 light yellow bag, 5 dull maroon bags, 5 posh brown bags, 2 clear olive bags.
+pale teal bags contain 4 dark aqua bags, 5 dull violet bags.
+wavy lime bags contain 2 drab red bags, 1 clear olive bag.
+vibrant black bags contain 3 dim tan bags.
+pale coral bags contain 5 dull gold bags.
+plaid maroon bags contain 2 light fuchsia bags.
+wavy aqua bags contain 5 dark coral bags, 5 mirrored orange bags, 3 muted aqua bags.
+bright blue bags contain 3 faded bronze bags, 1 bright red bag, 5 mirrored coral bags.
+wavy silver bags contain 1 posh olive bag, 1 shiny lime bag, 3 shiny beige bags.
+faded maroon bags contain 1 dull tan bag.
+light yellow bags contain 5 light lavender bags, 5 pale black bags, 1 plaid brown bag, 3 pale violet bags.
+wavy fuchsia bags contain no other bags.
+pale plum bags contain 4 light teal bags, 2 pale black bags, 1 pale green bag, 4 wavy bronze bags.
+drab white bags contain 3 dark tan bags, 5 muted orange bags, 5 dull violet bags, 1 mirrored fuchsia bag.
+pale salmon bags contain 5 faded violet bags, 1 clear cyan bag.
+clear crimson bags contain 4 pale lavender bags, 1 dull turquoise bag, 2 mirrored blue bags.
+posh gray bags contain 4 muted brown bags, 3 shiny teal bags.
+dark aqua bags contain 1 shiny maroon bag, 5 dim brown bags, 4 striped maroon bags, 5 dim blue bags.
+muted red bags contain 3 muted chartreuse bags, 4 wavy red bags, 1 drab tomato bag, 3 shiny yellow bags.
+mirrored purple bags contain 2 clear blue bags, 2 mirrored lavender bags, 1 pale gold bag, 3 bright silver bags.
+striped yellow bags contain 4 light silver bags, 2 dotted red bags, 3 mirrored black bags, 2 faded tomato bags.
+dotted teal bags contain 1 drab bronze bag, 3 muted red bags, 5 mirrored gray bags, 4 bright olive bags.
+clear turquoise bags contain 5 dim bronze bags, 3 faded silver bags, 1 dotted olive bag.
+dull lavender bags contain 5 clear olive bags, 1 mirrored orange bag.
+mirrored indigo bags contain 3 bright fuchsia bags, 3 dotted salmon bags.
+shiny salmon bags contain 2 bright turquoise bags, 1 light plum bag.
+plaid red bags contain 3 clear brown bags, 4 drab tomato bags, 2 plaid indigo bags.
+drab black bags contain 5 dull maroon bags, 2 dark silver bags, 5 bright red bags, 5 bright cyan bags.
+pale purple bags contain 5 light blue bags, 1 dull maroon bag.
+plaid crimson bags contain 2 dark turquoise bags, 5 mirrored bronze bags, 5 dull gold bags, 2 posh yellow bags.
+striped lime bags contain 2 wavy lime bags, 2 shiny teal bags.
+plaid yellow bags contain 5 muted chartreuse bags.
+dark violet bags contain 2 plaid fuchsia bags, 2 muted bronze bags, 3 posh green bags.
+bright red bags contain 4 faded plum bags, 3 dim lavender bags.
+striped purple bags contain 3 mirrored turquoise bags, 1 shiny yellow bag.
+shiny red bags contain 4 wavy coral bags, 3 vibrant salmon bags.
+striped cyan bags contain 2 dark yellow bags.
+posh magenta bags contain 3 vibrant indigo bags, 2 pale violet bags, 3 bright fuchsia bags, 1 shiny teal bag.
+drab cyan bags contain 3 plaid gold bags, 3 clear black bags, 5 striped green bags.
+dim chartreuse bags contain 2 wavy coral bags, 2 striped black bags, 4 dotted tomato bags, 1 muted maroon bag.
+faded beige bags contain 5 dim tomato bags, 3 plaid turquoise bags.
+mirrored teal bags contain 4 posh silver bags, 3 dotted brown bags.
+light turquoise bags contain 2 bright gray bags.
+drab fuchsia bags contain 4 shiny brown bags, 1 muted olive bag.
+mirrored bronze bags contain 3 dull turquoise bags, 3 mirrored turquoise bags, 2 drab red bags.
+shiny fuchsia bags contain 3 striped gray bags, 3 faded blue bags.
+dim beige bags contain 4 dark blue bags, 1 vibrant aqua bag, 2 shiny brown bags, 5 dull violet bags.
+drab gray bags contain 1 wavy maroon bag.
+drab orange bags contain 5 plaid brown bags, 1 vibrant yellow bag, 1 mirrored beige bag, 4 pale white bags.
+dull magenta bags contain 4 light purple bags, 3 dark brown bags.
+vibrant magenta bags contain 4 clear gray bags, 2 shiny aqua bags, 4 striped yellow bags, 3 shiny magenta bags.
+drab tomato bags contain 5 drab crimson bags, 2 dull gold bags, 4 light silver bags.
+wavy violet bags contain 3 faded plum bags.
+mirrored fuchsia bags contain 1 mirrored black bag.
+shiny white bags contain 4 light silver bags, 3 dotted fuchsia bags, 2 faded brown bags, 1 bright bronze bag.
+clear chartreuse bags contain 4 plaid cyan bags, 1 striped gold bag.
+muted turquoise bags contain 3 drab crimson bags, 3 drab olive bags.
+faded aqua bags contain 1 dotted teal bag.
+vibrant gold bags contain 2 light green bags, 1 dotted gold bag.
+drab plum bags contain 5 dim salmon bags, 3 dotted teal bags.
+dotted chartreuse bags contain 2 dull turquoise bags, 1 bright chartreuse bag, 4 faded tan bags, 1 mirrored lavender bag.
+dull silver bags contain 1 mirrored indigo bag.
+pale yellow bags contain 4 drab coral bags.
+clear black bags contain 3 dim coral bags.
+faded gold bags contain 3 faded chartreuse bags, 1 posh gray bag, 3 drab tomato bags.
+muted chartreuse bags contain 1 clear olive bag.
+shiny indigo bags contain 3 vibrant yellow bags, 2 plaid orange bags.
+dull indigo bags contain 5 bright fuchsia bags, 2 shiny yellow bags, 2 plaid indigo bags, 4 bright olive bags.
+faded silver bags contain 2 vibrant olive bags, 4 muted tomato bags.
+pale green bags contain 1 pale red bag, 5 dull lavender bags, 4 clear olive bags.
+dull violet bags contain 1 shiny black bag, 1 shiny fuchsia bag, 3 plaid indigo bags, 2 posh crimson bags.
+dotted lavender bags contain 2 striped lavender bags.
+clear orange bags contain 1 dotted cyan bag, 4 clear tomato bags.
+bright crimson bags contain 1 dull black bag, 2 dim tomato bags, 1 drab bronze bag, 4 wavy orange bags.
+dark orange bags contain 1 vibrant teal bag, 3 dull maroon bags, 4 light purple bags.
+bright teal bags contain 5 mirrored tomato bags, 4 dull lime bags, 4 shiny olive bags.
+vibrant beige bags contain 2 dark turquoise bags.
+dark yellow bags contain 5 dark orange bags, 4 pale red bags, 2 striped fuchsia bags, 5 faded turquoise bags.
+bright fuchsia bags contain 5 striped gray bags, 3 light teal bags, 5 mirrored orange bags.
+clear maroon bags contain 2 dotted yellow bags, 1 mirrored green bag, 4 dotted coral bags, 3 dull indigo bags.
+dim lime bags contain 3 dull fuchsia bags.
+striped olive bags contain 5 wavy fuchsia bags, 2 light purple bags.
+dull gray bags contain 4 dark beige bags, 1 mirrored white bag.
+dim orange bags contain 5 mirrored white bags.
+faded salmon bags contain 2 muted cyan bags.
+clear red bags contain 2 dim violet bags, 1 shiny purple bag, 3 faded salmon bags, 2 mirrored brown bags.
+plaid white bags contain 1 shiny aqua bag, 1 vibrant teal bag.
+shiny violet bags contain 3 striped lime bags, 5 mirrored chartreuse bags, 3 pale red bags, 1 muted orange bag.
+wavy green bags contain 2 dark tomato bags.
+pale lavender bags contain 3 pale orange bags.
+dark fuchsia bags contain 4 pale turquoise bags, 4 pale plum bags, 5 light purple bags, 3 dark beige bags.
+posh indigo bags contain 2 pale violet bags, 5 shiny coral bags, 1 faded chartreuse bag, 2 plaid indigo bags.
+light brown bags contain 1 posh black bag, 4 clear cyan bags.
+faded red bags contain 1 drab maroon bag.
+dark bronze bags contain 1 pale green bag, 4 shiny blue bags, 1 mirrored lime bag.
+pale orange bags contain 4 plaid violet bags, 5 dim silver bags, 1 dim cyan bag, 3 clear blue bags.
+dull brown bags contain 1 light tomato bag, 4 pale tomato bags.
+mirrored plum bags contain 1 shiny tan bag, 5 wavy brown bags.
+dull lime bags contain 4 mirrored orange bags.
+drab yellow bags contain 3 clear teal bags, 3 posh aqua bags, 4 posh fuchsia bags, 3 posh turquoise bags.
+bright cyan bags contain 5 muted lavender bags, 1 wavy purple bag.
+drab chartreuse bags contain 1 wavy tan bag.
+drab tan bags contain 5 drab bronze bags, 5 pale green bags, 1 wavy fuchsia bag.
+shiny tan bags contain 1 pale red bag, 5 clear aqua bags.
+dotted black bags contain 2 dim black bags.
+dull blue bags contain 3 clear blue bags, 5 bright gold bags, 4 pale tomato bags, 4 drab beige bags.
+light olive bags contain 2 mirrored salmon bags, 2 drab violet bags, 2 bright beige bags.
+mirrored magenta bags contain 4 drab tomato bags, 5 clear teal bags, 3 dark coral bags, 5 shiny white bags.
+bright silver bags contain 1 posh brown bag.
+vibrant blue bags contain 3 clear tan bags.
+dark indigo bags contain 3 dim aqua bags, 5 bright aqua bags.
+bright brown bags contain 3 muted purple bags, 1 muted blue bag, 1 light green bag, 1 dark red bag.
+dark salmon bags contain 3 dotted fuchsia bags, 2 dim tan bags.
+mirrored maroon bags contain 2 posh purple bags.
+faded crimson bags contain 1 posh white bag, 2 muted blue bags, 3 dark fuchsia bags, 3 light red bags.
+bright lavender bags contain 4 bright chartreuse bags, 5 muted purple bags, 4 dull aqua bags, 1 shiny blue bag.
+mirrored orange bags contain no other bags.
+wavy bronze bags contain no other bags.
+wavy yellow bags contain 2 mirrored yellow bags, 1 muted maroon bag, 2 striped purple bags, 4 pale silver bags.
+drab magenta bags contain 3 dim indigo bags, 2 wavy bronze bags, 5 shiny yellow bags.
+wavy blue bags contain 3 mirrored gold bags, 3 shiny lavender bags, 1 dim teal bag, 4 clear crimson bags.
+clear purple bags contain 2 dark beige bags.
+light cyan bags contain 1 dotted white bag, 5 muted yellow bags, 1 wavy lime bag.
+clear yellow bags contain 2 plaid olive bags, 1 muted red bag, 1 mirrored bronze bag, 5 striped violet bags.
+light plum bags contain 5 dotted fuchsia bags, 4 vibrant white bags, 5 muted red bags, 5 drab red bags.
+vibrant fuchsia bags contain 1 posh green bag.
+pale maroon bags contain 5 light purple bags, 5 shiny aqua bags, 3 clear teal bags, 2 clear green bags.
+dark teal bags contain 2 dark lavender bags, 4 striped black bags, 1 drab lime bag, 2 dim teal bags.
+clear fuchsia bags contain 2 shiny violet bags, 4 posh aqua bags, 4 bright red bags.
+dotted magenta bags contain 2 dull olive bags, 1 clear magenta bag, 5 light beige bags, 1 dark brown bag.
+muted black bags contain 2 clear blue bags, 2 muted red bags.
+dim magenta bags contain 4 plaid silver bags, 4 plaid olive bags.
+striped lavender bags contain 4 clear blue bags.
+dull beige bags contain no other bags.
+wavy lavender bags contain 2 shiny blue bags, 3 faded tomato bags, 5 dotted tan bags, 5 dull maroon bags.
+light maroon bags contain 5 dim violet bags, 3 wavy turquoise bags, 3 mirrored salmon bags.
+plaid green bags contain 1 dim teal bag, 5 pale brown bags, 2 striped chartreuse bags.
+shiny plum bags contain 1 posh lavender bag, 3 vibrant red bags, 5 dark maroon bags, 1 dotted bronze bag.
+plaid turquoise bags contain 4 light silver bags.
+dim cyan bags contain 1 shiny coral bag, 4 bright lime bags.
+shiny lime bags contain 3 wavy green bags, 5 posh white bags, 1 striped purple bag.
+dim maroon bags contain 1 muted crimson bag.
+dim aqua bags contain 1 dotted silver bag, 3 faded blue bags, 4 striped purple bags.
+muted blue bags contain 2 posh yellow bags, 3 bright tan bags, 1 vibrant salmon bag.
+vibrant olive bags contain 5 clear aqua bags.
+plaid black bags contain 3 striped orange bags.
+vibrant violet bags contain 2 pale gold bags.
+light bronze bags contain 1 shiny maroon bag, 3 light blue bags.
+pale magenta bags contain 5 pale tomato bags.
+vibrant yellow bags contain 4 striped gray bags, 4 dotted yellow bags, 1 wavy fuchsia bag, 3 wavy purple bags.
+shiny black bags contain 5 shiny yellow bags, 3 light purple bags, 1 pale olive bag, 1 clear blue bag.
+dim crimson bags contain 5 posh gray bags, 1 bright chartreuse bag.
+plaid salmon bags contain 2 wavy fuchsia bags, 1 posh olive bag, 2 dim tan bags.
+shiny cyan bags contain 5 light green bags, 1 clear olive bag, 5 pale olive bags.
+pale silver bags contain 3 mirrored orange bags, 1 light lavender bag, 2 faded tomato bags, 1 muted chartreuse bag.
+light red bags contain 4 shiny gray bags, 4 wavy salmon bags, 4 clear lime bags.
+dark turquoise bags contain 4 mirrored orange bags, 4 vibrant brown bags, 4 striped brown bags, 4 mirrored purple bags.
+dark gray bags contain 1 pale violet bag, 5 striped turquoise bags, 2 wavy red bags, 2 light bronze bags.
+pale gray bags contain 5 drab tan bags, 3 clear gray bags.
+striped gold bags contain 2 dotted beige bags.
+muted cyan bags contain 2 light bronze bags, 3 clear green bags.
+faded white bags contain 3 striped tomato bags, 4 shiny black bags, 2 drab tomato bags.
+clear lime bags contain 3 dotted fuchsia bags, 3 vibrant purple bags, 1 shiny bronze bag, 3 muted green bags.
+dull bronze bags contain 5 plaid turquoise bags, 4 dark crimson bags, 3 pale yellow bags, 3 posh chartreuse bags.
+mirrored cyan bags contain 4 clear olive bags, 2 vibrant purple bags, 4 dull olive bags.
+pale bronze bags contain 3 vibrant purple bags, 4 dotted silver bags, 2 mirrored black bags.
+pale blue bags contain 1 dark brown bag, 2 light brown bags, 2 drab lime bags.
+clear bronze bags contain 4 clear blue bags, 2 light chartreuse bags, 1 pale violet bag.
+clear aqua bags contain 2 clear cyan bags.
+plaid plum bags contain 3 faded plum bags.
+mirrored lime bags contain 4 posh brown bags.
+plaid lavender bags contain 1 bright beige bag, 5 bright lime bags, 4 faded aqua bags.
+drab crimson bags contain 2 shiny yellow bags, 1 posh brown bag.
+shiny beige bags contain 2 muted aqua bags, 1 vibrant purple bag, 4 pale black bags, 3 dark chartreuse bags.
+dim green bags contain 4 bright yellow bags, 1 shiny fuchsia bag, 1 wavy tomato bag, 4 shiny black bags.
+drab coral bags contain 5 dark coral bags.
+posh turquoise bags contain 1 dim violet bag, 2 faded turquoise bags.
+dotted plum bags contain 2 dull salmon bags, 5 light green bags, 3 pale red bags, 2 posh yellow bags.
+posh yellow bags contain 1 mirrored salmon bag, 1 drab tomato bag, 3 dark tomato bags, 2 dark chartreuse bags.
+faded orange bags contain 1 drab yellow bag.
+dull teal bags contain 2 plaid crimson bags, 5 shiny violet bags, 1 dull coral bag.
+faded brown bags contain 5 muted red bags.
+bright chartreuse bags contain 5 clear lime bags.
+mirrored tan bags contain 4 striped lavender bags, 4 light plum bags.
+clear indigo bags contain 5 plaid fuchsia bags, 2 plaid brown bags, 5 striped gray bags.
+light teal bags contain 1 dull beige bag, 1 mirrored turquoise bag, 1 mirrored orange bag, 5 wavy bronze bags.
+shiny gold bags contain 2 dark coral bags, 1 mirrored orange bag.
+striped white bags contain 5 dull fuchsia bags.
+wavy white bags contain 5 dull chartreuse bags, 5 wavy green bags.
+mirrored beige bags contain 4 bright white bags, 5 plaid magenta bags, 3 plaid crimson bags, 1 shiny teal bag.
+muted purple bags contain 5 pale black bags, 5 wavy aqua bags.
+vibrant crimson bags contain 5 dim bronze bags, 2 vibrant plum bags.
+striped aqua bags contain 3 plaid cyan bags, 3 light beige bags, 2 drab cyan bags.
+dull crimson bags contain 1 light white bag, 3 drab indigo bags, 1 clear fuchsia bag.
+clear magenta bags contain 4 light brown bags.
+posh maroon bags contain 1 faded plum bag, 3 light olive bags.
+bright violet bags contain 2 dotted bronze bags, 4 clear teal bags, 3 striped magenta bags, 3 muted indigo bags.
+faded coral bags contain 5 dark violet bags, 3 plaid teal bags.
+faded bronze bags contain 5 dotted fuchsia bags, 5 wavy bronze bags, 2 dotted purple bags, 5 dim black bags.
+light beige bags contain 2 shiny olive bags.
+mirrored white bags contain 1 dark indigo bag, 1 drab maroon bag, 3 shiny beige bags, 5 light blue bags.
+muted silver bags contain 4 wavy lime bags, 1 dark tomato bag, 1 bright fuchsia bag, 4 dotted olive bags.
+wavy gray bags contain 2 mirrored turquoise bags, 5 light lavender bags, 3 muted chartreuse bags.
+clear salmon bags contain 5 bright tomato bags, 2 wavy aqua bags.
+dull turquoise bags contain 1 pale tomato bag.
+shiny yellow bags contain 4 dull lime bags, 3 shiny maroon bags, 3 light silver bags.
+mirrored aqua bags contain 3 posh magenta bags, 4 drab tomato bags.
+dull orange bags contain 5 dim teal bags, 3 light olive bags, 2 light magenta bags, 2 plaid orange bags.
+plaid blue bags contain 3 pale purple bags, 1 shiny turquoise bag.
+dim olive bags contain 3 shiny tomato bags, 4 dim black bags, 1 light plum bag.
+dim fuchsia bags contain 1 dark chartreuse bag, 1 mirrored cyan bag, 3 plaid red bags.
+dark plum bags contain 1 light yellow bag, 1 mirrored lime bag, 2 bright salmon bags.
+faded tomato bags contain 2 muted chartreuse bags, 4 dark chartreuse bags.
+dotted aqua bags contain 2 dull lavender bags, 4 pale tomato bags.
+plaid lime bags contain 3 vibrant indigo bags, 1 muted red bag, 1 posh silver bag, 1 dim indigo bag.
+vibrant lime bags contain 5 drab turquoise bags, 2 vibrant chartreuse bags, 4 clear blue bags.
+posh brown bags contain 2 wavy red bags, 2 drab beige bags.
+bright beige bags contain 3 faded blue bags, 4 muted red bags, 5 mirrored lavender bags, 2 pale red bags.
+dotted yellow bags contain 5 striped gray bags, 3 pale gold bags, 2 clear olive bags, 5 mirrored yellow bags.
+dull gold bags contain 5 clear tomato bags, 5 drab beige bags, 4 bright silver bags, 4 drab crimson bags.
+dark maroon bags contain 2 wavy turquoise bags, 4 dark chartreuse bags.
+drab olive bags contain 4 faded bronze bags.
+posh plum bags contain 2 dull tan bags.
+light indigo bags contain 2 wavy yellow bags.
+vibrant tan bags contain 5 shiny teal bags.
+dim purple bags contain 5 light olive bags, 5 mirrored violet bags.
+vibrant gray bags contain 3 bright turquoise bags, 4 dim maroon bags, 4 vibrant chartreuse bags, 2 faded turquoise bags.
+pale tan bags contain 2 light salmon bags, 3 dotted silver bags, 5 clear lime bags, 1 shiny teal bag.
+dark tan bags contain 5 dim indigo bags, 3 shiny beige bags, 5 dim tan bags, 2 pale black bags.
+dotted tomato bags contain 3 shiny black bags, 3 pale crimson bags, 2 dim tan bags.
+posh violet bags contain 4 posh crimson bags, 1 muted fuchsia bag, 4 pale cyan bags, 3 mirrored gold bags.
+clear tan bags contain 2 bright tan bags, 5 faded beige bags.
+bright bronze bags contain no other bags.
+dotted brown bags contain 2 dotted black bags, 3 wavy coral bags.
+muted violet bags contain 3 faded magenta bags, 3 bright magenta bags.
+faded plum bags contain 2 dull lime bags, 4 dim coral bags, 5 shiny maroon bags, 3 pale red bags.
+dark lime bags contain 4 dim tomato bags.
+dull aqua bags contain 4 drab beige bags, 4 drab maroon bags.
+posh purple bags contain 2 vibrant purple bags, 5 shiny gold bags, 2 plaid turquoise bags.
+dull plum bags contain 5 dark brown bags, 4 muted black bags, 1 striped lavender bag.
+faded turquoise bags contain 3 shiny yellow bags, 4 faded plum bags, 5 pale violet bags, 4 dim lavender bags.
+striped bronze bags contain 1 muted bronze bag, 4 clear green bags, 4 shiny fuchsia bags, 5 pale red bags.
+mirrored blue bags contain 4 clear tomato bags, 5 shiny orange bags, 1 dull beige bag, 1 striped silver bag.
+shiny orange bags contain 2 light bronze bags, 4 dark tomato bags, 2 drab gold bags.
+shiny gray bags contain 1 dark maroon bag.
+drab red bags contain 5 wavy purple bags.
+posh fuchsia bags contain 3 mirrored chartreuse bags, 3 vibrant teal bags.
+light crimson bags contain 2 shiny aqua bags, 2 plaid chartreuse bags, 1 shiny gold bag, 1 wavy maroon bag.
+vibrant white bags contain 1 shiny brown bag, 5 light purple bags, 4 dull olive bags, 5 clear cyan bags.
+dark green bags contain 5 drab indigo bags, 1 striped coral bag.
+striped fuchsia bags contain 5 vibrant plum bags.
+bright turquoise bags contain 1 striped fuchsia bag, 3 posh purple bags, 5 dim aqua bags.
+striped tan bags contain 1 dotted cyan bag.
+shiny magenta bags contain 2 dark yellow bags, 1 faded silver bag, 4 muted orange bags, 3 bright fuchsia bags.
+dim violet bags contain 4 wavy bronze bags, 1 bright bronze bag.
+vibrant orange bags contain 2 faded chartreuse bags, 2 vibrant turquoise bags, 2 dull white bags.
+pale gold bags contain 5 light lavender bags, 4 mirrored orange bags, 4 muted chartreuse bags.
+pale red bags contain no other bags.
+plaid brown bags contain 3 mirrored orange bags.
+posh aqua bags contain 5 light blue bags, 1 dark indigo bag, 1 pale red bag, 2 vibrant turquoise bags.
+muted lime bags contain 1 dim chartreuse bag, 1 dotted olive bag, 4 pale violet bags, 3 muted fuchsia bags.
+dotted fuchsia bags contain 4 light teal bags, 1 muted chartreuse bag, 3 dark chartreuse bags, 4 dim lavender bags.
+dim turquoise bags contain 4 clear beige bags, 1 posh magenta bag, 3 faded brown bags.
+muted coral bags contain 4 dark salmon bags, 1 pale tomato bag, 2 shiny brown bags.
+dull chartreuse bags contain 3 shiny white bags, 4 shiny blue bags, 1 pale crimson bag.
+muted indigo bags contain 4 posh silver bags, 1 pale maroon bag, 1 dotted red bag, 1 drab coral bag.
+dim salmon bags contain 5 pale black bags, 3 dark salmon bags, 3 pale red bags, 5 dotted purple bags.
+dotted bronze bags contain 1 dim aqua bag, 2 mirrored maroon bags, 4 muted olive bags, 3 dull fuchsia bags.
+drab silver bags contain 2 dim coral bags, 3 dim salmon bags.
+striped salmon bags contain 2 dotted purple bags, 2 posh green bags, 3 plaid beige bags.
+mirrored tomato bags contain 5 faded tomato bags, 4 wavy red bags.
+dotted cyan bags contain 1 posh white bag, 3 striped lime bags, 4 dotted purple bags, 2 muted red bags.
+striped blue bags contain 4 dark silver bags, 4 pale silver bags.
+faded green bags contain 3 dotted violet bags, 3 pale turquoise bags.
+striped gray bags contain 2 pale tomato bags, 2 dark chartreuse bags, 5 muted red bags, 3 pale violet bags.
+pale lime bags contain 4 posh maroon bags, 2 drab plum bags, 3 drab coral bags.
+posh beige bags contain 4 wavy purple bags, 2 shiny gold bags, 1 dark tan bag.
+dotted tan bags contain 2 bright silver bags, 1 posh bronze bag, 2 dim coral bags, 2 dim tomato bags.
+shiny brown bags contain 4 dim violet bags, 5 bright silver bags.
+mirrored silver bags contain 1 striped blue bag, 2 shiny teal bags, 2 light coral bags, 1 dim beige bag.
+clear silver bags contain 4 mirrored fuchsia bags, 5 dull olive bags, 1 plaid crimson bag.
+dotted orange bags contain 1 mirrored turquoise bag, 3 wavy lime bags, 3 dotted yellow bags, 5 muted lavender bags.
+shiny purple bags contain 1 shiny beige bag, 3 plaid chartreuse bags.
+drab brown bags contain 2 dull indigo bags, 3 mirrored cyan bags, 1 dim crimson bag.
+vibrant tomato bags contain 5 faded plum bags.
+light tan bags contain 1 dark gold bag, 3 light salmon bags.
+vibrant cyan bags contain 4 shiny aqua bags.
+dotted purple bags contain 4 wavy coral bags.
+vibrant red bags contain 4 faded tan bags, 1 drab aqua bag, 4 striped black bags.
+faded lime bags contain 3 light olive bags, 3 striped yellow bags.
+posh gold bags contain 1 dull indigo bag, 1 mirrored chartreuse bag.
+shiny aqua bags contain 2 vibrant turquoise bags.
+light orange bags contain 3 vibrant violet bags, 2 dotted yellow bags, 1 dark gray bag, 5 striped chartreuse bags.
+pale black bags contain 1 plaid brown bag, 2 muted chartreuse bags.
+drab violet bags contain 5 clear cyan bags, 1 pale gold bag, 4 drab salmon bags, 2 posh orange bags.
+dim silver bags contain 5 clear cyan bags.
+muted beige bags contain 1 dim tomato bag, 3 light olive bags.
+drab turquoise bags contain 3 plaid orange bags, 1 light purple bag.
+dark red bags contain 2 vibrant yellow bags, 4 mirrored fuchsia bags, 5 posh bronze bags, 2 dark gold bags.
+vibrant maroon bags contain 5 drab beige bags, 1 dark beige bag, 1 dark brown bag, 4 pale maroon bags.
+wavy magenta bags contain 3 light tomato bags, 5 muted gold bags, 3 muted cyan bags.
+shiny chartreuse bags contain 5 pale yellow bags.
+dull cyan bags contain 4 bright maroon bags, 4 faded bronze bags.
+light black bags contain 4 shiny teal bags, 5 faded beige bags, 1 muted gold bag, 4 plaid silver bags.
+bright green bags contain 5 striped lime bags, 4 muted yellow bags, 4 light beige bags, 4 plaid violet bags.
+striped orange bags contain 1 mirrored orange bag, 2 bright salmon bags.
+muted plum bags contain 3 mirrored orange bags, 1 muted chartreuse bag, 2 dull olive bags, 4 dull brown bags.
+pale white bags contain 5 light silver bags.
+mirrored gray bags contain 1 mirrored violet bag, 5 striped gray bags, 5 dim aqua bags, 4 wavy fuchsia bags.
+wavy beige bags contain 2 shiny beige bags.
+dotted red bags contain 4 dotted purple bags, 3 muted aqua bags, 2 pale tomato bags, 4 pale bronze bags.
+posh lavender bags contain 2 dotted tomato bags, 3 dim lavender bags, 2 muted gray bags, 3 light plum bags.
+mirrored yellow bags contain 4 wavy gold bags.
+wavy brown bags contain 3 dim fuchsia bags, 4 dull turquoise bags.
+plaid chartreuse bags contain 5 plaid red bags.
+shiny turquoise bags contain 2 faded turquoise bags, 3 muted tan bags.
+mirrored brown bags contain 4 dotted fuchsia bags, 4 dim red bags, 2 dotted plum bags.
+dim tan bags contain 1 drab tomato bag, 3 wavy red bags, 1 plaid turquoise bag, 2 clear lavender bags.
+faded yellow bags contain 1 clear bronze bag, 3 clear olive bags.
+bright orange bags contain 5 mirrored blue bags, 3 shiny blue bags.
+striped red bags contain 5 bright green bags, 3 wavy yellow bags.
+bright indigo bags contain 2 light maroon bags, 5 shiny bronze bags, 2 bright white bags.
+light gray bags contain 2 dotted maroon bags.
+light silver bags contain no other bags.
+bright gold bags contain 2 striped fuchsia bags.
+drab purple bags contain 5 light silver bags, 2 dull yellow bags, 2 shiny teal bags.
+mirrored coral bags contain 4 dim plum bags.
+light coral bags contain 3 dim lavender bags, 5 wavy green bags, 2 light bronze bags.
+plaid indigo bags contain 3 mirrored orange bags, 5 pale gold bags.
+dark crimson bags contain 4 dark turquoise bags, 4 plaid green bags, 4 clear fuchsia bags.
+wavy teal bags contain 1 pale silver bag, 4 mirrored chartreuse bags, 4 shiny black bags.
+dull tan bags contain 4 muted magenta bags.
+light violet bags contain 4 faded yellow bags, 5 light maroon bags, 3 clear teal bags, 2 pale crimson bags.
+striped silver bags contain 3 plaid fuchsia bags.
+shiny crimson bags contain 5 muted yellow bags.
+mirrored salmon bags contain 1 dim tan bag.
+dotted coral bags contain 5 dark tan bags.
+wavy gold bags contain 2 wavy turquoise bags, 4 dim indigo bags, 3 wavy bronze bags.
+vibrant bronze bags contain 1 pale purple bag.
+posh silver bags contain 4 posh chartreuse bags, 3 bright salmon bags, 1 dotted bronze bag, 3 shiny coral bags.
+bright purple bags contain 5 clear beige bags, 3 pale yellow bags, 1 wavy tomato bag, 5 pale lavender bags.
+muted tan bags contain 4 bright white bags, 5 dotted silver bags, 2 clear blue bags, 4 mirrored turquoise bags.
+light white bags contain 2 shiny purple bags, 1 dull aqua bag, 2 vibrant blue bags.
+faded fuchsia bags contain 2 dark green bags, 3 shiny violet bags, 4 drab plum bags, 3 vibrant olive bags.
+clear gray bags contain 2 muted red bags.
+dark tomato bags contain 4 dotted purple bags, 3 faded turquoise bags.
+light magenta bags contain 1 dull fuchsia bag.
+light purple bags contain 3 drab magenta bags, 4 dark coral bags, 3 light silver bags.
+vibrant turquoise bags contain 4 dotted black bags.
+dim indigo bags contain 4 muted chartreuse bags.
+dim bronze bags contain 3 drab gold bags, 4 clear brown bags, 2 muted tan bags.
+clear green bags contain 2 plaid fuchsia bags, 1 wavy bronze bag.
+dull maroon bags contain 2 wavy yellow bags, 1 dotted fuchsia bag, 4 mirrored yellow bags.
+dotted gray bags contain 5 dotted white bags, 2 pale tomato bags, 5 bright tan bags, 3 plaid turquoise bags.
+plaid gray bags contain 5 wavy lime bags, 4 dull aqua bags.
+mirrored crimson bags contain 1 shiny lavender bag, 4 plaid purple bags.
+shiny silver bags contain 5 vibrant lavender bags, 3 light coral bags, 5 dark aqua bags.
+dotted salmon bags contain 3 pale tomato bags.
+muted crimson bags contain 4 clear olive bags, 3 dull plum bags, 1 dark gray bag, 1 wavy lime bag.
+muted lavender bags contain 1 bright chartreuse bag, 3 pale yellow bags, 3 pale crimson bags.
+posh tan bags contain 4 faded tomato bags, 3 dotted olive bags, 4 striped maroon bags.
+vibrant salmon bags contain 4 vibrant indigo bags, 1 plaid orange bag.
+faded chartreuse bags contain 2 mirrored orange bags, 1 pale crimson bag.
+striped tomato bags contain 3 dim tan bags, 2 wavy gold bags.
+dim yellow bags contain 1 clear purple bag, 1 wavy red bag, 1 drab bronze bag.
+wavy tomato bags contain 5 dotted tomato bags, 3 dim salmon bags, 5 light tan bags, 3 dull brown bags.
+bright lime bags contain 3 mirrored turquoise bags, 3 dotted tan bags, 3 posh black bags, 5 wavy gold bags.
+muted brown bags contain 4 shiny indigo bags, 4 muted tan bags, 3 wavy tan bags.
+pale cyan bags contain 1 dotted black bag.
+drab green bags contain 1 muted cyan bag.
+dim teal bags contain 4 faded lavender bags, 2 pale violet bags.
+drab lavender bags contain 1 pale gold bag, 5 vibrant brown bags, 4 posh indigo bags, 1 plaid olive bag.
+dotted turquoise bags contain 2 muted lime bags, 4 striped indigo bags.
+clear white bags contain 2 bright lime bags, 1 mirrored coral bag.
+dark purple bags contain 5 wavy crimson bags, 5 light olive bags.
+light tomato bags contain 4 posh black bags, 1 faded blue bag, 5 dim black bags, 3 dull lime bags.
+bright aqua bags contain 3 clear tomato bags.
+bright tomato bags contain 1 clear green bag, 3 bright gray bags, 3 mirrored cyan bags, 5 posh chartreuse bags.
+dull yellow bags contain 5 wavy purple bags, 3 light purple bags, 5 clear cyan bags, 2 wavy coral bags.
+striped coral bags contain 3 mirrored black bags, 5 wavy coral bags, 2 posh white bags.
+shiny bronze bags contain 2 dim tomato bags, 3 dull lime bags.
+vibrant aqua bags contain 4 dull olive bags, 4 mirrored turquoise bags, 1 vibrant teal bag.
+faded magenta bags contain 3 plaid chartreuse bags, 5 plaid white bags, 1 drab lime bag, 3 mirrored fuchsia bags.
+pale beige bags contain 3 wavy gray bags, 5 mirrored tomato bags, 1 bright beige bag.
+pale crimson bags contain 1 pale violet bag, 4 pale black bags, 5 dim tomato bags, 1 mirrored turquoise bag.
+dark blue bags contain 4 dark maroon bags, 1 faded brown bag, 2 wavy red bags.
+posh tomato bags contain 2 posh beige bags, 4 dark maroon bags.
+dim plum bags contain 2 muted crimson bags, 1 striped coral bag, 2 plaid yellow bags, 5 striped violet bags.
+dull black bags contain 3 posh tomato bags, 1 vibrant yellow bag, 4 mirrored salmon bags, 2 light green bags.
+wavy plum bags contain 4 wavy blue bags.
+bright coral bags contain 4 posh gold bags, 2 plaid lime bags, 3 shiny black bags, 5 dim magenta bags.
+posh blue bags contain 2 dotted turquoise bags, 2 bright olive bags, 2 plaid gold bags.
+vibrant purple bags contain 2 mirrored orange bags, 4 dull lavender bags, 2 pale red bags.
+dark white bags contain 4 drab lime bags.
+wavy crimson bags contain 2 dark salmon bags, 5 wavy yellow bags, 2 bright bronze bags, 2 drab crimson bags.
+clear coral bags contain 4 vibrant blue bags.
+muted olive bags contain 3 plaid brown bags, 1 dim fuchsia bag, 2 posh yellow bags.
+plaid violet bags contain 4 muted aqua bags.
+plaid teal bags contain 4 bright tan bags, 2 dark tomato bags.
+plaid purple bags contain 3 posh teal bags.
+pale turquoise bags contain 2 faded purple bags, 4 mirrored maroon bags, 1 mirrored salmon bag.
+muted fuchsia bags contain 5 bright bronze bags, 4 muted gold bags.
+bright olive bags contain 2 faded blue bags, 3 faded turquoise bags, 5 light bronze bags, 3 dim tan bags.
+bright gray bags contain 1 bright white bag, 2 muted orange bags.
+light blue bags contain 1 dotted purple bag, 3 dim black bags, 3 posh purple bags, 2 mirrored violet bags.
+posh bronze bags contain 3 plaid fuchsia bags, 1 drab gold bag, 4 mirrored orange bags, 4 light teal bags.
+faded olive bags contain 3 striped blue bags, 3 dim salmon bags, 4 pale red bags, 2 dull maroon bags.
+dull coral bags contain 2 wavy gold bags, 1 dark magenta bag.
+dull olive bags contain 3 plaid turquoise bags, 3 plaid fuchsia bags, 4 wavy lime bags, 1 dotted black bag.
+plaid orange bags contain 1 dark salmon bag, 1 striped turquoise bag.
+clear blue bags contain 3 dim tan bags, 3 muted red bags, 3 faded tomato bags.
+dark chartreuse bags contain 4 bright bronze bags, 1 dim indigo bag.
+plaid tomato bags contain 5 shiny turquoise bags, 4 clear tan bags, 2 dotted bronze bags, 5 muted magenta bags.
+mirrored green bags contain 2 light silver bags, 3 light brown bags, 4 vibrant purple bags, 2 posh green bags.
+drab blue bags contain 4 drab indigo bags.
+vibrant silver bags contain 3 striped violet bags, 1 striped white bag, 2 bright blue bags.
+shiny olive bags contain 3 drab tomato bags.
+dull red bags contain 4 dim cyan bags, 3 wavy lime bags.
+vibrant plum bags contain 3 wavy coral bags, 2 light lavender bags.
+faded cyan bags contain 1 dim brown bag, 5 posh indigo bags.
+dotted violet bags contain 1 pale tomato bag, 5 dim plum bags.
+striped brown bags contain 5 dim coral bags, 4 clear blue bags.
+dotted indigo bags contain 5 clear salmon bags, 4 dim bronze bags.
+posh cyan bags contain 2 vibrant magenta bags.
+clear beige bags contain 1 bright olive bag.
+dark black bags contain 4 dull crimson bags, 3 plaid green bags.
+mirrored lavender bags contain 5 dark silver bags.
+bright black bags contain 4 shiny brown bags, 1 vibrant crimson bag, 2 posh white bags, 3 wavy gold bags.
+pale indigo bags contain 5 shiny gold bags, 3 light bronze bags, 3 striped turquoise bags.
+plaid cyan bags contain 1 shiny tan bag, 4 dark tan bags, 1 dull yellow bag.
+bright plum bags contain 1 pale chartreuse bag, 3 plaid red bags, 1 faded beige bag, 1 posh gray bag.
+drab maroon bags contain 3 dull olive bags, 1 pale green bag, 2 mirrored turquoise bags.
+pale chartreuse bags contain 4 dim tomato bags.
+striped black bags contain 4 vibrant turquoise bags, 3 faded white bags, 4 light plum bags, 1 pale black bag.
+dotted gold bags contain 5 posh teal bags, 5 striped violet bags.
+posh orange bags contain 1 clear green bag.
+light green bags contain 5 wavy turquoise bags, 2 pale red bags, 3 dark tomato bags, 3 dull turquoise bags.
+plaid beige bags contain 4 light silver bags, 4 plaid turquoise bags, 5 drab purple bags, 4 clear lime bags.
+mirrored violet bags contain 2 wavy fuchsia bags, 5 bright bronze bags.
+striped plum bags contain 2 plaid indigo bags, 5 bright yellow bags, 1 wavy magenta bag.
+bright yellow bags contain 3 wavy yellow bags.
+drab aqua bags contain 5 dark red bags, 2 light gold bags.
+plaid bronze bags contain 1 drab magenta bag.
+faded tan bags contain 4 shiny aqua bags, 2 light chartreuse bags.
+drab indigo bags contain 5 dotted beige bags, 3 dull lime bags, 1 striped violet bag, 4 vibrant tan bags.
+dark gold bags contain 4 mirrored lime bags, 3 dark salmon bags.
+muted orange bags contain 1 dull yellow bag, 2 shiny brown bags.
+plaid gold bags contain 4 drab coral bags, 5 shiny cyan bags.
+posh crimson bags contain 3 light brown bags, 3 bright bronze bags, 3 shiny yellow bags.
+bright magenta bags contain 5 dim lavender bags.
+light chartreuse bags contain 2 drab bronze bags, 3 dim coral bags.
+dim tomato bags contain no other bags.
+dark beige bags contain 3 mirrored yellow bags, 2 dull olive bags, 5 striped brown bags.
+clear cyan bags contain 5 drab beige bags, 1 shiny yellow bag, 5 wavy purple bags, 5 dark chartreuse bags.
+dark coral bags contain 3 dim lavender bags, 3 pale green bags, 4 mirrored orange bags, 1 dim coral bag.
+light lime bags contain 5 mirrored brown bags.
+shiny lavender bags contain 5 drab tan bags.
+faded lavender bags contain 1 light salmon bag, 2 dotted purple bags, 5 pale gold bags, 3 muted gold bags.
+pale tomato bags contain 5 dim coral bags.
+plaid coral bags contain 3 dull blue bags, 1 posh white bag, 3 light orange bags.
+dim coral bags contain no other bags.
+dotted olive bags contain 5 mirrored green bags, 3 drab aqua bags, 2 dull beige bags, 3 dim indigo bags.
+dark brown bags contain 1 muted tan bag, 5 wavy lime bags.
+mirrored red bags contain 5 vibrant aqua bags, 3 bright gray bags, 4 striped gray bags, 2 light lavender bags.
+mirrored olive bags contain 5 dark chartreuse bags, 1 dim lavender bag, 5 faded plum bags.
+dim black bags contain 1 shiny yellow bag, 4 plaid indigo bags.
+shiny maroon bags contain 1 mirrored orange bag, 1 muted chartreuse bag, 5 wavy bronze bags, 1 dull lavender bag.
+pale brown bags contain 4 light teal bags, 1 light plum bag, 3 bright aqua bags.
+striped chartreuse bags contain 2 shiny maroon bags.
+mirrored chartreuse bags contain 4 dotted tan bags, 4 bright bronze bags.
+plaid magenta bags contain 1 vibrant yellow bag, 5 wavy aqua bags, 5 dull turquoise bags, 2 wavy fuchsia bags.
+light salmon bags contain 3 muted tan bags, 3 faded turquoise bags, 4 drab bronze bags, 3 bright bronze bags.
+faded blue bags contain 1 wavy red bag, 5 wavy fuchsia bags, 4 bright bronze bags, 3 faded turquoise bags.
+plaid aqua bags contain 1 pale tan bag, 3 light white bags.
+mirrored turquoise bags contain 5 drab beige bags, 1 faded plum bag, 4 mirrored orange bags.
+shiny teal bags contain 2 pale black bags, 4 dull indigo bags, 4 vibrant teal bags.
+vibrant coral bags contain 3 drab turquoise bags, 4 striped beige bags, 1 wavy turquoise bag, 4 light crimson bags.
+faded gray bags contain 3 striped purple bags.




diff --git a/resources/input08.txt b/resources/input08.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2aacf1d97e45e6bedf087c8d108304b404723bb1
--- /dev/null
+++ b/resources/input08.txt
@@ -0,0 +1,636 @@
+jmp +1
+acc -15
+acc +14
+acc +18
+jmp +443
+jmp +286
+acc +27
+jmp +522
+jmp +1
+acc -19
+acc +22
+acc +37
+jmp +111
+acc +28
+acc +43
+acc +18
+nop +597
+jmp +479
+jmp +604
+jmp +499
+acc +0
+acc +22
+acc +13
+jmp +566
+acc -12
+acc +0
+nop +153
+jmp +173
+jmp +192
+jmp +292
+acc +36
+acc +7
+jmp +440
+acc -17
+acc +40
+acc +24
+acc -7
+jmp +519
+nop +16
+acc +15
+acc +42
+jmp +445
+jmp +350
+acc +42
+acc +12
+acc +2
+jmp +133
+acc +12
+acc +3
+acc +27
+jmp +186
+acc +25
+acc +46
+jmp +285
+acc +32
+acc -11
+acc -6
+jmp +565
+nop +215
+acc +1
+acc +35
+jmp +1
+jmp +502
+acc +27
+acc +19
+acc -8
+acc -8
+jmp +531
+jmp -21
+nop +292
+acc +8
+acc -13
+jmp +26
+acc +1
+acc +45
+nop -42
+jmp +323
+jmp +39
+jmp +336
+acc +19
+jmp -51
+acc +45
+acc +26
+jmp +278
+jmp +6
+acc +40
+nop +271
+acc -10
+nop -4
+jmp +272
+nop -61
+acc +4
+acc -14
+acc +27
+jmp -70
+acc -9
+acc +29
+jmp +416
+acc +25
+acc +45
+jmp +19
+jmp +39
+acc -19
+acc +7
+jmp +248
+acc +11
+acc +36
+jmp +515
+acc +45
+acc +49
+jmp +329
+acc +30
+acc +31
+acc +28
+acc +26
+jmp +8
+jmp +283
+acc +32
+jmp +127
+acc +4
+acc +20
+jmp +92
+jmp +50
+jmp +133
+acc +5
+acc +8
+jmp +313
+acc +38
+acc +34
+jmp +395
+acc +14
+acc +29
+jmp +392
+nop +246
+jmp +374
+nop +429
+nop +388
+acc +3
+acc +0
+jmp +432
+acc -1
+acc +35
+acc +35
+jmp +148
+acc +8
+acc +11
+acc +12
+acc -10
+jmp +434
+acc -19
+jmp +330
+nop +329
+acc +30
+jmp +239
+acc -6
+jmp -136
+jmp +418
+nop +385
+jmp +1
+acc +34
+acc +9
+jmp +410
+nop -13
+acc +31
+acc +15
+acc +37
+jmp -142
+jmp +109
+acc -16
+nop +405
+nop +343
+jmp +8
+acc +44
+acc -15
+acc +7
+acc +9
+jmp +185
+acc +6
+jmp +35
+nop -25
+jmp +93
+acc +22
+acc -17
+acc +15
+acc +39
+jmp +41
+nop -123
+acc +15
+acc +6
+jmp -35
+acc +48
+jmp +422
+acc -7
+nop +67
+nop +66
+acc +48
+jmp -29
+acc -11
+acc +16
+jmp +92
+acc +45
+jmp +92
+jmp +212
+acc -3
+acc -18
+nop -186
+nop +7
+jmp -28
+nop +292
+acc +7
+nop -120
+acc +46
+jmp +48
+acc -3
+acc -16
+acc +50
+jmp -44
+acc -2
+acc -11
+jmp +236
+jmp +344
+acc +33
+acc +44
+acc +39
+nop -45
+jmp -53
+acc -11
+nop +380
+acc +35
+jmp +113
+nop +203
+acc +40
+jmp +167
+acc +44
+jmp +394
+jmp +229
+jmp -167
+jmp -204
+acc +21
+acc +49
+jmp +25
+acc -19
+acc -17
+acc +44
+jmp -11
+acc +40
+acc +12
+jmp +253
+acc +21
+jmp +349
+jmp +285
+acc +0
+nop +261
+acc +15
+acc +38
+jmp +10
+acc +27
+jmp +1
+jmp +373
+jmp -151
+acc +6
+jmp -48
+acc +14
+acc -8
+jmp -61
+acc +8
+acc +20
+jmp +1
+jmp +1
+jmp +208
+acc -18
+acc +32
+jmp +94
+jmp +262
+acc +0
+jmp -156
+nop +188
+nop +312
+acc +21
+acc +6
+jmp -123
+acc +47
+jmp +316
+acc +25
+nop +290
+jmp +62
+acc -7
+acc +36
+nop +212
+acc +14
+jmp +332
+jmp +291
+jmp +226
+acc +30
+jmp -161
+acc +39
+acc +38
+jmp +203
+nop +63
+nop -6
+acc -15
+nop -56
+jmp +72
+acc +1
+acc +34
+acc +22
+acc +19
+jmp -135
+acc +27
+jmp -303
+acc +1
+acc +48
+acc -19
+jmp +142
+acc +50
+jmp +298
+acc +43
+acc +0
+acc +50
+acc +12
+jmp +137
+acc +41
+nop +252
+jmp -310
+acc +13
+acc +34
+acc -15
+acc +43
+jmp +236
+acc +5
+acc -8
+acc +25
+acc +45
+jmp +153
+acc -12
+acc +31
+acc -1
+jmp +120
+jmp +236
+acc +38
+nop -238
+jmp -328
+jmp +81
+acc +48
+acc +15
+acc -9
+jmp -73
+nop -49
+jmp -271
+acc -17
+acc -17
+jmp +106
+nop +212
+jmp -290
+acc +36
+nop +109
+jmp +186
+jmp -310
+acc +4
+acc +16
+jmp +117
+jmp +1
+acc +10
+jmp +20
+acc +12
+jmp -311
+acc +12
+acc +30
+nop +182
+jmp -315
+acc +25
+acc +12
+acc +30
+jmp +50
+acc -19
+jmp -333
+acc +30
+nop +87
+jmp -199
+acc +8
+jmp +112
+acc -8
+jmp -313
+acc +7
+acc +32
+jmp +1
+jmp +230
+acc +25
+acc +45
+acc +20
+acc +0
+jmp -307
+acc +30
+nop -253
+acc +7
+acc +39
+jmp -113
+acc -12
+jmp +209
+acc +42
+acc +17
+acc -19
+acc +24
+jmp -170
+acc +30
+acc +9
+acc -1
+jmp -328
+acc +19
+acc +45
+jmp +132
+nop -244
+nop +35
+jmp +34
+acc -10
+acc +26
+acc +35
+nop -238
+jmp +54
+acc +15
+nop -378
+acc +42
+jmp -43
+acc -9
+acc -5
+acc -11
+nop -307
+jmp -129
+nop -202
+acc -9
+nop -376
+acc +11
+jmp -75
+jmp +14
+acc -1
+acc +32
+acc -14
+acc +16
+jmp +39
+acc +42
+acc +32
+jmp -133
+acc +1
+acc +17
+nop +85
+acc +35
+jmp +83
+acc +27
+acc +0
+acc -12
+jmp -93
+acc +48
+acc +35
+nop +154
+jmp -287
+jmp -347
+jmp -348
+acc +18
+jmp -374
+acc -15
+jmp +36
+jmp -123
+acc -11
+jmp +55
+acc +19
+acc +23
+jmp -339
+nop +5
+acc +44
+acc +2
+jmp +1
+jmp -417
+acc +23
+jmp -253
+acc -9
+acc -3
+jmp -138
+jmp -227
+acc +12
+jmp -437
+acc +47
+acc +19
+acc -6
+jmp -245
+acc +2
+jmp -328
+acc -14
+acc +25
+acc +4
+acc -2
+jmp -411
+jmp -351
+jmp -459
+acc +3
+acc +48
+jmp -134
+nop +54
+acc -14
+jmp -298
+jmp -401
+acc -14
+acc +25
+nop -55
+acc -10
+jmp -312
+acc -7
+acc +45
+jmp -74
+acc +30
+jmp -462
+acc +5
+acc -8
+jmp -355
+acc +9
+acc +44
+acc +44
+jmp -150
+jmp -484
+acc +14
+acc +19
+acc -6
+jmp -474
+acc -18
+jmp -166
+jmp -264
+acc -15
+acc +17
+acc +29
+jmp -149
+nop -273
+acc +31
+acc +0
+acc -2
+jmp -410
+jmp -411
+acc +47
+acc -6
+nop -287
+jmp -436
+acc +4
+nop +88
+jmp -158
+acc +32
+jmp +1
+acc -15
+jmp -319
+acc -6
+acc -18
+acc +49
+jmp -256
+acc -18
+acc +31
+acc +27
+acc +27
+jmp -351
+jmp +58
+acc +12
+jmp +1
+acc +32
+nop -151
+jmp -411
+acc +19
+acc +7
+jmp -287
+acc +30
+jmp -496
+acc -11
+acc +5
+acc +42
+acc +25
+jmp -249
+acc -1
+jmp -243
+jmp -190
+acc +32
+acc +32
+acc +14
+jmp +12
+acc +5
+acc +30
+acc +34
+jmp -46
+acc -13
+acc +5
+acc +45
+jmp -271
+acc +29
+acc +37
+jmp -323
+nop -18
+acc -2
+acc +21
+acc -12
+jmp -453
+acc -14
+acc +19
+nop -173
+jmp -411
+acc +24
+acc -7
+nop -136
+acc +6
+jmp -357
+acc -1
+acc -1
+acc +32
+jmp -264
+acc +26
+jmp -175
+acc +10
+acc +35
+nop -361
+jmp -493
+acc +14
+jmp -206
+jmp -138
+acc -1
+jmp -156
+acc +3
+acc +11
+acc -2
+jmp -213
+acc +35
+acc -13
+acc +47
+acc +45
+jmp -376
+jmp -543
+jmp -479
+acc +29
+jmp -532
+acc +28
+acc +47
+acc -11
+acc -14
+jmp +1




diff --git a/src/aoc/core.clj b/src/aoc/core.clj
new file mode 100644
index 0000000000000000000000000000000000000000..5e738f4897f54572cff41ae3c096fa75cc098eff
--- /dev/null
+++ b/src/aoc/core.clj
@@ -0,0 +1,7 @@
+(ns aoc.core
+  (:gen-class))
+
+(defn -main
+  "I don't do a whole lot ... yet."
+  [& args]
+  (println "Hello, World!"))




diff --git a/src/aoc/day01.clj b/src/aoc/day01.clj
new file mode 100644
index 0000000000000000000000000000000000000000..7631b42a348e9e0331be0f9dcf109196919bc51d
--- /dev/null
+++ b/src/aoc/day01.clj
@@ -0,0 +1,48 @@
+(ns aoc.day01
+  (:require [clojure.java.io :as io]))
+
+(defn lines [s]
+  (clojure.string/split s #"\n"))
+
+;; ------------
+
+(defn read-input []
+  (->> "input01.txt"
+       io/resource
+       slurp
+       lines
+       (map read-string)))
+
+(defn produce-matches-1 [input]
+  (for [x input]
+    (for [y input]
+      (when (= 2020 (+ x y))
+        [x y]))))
+
+(defn compute-1 [input]
+  (->> (produce-matches-1 input)
+       flatten
+       (remove nil?)
+       (take 2)
+       (apply *)))
+
+(defn produce-matches-2 [input]
+  (for [x input]
+    (for [y input]
+      (for [z input]
+        (when (= 2020 (+ x y z))
+          [x y z])))))
+
+(defn compute-2 [input]
+  (->> (produce-matches-2 input)
+       flatten
+       (remove nil?)
+       (take 3)
+       (apply *)))
+
+(defn main []
+  (let [input (read-input)]
+    (println (compute-1 input))
+    (println (compute-2 input))))
+
+(main)




diff --git a/src/aoc/day02.clj b/src/aoc/day02.clj
new file mode 100644
index 0000000000000000000000000000000000000000..becd7e95d1e05aada5d2962eb60b4bf68211cd12
--- /dev/null
+++ b/src/aoc/day02.clj
@@ -0,0 +1,81 @@
+(ns aoc.day02
+  (:require [clojure.java.io :as io]))
+
+(def example "1-3 a: abcde
+1-3 b: cdefg
+2-9 c: ccccccccc")
+
+;; https://gist.github.com/edbond/665401
+(defmacro xor
+  "Evaluates exprs one at a time, from left to right.  If only one form returns
+  a logical true value (neither nil nor false), returns true.  If more than one
+  value returns logical true or no value returns logical true, retuns a logical
+  false value.  As soon as two logically true forms are encountered, no
+  remaining expression is evaluated.  (xor) returns nil."
+  ([] nil)
+  ([f & r]
+     `(loop [t# false f# '[~f ~@r]]
+        (if-not (seq f#) t#
+                (let [fv# (eval (first f#))]
+                  (cond
+                   (and t# fv#) false
+                   (and (not t#) fv#) (recur true (rest f#))
+                   :else (recur t# (rest f#))))))))
+
+(defn parse-line [line]
+  (zipmap [:min :max :letter :password]
+          (rest
+            (re-find #"(\d+)-(\d+) (\w): (\w+)" line))))
+
+(defn string-to-char [s]
+  (first (char-array s)))
+
+(defn password-valid? [p]
+  (let [min          (read-string (:min p))
+        max          (read-string (:max p))
+        freqs        (frequencies (:password p))
+        letter       (string-to-char (:letter p))
+        letter-count (get freqs letter 0)]
+    (and
+     (>= letter-count min)
+     (<= letter-count max))))
+
+(defn password-valid-2? [p]
+  (let [pass (:password p)
+        idx-1 (get pass (dec (read-string (:min p))))
+        idx-2 (get pass (dec (read-string (:max p))))
+        letter (string-to-char (:letter p))]
+    (xor
+     (= idx-1 letter)
+     (= idx-2 letter))))
+
+(defn check-passwords [acc val]
+  (if (password-valid? val)
+    (inc acc)
+    acc))
+
+(defn check-passwords-2 [acc val]
+  (if (password-valid-2? val)
+    (inc acc)
+    acc))
+
+;; ----
+
+(defn read-input []
+  (->> (io/resource "input02.txt")
+       slurp
+       clojure.string/split-lines
+       (map parse-line)))
+
+(defn compute-1 [input]
+  (reduce check-passwords 0 input))
+
+(defn compute-2 [input]
+  (reduce check-passwords-2 0 input))
+
+(defn main []
+  (let [input (read-input)]
+    (println (compute-1 input))
+    (println (compute-2 input))))
+
+(main)




diff --git a/src/aoc/day03.clj b/src/aoc/day03.clj
new file mode 100644
index 0000000000000000000000000000000000000000..9b3ee50ca76655faec3e48d657bfabffb1bd3ab3
--- /dev/null
+++ b/src/aoc/day03.clj
@@ -0,0 +1,73 @@
+(ns aoc.day03
+  (:require [clojure.java.io :as io]))
+
+(def example
+  "..##.......
+#...#...#..
+.#....#..#.
+..#.#...#.#
+.#...##..#.
+..#.##.....
+.#.#.#....#
+.#........#
+#.##...#...
+#...##....#
+.#..#...#.#")
+
+(def paths
+  [[1 1]
+   [3 1]
+   [5 1]
+   [7 1]
+   [1 2]])
+
+(defn read-input []
+  (->> (slurp (io/resource "input03.txt"))
+       clojure.string/split-lines))
+
+(defn all-coordinates [[x y]]
+  (iterate (fn [[xx yy]]
+             [(+ x xx)
+              (+ y yy)])
+           [0 0]))
+
+(defn tree? [s]
+  (= s \#))
+
+(defn count-trees [lines]
+  (fn [acc [x y]]
+    (let [line (nth lines y)
+          spot (nth line x)]
+      (if (tree? spot)
+        (inc acc)
+        acc))))
+
+(defn compute [input coords]
+  (let [infinite-lines (map cycle input)
+        needed-coords (take-while #(< (second %)
+                                      (count input))
+                                  coords)]
+    (reduce (count-trees infinite-lines) 0 needed-coords)))
+
+;; ----------------------------------------------------------------------------
+
+(defn compute-1 [input]
+  (let [infinite-lines (map cycle input)
+        infinite-coords (all-coordinates [3 1])
+        needed-coords (take-while #(< (second %)
+                                      (count input)) infinite-coords)]
+    (reduce (count-trees infinite-lines) 0 needed-coords)))
+
+(defn compute-2 [input]
+  (let [c (partial compute input)
+        coords (map all-coordinates paths)]
+    (->> coords
+         (map c)
+         (apply *))))
+
+(defn main []
+  (let [input (read-input)]
+    (println (compute-1 input))
+    (println (compute-2 input))))
+
+(main)




diff --git a/src/aoc/day04.clj b/src/aoc/day04.clj
new file mode 100644
index 0000000000000000000000000000000000000000..9d16cca19bb465a1e41db1f36b82311ff15f4a7c
--- /dev/null
+++ b/src/aoc/day04.clj
@@ -0,0 +1,90 @@
+(ns aoc.day04
+  (:require [clojure.java.io :as io]))
+
+(def fields #{:byr :iyr :eyr :hgt :hcl :ecl :pid :cid})
+
+(def height-pattern #"(\d+)(cm|in)")
+
+(def hcolor-pattern #"#[a-f0-9]{6}")
+
+(def eye-color-set #{"amb" "blu" "brn" "gry" "grn" "hzl" "oth"})
+
+(def pid-pattern #"\d{9}")
+
+(def validation
+  {:byr (fn [v]
+          (when (= 4 (count v))
+            (let [n (read-string v)]
+              (<= 1920 n 2002))))
+   :iyr (fn [v]
+          (when (= 4 (count v))
+            (let [n (read-string v)]
+              (<= 2010 n 2020))))
+   :eyr (fn [v]
+          (when (= 4 (count v))
+            (let [n (read-string v)]
+              (<= 2020 n 2030))))
+   :hgt (fn [v]
+          (when-let [[_ digits u] (re-find height-pattern v)]
+            (let [n (read-string digits)]
+              (case u
+                "cm" (<= 150 n 193)
+                "in" (<= 59 n 76)))))
+   :hcl (fn [v]
+          (re-matches hcolor-pattern v))
+   :ecl (fn [v]
+          (contains? eye-color-set v))
+   :pid (fn [v]
+          (re-matches pid-pattern v))
+   :cid (fn [v] true)})
+
+(def optional-fields (set [:cid]))
+
+(def required-fields
+  (clojure.set/difference fields optional-fields))
+
+(defn collect-pair [acc p]
+  (let [[k v] (clojure.string/split p #":")]
+    (assoc acc (keyword k )v)))
+
+(defn parse-passport [s]
+  (let [lines (clojure.string/split-lines s)
+        joined (clojure.string/join " " lines)
+        pairs (clojure.string/split joined #" ")]
+    (reduce collect-pair {} pairs)))
+
+(defn valid? [p]
+  (let [pfields (set (keys p))]
+    (=
+      (clojure.set/intersection required-fields pfields)
+      required-fields)))
+
+(defn valid-2? [p]
+  (when (valid? p)
+    (let [ok (map (fn [field]
+                       (let [f (get validation field (constantly true))
+                             v (get p field)]
+                         (f v)))
+                     required-fields)]
+       (every? identity ok))))
+
+;; -----------------------------------------------------------------------------
+
+(defn read-input []
+  (->> (clojure.string/split (slurp (io/resource "input04.txt")) #"\n\n")
+       (map parse-passport)))
+
+(defn compute-1 [input]
+  (count
+   (filter valid? input)))
+
+(defn compute-2 [input]
+  (count
+   (filter valid-2? input)))
+
+(defn main []
+  (let [input (read-input)]
+    (println (compute-1 input))
+    (println (compute-2 input))))
+
+(main)




diff --git a/src/aoc/day05.clj b/src/aoc/day05.clj
new file mode 100644
index 0000000000000000000000000000000000000000..3e80f6789d380702945f82d149e973770e2782d5
--- /dev/null
+++ b/src/aoc/day05.clj
@@ -0,0 +1,65 @@
+(ns aoc.day05
+  (:require [clojure.java.io :as io]))
+
+(def example "FBFBBFFRLR") ;; 44 5
+
+(defn reduce-range [lower upper]
+  (fn [coll direction]
+    (let [size (/ (count coll) 2)]
+    (condp = direction
+      lower (take size coll)
+      upper (drop size coll)))))
+
+(defn find-row [directions]
+  (first
+    (reduce
+      (reduce-range \F \B)
+      (range 0 128)
+      directions)))
+
+(defn find-column [directions]
+  (first
+    (reduce
+      (reduce-range \L \R)
+      (range 0 8)
+      directions)))
+
+(defn find-seat [boarding-pass]
+  {:row (find-row (take 7 boarding-pass))
+   :column (find-column (drop 7 boarding-pass))})
+
+(defn seat-id [{:keys [row column]}]
+  (+ (* row 8)
+     column))
+
+(defn read-input []
+  (->> (slurp (io/resource "input05.txt"))
+       (clojure.string/split-lines)))
+
+(defn compute-1 [input]
+  (->> input
+       (map find-seat)
+       (map seat-id)
+       sort
+       reverse
+       first))
+
+(defn all-seat-ids [input]
+  (->> input
+       (map find-seat)
+       (map seat-id)
+       sort))
+
+(defn compute-2 [input]
+  (let [seat-ids (all-seat-ids input)
+        coll (range (first seat-ids) (inc (last seat-ids)))]
+    (clojure.set/difference
+     (set coll)
+     (set seat-ids))))
+
+(defn main []
+  (let [input (read-input)]
+    (println (compute-1 input))
+    (println (compute-2 input))))
+
+(main)




diff --git a/src/aoc/day06.clj b/src/aoc/day06.clj
new file mode 100644
index 0000000000000000000000000000000000000000..2b5fa69763a0bb472325cc7c86fb03467a275cde
--- /dev/null
+++ b/src/aoc/day06.clj
@@ -0,0 +1,52 @@
+(ns aoc.day06
+  (:require [clojure.java.io :as io]))
+
+(def example "abc
+
+a
+b
+c
+
+ab
+ac
+
+a
+a
+a
+a
+
+b")
+
+(defn group-said-yes [group]
+  (apply clojure.set/union
+         (map set group)))
+
+(defn group-all-said-yes [group]
+  (apply clojure.set/intersection
+         (map set group)))
+
+;; ----
+
+(defn read-input []
+  (->> (clojure.string/split (slurp (io/resource "input06.txt")) #"\n\n")
+       (map clojure.string/split-lines)))
+
+(defn compute-1 [input]
+  (->> input
+       (map group-said-yes)
+       (map count)
+       (apply +))
+  )
+
+(defn compute-2 [input]
+  (->> input
+       (map group-all-said-yes)
+       (map count)
+       (apply +)))
+
+(defn main []
+  (let [input (read-input)]
+    (println (compute-1 input))
+    (println (compute-2 input))))
+
+(main)




diff --git a/src/aoc/day07.clj b/src/aoc/day07.clj
new file mode 100644
index 0000000000000000000000000000000000000000..e9198658d042efbdeb103cbbb168166e3f15dd6b
--- /dev/null
+++ b/src/aoc/day07.clj
@@ -0,0 +1,99 @@
+(ns aoc.day07
+  (:require [clojure.java.io :as io]))
+
+(def example
+  "light red bags contain 1 bright white bag, 2 muted yellow bags.
+dark orange bags contain 3 bright white bags, 4 muted yellow bags.
+bright white bags contain 1 shiny gold bag.
+muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.
+shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.
+dark olive bags contain 3 faded blue bags, 4 dotted black bags.
+vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.
+faded blue bags contain no other bags.
+dotted black bags contain no other bags.")
+
+(def rule-pattern #"(\d+) (\w+ \w+)")
+(def mine "shiny gold")
+
+(defn parse-sub [s]
+  (let [[_ number color] (re-find rule-pattern s)]
+    {:color color
+     :number (read-string number)}))
+
+(defn parse-contents [s]
+  (when-not (clojure.string/starts-with? s "no")
+    (let [rules (clojure.string/split s #", ")]
+      (map parse-sub rules))))
+
+(defn parse-rule [s]
+  (let [[bag contents] (clojure.string/split s #" contain ")
+        [shade color _] (clojure.string/split bag #" ")
+        contents (parse-contents contents)]
+    {:color (str shade " " color)
+     :contents contents}))
+
+(defn graph [rules]
+  (reduce (fn [acc {:keys [color contents]}]
+            (reduce (fn [acc content]
+                      (update acc (:color content) conj {:color color
+                                                         :number (:number content)}))
+                    acc contents))
+          {} rules))
+
+(defn graph2 [rules]
+  (reduce (fn [acc {:keys [color contents]}]
+            (reduce (fn [acc2 content]
+                      (update acc2 color conj content))
+                    acc contents))
+          {} rules))
+
+(defn get-parents [graph color]
+  (get graph color))
+
+(defn fold [g]
+  (loop [r (into #{} (->> (get-parents g mine)
+                          (map :color)))]
+    (let [r2 (reduce (fn [acc color]
+                        (into acc
+                              (->> 
+                                (get-parents g color)
+                                (map :color))))
+                      r r)]
+      (if (= r r2)
+        r
+        (recur r2)))))
+
+(defn count-contents [g c]
+  (let [contents (get-parents g c)]
+    (println "con" contents)
+    (if (seq contents)
+      (reduce
+       (fn [acc {:keys [color number]}]
+         (+ acc (* number (count-contents g color))))
+       1
+       contents)
+      1)))
+
+;; ---
+
+(defn read-input []
+  (->> (slurp (io/resource "input07.txt"))
+       (clojure.string/split-lines)))
+
+(defn compute-1 [input]
+  (let [rules (map parse-rule input)
+        g (graph rules)]
+    (count (fold g))))
+
+(defn compute-2 [input]
+  (let [rules (map parse-rule input)
+        g (graph2 rules)]
+    (dec
+      (count-contents g mine))))
+
+(defn main []
+  (let [input (read-input)]
+    (println (compute-1 input))
+    (println (compute-2 input))))
+
+(main)




diff --git a/src/aoc/day08.clj b/src/aoc/day08.clj
new file mode 100644
index 0000000000000000000000000000000000000000..a969f09d5caf70362723efedd8a951a63e8986b2
--- /dev/null
+++ b/src/aoc/day08.clj
@@ -0,0 +1,96 @@
+(ns aoc.day08
+  (:require [clojure.java.io :as io])
+
+(def example "nop +0
+acc +1
+jmp +4
+acc +3
+jmp -3
+acc -99
+acc +1
+jmp -4
+acc +6")
+
+(def example-terminating "nop +0
+acc +1
+jmp +4
+acc +3
+jmp -3
+acc -99
+acc +1
+nop -4
+acc +6")
+
+(defn parse-instruction [s]
+  (let [[op n] (clojure.string/split s #" ")]
+    (assoc {}
+           :op (keyword op)
+           :value (read-string n))))
+
+(defn accumulate [acc value]
+  (if (>= value 0)
+    (+ acc value)
+    (- acc value)))
+
+(defn step [acc index {:keys [op value]}]
+  (case op
+    :acc [(+ acc value) (inc index)]
+    :jmp [acc (+ index value)]
+    :nop [acc (inc index)]))
+
+(defn run-computer [coll]
+  (loop [index 0
+         acc 0
+         log #{}]
+    (if (contains? log index)
+      acc
+      (let [[new-acc new-index] (step acc index (nth coll index))]
+        (recur new-index new-acc (conj log index))))))
+
+(defn run-computer-2 [coll]
+  (loop [index 0
+         acc 0
+         log #{}]
+    (cond
+      (contains? log index) :infinite-loop
+      (= index (count coll)) acc
+      :else (let [[new-acc new-index] (step acc index (nth coll index))]
+              (recur new-index new-acc (conj log index))))))
+
+
+;; ----------------------------------------------------------------------------- 
+
+(defn read-input []
+  (->> (slurp (io/resource "input08.txt"))
+       clojure.string/split-lines
+       (map parse-instruction)))
+
+(defn compute-1 [input]
+  (run-computer input))
+
+(defn reverse-it [op]
+  ;; LOL
+  (get {:jmp :nop
+        :nop :jmp}
+       op))
+
+(defn compute-2 [input]
+  (let [input (vec input)
+        indexes (range (count input))
+        possibilities (map (fn [i]
+                          (let [{:keys [op]} (nth input i)]
+                            (if (contains? #{:jmp :nop} op)
+                              (assoc-in input [i :op] (reverse-it op))
+                              input)))
+                        indexes)]
+    (->> possibilities
+         (map run-computer-2)
+         (remove #(= :infinite-loop %))
+         first)))
+
+(defn main []
+  (let [input (read-input)]
+    (println (compute-1 input))
+    (println (compute-2 input))))
+
+(main)