summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--day1/day1.py18
-rw-r--r--day1/input200
-rw-r--r--day2/day2.py25
-rw-r--r--day2/input1000
-rw-r--r--day3/day3.py35
-rw-r--r--day3/input323
-rw-r--r--day4/day4.py104
-rw-r--r--day4/input1121
8 files changed, 2826 insertions, 0 deletions
diff --git a/day1/day1.py b/day1/day1.py
new file mode 100644
index 0000000..b0623f9
--- /dev/null
+++ b/day1/day1.py
@@ -0,0 +1,18 @@
+from functools import reduce
+from itertools import combinations
+
+
+def mult(iterable):
+ return reduce(lambda x, y: x * y, iterable)
+
+
+def find_x_nums(data, sum_value, num):
+ for vals in combinations(data, num):
+ if sum(vals) == sum_value:
+ return vals
+
+
+data = [int(str.strip(x)) for x in open("input")]
+
+print(mult(find_x_nums(data, 2020, 2)))
+print(mult(find_x_nums(data, 2020, 3)))
diff --git a/day1/input b/day1/input
new file mode 100644
index 0000000..3bea509
--- /dev/null
+++ b/day1/input
@@ -0,0 +1,200 @@
+1587
+1407
+1717
+1596
+1566
+1752
+1925
+1847
+1716
+1726
+1611
+1628
+1853
+1864
+1831
+1942
+1634
+1964
+1603
+1676
+1256
+1906
+1655
+1790
+1666
+1470
+1540
+1544
+1100
+1447
+1384
+1464
+1651
+1572
+907
+1653
+1265
+1510
+1639
+1818
+376
+1378
+1132
+1750
+1491
+1788
+1882
+1779
+1640
+1586
+1525
+1458
+1994
+1782
+1412
+1033
+1416
+1813
+1520
+1968
+715
+1396
+1745
+1506
+1024
+1798
+1870
+1615
+1957
+1718
+1349
+1983
+1387
+1738
+1588
+1321
+1160
+1907
+1861
+1940
+1475
+2004
+1852
+1760
+1608
+1028
+1820
+1495
+1811
+1737
+1417
+1316
+1087
+1803
+1595
+1346
+1971
+1692
+1678
+1330
+1480
+1097
+1898
+1973
+1567
+1733
+1336
+1381
+1327
+1670
+1436
+1989
+1334
+89
+1862
+1715
+1743
+1967
+1765
+1402
+1729
+1749
+1671
+1196
+1650
+1089
+1814
+1783
+1225
+1823
+1746
+2009
+1886
+1748
+1481
+1739
+1912
+1663
+1668
+1314
+1594
+705
+1449
+1731
+1487
+1648
+1466
+1317
+1979
+1799
+1926
+1703
+1656
+1978
+2005
+1865
+1982
+1951
+1892
+1713
+1744
+1598
+1606
+1583
+1895
+1804
+1430
+1816
+1364
+1575
+1918
+1431
+1812
+1471
+1797
+928
+1934
+1156
+94
+1563
+1909
+1453
+1392
+1427
+1819
+1524
+1695
+1866
+2008
+1413
+1698
+1051
+1707
+1904
+1681
+1541
+1621
+1421
+1809
+1576
diff --git a/day2/day2.py b/day2/day2.py
new file mode 100644
index 0000000..4c68e63
--- /dev/null
+++ b/day2/day2.py
@@ -0,0 +1,25 @@
+import re
+from IPython import embed
+
+data = [str.strip(x) for x in open("input")]
+
+pattern = r"(\d+)-(\d+) ([a-z]): ([a-z]+)"
+prog = re.compile(pattern)
+
+# Part 1
+
+valid_count = 0
+for x in data:
+ low, high, char, password = prog.match(x).groups()
+ if int(low) <= password.count(char) <= int(high):
+ valid_count += 1
+print(valid_count)
+
+# Part 2
+
+valid_count = 0
+for x in data:
+ low, high, char, password = prog.match(x).groups()
+ if [password[int(low) - 1], password[int(high) - 1]].count(char) == 1:
+ valid_count += 1
+print(valid_count)
diff --git a/day2/input b/day2/input
new file mode 100644
index 0000000..23e2e9a
--- /dev/null
+++ b/day2/input
@@ -0,0 +1,1000 @@
+1-9 x: xwjgxtmrzxzmkx
+4-6 r: rrrkrgr
+4-5 v: vvfvvvn
+5-16 m: pxmrtmbmqmcldmmm
+15-16 s: bsshsszslssssslqdsss
+10-12 g: gggggggggzgvg
+2-7 n: dntnrng
+11-14 j: xrjflbmjszzjbjjh
+2-6 r: frxrrrfjnmr
+6-7 h: hplhgcsphh
+4-5 w: wwwwz
+1-6 g: ggdggnggg
+3-4 c: cccc
+5-8 k: kjgmkkfwxkwqkkgfnv
+14-15 h: xpwhdjhhjhrdjkhfh
+6-7 g: vgggggdhgsp
+1-3 r: rtdcrthphrkzxh
+15-16 j: jjjjjjstjjjjhjjjjj
+8-10 k: kkkkpkkqkv
+1-4 s: sssssj
+2-3 d: hdbmbpswddwkkr
+6-7 s: ssscssnss
+8-9 z: zzzzzzzftz
+7-8 t: glwvkgtn
+3-10 n: nnnnnnnnnnn
+5-7 z: lzzzzfhj
+8-9 l: llllllltn
+1-2 p: dpcppp
+2-5 d: hcfdltbgt
+13-16 r: rrdrrqrrrrrsbrrr
+7-16 l: lllltllllllllllllrll
+9-14 z: vzzzpzfzdzzzzzzfczz
+3-5 f: ffffb
+6-8 s: csssssjrbdsgs
+9-18 r: rrrrrrbrrrjzdrrrcrr
+2-5 d: fdzxdj
+13-14 c: cclcccccccccmc
+9-10 z: zzvszszjbnzzz
+5-9 s: ssqshwsss
+4-11 x: hxxxxjvdxcqplp
+4-6 t: mxtrtttttttttt
+3-8 w: wmwwwnbmtw
+5-6 x: xsczxd
+2-7 w: pwvtgkwwwrpjr
+7-9 w: wwwwwwwwj
+3-9 h: hhhhbhhhschhh
+1-4 p: tlwx
+4-5 w: lhzjwwwwmv
+6-7 p: ppppglprp
+2-16 m: jqmmmmmzmmmmmjmbxmw
+8-10 g: zhggpgrrlctggg
+7-18 z: pltbcznlvtzgzczzchbz
+10-11 t: jttttgtttttt
+3-8 k: kkkkkkkkkkk
+19-20 x: xxxxxxxxxxxxxxxxxxwr
+9-16 l: llllllflllllxpllzl
+10-12 m: mmjmmmmmmvms
+1-4 c: cdxvxczcc
+7-10 n: nnnnfnvpncn
+10-17 z: zszzzrzczxzfzzzzlz
+4-9 k: kkkdkkkkfk
+12-13 m: mmgmmqfgmmtmm
+4-6 s: tdmmcs
+10-16 n: nkfpnncncnnntmtc
+2-3 w: vwhwf
+7-17 w: wwfwwwqhwwwwcwwww
+5-8 q: tkqrtqqsqkwq
+9-10 p: ptpppppppd
+1-5 f: cnncnmnf
+2-9 k: kkjdsnsqkgprtqb
+9-11 n: nplnnnnnnnmnn
+4-6 r: rrkrzrr
+3-5 z: zzzzsq
+17-18 r: rrrrrrrrrrrrrrrrrx
+5-8 c: rcccdcclc
+1-9 c: vcccccccbc
+9-10 x: xxxxcbxxxm
+2-5 c: cccfn
+8-9 c: cccccnctc
+4-8 l: flrhfzwllm
+1-5 l: fllfllrklx
+5-10 j: jrjkrjjjjxgjqj
+5-10 v: dsxvmvvjtsc
+4-6 v: bsqvdghvnzdfvjcfvvv
+6-11 m: mmmmmmmmmmpm
+6-9 q: qqgqkcccsgqqjspj
+2-5 n: nvsrc
+14-15 n: nnnnnnnnnnnbnms
+3-4 m: mmbm
+3-11 h: hhbhhhhhhhhhhhhhhhh
+7-9 k: kkkkbknkjv
+11-15 g: ggvgggfgbgvvzjgxghgg
+3-4 z: zzzz
+2-5 w: wwwhww
+9-14 j: jjjjjjjjtjjjjw
+2-4 j: jjbljsj
+6-9 w: bwtkbttwqvwk
+1-3 l: lllpjl
+9-10 g: ggfmggggsrggggg
+3-5 t: ttwzxl
+5-7 k: kkwtbckkk
+9-11 r: rbgrrhrrrrrr
+9-12 g: ggggggsggglnggg
+1-5 b: bbbwjs
+6-7 m: xkjmdmm
+6-8 g: gggggwgw
+12-15 v: vrvvvqvvpvzvvvvrhqv
+15-17 s: hsnjsrsdxpjswsxsss
+9-12 r: rnhnrrsrrrrr
+1-3 d: ddnd
+1-11 m: mmtxkcdrvcmx
+1-18 k: kxkkkskkkkkktkkmkc
+5-9 h: vfxhhshhvhhbhr
+2-3 k: wtrcckttcqrj
+2-7 q: wnqcqqxw
+1-9 s: sqsssslsssssssssss
+4-6 p: mwvpppzp
+1-4 v: qlvnvv
+10-11 z: lzzzzzzzznt
+2-14 q: qwqqqqqqqqqqqfqqr
+15-20 d: dddddzddddddddlddddt
+11-15 m: fvsqwbnqmbnmgcm
+3-4 c: fncnfdjzcxwbpcrn
+4-7 z: jsxzzszzqtwzmcznfs
+5-6 x: glxxxxrxfxxwl
+5-13 b: pdbvhwjwnbdwbrbbjwf
+7-8 h: hhthhhvvt
+8-11 f: pfffffxffpbf
+5-6 n: ndtlxnnnqdmcnv
+10-12 s: sssssswssdshssss
+15-16 s: ssssssssssqsssss
+4-5 s: sssss
+3-4 g: ggggg
+3-4 c: ccjv
+7-12 v: rrrngfwhslsbpvbmwnn
+4-10 n: nxnbnnnbxnnn
+7-15 d: fggdddpgslqgdwhdndw
+6-10 h: hhzzghhfdchhjnm
+8-9 c: cccccccnc
+9-10 h: hhhhhhhhll
+2-16 w: nwfwwwzwvrbmwwww
+10-13 k: kkkksjkkskqtkkmkknks
+4-9 f: fffwfffbkc
+4-11 v: gcfkvvvvfvv
+2-5 l: llflftlmlglc
+7-10 l: llldljllgsbl
+10-19 g: svcsnlshppvrxzghhzg
+3-8 d: dddwdzvmddd
+3-5 m: kpmmjpmmmdz
+13-14 n: nnnnnnnnnnnnns
+3-8 b: bkbbbbbbbbbbbbbd
+2-4 g: jghfggh
+8-11 m: mmmmmmrmmmm
+9-12 j: pbjjpjnjxjjfsjzsjps
+6-7 r: rrrrrrrr
+8-13 v: vvvvvvvbbvvvvvw
+4-17 p: tpppppprzpspbpplppr
+2-3 h: wbhhzxhllh
+2-15 c: nvbcckcpccrtccwccsc
+12-13 j: jjjjjjjjjjjzhj
+4-10 p: dznzpnxzppl
+5-8 r: jrrrsrrrrr
+7-10 q: gjqjcqqqqsqfqqq
+8-12 k: kkkkkkkkkkkg
+3-14 m: mmtmmmmmmmmmmmmmm
+3-12 t: khgttqtcltshttwqgt
+14-15 b: bbbbbbbbbbbbbqb
+14-15 f: fffqfmffpnffffg
+5-16 j: jlghwmmrbdvdfjbj
+7-8 v: vvkbvvrv
+2-11 m: qmcgxcshgwmfm
+11-12 m: cmmmzfmcmmzmmmmjmr
+6-7 n: hnnbnnnw
+4-8 m: mvdtmstm
+4-7 m: bcrmmjbpmmmsdnrmm
+1-4 w: wwwww
+12-14 j: jjjjjjjjjjjrjhj
+2-9 h: ghhczbhblx
+2-11 v: vmvvvvvggvjpvchvvpc
+6-7 f: ffwfflghpwfl
+3-14 k: krkmjkgkzcckjbkkk
+1-2 c: cfcp
+15-17 z: ztzzzdzzzzzzzzzzt
+4-13 p: bmrpdwphzqvppktz
+4-5 j: jjvjtj
+14-20 h: hvchvhhhhbhthlhhhhhh
+1-3 j: kqjp
+9-13 x: fsxxxkxxbpkxmhlrdtfx
+13-14 w: wwpxwwwwwwgtwwcwwww
+2-5 p: wppxkq
+13-15 x: xxxzxxxbxxxxxxvxs
+5-11 q: qvqqqqxqqqqfqqq
+8-12 q: qqqqqqqvqqqq
+8-10 m: mmmmmmmjmn
+17-18 t: ttttrttttsttttttttt
+9-13 h: hhhhhqhjlvhhqhhwh
+8-9 s: ssssshsst
+9-10 v: qvvtvsvcmzvvnpgvv
+7-12 d: djcpndppsdddfdsdd
+2-3 z: dgzwvbrzzbgw
+1-4 k: kwkl
+1-9 d: dkdmdsdwdzvlpv
+10-11 h: hhhhhhhhhhh
+9-10 f: ffffffffff
+4-7 d: ssddddxp
+18-19 j: jjjjjjjjjjjjjjjjjsj
+7-11 m: mkmmrmmlrzsmgm
+1-7 k: kkkkkkknk
+4-5 w: wwwwj
+6-13 s: xslmsfgsssssmslsstqd
+4-5 z: zzzch
+9-11 j: jjjjjjjjjjj
+4-7 h: hjhhkdh
+5-14 v: vvvvglvvdvvvvv
+5-6 q: shqnjdqqq
+1-5 q: dqqqq
+5-7 z: zzznzzz
+5-9 s: vwsfsxssd
+4-5 f: sffffv
+5-7 b: xllbbdb
+1-14 j: rtzjqkpnkjlrhjcjqj
+8-10 w: wwwwwwwfwxz
+3-6 g: sggtlggswf
+11-14 n: nnbnnncnnsgnnmknn
+6-15 c: cclcnccctcrcxqmd
+5-8 l: lmllxwpl
+4-11 p: pppppppcpkdp
+1-4 w: zwwx
+1-3 g: nlfpgfzqkzn
+11-12 w: vbwwgwvwrwlwwmwwwjw
+4-12 j: vzfjgjrkzdrxqfh
+1-2 r: frrq
+1-4 k: vkkkkk
+11-13 d: pndlftgdpdhld
+1-4 r: prrvrrrrfrrrrr
+8-9 m: fmmxmmmmmmm
+1-2 x: xcpxc
+4-16 n: rhbndvjnnsnfnwnnm
+2-10 g: fkzwxtqmgm
+11-19 p: bpppqpppppplpppphpsr
+9-13 g: ggggthggggpjgqgslggq
+4-5 m: mzmmxcfwmdpz
+2-13 t: tttttttptttts
+3-7 q: qqvqqqcqq
+6-9 j: jsjjjjccjwjcjjj
+7-10 r: rdlrrrrrrr
+9-12 r: wrrzsrcrgcbrhqvrhlp
+6-7 j: jjxjjzhxj
+6-7 m: mmmmmmmm
+1-3 m: mldvdmxmbk
+10-11 f: ffffnffffkqf
+5-17 f: ffffsfffftfffkffn
+4-5 b: fbwbhvx
+14-16 g: ggggggggthgggggsvd
+2-3 s: cvsbw
+5-10 g: qltgnfghgcrgpnzdsvng
+5-6 p: ppjbpnppxg
+3-8 j: lgjrzwdvdnwvrnj
+2-4 c: cdcc
+6-7 l: llflrhlllgklh
+1-2 p: tppp
+16-17 g: gggggggvggggggggg
+3-14 f: fhfdffftfbggpkfgf
+16-18 b: bbbbbbbbbbbbbbbbbbbb
+5-10 v: thqvvkvlwvdvjzzst
+13-14 p: ppppppppppppptc
+11-14 t: tkttczttttsttmcnltm
+3-4 w: nvxl
+4-6 f: fpflfwftk
+4-6 h: xhhhhh
+15-17 t: tttttttttttttttlv
+10-17 j: jjjjjjjjjsjjjjjjd
+2-4 s: jcgs
+7-9 q: qsqqjhqndsqkqqpvqqr
+2-3 p: tnpplcmdpfn
+2-5 c: crvmk
+1-7 d: tsmzcgddnddddrdxsq
+8-9 c: rlfcpctpncv
+6-9 f: tkzfhffdf
+13-15 s: sssmsscfvsssdsg
+6-8 s: ssjsssjrscsss
+7-10 f: fffffffkfff
+1-6 k: jqtdhpknkkk
+11-12 t: tttttttttttf
+9-16 d: swjbddfpfbntmprdd
+18-19 v: dvvvvvvvvvvvvvvvkvvv
+2-5 j: kjjcqjj
+11-12 d: dddddddcddld
+14-16 f: fffffffffffffffk
+4-7 x: nxxxxxxn
+10-18 p: pppppppppppppppppr
+8-9 k: ktkjkkkkfvklkz
+9-15 h: hhhhhhhhchhhhhhhhh
+18-19 v: hvkvvvvvvvvvvvvvvqc
+1-8 s: xzbxgsxshgl
+2-6 p: ppsjpglptchpzbdhj
+6-7 n: nnnnnnnc
+2-7 j: jhtjjjjj
+11-12 b: vnblqbxkbbwb
+4-5 z: czzzcztsz
+4-9 x: wxpvxxxfxfxx
+9-12 w: wwwwwwwwwgwwww
+2-5 k: cntkkq
+10-12 l: vljplljlllllllll
+1-4 t: tfmvst
+6-7 d: rddddddwd
+2-6 h: bhvwhl
+5-8 c: ccsgccncwgjtcbhccckk
+5-6 r: rrrrmr
+3-8 h: hcrhhjrbhh
+2-4 s: xndshswk
+2-7 m: mmrqmmlp
+7-9 n: nnnbfpmnfnknxnndn
+6-7 f: fvffffb
+6-8 h: vhhhhhtk
+6-7 j: jjjjjwjjs
+1-5 r: rwrrrr
+3-4 t: tlzk
+2-7 k: kkkkkkk
+6-11 q: rqqqqqwflqqjqq
+5-7 l: llllglll
+6-14 r: rrkrrxrmrrrrrc
+1-8 w: lrwpzvhhcwtbrwwpwww
+3-13 b: kbjhskpbrwqpbcbbkb
+6-9 d: ddddbddhdddddddddmg
+14-15 n: nnnnnnnntnnnnhf
+2-18 k: cgjpktthdbfxrclqwzpl
+5-14 w: wwwwwbfwzwcwcwz
+5-7 s: tfhssgrsnbssfl
+1-18 l: wdkwkdlslbllllgzfm
+1-17 h: jhhhhhhhhhhhthhhhh
+7-13 w: wwvwwwwwrwwww
+1-3 r: rgrdrx
+9-11 t: dnxckkwpttv
+2-12 c: cgqxrszcckcd
+4-13 q: qkchpbqqtrtdztrq
+2-9 d: ddddsddddd
+9-19 p: pppppgppppqpppppppp
+8-9 l: lllhlllll
+7-8 h: hhhhhkhvwbhmh
+11-12 w: wwwwwwwwwwwnwwww
+2-3 d: jhcd
+13-16 n: nnnnnnnnnnnnndnnmnn
+6-7 d: dllpddkdd
+6-7 n: nnnnnkp
+7-14 v: vvbcvrvvkmvvsv
+5-7 j: jjjjcjs
+4-10 l: ldllllllll
+4-5 x: rxxxx
+15-16 q: qqqqqqqqqqqlqqqw
+13-15 m: mmmmmmmmmbmmzmbm
+7-10 k: skkkkkkkkq
+9-15 m: mghxpjzqdhjcbmdl
+2-4 t: ttsnwzbdj
+6-7 s: hqtkgtr
+3-4 n: twpknn
+1-3 l: wrldlsdl
+5-6 l: qlxncf
+4-5 s: dvsxs
+7-9 t: rktsrfwttttgwtzgft
+1-3 l: flsf
+6-10 c: cchczccccj
+1-3 k: bktw
+2-4 h: zdqxgrfkfhljhqhkgmfc
+16-17 s: sssssssssssssssvs
+4-8 p: plpfmnhsppnpwnx
+5-10 k: kkkkknkqkk
+4-11 s: nsqnssssvqsm
+6-14 j: jjjzjwczkjjjxjjcjjxj
+3-7 t: tnnbjjhtd
+7-8 l: llllllll
+4-11 z: cwsvrtszxrgh
+2-11 x: sxcxxxjxrxkxdxx
+11-15 m: mmxmbxmmdmmmmfmmfmm
+10-13 l: tllllwzlzlrbllllhnp
+5-6 k: kkkjkmkkkg
+4-7 f: wqqfmffffkp
+1-9 b: bbbbbmbbbbhbbdzbbtn
+10-12 h: hhhhdwbhhqrhhhdnxhr
+1-8 r: qfpnfrrrrz
+16-20 b: bbbbbbbbbbbbbbbbbbbb
+1-5 c: hwqccmwcctcnclcb
+6-13 c: clccccqqcccjczpgj
+13-14 j: jjjjjjjjjjjjjh
+2-4 j: jkfp
+2-7 d: qqxdcdjqg
+5-6 r: prrrrd
+7-8 l: llllllll
+2-3 w: nwlm
+9-12 v: vnknxncvgvrww
+6-16 s: sjnwfsksnszcglxs
+5-17 z: zzmkzzzzzntzjzbwpdjz
+12-17 j: ljjjjjjhjjwtjjjjdjwj
+8-10 s: dnnjlfkxls
+2-6 m: jmmqmdkjm
+9-11 m: mmmcmmmfsmmm
+14-16 p: ppppptpppphrpxpppp
+4-15 d: dfkfxdddldddddddlddp
+12-14 q: qqqqqqqqqqqwwgq
+1-6 g: tgggggmggggdg
+10-18 w: wwwwwwwwwbwjwwwwwt
+8-9 t: ttkttcttsrgrzlftpt
+3-5 j: jjjjjjjjjjjjjl
+17-18 c: ccccccczcccccccccs
+4-9 d: hjddddddddm
+2-4 x: lxjfp
+11-12 v: vvvvvvvvvvjv
+1-4 z: fmzblzvzm
+4-5 h: hhshhh
+3-6 t: ptvrtt
+7-15 k: kkkjzkckgckskpkk
+12-15 w: wwwwwwwwwwwftwdw
+3-5 z: jrhns
+5-6 n: pxmnzn
+1-3 b: bbbkbbbbbbwb
+1-10 r: rrjrqrrwrrrqv
+11-12 w: wwwwwwwwwwwwwww
+5-6 j: jsjjjp
+6-11 h: lhbbvmhwrhh
+18-19 q: qqqqqqqcxqqqqqqqqxwq
+17-18 l: llllllllllllllllxql
+3-4 j: jjljjn
+8-10 z: zzzzwnzlzggz
+6-7 t: tttttft
+11-12 f: ffffffffffnf
+2-8 b: hqbbbbbsbb
+4-5 w: stljwbxpw
+1-2 z: grxfpw
+6-8 w: wwwwpwwxw
+8-14 z: zqzzzzzvzzzzzzgz
+4-11 b: cckgrcmbpvbbw
+2-9 d: xqxbdddjds
+3-6 x: xxrxxx
+15-16 n: nnnnnnnnnnnnnndnn
+6-11 x: lqmxxxsxxfxxxxlx
+1-12 s: vssssshssmsk
+1-16 m: bmgkkmwmmzvmmmmmwflv
+3-15 t: thkvttsltnbgztt
+9-17 z: zzzzzzzzzzzzzzzzzz
+4-6 f: fjwfff
+3-9 d: ddddddddd
+6-10 k: kjkbkkckxkknqkkdc
+6-7 n: nsnckwnmn
+7-13 t: ptbtjqttwwtftpntdq
+7-10 r: wrhhrrrrrwrrrrvqrms
+2-3 c: zcrwhtccb
+5-7 m: nnwmmdmmmccv
+3-5 j: rtjjmjrjl
+5-6 s: dssjhsdmbksrks
+16-18 c: ccccclcccclccccccc
+7-16 b: qpzgqxdbssmzptrv
+6-8 b: bnsbbgdbggxbbszbm
+1-10 h: lrpstqvhhhhf
+4-6 s: tvssppwvss
+3-4 g: qqqhcd
+4-7 c: qxcqzccckxcpcxcw
+1-13 m: nbwdmspmmwbbmm
+1-2 j: xjrczrk
+9-10 w: wwwwwwwwwd
+2-4 h: hhhq
+7-10 j: bjmrrjsjthjnnjjxjjd
+3-7 f: srfwwfvf
+3-4 b: nbbzb
+3-5 n: nnnnn
+7-8 f: fxfnfffzpqffgdf
+10-12 k: kkpkkkpnkkmkjbkk
+9-10 k: jkkkkkkkwqk
+4-6 z: rzzzzs
+4-7 v: vvvtvvjq
+6-12 z: dzjnzczzpzgzzzx
+6-8 s: smsvbkswslssrdfjsc
+5-7 b: bwbbbbbbr
+1-3 d: kddbsmmbv
+3-4 b: bbbb
+5-8 r: rqrrdrrr
+7-8 m: mmmmmmzm
+9-11 q: xvnlfvhxqfql
+3-4 w: wfwj
+1-3 q: gqqcqg
+1-2 q: cqlxrq
+6-12 s: swwjjssjsstmqfssdh
+2-4 q: bqqq
+5-6 c: ccccbscgfc
+14-15 x: xxcxxxxxxxxxxxm
+6-12 f: fzfchfnrxfrdffhfl
+14-17 g: gggggggggggggjgpgg
+5-8 n: njkcngznn
+10-13 d: dddlqddddvddr
+2-4 c: xgcg
+2-10 s: sxsnsdmszwmsss
+6-12 q: qbcqspqqqkqrq
+6-16 n: xnnnnnnnnnnnnnnfnnn
+6-12 s: tssnssmsssssssssnhr
+1-4 v: vwvvv
+8-10 h: rzmhhjvqhht
+1-4 t: ttjdjftfctt
+1-4 k: nkkz
+1-2 q: vkvqkqq
+9-19 n: qxmjqxnxnblqnnqfgsrd
+15-16 h: hhhhhhhhhhhhhhghz
+2-5 g: jggpxdgwjpsrv
+12-13 c: xccccpccrcccc
+1-13 g: nfgbghqrljstggcgq
+14-17 g: gggggggggggggmggggg
+4-14 s: sssbsssssssssgs
+1-10 d: rcxvxcgddnhwd
+4-14 g: vccvdldqdgzltq
+8-10 z: zzdczzvrzzzzr
+5-10 t: ctgtttftqtrbt
+3-5 v: vvrvx
+9-10 w: wwwwwwwwwwwww
+4-6 c: hgccmcccc
+16-18 s: ssssssssssstssscsh
+2-7 z: zzflfrtdx
+4-10 v: vvlsvvvvkrc
+10-16 d: ddddwddddbdgdddwd
+3-4 v: gkbqbtrv
+3-4 h: cjdqvwhhththvx
+3-5 b: bbbkbrb
+3-5 m: ptkqdgsmbcmmblwp
+4-17 q: mlqqgsqqqfqkcqqxqq
+6-17 m: mdvqvmmxlmzmvmmdm
+1-3 r: hrrtrrrrrrrrrwlr
+3-5 j: jjjjhj
+11-12 q: dqpqqqqqqnzlqq
+8-11 d: dddnddnddtdddd
+3-16 d: dpddxtlqsqldrpddq
+7-13 z: szhzmmzzzzmzzzz
+6-18 h: mkxxqtbnnjgnvxnhhhc
+4-5 n: nknfrhpn
+16-17 d: dddddddgdddddddddd
+14-16 w: wwwwwwwwwwwwwwwww
+2-3 t: rttfdstqpdtg
+3-4 s: gghrfxbfshqssj
+1-9 j: bjjjjjjjhjjj
+1-2 p: xmpgppppppp
+9-14 k: vqpxrkmskfpnxq
+1-5 x: xxxxx
+1-14 p: bsxnwvpkphdppphpkwp
+5-12 d: xdddmzddfddc
+9-10 v: gvvvvvgvhnvw
+2-7 x: xxxxxwgsvmqnkxv
+3-15 c: ccscccccwccccccc
+5-8 w: nsvgwzdf
+7-14 w: wwwwwwwwwwwfwswcw
+5-10 r: qrrlwcrrwz
+7-12 f: hfnphfpjffstff
+2-6 h: hqjhmph
+3-13 x: cpxxxzcrbjxxxb
+4-8 k: kkkkktkkkkfkf
+7-10 g: gggghghsgwf
+8-9 s: sswswssggss
+6-10 l: qlllljllhlll
+8-11 c: cccwccrbcbccc
+5-6 x: xxxxxxg
+1-3 w: cwpww
+8-11 v: vvvvvvvvvwvv
+1-2 b: bbgl
+7-10 b: zbkbcbbbsbb
+13-15 t: tttttgtttttttktttt
+12-14 x: xxxxxxxxxxxxxqf
+6-7 k: kmrkkwmk
+4-5 m: mmxjmdrhzkmxxphjmz
+2-3 t: tnvtndw
+4-5 x: xxtxxtxzf
+1-3 m: nwmglfscmwrjtzp
+10-11 c: cnccckcckcwdc
+14-19 b: tvbmrqtchwblbqbbqbb
+9-10 x: fxxxxxxxjxx
+4-5 g: gggggkggx
+8-12 k: kkkkkfkpkqkwkkk
+2-6 v: chpvkvt
+4-10 r: rmbjmcrgrrfrtmblhw
+4-6 n: rnnwtn
+3-10 v: htclcjhjkdv
+10-13 w: wwwhhwwwrwwzww
+18-20 w: wwwwwwjwwwwwwwwvwtww
+7-8 w: phrwbwwmc
+16-17 q: qqqqqqqqqqqqqqqqx
+2-5 k: kzknsxkkgtvmwlfrmrg
+3-4 b: zbbbb
+5-8 v: hfclvvpc
+3-15 t: ctfthpmgznjnhgtth
+1-6 t: httttq
+5-6 w: wwxhgww
+3-5 m: fmtnmmm
+11-17 n: xnnchnzpsmcslvzcn
+5-6 m: mmmmcm
+1-7 r: rwsgcgvjmtxwkqtr
+6-16 m: mmmmmmmmmmmqmmmmmm
+5-10 s: sssggssssjsssmsss
+9-14 p: ppfppzppnvmpqdvpp
+2-4 l: wclwrlrdvh
+6-17 g: gggmkglggwgpgkmglt
+5-7 z: zzzbzpz
+4-5 q: qbqqlzpqg
+10-19 h: hhhhhhhhhrhhqhhhhhhh
+6-7 m: nfnxmsmhtmhsmmmmgmsl
+2-3 m: mkfmmm
+8-10 j: xrjdnjjjnjjcjjjjjj
+3-6 x: xwrjxhjxx
+6-7 z: zzzzzzzg
+8-17 k: kkkkkkkkkkkkkkkkk
+6-9 n: rnnxnnbwnsnnwn
+6-8 m: mkmmmsmm
+4-6 q: qqfxqqq
+2-8 s: hxmfbkszk
+6-7 r: rrrrrrr
+2-5 h: hhqzhhhh
+5-15 b: bhbvnrbrbblbbhh
+12-13 d: ddddddtdddvhddd
+5-6 f: fmfcfwf
+4-7 j: njqfxjjjqjjvdj
+6-9 g: fggkggzgghrv
+9-12 b: vbblbxpfrbjbgpwxb
+1-8 s: tzcdrktsqjsxssfsssh
+10-14 f: fffffffffcffffffffff
+13-17 p: pqpppppcpbwpppnprppk
+16-17 n: nnnmnnnnnnnnnnnsj
+10-16 k: kkkkkkkkkkkkkkktk
+8-11 w: wwwwwwwwwwm
+2-5 q: qqqqqq
+2-7 m: mmmmmxg
+2-9 m: mmvlggdmr
+3-9 s: wxdbmlcrlpnzmkfdfs
+12-16 z: zlxzgznqqfzsqtwc
+6-7 f: flvmfffjffbmgfzfgfp
+2-3 g: cgggqgxqgv
+2-3 f: rffvf
+1-8 h: vhhhhhhvhhvhhhhf
+6-12 x: vzdxxxgxtxzxxxqc
+4-5 w: rwwwwww
+7-10 r: brwrcrrkcsj
+6-10 q: jvqqqqqqqmq
+5-18 v: lvhvvwvvvvvlvlvvmv
+6-9 z: zzvzcwlzslhlzqsf
+3-6 x: sdknfxvwtcfcjgmv
+8-9 l: lqcwlllsllll
+1-4 k: dgklv
+2-6 q: qqqptfqqqqq
+4-7 m: mrmcmmmm
+4-5 r: rrrblg
+1-8 c: qcccccvntc
+6-7 m: mzbxmmmnhmqcmmqvbmcp
+2-4 t: ptvqx
+9-10 s: gpssssssgss
+4-18 b: bbbbbbbbbbbbbbbbbfb
+4-5 f: ffffgf
+3-6 l: lslglw
+1-5 l: ltzlllsdlmrllkvbztvr
+15-19 l: llllllllllllllnllll
+10-11 j: jjjjpjjjjjncj
+2-3 w: wfwgd
+1-7 r: vrrrzrr
+3-7 k: kkkjckkkgkbtvm
+9-12 k: kkkkkrckcrkk
+1-6 b: hpbjbvb
+6-8 s: ssssssvss
+2-4 x: mpxk
+6-10 x: xxxmrwhgxxxjx
+7-8 x: xxphxxxxx
+6-19 n: mdrlnnpnjndqgnkfwnnn
+2-5 q: qjwtbmkhtnxm
+15-17 j: xjjjjjbjqjjjjjjqjjjw
+5-7 x: pxxxxsxxsxx
+3-6 t: ttttrp
+8-11 f: fffffffffrkzf
+6-8 r: glsprkbp
+10-12 m: mmmmmmmmmmmsm
+13-14 z: zzszzzszzbzzzplzzz
+19-20 c: ccccchwccccccccccncb
+7-12 z: qzggglzlhshnrwt
+12-14 z: zzzzzzzzhzzwzc
+1-2 s: sssl
+1-3 q: fsqmwq
+1-6 z: zmzztzkzznmflqffz
+9-11 b: bwbbjbbbtlbbn
+4-6 s: nktszz
+2-5 j: nqjhjkb
+7-16 l: lrlllllllmllswlsl
+2-3 f: fjqvfff
+7-15 w: hwxghddqwwwwwww
+2-4 z: zgzfx
+5-6 h: vhhjhthh
+13-14 h: hhhhhhfhhhhhhhphhhh
+16-17 k: kkkkkkkkkkkkkkknx
+7-15 l: dllllllmlllfllf
+2-6 w: mtkwwwww
+2-7 k: zpkkgldk
+7-9 d: htmtjddddddqvddcd
+4-9 v: rvfbbwzdwcvvqv
+6-11 m: mmvmbvmmmsmmlmmm
+3-8 p: xpxppsgpbxp
+2-6 f: vffbszhvvrdfkxc
+8-11 v: lvrrlvvqqvr
+5-17 h: hdhhbhhzhhhhhhsbl
+8-10 f: fhgffgfrfqtf
+9-12 s: ssssfssdpssswf
+9-12 m: mmmmmmmmpzgmmm
+7-9 l: zlmllvwlllldl
+8-11 m: mmdmfmmdxbmxbmm
+1-4 m: fklssmffwzgqcvdpm
+13-14 c: cczcccccccccccc
+5-9 f: frtkfpffsfff
+5-8 f: ffffgffr
+3-8 m: mmxsmmmb
+1-6 m: mdmmmm
+1-2 h: hhdtmhwfpt
+4-14 d: dmrkdvddmdsdddbsgd
+6-7 c: cxccgcccc
+6-12 v: xcqvjvvsdvvvpv
+11-14 d: gltkjvddwjdkrln
+2-13 f: ggffllflfbfffqkfmf
+10-13 c: xkvcccccrmccccc
+17-19 q: qqsqqqqqqqqqqqqqfqmq
+8-10 t: ttttlttwtlt
+4-5 f: wffrd
+2-16 v: tvhvvqvrvvvvvvqvvf
+2-4 c: cccc
+3-8 z: zrzzpzlzzhsdxqqfx
+6-10 k: kkkkkkkkkk
+5-7 r: rvrrvrz
+14-15 w: wwwwwwwlwwwwncwvwjk
+6-11 q: qfhxqqgqqqsvcpr
+4-7 f: kflfffzff
+2-14 t: rtttttptlxsttt
+11-15 t: ttttttttttftbvqttt
+6-10 c: cckwlchltchcczgw
+3-8 s: ssssvsqnss
+1-8 h: mhhhhrhhh
+13-15 b: bbbbbbbbbbbbbbnb
+15-17 p: dpppppppppspppcps
+5-12 l: xbfjglklphtl
+2-4 v: vvvvbvwpvvvrv
+3-5 k: plhjkkqkskz
+6-12 z: zzzzzczzzzzk
+2-3 j: xvjljj
+6-7 r: rlrrrrrrzrrzrrr
+1-12 t: mqrkgpktbsqxg
+10-13 z: pzmzzxpnzxpgzzzhzz
+5-13 s: gslsskvgxssssnpj
+10-14 m: mmmmmmsmmmmmmk
+2-5 b: tnbdsfwdzxrkjdb
+2-15 h: hnxhzhmhhhhhwwb
+1-4 c: ccccccc
+9-10 b: bbbbbbbbbl
+4-5 j: jsjjj
+3-6 n: xmmnppbn
+11-12 m: mmmmmmmmmmmm
+2-4 r: jrgrcpvgctrrr
+3-4 g: gggr
+14-17 n: nhnpnnnnznnnnnnnknnm
+4-5 k: krkkf
+11-17 h: hhdhhhhhhhhghhkhx
+5-19 q: dqbcqqqqsqqzqqqqqqv
+5-16 t: ttrkttttstwttttqdt
+11-18 h: dhhhhhhhhjhtjhhhhhh
+5-8 c: ccccrccfc
+1-3 v: nvvnv
+7-12 m: prmmzmtmmmssdmmmmt
+15-16 r: rrrrrrrrrrrrrqfr
+7-19 b: djbbbbqjbdtbslbgbbmb
+10-13 w: wwwwwwwwwwwwww
+5-15 p: mbpcjqmmhpppkfmrbcww
+2-4 n: nxbjknms
+5-11 s: hxhcsldmxshdksvsss
+12-16 q: qqqqqqqpqcdqqtwkqvq
+2-7 j: tjlpcjjjjnj
+6-7 s: ssssskm
+1-4 t: tttttx
+5-10 q: pqmnqrlqchbjzqqvq
+11-15 q: qqqqqqqqqqhqrqqrqq
+3-5 k: jhkgkxkqfskg
+14-15 f: ffvffmfffffffsffqm
+4-5 x: xxfxhfxx
+2-4 b: ktbv
+3-4 t: wjtwxvxctrcttb
+1-3 s: shssg
+8-12 z: skkzbdpzdkzzz
+1-3 f: rlfffqft
+5-8 s: fsrcnjsgsmgs
+7-17 v: vvvvvvvvvvvvvvvvvvv
+4-5 k: kklmq
+8-17 h: hhhhhlvghwkhrfzhxh
+17-18 n: nnnnnnnnnnnnnnnnnn
+3-10 h: mhhhhrhznwvhh
+8-9 x: xmxxxxxxx
+4-5 p: ppppk
+11-13 t: tttttttttttjtcn
+3-4 q: qqvhz
+3-8 l: gbpqclnkwlhdlml
+12-13 f: fffffffffffrf
+3-11 s: ssjssssssslssss
+6-7 b: bbbbbwbb
+7-9 r: krrrrrfrj
+13-14 b: bbbbbbbbbvbbbp
+2-4 x: ltgbx
+7-10 r: smrrrrkjrrr
+3-7 n: vnqpngjdgrw
+7-18 t: ttltqtsktrjgxtqhtt
+2-5 v: dvvxbvvvnk
+2-5 n: nnnnnpn
+1-3 t: nttmtx
+3-4 z: zpszz
+1-12 p: pmpxphlpppppppqppp
+3-4 v: qvvvvvv
+9-12 g: gwgggggggtgqgg
+2-4 n: knpn
+3-13 d: hncbdrvpddddcfddd
+5-9 s: ssnspslslsfkpskss
+1-2 s: ssczgkvtlp
+5-6 p: pmvpzpppkm
+1-4 j: jjhr
+5-6 s: ssssxl
+1-3 t: ttrt
+16-18 n: nnpnnnnnnnnnnnnnnnn
+4-5 n: nnfnl
+1-4 b: bbbb
+7-8 l: nljlllkhl
+11-12 n: nnnnnsnnnnnnnpn
+5-10 k: kkkkckkkkhkkkkk
+7-10 s: zfsssfldxsvqsxdsqs
+5-6 q: qqqqqp
+6-7 q: qqqqqqq
+14-16 w: wwdhmwwjwwwwnwwlwwwv
+8-9 l: llllllldll
+12-14 c: ccrccccccccrcccccccc
+1-3 n: qnwnh
+1-4 l: mlll
+1-3 s: sssssss
+4-15 h: mhclhhhjllhhhgh
+15-16 x: xxxxxxtxxxxxtxttxx
+2-4 r: rmjh
+6-9 z: zzzzzpszt
+17-18 n: nnwnnnnnnnnnnnnnppnn
+8-11 v: vmvmvlvbvvvvv
+7-8 b: bbbbbbdf
+2-5 k: kkdkk
+8-9 d: dddsldddvxlhd
+7-8 h: hhhhkhxshxhn
+12-14 c: vcchpxcnmgkctpqcc
+1-5 w: wwwwww
+1-2 x: xdmk
+1-9 p: pbfvrdpqqn
+2-4 s: mtnvzhnzs
+4-6 t: cttxvtttx
+4-8 t: qttmtzttkwftrjk
+7-9 c: cccccccccc
+2-18 j: zjjqxjfqqlmjrjhjqx
+2-5 q: qmkqgq
+5-11 k: kkkkkkslzkkkkkrx
+16-18 h: hhhhhhhhhqhthhhvhh
+5-13 h: hhfhhhhhmhhshhhhhhh
+10-12 r: rkrrrrrmrrrrrr
+8-10 n: rnnckhmjnxmfggsgtnnn
+19-20 c: qsccznccccccnccccccq
+1-4 k: wtkck
+7-8 s: sssmssjssss
+3-5 l: llslv
+3-7 t: tvgjqgjbvtgpkt
+13-15 b: bbbbbbbbqbblrbbb
+9-10 z: zzzzzznzzb
+6-16 c: kpcnsccgccxfwccl
+2-3 d: ddbd
+10-16 v: vvvvqrvvsvvvvvvl
+3-12 d: dzdxxhddnlkddddk
+8-9 b: khbbbfbbbbb
+11-12 z: zzzzzzzzzzzz
+5-15 n: bnlvnnrjbnqlnnn
+1-2 q: mqqpzjc
+11-13 h: hhhhhhchhhhjhh
+8-11 x: nxfcxbjqxdlcxxxkxxx
+14-18 v: vvbqvvvvvvvvvvvvvvvv
+7-8 f: pgtlfffmjffnt
+10-18 m: mnkrmmmmmqmmmmmmmjm
+1-4 l: lghlhcnwprlgvw
+3-4 p: npxplpwl
+12-15 s: sfkwnvsssvssssfsssrp
+3-7 z: ztqnzlxjmzzbjfnxcw
+17-18 q: qqqqqqqqqqqqqqqqqq
+3-6 z: jczztzzbhmzzw
+3-7 f: skffttjffqfnchfrf
+4-6 m: hmqmcrmw
+10-11 t: dftttqttttttl
+7-13 p: spxnpgtzpppjpwppptp
+8-9 q: jqxqqqqxqq
+3-4 h: hhhh
+10-13 z: pgzxhxxpzzssj
+5-9 x: xfrdmjxmrxrqjpxbfxxx
+8-17 d: ddpddddddddsgddzddn
+1-4 g: vggdggggggggggggggg
+10-12 m: mmdqsmwvjjmv
+2-7 s: ssqsssk
+13-14 n: nnvnnnnnnnnnsgnn
+2-16 k: kkkkkkkkkkknkkkk
+3-6 p: dprphc
+2-10 k: mpkstkxkdb
+2-3 s: ssxs
+9-19 t: ttjttjttrtsqtmttttt
+4-5 j: jrjjtsjjd
+6-7 x: xxxpxjx
+13-15 q: fqfqqqqhqcqfqqbqqq
+1-3 z: zfgrzl
+6-8 n: nnnnnphm
+1-8 b: bbbbbbbbb
+4-5 h: thhgj
+4-8 v: vvvcvvvp
+8-9 t: ktttttttt
+3-4 f: wftbcfnmhkfdpjbns
+6-7 v: vvvvvlv
+16-17 z: zzzzhfzzzzzzkzzzwzzz
+1-2 q: qqqfq
+10-11 p: zpjzcppvcppppppppj
+10-15 c: vlccbcgcclcczfcfcc
+11-17 t: tsntktwzhsfttfwtx
+1-7 h: nhhhhhb
+6-13 b: bbbphnbbwbbbb
+8-9 x: xgxxxlxfxx
+14-16 m: mmmmmmmmmmmmmmmm
+3-4 x: xxbxx
+6-9 c: xkccsfccrccv
+10-18 h: jphhbshwghrxpnhnlhxh
+6-10 f: nlxbgvftfh
+3-4 p: ppwf
+1-6 s: kjwjwshcnqwxgwslvl
+2-3 m: mmlk
+2-3 g: gmgg
+3-6 r: rrrvrmr
+1-6 s: szgpksczqd
+12-14 t: ttttttpjvtqwtltt
+1-2 r: hrrrrvrrzj
+1-13 m: xmmmmmsmmmcsnmmmmfmm
+10-11 f: fffffffffsf
+13-15 d: ddddddddddddhdq
+7-14 k: jkkkkkkkrkmkkkk
+6-9 g: ggggggggg
+14-16 l: lllllllvlllllwtx
+1-3 g: ggggt
+3-4 m: mmkd
+5-10 g: jgsgvggwggj
+17-18 p: ppppppppppppppphpp
+1-2 q: qqjwhq
+2-6 q: qqgqqzk
+11-16 t: ttwttttttctttthgt
+1-5 m: zmmmsm
+12-16 r: rrrrrrrrrqrgrrrj
+4-5 v: xcvvghvrczpcgn
+1-3 x: xbfmxxfxxf
+3-5 j: hjbjm
+5-14 l: lllltlllllqllll
+3-4 x: xsxnxgtx
+6-18 g: gggggggggggggggggd
+8-12 t: tgttttqtcttttt
+4-6 p: pppppd
+6-7 x: xxxxxxx
+3-4 c: fdcclrccccvg
+11-12 v: vnvvvvzdvcrk
+1-9 z: zztzqzzzzcz
+1-12 v: vmvvvvvvvvvmvvvv
+9-16 v: vvvvvvvvvvvvvvvf
+2-7 h: xhtsfmvthhhrhdhhbbc
+5-6 c: qkccccd
+8-12 z: zzzzzzzjzzhbzz
+2-4 n: shlnnkxn
+19-20 v: vvvvvvvvvvvvvvvvvvcv
+7-8 h: hhkhhhkhh
+5-19 p: sxslgwvkszswqxtqpvf
+5-8 m: mmmmmrmbm
+2-5 j: jrnjjzjfhjdkjqjtkwk
+7-13 f: ffffffsfffffwfff
+6-9 w: wmwwdwwwsz
+12-15 f: nsffpfsdsjsfsffk
+13-16 k: kkkkkkkkkkkkkkhw
+6-17 s: ssssslssssssssssss
+3-5 c: srdscnncclqqcncsw
+9-11 p: pkppppppppp
+5-10 q: qqqqqqqqqpqq
+12-14 n: nnnnnnnnnnnnnn
+6-11 h: hhhhhqhhhhhvhhhh
+2-12 f: fgfrpzcstfffffxff
+2-12 n: nnxmnmnnnnknrpmnv
+6-7 m: jmmmmcnpkm
+4-6 v: mvkcwvmvvjvrvlv
+18-20 h: hhrmbrhhhhlhhvhmhhhb
+9-13 g: ggggggzgggsgfgxg
+9-15 m: pmmxmmmmmmmmmmm
+1-7 l: zlmsmlxpvvlzv
+2-15 g: sslggkdglqgxpgkx
+17-18 c: ccccccccccccccccmc
+10-11 w: wwwwwpcwwwpwwd
+3-5 w: wwwwk
+8-9 f: vfbvffsfcf
+4-6 r: rrrrrr
+2-4 n: nrnknn
+1-4 l: lxllllll
+10-11 f: qdfwvfffdfvwffgfkfgf
+3-4 b: xgxbdqxbfvzrl
+2-8 b: pbbkbbgbxr
+1-2 d: ddxdnv
+4-8 d: dndfcnhd
diff --git a/day3/day3.py b/day3/day3.py
new file mode 100644
index 0000000..716dc5e
--- /dev/null
+++ b/day3/day3.py
@@ -0,0 +1,35 @@
+from functools import reduce
+from itertools import islice
+
+
+def nth(iterable, n):
+ return next(islice(iter(iterable), n, n + 1))
+
+
+def mult(iterable):
+ return reduce(lambda x, y: x * y, iterable)
+
+
+def count_trees(data, right, down):
+ return [nth(row, right * idx % len(row)) for idx, row in enumerate(data[::down])].count("#")
+
+
+data = list(map(str.strip, open("input")))
+
+
+# Part 1
+down = 1
+right = 3
+print(count_trees(data, right, down))
+
+
+# Part 2
+slopes = [
+ # R, D
+ [1, 1],
+ [3, 1],
+ [5, 1],
+ [7, 1],
+ [1, 2],
+]
+print(mult([count_trees(data, right, down) for right, down in slopes]))
diff --git a/day3/input b/day3/input
new file mode 100644
index 0000000..8285f03
--- /dev/null
+++ b/day3/input
@@ -0,0 +1,323 @@
+.....#....#...#.#..........#...
+...#.................#.........
+......#...#.#.#.....#..#.....#.
+.........#.#.............##....
+#..####..#..#.##.....#.........
+...#........#..##...........#..
+..##.#.#..#....#..#......#.#...
+.......#.##....#.....###....#.#
+.#..#...#......#..#....##.#....
+...#...............#.#.....#...
+..#............#..#.........#.#
+#.#.#.............##.#......#..
+#...#..............##...#.#....
+...#....#................#.#..#
+..#.#..#.#.#..#.....#.........#
+#.............#..#..........#..
+.#...#.#........###.#....#...#.
+#......#....#.#..#.##..#.......
+.##......###.#......#..##...#..
+#..#....#........#......#.#....
+.#..................#.....#.###
+.#......#.#.#.....#...#.#......
+....#.............#.#..........
+....#..#.#........#..###.......
+.....#....#...#........#.......
+...........#.###....##.......#.
+....#...........#.#..#...#.....
+...........#.....#.#...........
+.....#........#.....#.#..#....#
+#.#......#.......#.......#.....
+..........#.............#.#.#..
+#...#..........#....#....#.....
+.#.#......#..##...#.....#...##.
+.#....#...#.#.......#.#........
+....#....##.##...#.............
+#...#....#..#.........#........
+...#.....#.#...#.......#..#....
+#.......#...#....##........#..#
+####........#........#....#.#..
+............##..........#......
+.......#.....#.#.#.##..#...#...
+..........#....#...##.........#
+..##..####.......##......#.##..
+.....#.#......##...#..#...#....
+....#.#.#.........#........#...
+...........###...#.........##..
+.......#.#....#......#.##...##.
+.................#...##.#...##.
+.......#.......#..#.#..........
+.#....#..#....#........#.......
+...............#.##..#...##..#.
+.###.#....#......#...#.#.....#.
+.#.....##.......#.......#......
+....#..#.....#.....#...........
+.......#....#.................#
+.......#.##...#...#......#.....
+.#.....#...####.............#..
+......#.........#..........#...
+.........#....#....#........###
+....#.........#......##.....#..
+....#........##...##.....##...#
+.#..#....#..........#...#.###.#
+#..#......#...#........#.......
+...#.........................#.
+.............#........#........
+.......#.#.#.....##.....#..#...
+..##..##.........#.............
+.#...#..#......#...##..##..###.
+.....#....#...#...##.##........
+.#.#..#...........#..#..#......
+##..#...#..#...##..#....#......
+...#...#...#.........#....###..
+...##..#....#.#.#.......#...#..
+..#.#.....#..#....#..##.......#
+.....#.#.....#......#....#.#...
+.......##....#.....#...#.....#.
+..##..#.................#.#....
+..............##....##.#..##...
+.#..#.....#....#.#.#...........
+......#.#.#..#..#...#.....#..##
+..#.........#.#.......###...##.
+#.....#...........#.....#.##.#.
+#..........#....#....#..#....#.
+.#.....#...#.......###......#..
+....##..##......#....#....#....
+.......#.#.............#....#.#
+.#..#.##.##.##....#.#.....##.##
+....#..##.#..#.............##..
+....#...........#...#....#..#..
+...........#..#....#....##.#.##
+......#....#....#.....#......#.
+.##.##....#.....#.#......#...#.
+.....##.......#.#.#........##..
+#..........##..#....#..#.#....#
+...#...........................
+...#..#...#..#.#.#.#.......#.#.
+.....#.........#..###..........
+...#.#......##....#......#..###
+#..............#....#.......#..
+.........##......###..###......
+..#......##...........#.##.....
+#.#..#......#...##.............
+......#.#.............#....#..#
+#.....##..#.#.................#
+..##....#.....#....#.....###...
+.#.#.##.....#..................
+.#......#.#.#.....#..#....#....
+..#.#.....##.#...#..#.#.##.....
+..#.#..#......##.#.#..........#
+.......##.....#..#...#....##.#.
+...#.....#..........#..........
+......................##......#
+...###.........##.........#....
+....#..................#.....#.
+.##..#.............#........##.
+....#....#...###..........#....
+.....#.#..........###..........
+..#......##......#.#.##.#..#...
+##...........#.#..#.....#..#...
+.........#......#..........#.#.
+...#.##.#..#..###..#...........
+....##.#.##...........#.....##.
+....#...................###....
+#.......#......#......#.....#..
+#..........##..................
+...#..#.#....#..#.........##.#.
+......#...##.#...............#.
+.........#....#.#...#..#..#....
+...#......###..#......#.....#.#
+#..###.#.............#.........
+......#...........#............
+..#..#.##.....#......#.#..#...#
+.........#..............#......
+........#.....#..#...#.....#..#
+.....................#........#
+.##.......##...#.###.........#.
+.#...#.......#.#....##....#....
+........#......#...........#.#.
+....#......##...#.....#...#...#
+..#.........#.#...............#
+....#.....#......#.............
+.............##.....#....#.....
+........#......#.#.....#....#..
+#.........#...#......#....#...#
+.#........###...#.#.#...#....#.
+.###...........#..#............
+....##.........#..#...##.#..###
+.####..#.#...............##.#..
+#.....#...#....#.......##....#.
+..#.....##...##.#...#..#.......
+..#.###.......#.....#.......#..
+...........#.......#....##....#
+..#...#....##........###......#
+...#..#..............#...#.....
+##.#.............#....##.#..##.
+##.#..#..............#.#.......
+.......#....#....##............
+.##..##.#..........#.#...#.#...
+.........##.......##...#...#...
+............#...##....#...#....
+........#...#..#...#.##......#.
+..#...#.#.........#.#....#.....
+..#...#.#..#.......#.#.........
+.......#.....#...#.#..###....#.
+.#......#.#....#.#.####....#...
+.......##..#......#...#......##
+#####.....#........#.#.......#.
+.....#...#..#...#.#.....#..#...
+....#...#....##.....##....#.#..
+.#..#......#.####.....#....#..#
+...#.......#..#.....##........#
+.#.....#.#.#.....##...#..#.....
+.............#...#..#.....#....
+...#.....##.......#...##..#...#
+..#.............#...#..#..##...
+...#........#........#...#...#.
+##..........#.#.#.............#
+....#....#..............#..#...
+....#..####..##....#.......#.#.
+.#..#.....##....#.#.....#...#..
+#............##..#..#.#......#.
+....#..........##..#...........
+..#.##.#.......#...#.##....#...
+....#.#.............#.#.##....#
+...#..#.#.#......#..#....#....#
+.............#...........#..#..
+#.............##.......#..###..
+..##....#.#.#...#...#....#...#.
+##.......####........##..#.....
+.###..#..#..#..#...#.#.........
+............#............#.....
+#...#.....#.#.##.##...#.......#
+#........#....#...#.........#..
+#....#.#......#.............#..
+....#............#......##...#.
+.......#........#..#.......#..#
+#.#...#.#.#..#..#........#....#
+#.#.##...........#.....#.....#.
+.#...##.#..#...................
+###...#.#.....................#
+.#....##...##.#....#..#........
+........###...#.#....##...#..##
+...#..#..........###..#.......#
+..#..##.............#.....#....
+....##..#..............#.......
+...##...##.#....#.#...#...#.#.#
+..#..........#.....##........#.
+.#.#.....#......#..#....#......
+...##.#....#.......#......#....
+...##..#........##......#..##..
+#..###...#...........#.#.......
+..##...#...#.#.#...#.#.....#...
+..#.....##.#....#.....#..#.....
+..#.#......#.......#...........
+....##......##.............#..#
+.......#.........##...#..#...#.
+.#........#.##.#.....#.#.......
+#..#...#..#.....##...........#.
+..##..............#....#.......
+.#..#....#.#...........#..##.#.
+#....#..###..........#...#.....
+.......#...##........#.#...###.
+....#..#......##......#.....#..
+.#..##..#..#......#......#.##..
+....#.#...........#..#.#.##.#..
+.....#......#.....#.....#..#...
+..........#...........#...##...
+#..#.#.#..#....#.....##......##
+..#.....#.....#................
+...#.#..##.........#..#..##....
+.#.....##..#.#.#.#.....#.......
+...........##...#..............
+...#.#....##..#.............###
+...#.#...........#.........#...
+#.....#.....##..#.#.#.#....#...
+##..................##.##......
+......#.....#....#.....#..#...#
+.............#.......#....#..##
+.#..#.##..#..#.........##...#..
+..#.#....#........#....#....##.
+.#.#.#.#.#.......#.......#..#..
+#.....#..##..#.........#.......
+.............#.#..............#
+.........#......#....#.#......#
+.........#.#...##..#.#.........
+...........#..........#........
+.......#...#...#......#..#.....
+#.....#...............#.....#.#
+..#....#..........#.#...#..#...
+#....##..#..#.....#.#..#.#.....
+.#....#..###............##.....
+......#.##...........#....#..#.
+...#........##....#...#...#....
+..#.#.#.....#..#.#..........##.
+..................#...........#
+##........#.#......#.#.......#.
+......#..#.............##......
+.#..###..#...###......#....#..#
+..#...........#...#...##..#...#
+..#..........#..............#..
+.....#.........................
+..#.#..##...........##...#.....
+...........#......##.....##....
+......#.......#................
+.........#.......#.#...........
+#......#...#........##.....##..
+...#.....#....#..#.....#.......
+....#.#......#...#..#.##.##...#
+..#..#.#.....#...#...........#.
+.#....##.####.....#..........##
+...##.##.....##..###...#.......
+.......#.#...#....#.......#..#.
+.#..#.###.#.............#......
+.###.........####..#...........
+#..#.#.###.....#.......#.......
+.#.....#.....#.....#.........#.
+..#...#......#.......##.###....
+.......##.............##.#.....
+.....................#.....##.#
+##.#...#........#..##........#.
+...#..........#.#.#..#......###
+.#....#.#.#..........##........
+....#....####....#.#....#..#.#.
+..#.........#....##..........##
+...##.#.......##.#.......#.#...
+........#..#......#...#.#.....#
+.....##............#.#.......#.
+.........##...##..#.....#..#...
+#...#....#........#...#....##.#
+..#.....#..........#...##.....#
+.##..#.........#...........#...
+.....##.#.#.#.#..#...#.....#.#.
+.#..#..##.........#.......#...#
+#....#.....#...#....#.........#
+...#..#.......#.........#......
+.#....##..#......##.#.#......#.
+....##.##...........#...#......
+..#.#....#.##...#......#.......
+...#........#.............#....
+...##....................#.###.
+.#.......#.........#......##...
+....#..#..............#....#...
+....##.#............#..........
+.#...#....#...##..........#....
+....#............#.....#.......
+.......#........#..............
+....#.#....#.#..#..#...........
+......................#.#......
+#......##.....#..#.......##....
+...#........#........#.#...##..
+##.#....##....#................
+#..#....#..............#.##....
+......#........#...........#...
+#....##.##...#...#..#...##.....
+............#............#..#..
+#....#...#..#..#.#...........#.
+.......#..........#..........##
+.....#......#....##.#..........
+.#....#....#....#....#..#...#..
+.....###....#...#.#.#........#.
+.......#...#..........##..#...#
+..##........................##.
+.....#....#..............#....#
diff --git a/day4/day4.py b/day4/day4.py
new file mode 100644
index 0000000..f64356c
--- /dev/null
+++ b/day4/day4.py
@@ -0,0 +1,104 @@
+"""Day 4 code."""
+import re
+from itertools import chain, groupby
+
+REQUIRED_FIELDS = set(["byr", "ecl", "eyr", "hcl", "hgt", "iyr", "pid"])
+EYE_COLORS = ["amb", "blu", "brn", "gry", "grn", "hzl", "oth"]
+HCL_PATTERN = r"^#([a-fA-F0-9]{6})$"
+PID_PATTERN = "^([0-9]{9})$"
+
+
+def passport_str_to_list(passport_str):
+ """Convert string of passport data into list of key, values.
+
+ The reqason we use tuple is so that when we eventually get a full list that
+ presents all of key values of passport we can convert it into a dict easier.
+ """
+ pairs = passport_str.split(" ")
+ return [tuple(x.split(":")) for x in pairs]
+
+
+def passport_parser(itr):
+ """Parse passport data into individual passports.
+
+ Groupby allows us to generate a new group every time we encounter an empty
+ line which signifies the boundary of each passport's data.
+ """
+ for k, groups in groupby(data, lambda x: x == ""):
+ if k is False:
+ yield chain.from_iterable(passport_str_to_list(x) for x in groups)
+
+
+def passport_has_required_fields(passport):
+ """Check if passport is valid."""
+ return REQUIRED_FIELDS.issubset(set(passport.keys()))
+
+
+data = map(str.strip, open("input"))
+passports = [dict(x) for x in passport_parser(data)]
+
+print("Part 1:", sum(map(passport_has_required_fields, passports)))
+
+
+def byr_is_valid(passport):
+ """Check birthyear is valid."""
+ return 1920 <= int(passport["byr"]) <= 2002
+
+
+def iyr_is_valid(passport):
+ """Check issue year is valid."""
+ return 2010 <= int(passport["iyr"]) <= 2020
+
+
+def eyr_is_valid(passport):
+ """Check expiration year is valid."""
+ return 2020 <= int(passport["eyr"]) <= 2030
+
+
+def hgt_is_valid(passport):
+ """Check the hieght is valid."""
+ hgt = passport["hgt"]
+ if "cm" in hgt:
+ val = int(hgt[: hgt.find("cm")])
+ if 150 <= val <= 193:
+ return True
+ elif "in" in hgt:
+ val = int(hgt[: hgt.find("in")])
+ if 59 <= val <= 76:
+ return True
+ return False
+
+
+def hcl_is_valid(passport):
+ """Check hair color is valid."""
+ return re.match(HCL_PATTERN, passport["hcl"])
+
+
+def ecl_is_valid(passport):
+ """Check if eye color is valid."""
+ return passport["ecl"] in EYE_COLORS
+
+
+def pid_is_valid(passport):
+ """Check passport id is valid."""
+ return re.match(PID_PATTERN, passport["pid"])
+
+
+VALIDATION_TESTS = [
+ byr_is_valid,
+ iyr_is_valid,
+ eyr_is_valid,
+ hgt_is_valid,
+ hcl_is_valid,
+ ecl_is_valid,
+ pid_is_valid,
+]
+
+
+def passport_is_valid(passport):
+ """Check if a passport is valid."""
+ return all(func(passport) for func in VALIDATION_TESTS)
+
+
+passports_with_required_fields = filter(passport_has_required_fields, passports)
+print("Answer 2", sum(map(passport_is_valid, passports_with_required_fields)))
diff --git a/day4/input b/day4/input
new file mode 100644
index 0000000..127dae0
--- /dev/null
+++ b/day4/input
@@ -0,0 +1,1121 @@
+eyr:2024 pid:662406624 hcl:#cfa07d byr:1947 iyr:2015 ecl:amb hgt:150cm
+
+iyr:2013 byr:1997 hgt:182cm hcl:#ceb3a1
+eyr:2027
+ecl:gry cid:102 pid:018128535
+
+hgt:61in iyr:2014 pid:916315544 hcl:#733820 ecl:oth
+
+hcl:#a97842
+eyr:2026 byr:1980 ecl:grn pid:726519569 hgt:184cm cid:132 iyr:2011
+
+ecl:grn hcl:#6b5442 pid:619743219 cid:69 hgt:176cm eyr:2027 iyr:2012
+byr:1980
+
+ecl:brn byr:1969 iyr:2014
+hgt:164cm eyr:2020 pid:982796633 hcl:#602927
+
+ecl:gmt
+iyr:1987 eyr:2039 pid:15115163 byr:2006
+hcl:bfab0d
+
+cid:117
+hcl:#efcc98
+iyr:2010 pid:322719183
+hgt:176cm
+eyr:2020
+byr:1957
+ecl:brn
+
+byr:1954 hgt:178cm hcl:#38f7fd pid:838813262 ecl:blu
+eyr:2029 iyr:2019
+
+eyr:2023 ecl:amb iyr:2020 byr:1927 pid:242570886 hcl:#18171d hgt:192cm
+
+iyr:1990 cid:295 hgt:131 pid:187cm byr:2014
+ecl:xry hcl:z
+eyr:1928
+
+ecl:hzl
+byr:1953
+eyr:2023 hcl:#866857
+hgt:181cm iyr:2010 pid:568185567
+
+byr:2030 hcl:#fffffd ecl:#a4a596 hgt:168cm
+iyr:1936 eyr:2020 cid:296 pid:168786676
+
+byr:2030 iyr:2026 eyr:1974 hcl:7fcaa5 ecl:utc
+pid:190cm
+hgt:67cm
+
+byr:2023 eyr:2037 hgt:59cm
+ecl:lzr hcl:z iyr:2026 pid:#ea9083
+
+byr:2003 hcl:z hgt:91 iyr:1990 eyr:2024 ecl:#123d73
+pid:48494230
+
+byr:2022 eyr:2020 iyr:2030 ecl:gmt
+hgt:191cm pid:3509331253 hcl:#888785
+
+iyr:1994
+ecl:#c3d564 byr:2009
+hgt:162cm hcl:336498 pid:#e99d09
+cid:288
+eyr:1921
+
+byr:1924 cid:290 iyr:2010 ecl:amb eyr:2020
+hgt:156cm hcl:#7d3b0c pid:795497164
+
+cid:301 iyr:2017 hgt:67cm
+hcl:#888785 ecl:#0405b9 byr:1964 pid:707857518 eyr:1976
+
+ecl:gry pid:474303066
+iyr:2011 hcl:#18171d hgt:165cm byr:1921 eyr:2024
+
+hcl:#6b5442 ecl:amb iyr:2020 hgt:191cm
+byr:1949 cid:301
+pid:075846582 eyr:2029
+
+hcl:#a97842 cid:186 iyr:2014
+ecl:gry
+hgt:191cm eyr:2023 pid:645548969
+byr:1956
+
+pid:154cm hcl:z ecl:gmt iyr:1989 hgt:69in cid:53 byr:2010
+
+hgt:72cm byr:2023
+eyr:2034 hcl:z ecl:#f5249e iyr:1997 pid:#79af7a
+
+eyr:2038 byr:2015
+hgt:70cm ecl:grt hcl:9d58a1 iyr:1926 pid:6290928420
+
+pid:620857794 eyr:2022
+byr:1950
+hgt:159cm
+hcl:#ceb3a1 ecl:amb iyr:2015
+
+eyr:1954 ecl:#ab2ce4 pid:#14eedd
+iyr:2009
+hcl:29e484
+byr:2022 hgt:73cm
+
+hgt:59cm byr:2026 cid:245 iyr:2020
+eyr:2029 pid:073943129 ecl:hzl
+hcl:#b6652a
+
+iyr:2014 byr:2015 hcl:#a97842 eyr:2029
+pid:#132098
+hgt:150 ecl:oth
+
+hgt:151in ecl:#967d49 eyr:2026 hcl:#18171d
+pid:384230726 byr:1934
+iyr:2018
+
+iyr:2020 eyr:2021 byr:1937 pid:735047371 cid:159 ecl:blu hgt:177cm hcl:#22b774
+
+ecl:brn hcl:#6b5442 pid:117807698 cid:105 iyr:2016 byr:1977 hgt:183cm
+
+ecl:hzl hcl:#6b5442 byr:1933
+iyr:2019 pid:348486702
+eyr:2020 hgt:193cm
+
+byr:1928
+ecl:gry
+eyr:2028 hcl:#fffffd pid:571149069
+iyr:2012 hgt:175cm
+
+pid:359108298
+eyr:2027 hgt:158cm ecl:amb iyr:2016
+hcl:#602927
+
+iyr:2027 byr:2015
+hgt:191in pid:102033301 ecl:xry
+eyr:2031 hcl:#602927
+
+ecl:oth cid:163 hcl:z iyr:2014
+byr:1944 hgt:173cm
+eyr:2027 pid:#0524c1
+
+ecl:brn
+byr:2030 hgt:71cm eyr:1931 cid:165 iyr:2010 hcl:#cfa07d
+pid:509642098
+
+hgt:166 iyr:2020 cid:308
+eyr:2022 pid:950463527
+byr:2017
+hcl:z
+
+ecl:amb
+eyr:2023 byr:1924
+pid:901038027 hgt:70in
+iyr:2010 hcl:z
+
+byr:1972
+iyr:2013
+hcl:d669ad hgt:64cm cid:247 ecl:#19aa26 eyr:2023
+
+hgt:71 hcl:#fffffd
+byr:1976 cid:108 eyr:2038
+ecl:grt iyr:2018 pid:190cm
+
+iyr:2017
+byr:1963 ecl:grn hgt:175cm
+pid:160915270 eyr:2028 hcl:#cfa07d
+
+pid:569740130 hgt:171cm hcl:#733820
+ecl:gry eyr:2024 iyr:2020 byr:1973
+
+byr:1937
+iyr:2016 ecl:gry hgt:181cm pid:521705827 hcl:#b6652a eyr:2027 cid:295
+
+hgt:156cm ecl:blu iyr:2019 hcl:#866857
+pid:662418718 byr:2000 eyr:2024
+
+byr:1971 pid:693616099
+hcl:#efcc98
+hgt:175cm iyr:2016 ecl:gry
+eyr:2023
+
+iyr:2013
+eyr:2024
+ecl:gry
+pid:414295491 byr:1986
+hgt:188cm hcl:#b6652a
+
+eyr:2022 byr:1975 iyr:2020
+ecl:grn cid:68 hcl:#a97842
+hgt:151cm pid:229803943
+
+cid:258 iyr:2012
+ecl:hzl
+byr:2001
+eyr:2021
+hcl:#866857 pid:990590217 hgt:172cm
+
+cid:339 byr:1957 hcl:#866857 pid:343480061 eyr:2039
+hgt:191cm
+iyr:2021
+ecl:utc
+
+cid:281 hcl:z ecl:blu
+byr:2020 pid:132694306 eyr:2020 iyr:1953
+
+hcl:#602927
+byr:1933 eyr:2028
+hgt:165cm ecl:gry iyr:2018 pid:658484617
+
+ecl:oth
+hgt:188cm cid:110 pid:056975690 iyr:2016 byr:1950 eyr:2023 hcl:#cfa07d
+
+cid:342 hcl:#fffffd eyr:2024
+pid:153555359 byr:1974
+ecl:gry hgt:191cm iyr:2020
+
+byr:2019 ecl:#160ed3 eyr:1999 hcl:z
+cid:146 pid:195693972 hgt:159cm
+
+iyr:2015 eyr:2030 hgt:191cm byr:1979
+ecl:#ec4873 pid:994113786 hcl:#cfa07d
+
+pid:552331609
+ecl:grn
+hgt:171cm eyr:2022 hcl:#b6652a
+iyr:2020 byr:1931
+
+hgt:177cm iyr:2010 pid:934058099
+eyr:2020
+ecl:blu
+byr:1967
+cid:112 hcl:#7d3b0c
+
+iyr:2028
+hgt:138
+cid:180 hcl:z
+eyr:2022 pid:3286566621 byr:2002
+
+eyr:2020
+iyr:2019
+hcl:#a97842 pid:149148750 ecl:brn hgt:159cm
+byr:1981 cid:339
+
+cid:344
+eyr:2021 byr:1968 pid:777786047
+ecl:grn hgt:192cm hcl:#888785
+iyr:2015
+
+hgt:173cm
+eyr:2030
+hcl:#733820 pid:610226642 byr:1954 cid:80
+iyr:2013 ecl:blu
+
+byr:1999 eyr:2023
+ecl:amb pid:912145128
+hgt:181cm
+iyr:2015 hcl:#a97842
+
+eyr:2027 hgt:188cm
+pid:080715145 hcl:#341e13 iyr:2013
+ecl:oth
+byr:1965
+
+hgt:170cm byr:1950 iyr:2013
+pid:010541784
+eyr:2027 ecl:zzz
+hcl:a3bae8
+
+hgt:190cm eyr:2024 ecl:#6dcedc pid:909319684
+iyr:2011 byr:1959 hcl:z cid:182
+
+eyr:2028
+iyr:2016 hcl:#623a2f pid:208417572 byr:1929 cid:137 ecl:hzl
+hgt:167cm
+
+hcl:#6b5442
+ecl:grn
+byr:1938
+eyr:2023 cid:307
+hgt:59in iyr:2014 pid:205268145
+
+pid:047489285 eyr:2026
+hcl:#b6652a byr:1920
+iyr:2015
+hgt:183cm ecl:gry
+
+ecl:blu hcl:#508e8b iyr:2016 eyr:1954 hgt:151cm pid:086752750 byr:1920
+
+iyr:2011 byr:1981 hgt:186cm
+cid:117 hcl:#6b5442 ecl:amb
+pid:756830713 eyr:2026
+
+eyr:2037 pid:364464758 hcl:z ecl:grn
+hgt:112 iyr:2013 byr:2022
+
+ecl:hzl
+cid:65 pid:679487194
+byr:1986 hgt:169cm hcl:#cfa07d eyr:2025 iyr:2013
+
+cid:192
+byr:1921 pid:#5fe831 ecl:#fbb2b9 hgt:62cm eyr:1971 iyr:2024
+hcl:z
+
+hcl:#cfa07d eyr:2026
+hgt:74in
+iyr:2019
+ecl:xry
+pid:622690982 byr:1982
+
+eyr:2026 pid:523515724 iyr:2013 byr:1973 hgt:167cm
+ecl:grn hcl:#866857
+
+byr:2009
+eyr:1985 pid:484497014 ecl:#0bfcf2 iyr:1992 cid:131 hcl:39d6b0 hgt:177in
+
+eyr:2020 iyr:2016 ecl:brn hcl:#ceb3a1 byr:1966 pid:696621560 cid:62
+hgt:59in
+
+hgt:166cm hcl:#7d3b0c
+iyr:2016
+ecl:brn pid:190cm
+eyr:2020
+byr:2001
+
+eyr:2021
+iyr:2012 hcl:#6b5442
+ecl:amb hgt:169cm
+pid:969150085
+byr:1925
+
+ecl:brn hgt:175cm byr:1992 iyr:2016 pid:415209726 eyr:2027
+cid:72 hcl:#866857
+
+iyr:2017
+hcl:#733820 byr:1938 eyr:2020 pid:274486958 hgt:163cm
+
+hcl:4f5dd1 cid:336 ecl:grn iyr:1931 pid:6212280197
+byr:2016 eyr:2037
+hgt:187in
+
+iyr:2017 byr:1940 eyr:2025 pid:115098205 hgt:151cm
+ecl:grn
+cid:122
+hcl:#6b5442
+
+hcl:#efcc98
+iyr:2020 pid:709548547 hgt:179cm
+eyr:2030 ecl:gry byr:1975
+
+cid:217 hcl:#888785 eyr:2029
+ecl:hzl iyr:2013 pid:160053490
+hgt:166cm byr:1992
+
+eyr:2024 cid:188 iyr:2016 hcl:ff3a59 ecl:xry pid:296357512 byr:2026
+
+hgt:154cm iyr:2010
+ecl:blu pid:717041634 byr:1928 cid:123
+eyr:2027
+hcl:#a97842
+
+pid:391011205 ecl:hzl hgt:191cm iyr:2016 eyr:2028 cid:281 byr:1934
+
+byr:1937 hgt:65in
+pid:667975382 ecl:gry cid:270 eyr:2024
+iyr:2012
+
+hgt:179cm pid:065528723
+hcl:#888785 byr:1937 eyr:2028
+iyr:2013 ecl:hzl
+
+iyr:2027 cid:261 eyr:2037 ecl:#ced7d5 pid:157cm
+hcl:3a80c1 byr:2029 hgt:187in
+
+eyr:2028
+hgt:157cm hcl:#733820
+iyr:2012 ecl:blu byr:1952 pid:915063263 cid:335
+
+eyr:2023 hcl:#efcc98 pid:490625944 byr:1961 ecl:grn hgt:155cm iyr:2018
+
+cid:247 pid:2807544665 eyr:2021
+ecl:oth
+hgt:191cm
+byr:1928
+iyr:2013 hcl:#623a2f
+
+eyr:2015
+byr:2021
+hcl:40d2fc hgt:69cm pid:159cm ecl:gmt
+
+hgt:175cm eyr:1992 cid:328 pid:263110997 ecl:#e53989 byr:2014 hcl:#a97842 iyr:2026
+
+pid:491396731 eyr:2027 hgt:172cm hcl:#623a2f cid:92 iyr:2017 byr:1983 ecl:grn
+
+hcl:#fffffd
+iyr:2018 byr:1983 pid:714591144 ecl:grn eyr:2021
+hgt:160cm
+
+eyr:2027
+hgt:63in ecl:blu byr:1987 pid:397963077 iyr:2018 hcl:#ceb3a1
+
+eyr:2027
+hgt:184cm
+hcl:#6b5442 iyr:2012 byr:1984 ecl:blu pid:196287205
+
+iyr:1998
+ecl:hzl
+pid:7872103596 byr:1991
+cid:275 eyr:2039
+hgt:174cm hcl:0d2ad6
+
+iyr:2010 hcl:#efcc98
+byr:1992 hgt:65cm eyr:2038 pid:383236012 cid:68 ecl:lzr
+
+hgt:190in cid:127
+byr:1947 pid:515728209 hcl:#733820 iyr:2014 ecl:amb eyr:2020
+
+iyr:2017 eyr:2028
+hcl:#623a2f
+byr:1964 ecl:grn pid:198467794 hgt:169cm
+
+ecl:utc
+hgt:59cm byr:2007 iyr:2030
+hcl:7ac4db eyr:2038 pid:#7206c6
+
+iyr:2010
+hcl:z eyr:2021 ecl:brn
+hgt:173 cid:86
+pid:194240791 byr:1975
+
+pid:9347286034
+hgt:63cm
+iyr:1992 eyr:2034 hcl:66031b ecl:grt byr:1929
+
+pid:593398904 byr:1939 iyr:2019 hcl:#b6652a ecl:gry eyr:2023
+hgt:70cm
+
+byr:1991
+iyr:2019 hgt:164cm pid:282852411 cid:340 ecl:amb
+hcl:#341e13 eyr:2027
+
+eyr:2020
+iyr:2014 ecl:grn hcl:#866857 hgt:158cm
+byr:1931 pid:321748597
+
+cid:98 byr:2023 iyr:2019 pid:#48f79f
+hcl:73c882 eyr:1973 hgt:151in
+ecl:utc
+
+iyr:2023
+hcl:#18171d
+pid:52221892 eyr:2039
+byr:2008 hgt:72cm ecl:#db8d14
+
+iyr:1966 cid:274
+eyr:2034 pid:12256322
+byr:2006 ecl:dne
+hcl:985c2d
+
+hcl:#fd033b
+eyr:2026 ecl:blu
+iyr:2016
+byr:1953 hgt:157cm
+pid:502619036
+
+byr:2015 pid:159cm iyr:2025
+hgt:158cm eyr:1943 hcl:z ecl:grn
+
+ecl:blu iyr:2016
+pid:842400950
+hcl:#733820
+cid:266
+eyr:2027 byr:1931
+hgt:161cm
+
+iyr:2017 hgt:190cm byr:1994 pid:706570967
+ecl:hzl hcl:#18171d
+cid:180
+
+cid:197 pid:204952666 ecl:amb
+hgt:70in iyr:2016 byr:1936 hcl:#98cbe3 eyr:2025
+
+pid:555499128
+byr:1971 hgt:71in
+cid:83 ecl:blu
+hcl:#cfa07d eyr:2027
+
+ecl:hzl iyr:2014
+pid:30428184 cid:237
+hgt:171cm byr:1942 hcl:#888785 eyr:1986
+
+eyr:2025
+pid:579385370 hgt:193cm
+hcl:#c0946f byr:1979 iyr:2016
+ecl:amb cid:284
+
+eyr:2029 byr:1946 pid:278271295
+ecl:grn
+hcl:#cfa07d cid:271
+hgt:172cm
+iyr:2020
+
+pid:731752614 eyr:2020 byr:1983
+cid:248 ecl:oth hgt:179cm
+iyr:2017 hcl:#fffffd
+
+hcl:z
+cid:203 eyr:2032 ecl:#3f9d3d hgt:65cm pid:4042846885 byr:2019
+iyr:1946
+
+hgt:171cm ecl:gry eyr:2027
+iyr:2013
+hcl:#7d3b0c pid:92288579
+byr:1955
+
+ecl:brn hgt:164cm byr:1969 hcl:#cbf9c9 pid:022724981 eyr:2030 iyr:2013 cid:244
+
+hgt:162cm byr:1974 iyr:2015 pid:927525094 hcl:#3d3011 ecl:blu
+eyr:2023
+
+hgt:157cm
+eyr:2020
+pid:221286943 hcl:#fffffd ecl:amb iyr:2018 byr:1945
+
+iyr:2019
+eyr:2025 byr:1997 pid:341544323 hgt:174cm cid:113
+ecl:hzl
+
+pid:138492032 hcl:e35302 ecl:#caaede
+eyr:1931
+byr:2001 hgt:156 iyr:1998
+
+pid:912182030 cid:189 hgt:162 hcl:#277b39
+iyr:2013 eyr:2023 byr:2023 ecl:blu
+
+eyr:2027 hcl:#fffffd
+ecl:brn
+cid:304 iyr:2016 byr:1969
+pid:866607511 hgt:192cm
+
+hgt:64in
+ecl:amb
+byr:1958
+pid:720439412
+iyr:2015 eyr:2022 hcl:#ceb3a1
+
+eyr:2024 hgt:159cm
+pid:187867283 iyr:2016
+ecl:oth hcl:#fffffd
+byr:1988
+
+ecl:#910bf2 byr:1969 iyr:2011 hcl:z eyr:2024 pid:579502502
+cid:103 hgt:174cm
+
+pid:718692455
+eyr:2028
+iyr:2016
+hcl:#602927
+ecl:blu byr:1954
+cid:251 hgt:182cm
+
+eyr:2021 hcl:#341e13 ecl:amb
+byr:1933 hgt:179cm iyr:2011 pid:083172316
+
+iyr:1998 hcl:z eyr:1944
+byr:2006 pid:453368738
+hgt:160 ecl:#9da5f1 cid:261
+
+hcl:#7d3b0c
+iyr:2018
+hgt:164cm eyr:2020 byr:1940 ecl:blu
+
+pid:993701676 eyr:2028 ecl:gry
+byr:1951 hcl:#888785 cid:116
+iyr:2020
+hgt:192cm
+
+hcl:z eyr:2033
+ecl:lzr iyr:2029 cid:326 hgt:68cm byr:2026
+pid:96742419
+
+hcl:#a97842 ecl:brn
+byr:1920
+hgt:173cm iyr:2015
+eyr:2024 pid:176967666
+
+byr:1930 eyr:2025 pid:792694131
+hgt:179cm ecl:brn
+hcl:#a97842
+iyr:2015
+
+hgt:167cm byr:1960 eyr:2022 hcl:#efcc98
+cid:87 ecl:blu iyr:2012
+pid:431515059
+
+hcl:#cfa07d
+eyr:2023
+hgt:188cm ecl:grn pid:081575957 byr:1938 iyr:2012
+
+iyr:2010 byr:1973
+cid:108
+eyr:2026
+pid:880191154 hcl:#888785 hgt:181cm
+ecl:brn
+
+eyr:2021 iyr:2010 byr:1942 hcl:#7d3b0c ecl:hzl pid:886241926 hgt:171cm
+
+cid:53 byr:1993
+pid:150cm eyr:2035
+hcl:#888785 hgt:153cm ecl:#128262 iyr:2021
+
+ecl:gry
+pid:555911148
+hcl:#733820 eyr:2022 hgt:154cm iyr:2012
+byr:1935 cid:338
+
+hcl:#b6652a
+pid:833873846 iyr:2012
+hgt:167cm eyr:2023 byr:1984
+
+eyr:2024
+ecl:blu byr:1955
+hcl:#b6652a pid:517975316 iyr:2010 hgt:166cm
+
+pid:133785752
+ecl:blu
+eyr:2024
+byr:1973
+iyr:2019 hcl:#fffffd
+cid:236 hgt:173cm
+
+cid:222
+byr:2013 hcl:z eyr:2036 pid:7443967478 ecl:brn
+iyr:2030 hgt:62cm
+
+hgt:193cm cid:259
+hcl:#18171d
+ecl:grn
+byr:1995 pid:727880050 eyr:2030 iyr:2010
+
+hcl:#c0946f cid:275 eyr:1954 pid:772184635 ecl:#76add7 byr:2009 iyr:2018 hgt:151cm
+
+ecl:#52ed0f eyr:2033 hcl:#18171d pid:475397948
+byr:1946 iyr:2028 hgt:178cm
+
+iyr:2012 hgt:152cm
+eyr:2027 byr:1923 ecl:brn
+hcl:#18171d pid:513722888 cid:171
+
+iyr:2029
+hgt:111 hcl:z ecl:#33e3bc eyr:1930
+byr:1934 pid:94036732
+
+hgt:154cm eyr:2024 hcl:#6b5442 iyr:2017
+byr:1974
+ecl:amb pid:470968353 cid:345
+
+hgt:184cm hcl:#617375 eyr:2028
+byr:1975 ecl:oth
+iyr:2018 pid:735589126
+
+cid:261
+hcl:#cfa07d pid:213013397
+hgt:187cm
+ecl:gry iyr:2016
+
+hcl:#623a2f
+ecl:#34964b eyr:2009 pid:169cm byr:2028 hgt:169cm
+iyr:2028
+
+eyr:2029 iyr:2016
+byr:1985
+hgt:192cm hcl:#602927 cid:167
+ecl:blu pid:620818510
+
+eyr:2029
+byr:1968
+ecl:blu
+hgt:183cm iyr:2011 pid:952376140 hcl:#efcc98
+
+iyr:2020
+byr:1981 pid:850136149 eyr:2028 hgt:159cm hcl:#7d3b0c
+ecl:brn
+
+ecl:brn pid:480452858 hgt:65in cid:340 eyr:2022
+byr:1946
+hcl:#602927 iyr:2015
+
+hgt:172 hcl:z eyr:1958 iyr:1941 byr:2019 pid:389995951 ecl:dne
+
+byr:2025 hcl:4c8dcd
+hgt:177in
+ecl:#55d635
+cid:197 pid:91192572
+iyr:1921 eyr:2038
+
+iyr:2027 pid:154cm
+hgt:185in byr:2012
+eyr:2036 hcl:efd47d
+ecl:#64f98d
+cid:86
+
+eyr:2029 pid:837224515 ecl:grn cid:231 hcl:#733820 iyr:2019
+hgt:159cm
+byr:1977
+
+pid:974518338 byr:1964 hcl:#cfa07d ecl:grn eyr:2030
+hgt:61in
+iyr:2019
+
+iyr:2019
+hgt:192in cid:94
+eyr:1922
+byr:1925 hcl:z ecl:utc pid:#081266
+
+eyr:2027 iyr:2019 cid:328 byr:1961 hcl:#6b5442 ecl:blu hgt:177cm pid:235426720
+
+byr:1959
+eyr:2025
+pid:890034625 ecl:oth
+hgt:62in cid:348 hcl:#733820
+
+hgt:161cm iyr:2018 pid:916160791 ecl:grn
+byr:1951 hcl:#44d03a eyr:2025
+
+hgt:158cm byr:1942 iyr:2012 hcl:#602927
+eyr:2026 ecl:gry pid:651231060
+
+ecl:hzl cid:340 pid:086942161 byr:1986 hcl:#a97842 iyr:2018
+eyr:2028
+hgt:181cm
+
+ecl:blu
+pid:278922687 cid:238 iyr:2018 hgt:153cm eyr:2027
+byr:1965
+hcl:#733820
+
+eyr:2023 cid:208 hgt:178cm hcl:#341e13 byr:1937 pid:290981079 iyr:2010 ecl:grn
+
+hcl:#888785
+ecl:amb
+byr:1943 pid:559804716 eyr:2026 hgt:166cm
+iyr:2019
+
+pid:947831563
+ecl:gry
+byr:1960 hcl:#341e13
+iyr:2016 hgt:173cm eyr:2029
+
+ecl:blu iyr:2016 pid:724632073 hcl:#623a2f
+eyr:2028 hgt:192cm byr:1958
+
+byr:2021
+eyr:2016 hcl:z iyr:1988 pid:65353943
+ecl:#bb553b
+hgt:125
+
+hcl:#efcc98 byr:1963 pid:290433211 eyr:2023 ecl:hzl
+hgt:172cm iyr:2013
+
+iyr:2015 ecl:brn
+byr:2023 hcl:#18171d
+pid:325330679
+hgt:190in eyr:2023
+
+pid:745674970 hgt:160cm eyr:2021 byr:1925 ecl:gry hcl:#341e13 iyr:2015
+cid:297
+
+eyr:2021
+pid:596411633
+byr:1947 ecl:blu cid:191 hcl:#341e13 hgt:168cm iyr:2019
+
+eyr:2030 pid:#902a6b iyr:1997 hcl:11f396 hgt:188cm byr:2025
+ecl:dne
+
+eyr:2025
+byr:2006
+hcl:#888785 ecl:hzl hgt:187cm
+iyr:2012 pid:017702828
+
+byr:1988 hcl:#18171d iyr:2019
+pid:110591871
+ecl:hzl
+hgt:160cm
+eyr:2029
+
+ecl:brn
+hcl:#c0946f iyr:2030 pid:264404022 byr:1984 hgt:59cm eyr:2040
+
+pid:5973803069
+hcl:#cfa07d ecl:grt
+hgt:153cm eyr:2039 byr:1970
+iyr:2025
+
+hcl:#fffffd
+iyr:2022 byr:2026
+hgt:180 pid:82035145 eyr:2034 cid:118 ecl:utc
+
+hgt:186cm eyr:2026
+ecl:brn
+iyr:2013 hcl:#8f4c9b pid:010260339 byr:1948
+
+ecl:amb hcl:#18171d iyr:2020 pid:259501214 byr:1978 hgt:193cm
+cid:263 eyr:2022
+
+hgt:161cm iyr:2015 byr:2014 eyr:2003
+pid:708958872 ecl:grt
+hcl:f4a430
+
+hgt:170cm eyr:2021 pid:911638274 cid:110 byr:1963 ecl:blu
+iyr:2015 hcl:1eda64
+
+ecl:oth byr:1949 hgt:174cm hcl:#18171d eyr:2022 iyr:2019
+pid:305857230
+
+ecl:gry hcl:#a97842 pid:971971076 byr:2002 iyr:2019
+hgt:188cm
+eyr:2022 cid:238
+
+eyr:2027 pid:221315043 iyr:2010 hgt:159cm ecl:blu byr:1998 hcl:#6b5442
+
+hcl:#888785
+byr:1926 eyr:2022 pid:433807814 ecl:grn
+iyr:2010
+hgt:181cm
+
+ecl:grn hgt:164cm byr:1951 hcl:#18171d cid:75 pid:845508281 eyr:2021 iyr:2017
+
+pid:#f59bc7
+eyr:1987 hgt:191cm hcl:z byr:2024
+iyr:1985
+
+hcl:#623a2f pid:497429747
+hgt:189cm
+byr:1987
+eyr:2027 iyr:2012 cid:95 ecl:hzl
+
+byr:2000
+hgt:165cm
+iyr:2017 pid:519443292 eyr:2029 cid:240 hcl:#a97842
+ecl:blu
+
+cid:67 pid:038299774
+eyr:2023 iyr:2015 hgt:179cm byr:1941 hcl:#18171d ecl:amb
+
+byr:2000
+eyr:2025 ecl:oth iyr:2017
+pid:334154607
+hcl:#fffffd hgt:173cm
+
+hcl:#888785 ecl:amb
+cid:131 iyr:2018 byr:1996 eyr:2026
+hgt:180cm pid:709543988
+
+iyr:1988
+pid:263277424
+hcl:ee8912 byr:1942 ecl:gry eyr:2040 hgt:161cm
+
+eyr:2020 byr:1966 iyr:2020 hgt:169cm pid:611918000
+hcl:#7d3b0c ecl:hzl
+
+hgt:164cm ecl:brn
+iyr:2015 pid:192054454 hcl:#6b5442 byr:1987 eyr:2022
+
+byr:1952
+ecl:zzz
+pid:215953654
+eyr:2021 hcl:#efcc98 hgt:153cm iyr:2026
+
+hgt:167cm
+hcl:#b6652a pid:847614726
+eyr:2022 ecl:gry byr:1990 iyr:2015
+
+hgt:185cm ecl:oth iyr:2012
+byr:1933
+cid:250
+pid:038674023
+hcl:#c0946f
+
+pid:613273980 hcl:#a97842
+ecl:oth byr:1924 hgt:179cm
+eyr:2027 iyr:1950
+
+hcl:#cfa07d byr:2018 hgt:190cm pid:64530329
+ecl:brn
+iyr:2024
+
+hcl:z hgt:70cm pid:18807747
+cid:284 byr:2023
+eyr:2035 ecl:#4a1501
+iyr:1954
+
+iyr:2016 hgt:152cm pid:886247173 byr:1940 hcl:#c0946f eyr:2027 ecl:oth cid:150
+
+hgt:152cm hcl:#48cfdf eyr:2025 cid:277
+ecl:oth pid:246230621 byr:1932
+iyr:2020
+
+ecl:amb pid:871180042
+cid:117 hcl:#602927 iyr:2011 hgt:152cm
+eyr:2030 byr:1999
+
+eyr:2024 ecl:hzl hgt:171cm
+byr:1934 pid:356408125 iyr:2019 hcl:#b6652a
+cid:169
+
+eyr:2023
+hcl:#7d3b0c
+byr:1934 hgt:67in ecl:oth pid:191785527
+cid:117 iyr:2016
+
+iyr:2029
+hcl:#602927 eyr:2022 byr:1931 ecl:oth hgt:192cm
+pid:231475143
+
+ecl:grn iyr:2014 cid:250 hcl:#b6652a byr:1970 pid:675238417 hgt:162cm
+eyr:2026
+
+ecl:brn
+hcl:#623a2f eyr:2021 pid:293293433 hgt:158 byr:1977 iyr:2019
+
+ecl:oth hcl:#ceb3a1 pid:013111996 eyr:2023 hgt:180cm byr:1976 cid:224
+
+hgt:61cm
+eyr:2027 ecl:amb pid:181cm iyr:1932
+byr:1974
+hcl:#18171d
+
+byr:1968 hgt:167cm
+hcl:#a97842 eyr:2022 iyr:2018 ecl:hzl pid:940968694
+
+iyr:1943
+hgt:96
+cid:229
+hcl:z eyr:1990 byr:2007 pid:#25aa73
+ecl:#74592e
+
+hgt:182cm iyr:2018 ecl:hzl eyr:2029 byr:1946 pid:602345030
+hcl:#ceb3a1
+
+pid:750306036 eyr:2020 hgt:181in ecl:xry
+iyr:2011 hcl:z byr:1971 cid:71
+
+pid:183825747 iyr:2019 hcl:#6b5442
+byr:1974
+hgt:180cm eyr:2028
+ecl:amb
+
+ecl:brn cid:200 pid:576495225
+byr:1924
+hcl:#efcc98 eyr:2022 iyr:2017 hgt:185cm
+
+iyr:2020 hgt:167cm byr:1965 ecl:brn hcl:#888785
+eyr:2028 pid:752062953
+
+byr:2026
+hcl:z
+eyr:2020
+ecl:#b4ec74 pid:187cm iyr:1974
+cid:326 hgt:150cm
+
+byr:1996 pid:507323629
+iyr:2015 cid:347 eyr:2026 hcl:#efcc98
+ecl:amb hgt:157cm
+
+byr:2017 pid:456780590 hcl:#888785 eyr:1966 ecl:amb iyr:2023 cid:187 hgt:62cm
+
+ecl:hzl iyr:2015 hcl:#6b5442 hgt:152cm eyr:2028 byr:1982 pid:003269467
+
+iyr:2017 eyr:2026
+ecl:blu cid:70 hcl:#7d3b0c
+byr:1966 pid:160330947 hgt:189cm
+
+iyr:2010 ecl:amb
+hgt:164cm eyr:2029 byr:1963
+pid:596606374 hcl:#efcc98
+
+hcl:#fffffd cid:277 pid:102326370 hgt:154cm eyr:2026 iyr:2012 byr:1968
+ecl:hzl
+
+ecl:oth pid:477189554 hcl:#6b5442 eyr:2022 byr:1948 hgt:74in cid:181
+iyr:2016
+
+hgt:169cm hcl:#d7bc93
+cid:344 ecl:oth
+pid:#09c55d iyr:2017
+eyr:2030 byr:1928
+
+hcl:5d02ff ecl:#ca7901 iyr:1959 byr:2006 eyr:2022
+hgt:164in
+pid:#d6cdfd
+
+ecl:amb pid:5739190196 eyr:2021 hgt:157in hcl:#efcc98 byr:2018 iyr:2028
+
+byr:1995 ecl:hzl
+iyr:2017
+hcl:#a97842 pid:917039291 eyr:2026 hgt:175cm
+
+iyr:2017 pid:756519868
+hcl:#623a2f
+eyr:2028
+hgt:158cm
+ecl:amb byr:1957
+
+iyr:2012
+hgt:158cm
+byr:2014 pid:973021666 hcl:f04766 eyr:2035 ecl:utc
+
+ecl:blu
+byr:1989 eyr:2022
+pid:520765501
+cid:200 hgt:193cm hcl:#a97842 iyr:2011
+
+byr:1959
+ecl:blu hcl:#733820 cid:284 hgt:162cm
+eyr:2022 pid:751629408 iyr:2016
+
+byr:1978 cid:301
+ecl:oth hgt:67cm hcl:#888785
+eyr:2040 iyr:2025 pid:26038514
+
+iyr:2020 byr:1974 hgt:163cm ecl:blu hcl:#7d3b0c eyr:2028 cid:99
+
+hcl:#a97842
+hgt:186cm
+ecl:grn byr:1969 pid:460360492 iyr:2011 eyr:2028
+
+byr:2009
+pid:489490924 eyr:2031
+hcl:cb5351 ecl:#083a25 hgt:164cm
+
+iyr:2019
+hcl:3463cc ecl:amb pid:4089063078 eyr:2022 hgt:150cm
+byr:2007
+
+eyr:2028 hcl:#ceb3a1
+hgt:191cm iyr:2019 pid:737842199 ecl:blu cid:268 byr:1925
+
+pid:868397851
+hcl:#efcc98 ecl:grn iyr:2017 eyr:2021 byr:1943
+hgt:179cm
+
+hcl:#623a2f byr:1987 eyr:2023 iyr:2019 hgt:152cm
+pid:473569020
+ecl:grn
+
+pid:953968630
+hgt:175cm
+byr:1971 ecl:blu hcl:#623a2f iyr:2017 cid:336 eyr:2030
+
+ecl:grt hgt:74cm byr:2022 eyr:2024 pid:39114027
+iyr:2026 hcl:4b5675
+
+pid:#492988
+eyr:2032 hgt:63cm iyr:2006
+ecl:#817211 byr:2019
+
+pid:800367032 hcl:#341e13
+ecl:#765111 iyr:2012 byr:2006 hgt:166cm cid:291 eyr:2027
+
+eyr:2021 iyr:2012 pid:876581393 ecl:amb hcl:#866857
+hgt:64in byr:1993
+
+iyr:2017 byr:1996 ecl:hzl pid:038990744
+eyr:2028
+hgt:177cm
+hcl:#c0946f
+
+hcl:#4214a6
+eyr:2021
+iyr:2019 cid:72 byr:1939
+ecl:hzl pid:783071912 hgt:187cm
+
+eyr:2020 hgt:158cm
+pid:274060737 cid:277
+iyr:2015 hcl:#bf9b5e byr:1950 ecl:brn
+
+byr:1921 hcl:#7d3b0c cid:329 hgt:155cm eyr:2030 pid:718399669 iyr:2011 ecl:brn
+
+cid:147 eyr:2021 hgt:167cm iyr:2010 ecl:grn byr:1975 hcl:#6b5442
+pid:285479783
+
+hgt:187cm
+byr:2004 eyr:2025 hcl:bb331b
+pid:851189955 iyr:2016
+ecl:amb
+
+hcl:#94007d pid:361561551 byr:1927 eyr:2026 iyr:2020
+ecl:gry hgt:158cm
+
+byr:1993 pid:#24c4af iyr:2023 hgt:175cm eyr:2028
+hcl:z ecl:hzl cid:308
+
+byr:1985 hcl:#c0946f eyr:2034 hgt:172cm
+cid:300 iyr:2013 ecl:gry pid:389455676
+
+eyr:2030 iyr:2017 byr:1956 hgt:178cm
+pid:864401853 hcl:#6b5442
+
+pid:836559549
+iyr:2011
+hgt:167cm
+ecl:amb hcl:#c0946f
+eyr:2026 byr:1981
+
+pid:111085991 iyr:2011
+ecl:blu eyr:2026 cid:311
+byr:1920 hgt:182cm hcl:#602927
+
+ecl:oth pid:284436132
+byr:1929 cid:121
+eyr:2027
+iyr:2010
+hgt:75in
+hcl:#6b5442
+
+byr:1987
+hcl:#7d3b0c iyr:2018 hgt:180cm
+ecl:blu eyr:2029 pid:878348021
+
+hgt:183cm cid:98
+byr:1953 hcl:#866857 eyr:2021 iyr:2012 pid:158898193
+
+eyr:2030 pid:039638764 ecl:hzl hgt:190cm byr:1926
+cid:294 hcl:#b6652a iyr:2017