From 7f2143020caed8055bdb243dcd738df5dea0614c Mon Sep 17 00:00:00 2001 From: OMGOMG Date: Thu, 11 Nov 2021 09:21:11 +0100 Subject: [PATCH] Inputs, solutions, and other scripts --- .gitignore | 6 + README.md | 17 + eight.py | 64 ++ eighteen.bash | 27 + eighteen.py | 32 + eleven.py | 83 ++ fifteen.awk | 25 + first | 11 + five.awk | 14 + five.py | 15 + five.txt | 8 + fivereduce.py | 15 + fivesub.py | 14 + four.py | 45 + fourteen.py | 60 ++ gettoday | 20 + input1 | 200 +++++ input10 | 100 +++ input11 | 97 ++ input12 | 759 ++++++++++++++++ input13 | 2 + input14 | 578 ++++++++++++ input15 | 1 + input16 | 268 ++++++ input17 | 8 + input18 | 372 ++++++++ input19 | 617 +++++++++++++ input2 | 1000 +++++++++++++++++++++ input20 | 1728 +++++++++++++++++++++++++++++++++++ input21 | 33 + input22 | 53 ++ input23 | 1 + input24 | 394 ++++++++ input25 | 2 + input3 | 323 +++++++ input4 | 1100 +++++++++++++++++++++++ input5 | 771 ++++++++++++++++ input6 | 2178 +++++++++++++++++++++++++++++++++++++++++++++ input7 | 594 +++++++++++++ input8 | 656 ++++++++++++++ input9 | 1000 +++++++++++++++++++++ nine.py | 52 ++ nineteen.py | 57 ++ one.awk | 16 + one.py | 11 + second | 11 + seven.py | 50 ++ seventeen.py | 25 + seventeen_nest.py | 14 + siix.py | 17 + sixteen.py | 80 ++ template.py | 39 + ten.py | 37 + ten.txt | 2 + thirteen.py | 36 + thirteen.txt | 35 + three.py | 26 + twelve.py | 62 ++ twenty.py | 187 ++++ twenty_anim.py | 186 ++++ twentyfive.py | 57 ++ twentyfour.py | 128 +++ twentyone.py | 62 ++ twentythree.py | 157 ++++ twentytwo.py | 101 +++ two.bash | 15 + two.py | 38 + 67 files changed, 14792 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 eight.py create mode 100755 eighteen.bash create mode 100755 eighteen.py create mode 100755 eleven.py create mode 100755 fifteen.awk create mode 100755 first create mode 100755 five.awk create mode 100755 five.py create mode 100644 five.txt create mode 100755 fivereduce.py create mode 100755 fivesub.py create mode 100755 four.py create mode 100755 fourteen.py create mode 100755 gettoday create mode 100644 input1 create mode 100644 input10 create mode 100644 input11 create mode 100644 input12 create mode 100644 input13 create mode 100644 input14 create mode 100644 input15 create mode 100644 input16 create mode 100644 input17 create mode 100644 input18 create mode 100644 input19 create mode 100644 input2 create mode 100644 input20 create mode 100644 input21 create mode 100644 input22 create mode 100644 input23 create mode 100644 input24 create mode 100644 input25 create mode 100644 input3 create mode 100644 input4 create mode 100644 input5 create mode 100644 input6 create mode 100644 input7 create mode 100644 input8 create mode 100644 input9 create mode 100755 nine.py create mode 100755 nineteen.py create mode 100755 one.awk create mode 100755 one.py create mode 100755 second create mode 100755 seven.py create mode 100755 seventeen.py create mode 100755 seventeen_nest.py create mode 100755 siix.py create mode 100755 sixteen.py create mode 100755 template.py create mode 100755 ten.py create mode 100644 ten.txt create mode 100755 thirteen.py create mode 100644 thirteen.txt create mode 100755 three.py create mode 100755 twelve.py create mode 100755 twenty.py create mode 100755 twenty_anim.py create mode 100755 twentyfive.py create mode 100755 twentyfour.py create mode 100755 twentyone.py create mode 100755 twentythree.py create mode 100755 twentytwo.py create mode 100755 two.bash create mode 100755 two.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bc4f1d1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*.sw? +__pycache__/ +tmp +a.out +README.pdf +EMDAER.html diff --git a/README.md b/README.md new file mode 100644 index 0000000..8b8c038 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# Advent of Code 2020 solutions + +A set of 25 puzzle inputs and 50 puzzle solutions, two for each day. Most of +these were written within an hour of the puzzle's release. The puzzles can be +found [here](https://adventofcode.com/2020/), although only the first one is +visible until you solve it. + +Most solutions output just two lines, the answers to part 1 and 2, but some +provide more information or a rudimentary animation. + +Run a solution by passing the input as an argument: + +```./four.py input4``` + +Or via the standard input: + +```./fifteen.awk 1 else 'input8' +with open(fn) as f: + + lines = [lst(l.strip()) for l in f.readlines()] + + print(repmachine(lines)) + + for i, l in enumerate(lines): + svi = l[0] + l[0] = fix(l[0]) + if machine(lines): + print(machine(lines)) + exit() + l[0] = svi diff --git a/eighteen.bash b/eighteen.bash new file mode 100755 index 0000000..6754b38 --- /dev/null +++ b/eighteen.bash @@ -0,0 +1,27 @@ +#!/bin/bash + +addmul="[0-9]+\ [+*]\ [0-9]+" +singpar="\([0-9]+\)" + +part1=0 part2=0 + +while read -r l +do + m="$l" + m=${l//(/((} + m="(${m//)/))})" + m=${m//\*/)*(} + ((part2+=m)) + + while [[ $l =~ $addmul ]] + do + l=${l/"$BASH_REMATCH"/$((BASH_REMATCH))} + if [[ $l =~ $singpar ]] + then + l=${l/"$BASH_REMATCH"/$((BASH_REMATCH))} + fi + done + ((part1+=l)) +done +echo "$part1" +echo "$part2" diff --git a/eighteen.py b/eighteen.py new file mode 100755 index 0000000..f171dab --- /dev/null +++ b/eighteen.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +import re, sys + +class ltr: + def __init__(self, n): + self.val = n + def __add__(self, x): + return ltr(self.val + x.val) + def __sub__(self, x): + return ltr(self.val * x.val) + +class flip: + def __init__(self, n): + self.val = n + def __truediv__(self, x): + return flip(self.val + x.val) + def __sub__(self, x): + return flip(self.val * x.val) + +def toltr(l): + return re.sub(r'(\d)', r'ltr(\1)', l.replace('*', '-')) + +def toflip(l): + return re.sub(r'(\d)', r'flip(\1)', l.replace('*', '-').replace('+', '/')) + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 18 +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + + print(sum(eval(toltr(l)).val for l in lines)) + print(sum(eval(toflip(l)).val for l in lines)) diff --git a/eleven.py b/eleven.py new file mode 100755 index 0000000..5ffce4b --- /dev/null +++ b/eleven.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 +from functools import reduce +import re, sys +import sys +import numpy as np + +empty, seat, occ = 0, 1, 2 + +def tpl(l): # get nice tuple from line + return [seat if x == 'L' else empty for x in l] + +def pp(*args): + print(*args) + +def p(image): + for y in range(image.shape[0]): + for x in range(image.shape[1]): + sys.stdout.write('.L#'[image[y][x]]) + pp() + pp() + +def frob(image): + padded = np.pad(image, 1) + sur = sum(padded[offy:offy+image.shape[0], offx:offx+image.shape[1]] == occ + for offy in range(3) + for offx in range(3)) - (image == occ) + # sod it + new = (occ if np.any(sur == 0) and np.any(image == seat) else + seat if np.any(sur >= 4) and np.any(image == occ) else + image) + new = np.zeros(image.shape, dtype=int) + for (y, x), c in np.ndenumerate(image): + new[y][x] = (occ if sur[y][x] == 0 and c == seat else + (seat if sur[y][x] >= 4 and c == occ else + c)) + return new + +def throb(image): + pads = max(image.shape) + padded = np.pad(image.astype('uint32'), ((pads, pads), (pads, pads))) + sur = np.zeros(image.shape, dtype=int) + for y in range(image.shape[0]): + for x in range(image.shape[1]): + for offy in range(-1, 2): + for offx in range(-1, 2): + if offx == 0 and offy == 0: + continue + for step in range(1, pads + 1): + if padded[pads+y+offy*step][pads+x+offx*step] == seat: + break + if padded[pads+y+offy*step][pads+x+offx*step] == occ: + sur[y][x] += 1 + break + + new = np.zeros(image.shape, dtype=int) + for (y, x), c in np.ndenumerate(image): + new[y][x] = (occ if sur[y][x] == 0 and c == seat else + (seat if sur[y][x] >= 5 and c == occ else + c)) + return new + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input11' +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + arr = np.asarray([tpl(l) for l in lines], dtype=int) + #p(arr) + while True: + new = frob(arr) + #p(new) + if (new == arr).all(): + pp(sum(sum(new == (np.ones(new.shape) * occ)))) + break + arr = new + + arr = np.asarray([tpl(l) for l in lines], dtype=int) + while True: + new = throb(arr) + #p(new) + if (new == arr).all(): + pp(sum(sum(new == (np.ones(new.shape) * occ)))) + break + arr = new diff --git a/fifteen.awk b/fifteen.awk new file mode 100755 index 0000000..4e11047 --- /dev/null +++ b/fifteen.awk @@ -0,0 +1,25 @@ +#!/usr/bin/awk -f + +BEGIN { + RS="," +} + +{ + spoke[$1]=NR +} + +END { + nxt = 0 + i=NR + while(++i <= 30000000) { + if(!(i%1000000)) + printf "." + if(i == 30000000) + print "\n"nxt + else if(i == 2020) + print nxt + prev = nxt + nxt = spoke[prev] ? i - spoke[prev] : 0 + spoke[prev] = i + } +} diff --git a/first b/first new file mode 100755 index 0000000..2bd1c4f --- /dev/null +++ b/first @@ -0,0 +1,11 @@ +#!/bin/bash + +if [[ $# = 1 ]]; then + day=$1 +else + day="$(date +%d | sed 's/^0//')" +fi + +read -r answer < <(tail -n 1) + +curl -D - "https://adventofcode.com/2020/day/$day/answer" -H "Cookie: session=$(cat cookie)" --data-raw "level=1&answer=$answer" | grep '
' diff --git a/five.awk b/five.awk new file mode 100755 index 0000000..c0036ee --- /dev/null +++ b/five.awk @@ -0,0 +1,14 @@ +#!/usr/bin/awk -f + +BEGIN { + FS="" +} + +{ + sum=0 + for(i=1;i<=10;i++) { + sum *= 2 + if($(i) ~ /[BR]/) sum++ + } + print sum, $0 +} diff --git a/five.py b/five.py new file mode 100755 index 0000000..4580ee0 --- /dev/null +++ b/five.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 + +import sys + +def bp(l): + return sum(2**(9-a) * (b in 'BR') for a, b in enumerate(l)) + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input5' +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + print(max(bp(l) for l in lines)) + + sl = sorted(bp(l) for l in lines) + print(next(a+1 for a, b in zip(sl, sl[1:]) if a + 1 != b)) diff --git a/five.txt b/five.txt new file mode 100644 index 0000000..2e5781e --- /dev/null +++ b/five.txt @@ -0,0 +1,8 @@ +poppy:~/fondue/aoc/twenty(uio)$ ./five.py|sort -n|awk '{print $1 - NR, $1}'|less +poppy:~/fondue/aoc/twenty(uio)$ second<<<539 + +poppy:~/fondue/aoc/twenty(uio)$ ./five.awk input5 |sort -n|awk '$1!=(a+1) {us=a+1} 1 {a=$1} END {print $1; print us}' + +poppy:~/fondue/aoc/twenty(uio)$ bc < <(echo 'ibase=2'; tr FLBR 0011 1 else 'input5' +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + sl = sorted(bp(l) for l in lines) + print(sl[-1]) + print(next(a+1 for a, b in zip(sl, sl[1:]) if a + 1 != b)) diff --git a/fivesub.py b/fivesub.py new file mode 100755 index 0000000..c4b0fe5 --- /dev/null +++ b/fivesub.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 + +import re, sys + +def bp(l): + return int(re.sub('[FL]', '0', re.sub('[BR]', '1', l)), base=2) + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input5' +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + sl = sorted(bp(l) for l in lines) + print(sl[-1]) + print(next(a+1 for a, b in zip(sl, sl[1:]) if a + 1 != b)) diff --git a/four.py b/four.py new file mode 100755 index 0000000..acadb1b --- /dev/null +++ b/four.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 + +import re, sys + +def dic(l): # get nice dictonary from line(s) + ssf = l.split() # whitespace (' ' or '\n') separated fields + dic = {a: b for a, b in (x.split(':') for x in ssf)} + return dic + +def ok(dic): + nec = 'byr iyr eyr hgt hcl ecl pid'.split() + return all(n in dic for n in nec) + +def inrange(x, min, max): + return x >= min and x <= max + +def goodheight(h): + try: + unit = h[-2:] + n = int(h[:-2]) + return unit == 'in' and inrange(n, 59, 76) or \ + unit == 'cm' and inrange(n, 150, 193) + except: + return False + +def ok2(dic): + return True if \ + (ok(dic) + and all(inrange(int(dic[y]), a, b) for y, a, b in (('byr', 1920, 2002), + ('iyr', 2010, 2020), + ('eyr', 2020, 2030))) + and goodheight(dic['hgt']) + and re.match('^#[0-9a-f]{6}$', dic['hcl']) + and dic['ecl'] in 'amb blu brn gry grn hzl oth'.split() + and re.match('^[0-9]{9}$', dic['pid'])) else False + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input4' +with open(fn) as f: + pgphs = f.read().split('\n\n') + + ct = sum(ok(dic(p)) for p in pgphs) + print(ct) + + ct = sum(ok2(dic(p)) for p in pgphs) + print(ct) diff --git a/fourteen.py b/fourteen.py new file mode 100755 index 0000000..9de7838 --- /dev/null +++ b/fourteen.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +from functools import reduce +import sys + +def tpl(l): + me, rest = l.split(' = ') # e.g. + return me, rest + +def mask(m, n): + orm = reduce(lambda a, b: a*2 + (b == '1'), (0, *list(m))) + andm = reduce(lambda a, b: a*2 + (b != '0'), (1, *list(m))) + return (n & andm | orm) + +def bmask(m, n): + orm = reduce(lambda a, b: a*2 + (b == '1'), (0, *list(m))) + res = (n | orm) + return res + +def setmem(d, adr, ghost, val): + if ghost == []: + return + g = ghost[0] + orm = 2**g + andm = ~(2**g) + d[adr|orm] = val + d[adr&andm] = val + setmem(d, adr|orm, ghost[1:], val) + setmem(d, adr&andm, ghost[1:], val) + +def address(s): + a = int(s[4:-1]) + return a + +def ghosts(m): + g = [(35 - i) for i, j in enumerate(m) if j == 'X'] + return g + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 14 +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + + _, m = tpl(lines[0]) + t = [tpl(l) for l in lines] + d = {} + for a, b in t: + if a == 'mask': + m = b + else: + d[a] = mask(m, int(b)) + print(sum(d.values())) + + d = {} + for a, b in t: + if a == 'mask': + m = b + else: + setmem(d, bmask(m, address(a)), ghosts(m), int(b)) + print(sum(d.values())) + diff --git a/gettoday b/gettoday new file mode 100755 index 0000000..7aeb139 --- /dev/null +++ b/gettoday @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +year=2020 +day="$(date +%d | sed 's/^0//')" +case $# in + 2) + year=$2 + day=$1 + specifyyear=_$year;; + 1) + day=$1 +esac + +file=input$day$specifyyear + +#cd ~/repos/aoc/twenty/ +curl -s -o $file -H "Cookie: session=$(cat cookie)" \ + https://adventofcode.com/$year/day/$day/input + +git add $file +git commit -m "input day $day $year" $file >/dev/null # cron appreciates silence diff --git a/input1 b/input1 new file mode 100644 index 0000000..d316c84 --- /dev/null +++ b/input1 @@ -0,0 +1,200 @@ +1046 +1565 +1179 +1889 +1683 +1837 +1973 +1584 +1581 +192 +1857 +1373 +1715 +1473 +1770 +1907 +1918 +1909 +1880 +1903 +1835 +1887 +1511 +1844 +1628 +1688 +1545 +1469 +1620 +1751 +1893 +1861 +511 +1201 +1641 +1874 +1946 +1701 +1777 +1829 +1609 +1805 +1678 +1928 +1398 +1555 +1675 +1798 +1485 +1911 +1974 +1663 +1919 +1635 +195 +1441 +1525 +1490 +1151 +1406 +1408 +1095 +1085 +1097 +1976 +1987 +1498 +1753 +1603 +1933 +1729 +1106 +1929 +1832 +1744 +1914 +1643 +1571 +1391 +1953 +1790 +1797 +1938 +258 +1957 +1858 +1506 +628 +1109 +1113 +1768 +1649 +1669 +694 +1803 +1849 +1395 +1754 +1421 +1575 +1632 +1998 +1693 +1499 +1550 +1771 +1902 +1801 +1549 +1459 +1826 +1927 +1507 +1718 +647 +1922 +1432 +1625 +1904 +1691 +1427 +1519 +1949 +1514 +1749 +1616 +1898 +1696 +1917 +1661 +1787 +1440 +1796 +1560 +1956 +1823 +1815 +1557 +1730 +1951 +1548 +1527 +1881 +1727 +1530 +1460 +1360 +1583 +1662 +1954 +1890 +1855 +1752 +1935 +1601 +1767 +1812 +1990 +1445 +1908 +2001 +1544 +1814 +1634 +1532 +1788 +1521 +1638 +1470 +1524 +1394 +1674 +1314 +1588 +1429 +1745 +1416 +1637 +1942 +484 +1467 +1764 +1743 +1401 +1471 +1458 +1335 +1866 +1399 +1393 +1708 +1694 +1447 +1972 +1478 +1182 +1672 +1813 +1546 +1535 diff --git a/input10 b/input10 new file mode 100644 index 0000000..20133c9 --- /dev/null +++ b/input10 @@ -0,0 +1,100 @@ +46 +63 +21 +115 +125 +35 +89 +17 +116 +90 +51 +66 +111 +142 +148 +60 +2 +50 +82 +20 +47 +24 +80 +101 +103 +16 +34 +72 +145 +141 +124 +14 +123 +27 +62 +61 +95 +138 +29 +7 +149 +147 +104 +152 +22 +81 +11 +96 +97 +30 +41 +98 +59 +45 +88 +37 +10 +114 +110 +4 +56 +122 +139 +117 +108 +91 +36 +146 +131 +109 +31 +75 +70 +140 +38 +121 +3 +28 +118 +54 +107 +84 +15 +76 +71 +102 +130 +132 +87 +55 +129 +83 +23 +42 +69 +1 +77 +135 +128 +94 diff --git a/input11 b/input11 new file mode 100644 index 0000000..bbaf4ea --- /dev/null +++ b/input11 @@ -0,0 +1,97 @@ +LLLLLLLLL.L.LLL.L.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLL.LLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL +L..LL.L.L....L..L.L....L.....L.L.L......L..L..L....L.LL.......L.....L....L..L................L.... +LLLLLLLLLLLLLLL.LLL.LLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL..LLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLLL.LLLLLLLLL.LLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLL.LLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL +LL.LLLLLLLLLLLL.LLL.LLL.LLLLLLLL.LLLLLLLL.LLLLLLL..LLLL.LLLLLLL.LLLL.LLLLLL.LLLLL.LLLL.LL.LLLLLLLL +LLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLL.L.LLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLLLLLLLLLL.LLLL.LLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLL.LLLL.LLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLLLLL.LL.LLLLLLLLLLLLLLLL +.LLLL..L.L..L....L.LLL...LLL..L.L....L.L.L...L.....L...L.....L...L..L...LL...L..LLL..L...L....L..L +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLL +LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLLL.LLLL..LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL..LLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLL +.....LL...LL..L...L..L..LL.L..LLL...L..L.LLL...LLL..L.....L...L.....L........LLLL..LLL.....L....L. +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLLLLLLLL.LL +LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLL.LL.LLLLLLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.L +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL.LLLLLLLL.LLL.LLLLLLLLL.LLLLLLL.LLLL.LLL.LL.LLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.L.LLLLL.LLLLLLLL +....L..LL.L.L......L..LL.......LL......L..L...L..L.........LL....LL.LLL..LLLL..L..L.......L....L.. +LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLL.LLL.L.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLL.LLLLLLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL +.LL..LLLLL.LL.L...L...L...L....LLLL...LLLL.LL...LL...L.LL...LL..LL.L..L......L....L.L.L.L...LL...L +LLLLLLLLL.LLLLLLLLLLLLL..LLLLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLLLLLL.LL.LLLLLLLLLLLLLLLL +LLLLLLLLL.LLLLL.L.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLL..LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLL.LL.LL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLL.LLLLL.L.LLLLLLLL +....L.........LL...L.L..LL.L.L..L......L.L.L...L....L.......LL.LL....L.L...L....L...L....L...L.... +L.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LL..LLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLL..LLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.L.LLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLL.LL.LLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL +LLL..L.L........L...L..L.LLLLLLL..LLLL..L...L..L.L..LLL....L..L.LLL..L...L..L.......L.LLLLLL.LL.L. +LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL.LL.LLLL.LLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LL.LL.LLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLL.LLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLL +L...L.....LL....L.L.LLLLL.....L....LL..L.....L...L.L.LL.......LL...LL............L.L..L..LLL..LL.. +LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLLL.LLLLL.LLLLLLL.LLLLL.LL +LL.LLLLLLLLLLLL.L.LLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LL.LLLL.LLLLLL.LLLLL.LLLLLLL.L.LLLLLL +LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLL.LLLL +LLLLLLLLL.LLLLL.L.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL +LLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL.LLLLLL..LLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LL...L.........L..LLL........L.L..L....L.L.L....LLLL.LL.L....LL....L.LL.LLL..L..L....LL.L......LLL +LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLL.L.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLL +...L........L....L.L.LL.LL.L.L.....L.L..L.....LL....L..L.L.L..L..L.L...L.........L.LL.LLLLL..L.... +LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL..LLLL.LLLLLLL.LLLLLLLLLLL.LLL.L.LLLLLLLLLLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLL.L.LLLLLLLL +LLLLLLLLL.LLLLLLLLLLLLL.LL.LLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLL..LLLLLLL +LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL +..LLLL.L..LL.L......LL.L...L.L..L....LLL.........L....L.......LL.LLL.L.L.....LL.L...L.LLL....L.... +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.L.LLL.LLLLLLL.LLLL.LLLLLL.LLLL..LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL.LLLLLLLLLLLL.LLLLLLLLL.L.LLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLLLLLLL.LL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLL +LLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLL +LL...LLLLL.....LL..L.....L....L......L.L........LL......LL.LL..L..LLL.L...L..L..L.L.....LLLL...LLL +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLL.LL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLL.LLLLL.LLL.LLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLL +.LL..L.....LLLL.LL..L.LL....L.LL...L..LL......L..LL...LL..L.L.LLLL...LL.L..L..LLL.L.L.....L.LL.LL. +LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLL.LL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLL.LLLLL.LLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.LLLLL.LL +LLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLL +LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLL.LLLL..LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL +LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL.LLL.L.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLL diff --git a/input12 b/input12 new file mode 100644 index 0000000..ed8be96 --- /dev/null +++ b/input12 @@ -0,0 +1,759 @@ +F70 +S4 +E3 +S4 +L90 +N4 +R90 +W3 +F75 +S5 +L90 +E1 +S4 +F98 +N4 +R90 +S3 +L90 +W1 +F39 +W2 +L90 +E1 +F99 +S3 +E5 +F63 +N4 +F26 +E1 +R180 +F58 +N3 +F4 +E1 +F45 +E4 +R90 +E3 +F76 +S1 +F22 +R90 +N1 +W1 +F76 +W1 +N5 +E3 +L180 +S5 +F87 +W4 +L90 +F9 +S2 +F11 +N4 +L180 +S3 +R90 +F92 +L90 +S1 +E4 +R90 +W1 +F1 +S2 +L90 +F27 +N3 +E1 +N1 +E3 +L180 +S1 +S5 +R180 +W5 +W5 +F60 +S5 +W5 +L270 +N3 +R90 +F65 +S5 +F53 +W5 +L90 +N1 +W5 +L180 +F87 +W2 +R180 +S2 +F77 +N1 +F81 +L180 +E5 +N5 +W4 +L90 +W4 +L90 +E3 +N2 +L90 +W2 +S1 +F19 +W1 +F82 +N4 +R270 +E5 +L90 +N3 +R90 +F81 +L270 +W3 +R90 +L270 +N3 +F53 +E2 +F84 +R90 +S2 +F39 +R180 +N1 +L90 +F11 +S2 +W5 +F20 +W1 +N4 +R90 +F76 +E3 +S5 +E3 +S5 +W5 +S2 +L90 +N3 +E3 +S5 +F27 +W1 +L90 +F65 +W3 +R180 +F84 +W2 +N5 +F43 +L180 +W3 +F11 +W2 +R90 +N1 +R90 +N5 +W1 +S4 +N4 +F88 +N3 +F87 +W3 +L90 +F77 +S5 +F18 +N4 +F97 +E5 +S5 +R90 +F94 +N5 +L180 +F8 +N4 +R90 +W2 +N2 +L180 +F4 +R90 +W4 +S3 +R90 +F38 +S3 +E1 +N5 +F4 +E3 +R90 +S4 +F95 +E5 +F77 +F32 +W5 +F3 +R90 +N1 +W3 +F96 +L270 +N2 +E2 +F30 +S3 +W2 +R90 +F57 +R90 +E1 +R90 +N5 +E1 +N4 +W4 +N1 +W2 +F47 +N5 +W3 +L90 +N4 +F50 +E3 +R90 +F27 +N3 +F78 +N2 +R90 +F100 +S3 +F67 +R90 +N4 +R90 +N4 +F88 +S4 +E2 +S2 +F31 +S5 +R90 +W3 +R180 +W2 +F97 +F31 +N1 +L90 +S4 +F50 +N3 +W2 +L180 +F85 +L180 +E3 +L90 +F95 +N4 +L90 +E1 +S2 +R180 +N2 +F19 +N5 +E5 +S1 +W5 +R90 +N1 +L180 +F76 +S4 +E5 +S2 +S5 +E3 +F53 +L90 +S3 +E4 +S1 +E1 +L90 +F54 +W1 +S1 +E2 +N1 +R90 +S3 +R90 +F63 +L90 +W4 +L90 +F47 +L90 +E5 +F23 +W2 +F97 +E3 +L90 +N4 +F54 +W3 +S4 +W3 +S2 +F67 +W1 +S4 +R90 +S5 +R90 +W4 +L180 +L90 +S4 +F19 +F42 +S4 +F91 +R90 +L180 +F64 +L180 +W4 +R90 +F32 +N3 +F18 +E2 +L180 +N4 +E2 +N1 +E4 +N4 +F54 +W5 +F50 +N3 +L90 +N5 +R90 +F100 +E4 +N1 +E3 +L90 +F8 +L90 +E4 +L270 +F95 +L90 +F44 +E5 +R90 +F79 +N5 +F61 +S2 +F71 +L90 +F4 +N3 +F25 +L180 +F7 +W4 +F96 +R90 +S1 +R90 +W1 +F9 +N2 +W5 +F1 +R90 +N2 +F36 +W4 +R90 +F96 +W2 +F26 +S2 +F28 +E4 +N1 +F33 +N5 +F51 +W2 +S1 +F40 +N3 +F67 +E3 +S2 +R90 +W1 +S3 +E3 +L90 +F75 +E3 +N5 +E2 +F52 +E3 +F7 +N4 +F4 +S4 +L90 +S2 +W5 +F85 +F7 +L180 +E1 +L90 +E2 +S3 +R180 +N3 +E2 +R90 +N5 +F6 +N2 +L90 +W1 +R90 +R90 +F91 +E2 +N4 +R90 +S2 +E3 +S3 +L90 +W3 +F61 +S1 +L90 +W3 +N2 +E1 +R180 +E2 +W5 +R90 +F65 +N4 +W3 +F54 +E1 +N3 +E5 +L180 +S4 +N3 +E5 +R90 +S3 +R90 +S4 +W4 +F31 +S5 +R90 +N2 +E3 +F49 +F47 +W3 +F79 +R270 +W2 +F90 +S3 +F73 +L180 +F14 +W4 +F27 +R90 +F75 +L90 +N5 +R90 +N4 +L90 +N4 +E2 +S1 +W1 +S4 +W5 +W1 +F7 +W5 +L180 +E1 +S1 +F82 +F36 +N2 +L90 +E1 +L90 +S4 +L180 +N2 +W3 +F21 +R270 +F18 +R180 +F93 +L90 +W2 +F4 +E1 +R90 +E2 +S3 +W4 +F30 +E1 +F69 +W5 +R90 +E2 +L180 +S4 +W1 +N1 +E3 +L90 +E3 +R90 +F69 +R90 +S2 +L90 +N4 +F13 +L90 +E2 +L90 +N2 +W2 +N5 +S4 +F70 +R90 +F67 +E4 +F62 +L270 +F98 +L90 +E5 +F15 +E5 +R90 +W3 +E2 +F25 +R180 +F7 +L180 +W4 +S3 +F42 +R180 +R270 +N1 +R180 +S2 +F37 +E2 +F72 +N5 +W5 +F61 +F43 +W3 +R90 +R270 +N5 +R270 +E4 +L90 +W4 +F31 +F43 +L180 +S3 +W4 +R90 +F20 +E2 +S5 +L90 +F75 +R90 +F52 +W3 +L90 +N5 +W5 +N4 +R90 +F52 +W3 +F91 +E1 +N2 +F81 +R90 +E2 +L90 +F24 +E2 +L180 +E1 +F55 +E1 +L90 +E5 +R90 +F23 +S3 +R180 +S3 +F8 +L180 +S1 +N3 +F90 +N5 +W3 +N4 +L90 +N3 +W5 +R90 +E4 +S4 +F89 +W3 +N2 +R90 +F18 +R180 +W5 +E4 +F100 +N4 +F40 +E3 +S2 +E2 +F16 +R90 +S2 +L180 +F58 +W1 +F70 +S1 +R90 +W3 +L90 +S4 +F48 +R90 +W1 +N5 +E3 +R90 +E1 +L90 +F1 +R90 +N1 +E3 +F39 +W3 +R90 +E3 +L90 +N5 +R90 +S3 +W4 +R180 +E1 +S3 +F56 +L90 +F98 +N2 +W4 +F67 +R90 +W3 +S1 +F33 +R90 +F42 +L90 +R90 +E4 +R90 +E3 +F74 +E4 +R270 +F62 +S5 +L90 +E4 +F21 diff --git a/input13 b/input13 new file mode 100644 index 0000000..6a5ab7a --- /dev/null +++ b/input13 @@ -0,0 +1,2 @@ +1004345 +41,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,37,x,x,x,x,x,379,x,x,x,x,x,x,x,23,x,x,x,x,13,x,x,x,17,x,x,x,x,x,x,x,x,x,x,x,29,x,557,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,19 diff --git a/input14 b/input14 new file mode 100644 index 0000000..11570c1 --- /dev/null +++ b/input14 @@ -0,0 +1,578 @@ +mask = 00X10101X110010011XX0X011X100000X010 +mem[13197] = 47579321 +mem[37394] = 374943 +mem[48509] = 418284 +mem[29793] = 191792725 +mask = 00100X001010010111XX010X10X01100001X +mem[378] = 9637 +mem[41083] = 1858241 +mem[36394] = 762 +mem[40101] = 15295 +mem[50670] = 9179863 +mem[30384] = 164245 +mem[11676] = 393669095 +mask = 0XX000X1111001010X10XX1101XX00X00100 +mem[17956] = 854 +mem[57595] = 179871 +mem[50596] = 207644327 +mask = X100XX0111X0X1X01101X0X0110010101011 +mem[26867] = 1012 +mem[3061] = 514891024 +mem[35973] = 512 +mask = 01X000111110010X1110X00110000X00000X +mem[3707] = 123619 +mem[37107] = 7325808 +mem[31906] = 102168 +mask = XX00XX0101100X011100000XX00100000X00 +mem[38336] = 2917310 +mem[7166] = 313228 +mem[41771] = 2741721 +mem[52154] = 89454 +mask = 11001111X110X0XX10XX11101111000X0111 +mem[35611] = 58725 +mem[40227] = 8442431 +mem[10029] = 7334 +mem[13345] = 87327004 +mask = 0XX0X0001010011011010XX0X110XX01X001 +mem[4868] = 493430 +mem[40452] = 18191 +mem[4567] = 330532 +mem[13580] = 1662243 +mask = 001X00011000X1X0X1X0110X110111001011 +mem[2096] = 25174 +mem[15283] = 994663544 +mem[16002] = 1359 +mem[4240] = 704816 +mask = 01000011101001001010110X10011X11XX01 +mem[16210] = 279177 +mem[8996] = 6470256 +mem[31049] = 1371071 +mem[20425] = 9683526 +mem[24986] = 142094045 +mask = 0X001X01X1X0110X10XX0X01X00101111010 +mem[61471] = 23661 +mem[57520] = 246980 +mem[57446] = 4169790 +mask = 001000X11110010111X000X00X0011X01001 +mem[25460] = 1461 +mem[528] = 48572826 +mem[61442] = 1487 +mem[60708] = 1804 +mem[51588] = 36111 +mask = 0X000001111001010X1011100100001X0X0X +mem[45713] = 3807909 +mem[26867] = 6236 +mem[39186] = 3023142 +mem[46212] = 5671589 +mem[28686] = 10375260 +mask = 00X0000XXX10X1011100X100001X0X100010 +mem[7272] = 1073 +mem[35482] = 1877478 +mask = 01X00XX11110X11X110X1000010XXX101110 +mem[28892] = 2154970 +mem[33403] = 34104 +mem[56124] = 11230 +mem[11265] = 484054168 +mem[36422] = 1080979 +mask = 00000001X11001X1110001X01000101XXXX0 +mem[8445] = 2387 +mem[55775] = 8215 +mask = 110001101110110X10010X00XX1X01010100 +mem[49202] = 4152007 +mem[49938] = 4676666 +mem[58184] = 43886544 +mem[35840] = 8484248 +mem[25642] = 1980350 +mem[37918] = 1692542 +mem[44918] = 43860354 +mask = 0X000X011110010X1100X10X100X1X111100 +mem[24669] = 15051033 +mem[43432] = 1054 +mem[64706] = 21834 +mem[27336] = 773822 +mem[24406] = 420 +mask = 00XX01111X1001001X0001101001111101XX +mem[48221] = 256859 +mem[1361] = 145480785 +mem[8221] = 32962081 +mem[11649] = 327597066 +mem[6355] = 3866 +mem[33696] = 951794 +mask = X10XX0010110011010111100X010X000000X +mem[51014] = 577 +mem[38304] = 7416 +mem[34256] = 3748 +mem[12926] = 306 +mem[39297] = 1823498 +mask = 0000X00XXX10011XX000000X10X010100001 +mem[18788] = 7298 +mem[39644] = 7675 +mem[33093] = 416832 +mem[5195] = 6722351 +mem[28000] = 53707945 +mem[5336] = 77314873 +mem[992] = 134079888 +mask = 0000X101110X010011X0000000X011X1X101 +mem[8536] = 401336 +mem[1632] = 1267 +mem[6456] = 581 +mem[31682] = 20542 +mem[27729] = 726 +mem[49447] = 37811 +mask = 0X0X00111XX001XX111X1011010X100X0111 +mem[38677] = 9808 +mem[54045] = 28545 +mem[30384] = 49811 +mem[62515] = 19422 +mem[14508] = 49363 +mask = X100X1X1011X1111011X01101000X11XX101 +mem[59468] = 387 +mem[37138] = 121701873 +mem[18728] = 2624430 +mem[28293] = 5039090 +mem[32321] = 839768 +mem[28535] = 647 +mask = XX100X0010100XX1110X11000110X100X00X +mem[2147] = 1562 +mem[25832] = 275992750 +mask = 110XX0X10110X11X10X1110X10100X000000 +mem[22152] = 470276298 +mem[60732] = 716 +mem[52727] = 1427169 +mem[16196] = 9596060 +mem[3910] = 28432777 +mask = 01X0001111100X101110110X011XXX01X011 +mem[8221] = 60956 +mem[1223] = 293 +mem[24130] = 777493 +mem[62002] = 3900 +mem[20316] = 26105612 +mem[58295] = 528344031 +mem[12465] = 1159 +mask = 11000X011110010010011100100XX111100X +mem[59580] = 3601634 +mem[31173] = 325319 +mem[28284] = 2285676 +mem[57595] = 8662764 +mem[32672] = 4111107 +mask = 01000001X1100101XX0X01101X1X00011X0X +mem[33093] = 4612 +mem[61749] = 5692 +mem[28188] = 26420039 +mem[59026] = 1325 +mem[37032] = 149 +mask = 01000X11111001X11110011X111X01100X01 +mem[23793] = 131971 +mem[10420] = 848652 +mem[10469] = 33394600 +mem[23001] = 1875 +mask = 01001111011X1X1XXX1X001XX11100011X10 +mem[38294] = 371641 +mem[17261] = 72227824 +mem[41143] = 213405737 +mem[54246] = 1445548 +mem[41901] = 1849824 +mask = 0X00110X01101100XX101011001110XX1101 +mem[42925] = 176752065 +mem[17255] = 12010392 +mem[37437] = 64942 +mem[57253] = 827582 +mask = 11X10X101111XX0010X10101100100010110 +mem[14344] = 6638562 +mem[40266] = 89477554 +mem[9511] = 1133 +mem[53072] = 748643130 +mem[4567] = 372 +mem[26565] = 4739 +mask = 00010XX1X11X010X11X000100111001X1110 +mem[4247] = 17837 +mem[18674] = 2031700 +mem[47487] = 89684677 +mask = 110X1X11011X101110111101XX01001100X0 +mem[22046] = 3445 +mem[55657] = 29187 +mem[38510] = 159862 +mask = 0100000X11X00100110X01101X0011001100 +mem[12772] = 3394234 +mem[30255] = 47301946 +mem[55181] = 11825301 +mem[2096] = 239 +mem[6355] = 66264 +mem[62103] = 62751352 +mask = X100010XXX10X1001110001001X10X100X0X +mem[18880] = 12756 +mem[52727] = 58449492 +mem[52620] = 106260805 +mask = 01000X011110010XX110X11001100X000XXX +mem[5734] = 3770 +mem[46419] = 12806425 +mem[26866] = 6566928 +mask = X1001XX101101X1X10111X0X1111001101X0 +mem[54847] = 8045 +mem[61036] = 1672 +mem[32929] = 87423486 +mem[48539] = 13896 +mem[14353] = 7009065 +mem[16446] = 32987614 +mask = 00100000X111110X1110X101100000100X00 +mem[23863] = 4070 +mem[52234] = 498973 +mem[20235] = 1706949 +mask = 00X000011110X100110X11100X0X10X01010 +mem[44286] = 26378 +mem[30741] = 14368000 +mem[7396] = 88194752 +mask = 0X001X01X11011X0101X1010XX01X01000X0 +mem[6834] = 2670580 +mem[15903] = 6945101 +mem[10104] = 2517 +mem[65020] = 61602027 +mem[55142] = 1143278 +mem[38596] = 1333 +mem[17509] = 153504934 +mask = 00XX0X01111XX10111X00X10X0111011110X +mem[568] = 1625 +mem[30255] = 248279 +mem[11912] = 538 +mem[12028] = 520033 +mask = 0010XX011X00X10011X001XX1100X1000001 +mem[15654] = 120 +mem[4292] = 57554 +mem[2096] = 346664 +mem[1248] = 10995 +mem[48539] = 656539 +mem[19181] = 147211 +mask = 1010010X110001001100X1X00X0011010X01 +mem[11344] = 4845730 +mem[60639] = 25030928 +mem[1005] = 12960528 +mem[47688] = 107547855 +mem[17509] = 728745 +mask = X00000011X10X10X11000101101000000100 +mem[46621] = 1608 +mem[5562] = 15064109 +mem[28385] = 1651 +mem[5734] = 288099689 +mem[49319] = 97558812 +mem[37739] = 1161 +mem[52727] = 1992490 +mask = 0001010XX110010X110000X01X10X011XX1X +mem[37366] = 735085354 +mem[1739] = 409 +mem[12604] = 754989 +mask = 00000X011110010011000X001X0100XX0000 +mem[29851] = 8508 +mem[44133] = 1998890 +mem[24804] = 6068 +mem[59260] = 1198469 +mem[59580] = 10413954 +mask = 00110111X01X010010X00000X10X00110110 +mem[55579] = 418284890 +mem[7573] = 1800 +mem[26096] = 1469134 +mem[44133] = 25531796 +mem[39628] = 7076590 +mask = 0000000111X0010111X001011XX0000X1X00 +mem[24778] = 24875864 +mem[10420] = 3072761 +mem[2096] = 2762 +mem[30148] = 6696 +mem[17770] = 13204967 +mask = 0011010101X00X0X1100X000110011100101 +mem[57742] = 21044093 +mem[33266] = 56667 +mem[61442] = 1636 +mem[51870] = 1018197644 +mem[40469] = 77760 +mask = X0X001XX11000X0011X00100010011X00X01 +mem[11504] = 438885 +mem[53777] = 6130 +mem[17770] = 808014 +mask = 000X001111100101XX100010X010X1100100 +mem[35611] = 1215 +mem[10397] = 301 +mem[10866] = 8375216 +mem[2499] = 10472 +mem[63504] = 270966 +mem[7719] = 2064 +mem[41088] = 343764913 +mask = 010X1X00X1X0X1101X0X00111101001X0101 +mem[20597] = 773 +mem[14657] = 294987038 +mask = 00XX0001X110010111100000X01010100111 +mem[43170] = 365 +mem[55657] = 4882105 +mem[44170] = 628956 +mem[10429] = 947957 +mem[272] = 36059 +mask = 0X000011X0X0010X1X1011110100101XXXX1 +mem[3910] = 2312 +mem[47735] = 89421 +mem[2197] = 32972549 +mem[49938] = 7005 +mask = 00000100X100X100111X0101011X11010101 +mem[54400] = 830 +mem[43977] = 2412350 +mem[18229] = 19157634 +mem[19181] = 879884567 +mask = 000101X11X100100X100011X000100110001 +mem[37237] = 104037633 +mem[29167] = 1094 +mem[6308] = 6007 +mem[21610] = 80462437 +mem[2261] = 345450311 +mask = 0X0000X1111001011110X01X1XX01010X0XX +mem[10892] = 85035 +mem[38510] = 42597708 +mem[30752] = 2960 +mem[30416] = 123661909 +mem[49045] = 913 +mem[4292] = 75 +mem[17509] = 1382 +mask = 1X00X00111X001X0100101001X110X0001X0 +mem[56241] = 8276 +mem[40782] = 243373 +mem[42397] = 43237586 +mem[13015] = 399 +mem[23129] = 735838 +mem[1385] = 4448 +mask = 0000X011000XX100X110111101X110X010X1 +mem[13015] = 247 +mem[42378] = 546670 +mem[8214] = 63809 +mem[22410] = 155149 +mem[55264] = 454543598 +mem[28778] = 69088880 +mem[48061] = 12489909 +mask = 0XX0X000XX1001X01101001000000100X1X1 +mem[7551] = 11717790 +mem[6107] = 50467 +mem[30752] = 4249755 +mem[17228] = 33884 +mem[59957] = 32163540 +mask = 1X0X0X10111X01001X0101011X0X0X0101X0 +mem[45349] = 1879078 +mem[31733] = 88189 +mem[12577] = 546676501 +mem[53419] = 16199 +mem[59921] = 2546 +mask = 0010001X110001X1X110100101X111000000 +mem[19998] = 179736 +mem[22061] = 30001652 +mem[41371] = 16212851 +mem[64355] = 622251640 +mem[23129] = 98852 +mem[56429] = 266 +mask = 00000X0X11X00XX1100001X0100010X0X100 +mem[37241] = 450 +mem[64833] = 219911344 +mem[16713] = 626602448 +mask = X1X01011X11010111011XX000001X01XX100 +mem[47336] = 15388 +mem[56124] = 582872 +mem[28686] = 27406190 +mem[34623] = 13146 +mem[30384] = 229541309 +mask = X00X011X11100100110X00110001XXX00000 +mem[18660] = 3353 +mem[30741] = 10036798 +mem[47487] = 4090 +mask = 00X0000X11100X011X0001101001X10X10X0 +mem[52567] = 730515 +mem[16156] = 10615261 +mem[29580] = 957414770 +mem[26765] = 19 +mem[24655] = 510031974 +mem[24669] = 30 +mem[46781] = 5769 +mask = 0X0010011110111010X000X0X11X101001X0 +mem[63285] = 8050 +mem[46893] = 981797 +mem[46022] = 984778 +mem[31931] = 67780 +mem[23543] = 3153 +mask = 1100X001X11001X01001X100111X01X0X100 +mem[53172] = 13616323 +mem[31500] = 117639 +mem[59037] = 106552607 +mem[54562] = 3408946 +mem[57159] = 411910 +mem[2824] = 61677145 +mem[47313] = 520051559 +mask = X100010111100100XX0XX110100001010101 +mem[37739] = 3912032 +mem[12772] = 884026 +mem[2217] = 4238 +mem[57159] = 28391 +mem[17146] = 3998 +mask = 00000001111001X11X000110101X1X11X100 +mem[11649] = 516652 +mem[21190] = 526 +mem[6364] = 274816 +mem[25567] = 190071 +mask = XXX00000X111010111001001111000X00000 +mem[25786] = 934 +mem[22026] = 215203 +mask = 0010000110X0110X11X001001101110X0011 +mem[59392] = 400 +mem[59580] = 927 +mem[15208] = 18515970 +mem[59444] = 245687 +mem[36248] = 893 +mem[59134] = 20240 +mask = 0X0XX1X11110X1011010000110000010000X +mem[11344] = 223586488 +mem[41434] = 519191086 +mem[15028] = 1492592 +mem[25631] = 247281 +mask = 11X0XX1011101000X0011X00X101X1111000 +mem[21825] = 1675 +mem[2371] = 663473 +mem[37724] = 4339 +mem[54246] = 855 +mem[9392] = 56579 +mem[35552] = 14454 +mask = 0100010111100100111X110X00X01000X1X0 +mem[44516] = 482691 +mem[26528] = 1559 +mem[53886] = 89643332 +mem[3478] = 12699372 +mask = 0011010111X00100XXX0XX1X10XX10100001 +mem[27239] = 413074512 +mem[15589] = 3001 +mem[10011] = 1136 +mem[59026] = 852921 +mem[5283] = 213015528 +mask = 00X0000XX11XX10111X0000001X000101000 +mem[17298] = 4088539 +mem[54369] = 505389469 +mem[8221] = 132829 +mem[55115] = 5055 +mem[56330] = 1932140 +mask = 01X00001111001010110111001X00010X0XX +mem[37467] = 127273625 +mem[38432] = 3166735 +mem[52727] = 998 +mem[42925] = 1733202 +mask = 11010011011011X01X01010XX10110110000 +mem[26085] = 233531 +mem[57079] = 1526 +mem[53172] = 385838419 +mem[29614] = 254712697 +mem[25466] = 735 +mem[27081] = 7719 +mask = 01000000111X0XXX1101X11X001101X01100 +mem[55941] = 72432190 +mem[16199] = 10097889 +mem[45349] = 10650 +mem[62515] = 8214 +mem[59468] = 965897 +mem[16653] = 386447843 +mem[49447] = 413274 +mask = 01000X011110X1XX1XX10X001111000X1000 +mem[59209] = 14316 +mem[50790] = 705222705 +mem[45621] = 232211796 +mask = 010X111101111XX1101000X1011000111011 +mem[48891] = 3231894 +mem[37241] = 49993 +mem[47016] = 3806 +mem[10469] = 12758 +mem[43871] = 17980 +mask = 0XX00XX11110010011X0010X1X011100X000 +mem[28733] = 801341049 +mem[12772] = 20002640 +mem[30741] = 2248 +mask = 0101X01110100X0111XX11110011000XXX01 +mem[17803] = 65414 +mem[45439] = 13886371 +mem[16184] = 130293 +mem[29313] = 1782 +mask = 01000111111001101X0110000001XX1X1111 +mem[34404] = 202755 +mem[43413] = 1045 +mem[48841] = 381434549 +mem[37238] = 230052 +mem[10175] = 421554 +mem[11939] = 15850 +mask = X0XX0011X110010X011000010111110X1XX0 +mem[54847] = 160031 +mem[53915] = 5111 +mem[6036] = 17132 +mem[36183] = 1360055 +mem[47658] = 127563 +mask = 00100X1111X0010101101X11X11111001X10 +mem[25937] = 8673 +mem[12926] = 834 +mem[43356] = 732346 +mem[5734] = 393 +mem[3822] = 30383 +mask = 110001101110XX00100100XX0X11X1XX010X +mem[821] = 185158312 +mem[64509] = 264189683 +mem[15199] = 1037709 +mem[635] = 437556 +mem[31141] = 14726605 +mem[40468] = 47196 +mask = 00000001XX1001001X0000X01001X0001100 +mem[46740] = 8071 +mem[43144] = 14187193 +mem[51555] = 382 +mem[30741] = 4087 +mem[45411] = 1430 +mem[14377] = 7364 +mask = 11X00110111001001001100X10X1XX00X100 +mem[62803] = 979004797 +mem[4838] = 343 +mem[23241] = 4426 +mask = 001X0101X1100100X1X0X110110XX01001X0 +mem[10799] = 5745 +mem[14789] = 34632 +mem[27068] = 8863 +mask = 001001011XX0010011000111010X10XX0100 +mem[31173] = 109895 +mem[25936] = 4493 +mask = 00000011111X0101X1X01100X00000100000 +mem[32612] = 14472 +mem[22702] = 713 +mem[22779] = 126887839 +mem[43168] = 251908 +mem[11504] = 47004 +mem[7399] = 2215129 +mem[63129] = 4367 +mask = 010001010X10010X111XX1X0111100101X0X +mem[3663] = 187207677 +mem[52928] = 200 +mem[38852] = 8397 +mem[31461] = 223838656 +mem[64706] = 4205924 +mem[26237] = 218385741 +mem[57402] = 258615472 +mask = 11X0X0X1011001XX1001111X011100XX0000 +mem[55334] = 323423 +mem[5833] = 33097 +mem[26924] = 272 +mem[42957] = 47976862 +mem[18798] = 61419 +mem[19947] = 1287 +mask = 1100X101011X10111X11X000111100111XX0 +mem[64472] = 224734 +mem[18079] = 526 +mem[60870] = 3322170 +mem[4013] = 578 +mem[2606] = 83684765 +mem[17048] = 2503 +mask = 0010000XX0000100110000011X0001X0X00X +mem[37789] = 94286 +mem[2499] = 13318890 +mem[29793] = 78507 +mem[45621] = 3626886 +mem[34770] = 2407 +mem[54400] = 38740 +mask = 0010X10111000100110001X0X1000100X101 +mem[11265] = 1297549 +mem[16410] = 948310 +mem[33093] = 893977 +mem[17298] = 53047 +mem[45439] = 14869 +mem[21212] = 870451788 diff --git a/input15 b/input15 new file mode 100644 index 0000000..2998b14 --- /dev/null +++ b/input15 @@ -0,0 +1 @@ +11,18,0,20,1,7,16 diff --git a/input16 b/input16 new file mode 100644 index 0000000..7ff4457 --- /dev/null +++ b/input16 @@ -0,0 +1,268 @@ +departure location: 33-679 or 691-971 +departure station: 48-646 or 671-966 +departure platform: 37-601 or 619-950 +departure track: 41-863 or 875-973 +departure date: 37-145 or 168-965 +departure time: 26-246 or 257-972 +arrival location: 30-542 or 556-960 +arrival station: 30-75 or 89-954 +arrival platform: 48-274 or 299-958 +arrival track: 41-561 or 567-957 +class: 40-237 or 243-952 +duration: 33-317 or 336-972 +price: 47-365 or 381-957 +route: 29-415 or 435-951 +row: 45-762 or 784-972 +seat: 34-888 or 914-968 +train: 50-502 or 513-960 +type: 45-802 or 825-961 +wagon: 44-458 or 475-963 +zone: 28-721 or 735-972 + +your ticket: +53,67,73,109,113,107,137,131,71,59,101,179,181,61,97,173,103,89,127,139 + +nearby tickets: +556,988,567,847,219,631,519,625,634,639,362,750,703,882,798,931,177,888,59,312 +190,445,591,270,798,677,575,789,880,880,748,788,6,597,475,746,172,221,925,97 +437,141,105,837,357,587,363,309,185,887,181,833,929,945,716,445,247,800,795,65 +593,594,96,761,314,258,851,560,224,788,403,635,829,946,857,572,383,67,944,160 +939,408,531,121,885,513,556,762,757,261,847,596,713,527,645,84,693,348,847,487 +105,877,638,130,451,336,197,188,711,695,320,245,879,57,518,853,354,57,705,217 +274,835,350,884,258,637,834,145,199,269,943,508,405,231,645,624,385,622,210,537 +313,365,269,879,96,718,887,571,383,635,894,484,266,389,628,634,458,271,752,408 +591,449,223,337,492,75,922,579,489,60,738,775,364,696,355,174,413,216,354,175 +586,837,358,790,108,268,739,180,215,477,831,700,570,940,61,382,196,982,107,312 +568,596,52,791,556,947,145,72,402,384,746,941,95,312,644,907,916,452,398,184 +142,478,886,862,213,788,315,704,192,707,699,335,862,485,212,118,221,346,344,398 +91,21,269,525,136,624,340,944,458,99,792,488,716,560,693,746,691,876,698,538 +190,227,645,202,383,916,797,88,802,675,271,793,785,943,539,446,678,735,229,218 +147,600,245,521,587,642,354,119,745,878,744,259,700,110,124,486,630,701,707,265 +715,757,411,397,699,755,83,637,640,120,260,89,264,264,496,518,620,837,245,916 +741,695,405,860,556,55,111,574,831,716,920,359,638,873,678,601,412,943,360,484 +192,139,396,360,439,540,103,481,679,340,542,597,947,538,357,560,581,182,608,451 +117,346,940,631,354,355,65,116,357,787,878,559,789,784,262,701,453,340,255,558 +743,304,621,312,770,691,138,261,695,494,633,833,747,624,479,145,313,760,536,600 +480,497,784,853,846,134,217,204,859,170,493,535,559,539,133,182,452,872,580,532 +860,861,415,351,933,920,385,107,109,266,990,264,200,568,881,640,798,753,490,582 +878,844,938,274,232,307,196,109,719,102,568,761,997,93,114,168,587,529,268,708 +736,522,134,704,357,441,676,501,857,531,191,917,542,66,267,220,627,982,172,569 +171,345,89,943,258,678,939,738,397,672,396,530,194,408,614,123,499,883,393,717 +560,887,761,937,520,702,209,437,629,797,860,302,578,794,212,103,773,186,338,539 +633,586,66,835,533,801,205,50,395,746,336,359,751,560,573,98,74,310,722,312 +353,354,856,582,835,755,447,879,518,71,447,861,637,586,81,938,339,259,57,488 +679,884,542,943,128,93,740,110,830,748,784,468,949,789,226,880,826,172,748,713 +542,178,826,494,941,880,361,404,89,50,305,223,914,206,716,53,608,878,942,193 +404,751,924,842,208,831,176,761,225,695,129,704,829,750,195,746,492,702,625,774 +104,675,103,476,107,495,184,127,353,588,735,476,415,553,645,360,920,300,222,581 +361,595,320,592,798,177,590,311,836,140,634,364,199,263,309,677,388,453,784,525 +405,534,694,305,756,752,337,645,343,578,825,406,74,184,831,634,736,212,577,9 +403,59,268,259,411,336,558,841,359,406,96,702,849,784,185,841,316,924,789,11 +270,305,937,393,196,699,712,129,567,485,535,717,590,659,801,595,94,624,193,244 +357,230,257,226,393,834,63,122,385,914,583,826,829,162,642,302,270,72,884,125 +119,797,408,302,358,920,588,525,72,52,698,60,266,447,307,486,856,455,80,392 +94,885,239,399,759,104,861,486,692,595,343,209,840,178,446,355,521,193,572,739 +946,718,918,179,173,585,946,120,827,797,721,188,134,949,686,494,708,572,620,497 +832,841,850,497,590,573,530,638,304,914,106,531,833,457,704,580,749,632,551,593 +515,68,397,128,232,382,300,569,949,859,235,70,527,475,510,834,232,265,317,207 +181,442,204,793,455,439,90,561,998,489,705,860,840,391,90,479,190,436,391,216 +674,829,106,259,861,635,587,509,395,458,716,756,671,145,191,215,529,173,115,936 +691,557,450,519,212,184,89,639,450,799,679,802,540,504,171,676,105,948,140,761 +130,341,915,105,588,861,934,643,120,92,752,119,111,310,888,710,408,897,495,220 +940,113,619,789,129,853,314,299,800,568,124,595,588,455,394,115,755,87,518,90 +884,620,942,949,226,634,945,920,918,764,447,75,620,757,619,752,135,599,125,583 +220,307,629,757,495,878,887,140,792,558,58,382,393,364,259,206,811,625,626,273 +16,571,58,171,497,578,351,721,852,57,760,626,832,66,497,404,944,847,211,535 +75,751,410,71,304,215,145,163,66,404,121,875,62,477,493,412,103,196,938,131 +883,834,262,203,68,209,177,199,340,645,491,808,718,739,569,207,716,196,748,111 +933,706,635,561,941,575,414,736,244,795,398,517,834,61,111,348,737,207,482,253 +739,693,845,718,576,179,312,862,171,623,308,621,494,302,92,89,242,588,521,207 +182,644,924,828,826,698,319,591,745,712,121,235,63,365,787,523,75,96,213,311 +711,834,244,348,197,381,746,849,576,406,839,592,755,221,314,522,210,392,880,242 +127,627,826,786,620,339,880,344,916,344,542,209,919,584,443,210,884,826,994,640 +710,71,101,110,185,90,232,557,583,209,679,439,264,431,834,70,792,129,310,795 +101,758,596,311,208,398,831,644,452,557,492,197,522,825,323,386,197,527,599,534 +119,214,703,590,596,449,526,576,542,932,349,719,531,256,558,478,641,212,414,702 +710,314,578,300,172,527,383,938,531,639,479,984,572,107,791,536,791,850,120,634 +778,527,301,677,557,695,629,310,534,119,589,760,363,56,212,271,526,794,595,877 +944,229,883,317,94,267,845,692,599,58,408,886,573,926,645,317,658,171,691,236 +709,338,494,919,876,454,642,169,139,489,398,640,497,539,234,383,801,66,581,321 +492,538,230,841,258,108,937,3,787,111,740,341,936,597,304,841,93,513,739,478 +640,799,139,336,113,695,210,231,639,584,557,189,304,224,408,481,627,240,940,928 +480,134,348,708,583,531,403,145,561,940,949,287,337,185,760,394,134,589,531,128 +110,400,168,852,578,768,392,838,693,261,435,832,497,230,114,223,397,170,521,561 +386,595,743,300,643,686,357,527,761,209,477,578,497,354,218,858,644,754,693,802 +475,389,921,993,202,855,798,348,72,212,397,918,131,599,937,178,63,186,228,135 +792,721,568,481,475,883,500,533,398,529,631,195,354,202,502,307,119,581,658,573 +351,53,339,204,176,203,62,385,529,226,742,489,119,933,306,936,55,995,207,925 +169,755,718,68,567,800,625,786,756,412,101,64,99,62,629,542,155,513,696,447 +246,354,625,401,490,695,641,517,410,309,178,92,743,214,21,717,71,263,856,542 +107,214,403,573,392,708,132,261,305,708,436,399,63,68,95,384,266,449,868,879 +204,336,884,930,439,917,610,210,133,477,181,268,583,584,173,198,696,142,393,204 +203,268,219,96,189,201,533,832,139,559,274,408,71,66,221,699,113,406,429,194 +445,587,482,694,571,136,309,444,839,720,87,200,98,919,56,260,932,404,112,218 +57,360,877,300,389,835,343,112,172,527,51,575,586,231,862,929,727,246,177,231 +65,919,315,640,534,586,700,352,54,703,396,476,636,494,528,313,901,168,140,69 +581,862,859,827,114,850,359,640,236,257,95,243,705,357,851,556,271,211,320,90 +195,90,310,560,600,692,802,177,402,232,601,358,623,443,919,989,272,588,410,130 +589,200,550,787,757,915,124,269,405,364,502,133,928,415,571,568,413,797,453,581 +213,112,489,738,760,887,457,268,447,528,698,70,224,733,479,630,131,838,500,802 +206,596,130,445,523,204,115,104,641,443,678,57,309,696,341,452,801,608,939,790 +172,121,596,700,126,718,629,357,572,381,181,116,497,349,52,506,825,257,800,343 +145,144,559,143,863,757,880,850,144,398,929,132,23,625,191,930,271,920,355,362 +623,921,755,539,481,707,853,128,180,720,523,94,458,314,394,839,939,209,807,102 +918,927,573,83,209,404,212,437,96,406,827,834,526,934,717,114,597,691,494,264 +217,403,616,930,837,826,486,637,878,537,452,196,640,704,619,518,855,760,741,839 +59,626,110,413,182,506,178,54,213,601,886,66,705,754,521,501,386,855,622,145 +570,981,518,740,212,400,739,487,707,884,435,751,571,99,450,583,397,301,676,718 +400,122,844,703,509,578,137,528,577,520,115,342,480,880,674,183,300,129,573,336 +222,946,110,695,245,556,53,709,202,271,184,58,826,239,847,122,454,188,790,720 +570,95,574,197,494,349,299,116,849,915,777,850,119,591,390,137,51,456,91,192 +85,833,452,314,226,439,637,535,576,737,258,921,131,568,272,599,144,925,215,453 +193,521,996,486,751,208,676,916,178,210,752,108,184,237,499,343,74,673,69,443 +488,441,135,169,207,750,57,622,486,73,945,139,559,446,209,266,327,127,64,707 +567,450,542,203,830,711,796,715,213,225,62,385,829,631,752,128,914,690,634,304 +218,343,524,338,696,222,99,438,875,557,144,590,236,2,353,591,671,125,180,55 +496,457,838,753,575,451,854,930,862,97,131,115,87,577,596,575,391,397,676,525 +561,845,817,437,518,65,714,174,491,735,190,739,786,413,858,885,742,521,581,881 +485,749,711,523,123,881,50,100,391,856,561,798,792,712,741,452,520,517,456,911 +697,691,469,713,836,91,675,457,339,854,492,169,584,116,881,89,392,591,475,880 +237,457,688,454,495,204,170,69,827,102,361,263,107,138,884,755,308,73,575,827 +944,705,643,262,201,743,719,579,402,299,129,675,929,362,891,917,387,632,515,223 +917,52,99,123,937,100,104,751,523,224,67,115,186,750,211,123,976,788,705,735 +624,63,73,343,844,559,412,596,836,883,273,221,934,58,447,570,259,835,512,443 +683,947,735,145,845,568,790,128,117,273,122,124,597,90,352,60,182,673,401,114 +348,397,802,934,110,715,986,346,313,235,488,597,756,622,406,399,452,798,596,535 +844,301,884,70,516,855,257,401,535,754,266,624,736,528,578,229,91,791,462,918 +844,921,85,203,455,922,259,585,404,74,568,750,446,59,568,541,635,441,243,405 +232,703,873,245,884,304,946,105,632,825,265,880,274,217,717,119,362,311,300,626 +56,917,423,514,949,178,171,382,578,928,718,265,923,129,570,60,272,299,914,74 +585,918,497,752,489,620,559,105,181,694,479,912,501,201,400,640,61,933,343,365 +168,625,55,101,847,915,364,710,75,272,245,386,143,102,830,212,190,772,257,92 +720,59,408,534,233,513,338,582,692,413,491,986,70,571,100,759,170,177,188,355 +845,790,263,381,189,352,74,894,476,137,641,674,588,487,112,759,110,523,442,918 +268,990,640,851,520,347,169,524,210,219,143,715,60,701,708,596,673,235,214,536 +207,91,743,537,538,835,135,450,570,362,840,427,233,788,691,496,342,914,736,875 +672,393,351,272,936,701,349,872,485,246,793,924,762,264,790,533,704,382,355,597 +858,257,521,120,585,787,89,265,187,935,556,449,195,711,265,837,211,746,775,837 +310,455,447,415,351,586,626,387,403,700,389,211,645,178,192,931,981,393,205,383 +938,847,384,914,110,191,58,860,928,623,91,202,52,936,242,559,527,243,931,677 +885,92,396,630,231,719,212,643,936,5,145,524,784,359,189,192,93,220,101,72 +863,476,398,939,435,271,350,266,391,171,406,708,58,526,542,714,570,692,412,864 +894,316,124,878,497,557,591,643,125,114,915,452,356,94,383,793,518,411,743,590 +195,395,415,792,572,269,719,216,511,104,829,676,699,800,315,798,442,502,267,245 +447,721,105,983,714,885,516,796,598,580,740,745,625,301,204,207,791,735,361,53 +939,360,919,317,56,884,679,126,494,435,585,761,642,207,843,795,21,740,235,560 +798,485,185,752,410,135,481,924,709,257,52,365,401,144,212,483,526,568,737,512 +736,632,189,395,788,124,483,805,339,502,486,441,246,125,569,207,64,752,453,226 +271,303,392,918,519,387,836,883,677,396,301,937,177,491,129,314,18,224,384,796 +944,942,791,595,341,801,103,695,696,349,236,646,640,756,72,108,867,184,589,883 +237,185,582,561,267,932,139,630,585,696,632,853,55,852,934,679,710,169,154,92 +97,187,54,299,134,239,932,924,916,220,139,143,947,65,625,184,125,308,358,926 +525,72,17,926,936,833,703,497,743,587,138,313,493,230,206,576,101,446,863,587 +141,316,135,345,500,933,186,264,91,513,114,683,95,855,388,126,575,225,388,515 +790,118,235,228,51,399,913,56,922,933,748,784,593,624,675,785,117,362,834,677 +713,855,539,747,920,352,186,315,588,532,571,788,345,571,501,833,93,175,996,232 +497,99,347,188,539,856,508,928,264,449,363,398,68,385,592,585,317,760,452,90 +226,172,65,738,199,927,679,56,171,401,442,731,863,627,835,794,885,679,557,488 +762,144,847,975,877,341,542,454,784,717,842,487,173,214,227,139,861,741,388,495 +197,72,397,573,878,521,257,475,940,396,442,317,934,803,856,517,394,305,574,943 +305,263,985,537,882,829,930,593,741,314,118,191,317,698,835,914,534,861,485,338 +74,840,527,752,352,626,626,851,143,388,888,614,944,624,577,932,937,144,440,571 +948,755,488,72,914,644,478,887,919,317,607,675,847,134,845,700,579,497,178,922 +919,623,671,747,702,75,832,129,854,942,932,97,102,709,918,837,519,335,244,719 +52,619,197,230,557,833,888,609,619,358,451,593,170,835,790,234,353,168,839,216 +705,72,491,222,718,921,64,228,319,598,181,850,800,700,169,57,582,267,502,597 +697,95,542,301,601,173,443,344,833,878,681,832,518,260,673,411,218,520,646,789 +98,936,71,245,531,457,408,558,880,259,932,121,494,334,343,832,391,762,134,317 +64,860,236,480,863,577,569,574,220,925,508,356,400,444,918,180,400,674,358,941 +344,534,348,634,931,631,502,852,92,525,869,599,574,535,303,113,306,530,949,588 +141,415,251,539,50,643,721,582,130,299,480,483,791,243,516,491,111,838,532,392 +61,93,694,61,339,706,105,753,236,353,923,301,975,920,639,117,638,66,188,570 +862,921,828,219,243,68,537,97,923,840,198,534,788,486,222,234,138,4,122,646 +838,92,119,920,177,84,593,337,171,388,530,582,337,757,787,514,916,828,99,364 +713,590,565,559,948,931,631,181,883,573,629,55,735,502,401,172,344,939,303,361 +453,309,514,107,478,311,558,534,628,557,943,530,741,180,736,876,740,209,686,855 +349,177,645,91,191,344,162,501,246,96,210,883,116,481,365,537,638,389,582,271 +387,442,838,140,449,581,344,407,631,101,720,272,307,637,848,240,109,265,884,357 +208,362,585,387,948,205,946,248,833,127,533,315,65,457,693,231,825,561,712,517 +753,261,266,187,600,441,170,919,453,136,58,67,524,125,339,572,523,55,898,577 +703,585,66,312,485,979,523,214,831,244,405,245,303,853,679,136,96,193,262,599 +829,853,532,347,329,875,193,236,639,540,884,215,184,56,946,348,691,457,191,243 +483,382,313,830,217,193,766,127,135,835,190,835,739,396,715,172,857,526,95,702 +205,97,24,719,411,337,221,585,207,736,232,502,876,941,214,115,885,626,458,916 +863,935,182,673,885,273,440,641,302,671,311,193,413,682,69,636,303,440,530,394 +487,50,53,855,759,222,349,690,199,542,97,888,675,130,713,634,109,704,701,799 +483,227,345,328,697,945,173,342,274,672,944,299,576,485,66,359,169,100,272,201 +388,846,449,218,718,324,207,301,63,570,585,455,678,499,527,129,67,518,500,835 +570,213,94,531,582,520,748,114,530,576,736,792,878,602,105,60,825,794,382,569 +701,270,11,933,556,274,179,515,858,750,534,638,202,600,387,131,406,796,221,483 +240,641,483,89,561,363,516,839,234,801,710,540,833,437,637,761,493,184,699,844 +927,799,884,944,218,192,755,273,138,557,934,208,123,350,135,213,689,415,637,223 +506,169,623,358,484,486,924,624,496,710,578,926,588,916,596,60,310,360,595,525 +753,861,781,941,519,66,634,178,846,144,863,350,207,134,835,528,920,828,224,802 +826,264,404,92,404,524,356,884,860,838,315,442,591,145,360,884,592,516,720,3 +92,394,65,403,983,220,839,397,630,258,263,832,587,120,302,634,855,497,646,923 +759,55,112,849,270,502,190,915,699,515,383,91,947,894,625,95,260,212,830,109 +701,74,408,388,630,895,169,59,592,752,485,59,303,795,710,936,596,269,348,482 +484,338,672,224,858,144,751,833,303,744,975,181,488,175,875,94,199,302,440,587 +698,193,435,408,61,475,397,219,842,112,749,202,8,560,412,714,923,300,261,390 +919,231,450,876,531,700,573,103,206,875,305,760,761,446,920,384,80,346,744,572 +409,133,876,195,485,857,863,64,840,227,659,675,301,169,801,641,263,928,181,838 +219,540,410,347,712,70,880,841,479,636,581,159,594,716,205,305,454,302,699,169 +527,720,944,944,847,784,170,699,120,123,500,359,445,863,773,178,479,521,439,363 +519,129,229,259,439,184,398,484,922,942,856,629,412,339,862,126,503,692,520,691 +210,936,579,785,542,62,935,571,757,600,340,537,721,106,236,7,709,52,917,55 +637,458,354,856,698,439,677,767,499,884,936,926,523,456,214,747,453,582,491,443 +739,273,230,346,83,202,204,120,640,108,523,173,174,405,557,675,790,748,489,407 +446,258,348,246,447,884,866,880,920,560,884,116,946,91,594,89,69,452,559,405 +132,921,145,231,60,702,209,346,458,519,749,948,206,100,849,711,70,125,488,680 +852,219,99,199,923,936,855,272,646,233,599,388,777,310,569,490,123,312,738,355 +840,91,578,483,400,65,350,310,496,929,441,208,835,863,103,111,740,929,717,84 +261,91,747,393,855,128,718,732,523,938,299,339,715,182,227,56,67,720,205,51 +712,339,841,111,574,435,842,168,168,646,263,496,229,395,561,490,350,586,241,396 +719,757,652,879,225,706,218,795,212,70,71,263,745,447,246,834,170,626,594,187 +514,532,744,401,533,308,62,861,128,497,540,415,515,100,793,858,14,397,876,933 +630,751,733,517,353,791,501,299,56,633,945,231,703,192,586,89,258,536,169,181 +114,198,71,877,931,258,623,707,983,122,344,186,143,53,691,390,176,716,180,171 +705,313,175,51,233,455,190,262,385,51,928,228,393,699,883,442,789,510,524,601 +637,623,119,263,758,593,514,575,825,514,455,248,205,517,716,679,931,382,740,499 +311,179,337,96,128,839,519,66,642,125,236,714,845,102,190,200,708,157,760,177 +615,458,141,631,938,519,476,475,601,847,714,126,541,216,671,484,743,478,274,208 +186,436,391,673,583,639,669,541,929,923,398,229,751,753,383,798,789,533,441,361 +264,924,910,530,446,387,920,180,187,313,499,524,587,452,105,516,516,346,556,853 +98,947,363,120,589,948,846,215,475,485,523,864,934,709,524,486,886,705,354,71 +639,542,619,437,409,243,196,535,700,595,354,240,258,884,352,532,946,123,709,756 +181,799,435,216,452,852,300,528,832,404,882,555,862,672,342,215,74,235,715,888 +798,595,642,695,490,701,949,89,441,542,533,101,737,671,217,774,90,593,877,854 +100,698,886,442,720,177,338,448,76,392,55,698,587,386,742,845,477,315,269,341 +299,359,481,518,839,830,301,336,336,172,173,88,756,311,576,569,834,359,860,692 +717,520,860,627,706,218,559,713,234,859,944,563,211,536,826,357,55,640,695,136 +337,270,90,878,759,57,573,941,301,337,533,451,884,70,494,596,196,357,856,609 +63,946,696,779,536,704,514,914,53,583,715,96,198,882,748,227,487,693,586,348 +574,187,498,93,175,832,248,357,837,539,835,539,794,348,304,522,833,948,439,338 +712,676,198,693,317,484,90,242,832,717,888,848,485,356,199,692,787,452,675,454 +65,621,622,407,918,492,681,337,528,217,707,929,537,315,477,525,537,145,757,862 +879,90,311,402,352,227,237,260,913,704,114,397,708,403,363,636,826,485,383,183 +189,493,389,929,344,857,211,708,775,567,456,224,72,525,402,311,358,755,170,116 +482,475,535,216,717,533,995,926,128,260,885,748,212,265,596,439,576,887,834,187 +542,116,483,715,169,132,760,653,306,540,847,516,235,389,529,831,386,388,636,313 +273,499,454,626,627,693,845,638,191,405,239,174,198,177,636,236,123,879,702,136 +437,498,789,317,737,442,65,490,482,336,15,270,437,938,757,934,843,513,845,561 +58,447,137,170,643,439,384,691,701,92,204,647,827,246,266,691,258,201,192,558 +742,357,344,758,524,800,625,329,398,691,115,587,943,100,305,89,519,134,305,694 +561,918,199,175,929,202,674,742,136,57,391,128,497,995,233,394,306,435,221,200 +720,269,919,8,221,230,559,382,759,412,184,644,347,588,538,572,757,71,262,135 +324,182,260,832,786,246,855,559,445,262,487,571,860,625,355,917,145,450,396,235 +709,260,392,537,262,174,491,595,926,133,793,413,840,223,394,385,532,213,587,730 +787,390,401,832,198,360,107,456,573,797,675,478,800,86,487,630,945,747,219,931 +761,92,825,692,642,176,262,544,310,875,737,348,625,64,916,310,437,224,753,258 +762,848,300,583,933,442,242,883,476,386,674,401,888,74,259,107,935,119,350,700 +194,169,495,644,497,107,386,676,786,273,736,89,885,941,444,307,751,483,454,661 +301,862,125,261,527,571,999,922,355,218,834,523,193,188,517,105,945,206,839,522 +348,742,641,735,259,948,228,438,879,584,219,518,114,235,96,331,74,855,183,701 +704,882,510,678,243,859,515,925,623,448,848,202,846,587,121,310,436,691,236,697 +845,453,939,349,884,940,0,621,933,188,73,204,440,918,207,671,629,735,487,627 +879,694,125,501,580,274,451,885,834,397,146,104,185,173,528,717,590,412,350,936 +944,91,450,631,262,501,196,401,199,946,105,236,634,765,66,385,582,437,262,581 +924,594,156,702,128,858,133,695,140,486,399,534,115,627,748,560,518,700,883,206 diff --git a/input17 b/input17 new file mode 100644 index 0000000..f924db6 --- /dev/null +++ b/input17 @@ -0,0 +1,8 @@ +#.#..### +.#....## +.###...# +..####.. +....###. +##.#.#.# +..#..##. +#.....## diff --git a/input18 b/input18 new file mode 100644 index 0000000..3be1f46 --- /dev/null +++ b/input18 @@ -0,0 +1,372 @@ +(2 + 6) * 2 + 2 + 4 +6 * 2 * 6 + (8 + 8 * (5 + 4 * 7 + 6 + 6 + 3)) * 8 +2 * 7 * 3 * 6 + 2 +(2 * 4 + 2 + 8) * 4 + 7 + 6 * 7 +7 * ((7 + 4) + 7 * (3 + 4 * 8 + 7 * 8) * 2 * (4 + 3 + 9 * 5)) + (9 * 6) + 8 +7 + 3 * (9 * (3 * 7 + 8 * 4) + (4 * 5 + 7)) * 9 +9 + 9 + 3 + 7 * 3 +(4 + 9) + 8 + 4 * 9 * (6 + 4 * 4 * 3 + 9 + 4) +5 * (6 * 4 * (8 * 4 * 4 * 9) + 6) * 7 + (8 + 3 + (8 * 3 * 6) * 5 * 5) +6 * 6 * (6 + 6 + 6 * (8 * 4 * 2 + 8 * 6) + 4) + 3 +5 * 4 + 3 + (2 + 6) * 8 * 4 +(8 + (3 * 7 * 4 + 4) * 2) + (8 * 8 * 4 + 6 * (8 + 9 + 7 + 9 + 5 + 3) * 4) * 5 * 4 * 3 +9 * 7 + 6 * 9 + (3 * (7 * 5 * 6 * 3 + 3 * 8)) * 7 +5 * 8 * 7 * 9 + 5 + (9 * (4 + 4 * 2 + 9 * 7) * 3) +(6 * 3 + 9 + (2 * 4 + 4 * 3) + 3) + (9 + (5 + 4) + 8) + 6 * 9 +6 * (8 * (2 + 3 * 6 + 6 + 9) + (7 + 6 + 2) * 9 * 9) +(7 * (8 + 3 * 8 + 5 + 2 + 2) * (9 * 9 * 3 + 4 + 5) + 5 + 6 + 8) * 5 * (5 + (6 + 3 + 4 * 3 + 6) * 3) * 8 * 3 +9 * 8 +7 + ((6 * 7 + 5 + 8) * (5 * 9 + 9)) +3 * 8 + 7 + 7 + (3 * 5 + (9 + 3)) +(2 + (5 * 2 + 5 + 8) * 8 * (7 * 7) + (7 + 4 * 2 * 6 * 8 * 2) + (9 * 3)) + (2 * 2 * 6 * 6) + 5 * (5 + 5 + 6 + (6 * 3 + 8)) * 7 +7 * (7 + 7 * 8 + (9 + 9) + (5 + 5 * 8)) + 4 +8 + ((5 * 4 + 5 * 9) * 2 * (9 * 6 + 9 + 3) * 5) * 2 * (5 * 6 + (2 * 2 + 2 * 5 + 3 * 7) + 7 + 8) +(8 + 9 * 6 * 6 + 4 * 6) * 9 * 4 * (9 * 7 + 2 + 5 * 3 + (2 * 3 + 8 + 5 * 7 * 8)) + 2 * 9 +(4 * 9 * 9) * (2 * 9 * 2) * 3 + 6 * (2 + 6 * 4 * 7 + 8 + (6 * 7 + 6 + 4)) + 6 +(5 + 2 * (7 * 2 + 6 * 8 + 4 * 5) * 2 + 8) + 8 +3 * 6 * 8 + 2 + ((3 + 7 + 4 + 2) + 9 * (2 + 5 * 4 + 4 + 6) + (7 + 8 + 3 * 4 * 2)) * 9 +(2 + 7 * 7) * (7 * 8 * 9) * ((5 * 4 + 5 + 2 + 6 + 7) * 7) +(6 + 2 + (9 * 2 + 2) * 7 * 7) * 2 +7 + ((8 * 3 + 3 * 2 * 6 * 5) + 7) * 8 + 4 + (6 + 5 + (2 * 2 + 5 * 3) + 5 * (5 * 6 + 4 + 7 * 3)) + 8 +7 * 7 * 8 +7 + 7 * 4 + ((6 + 9 + 5) + 3 * 5 * 7 + 7) +2 * 3 + (8 + 5 * 3 + 8 + 7 * 2) + (2 * (5 + 2 + 5 * 6 * 2 * 7) + (6 + 8 + 7 * 5)) + 9 * 4 +5 * 5 + 6 * 6 + 7 * (5 * (2 + 6 + 6) * (5 * 9 + 8) + 7 * (9 * 5 * 8 + 2 * 4)) +((7 * 6) + 8 * 9 + 8 + 9) * 8 + 7 +4 + 5 + (8 * 7 + 8) + (3 + (2 * 2) * 9 + (7 + 7 * 9 + 8)) +(7 * (4 * 5 * 9 + 4 + 8 * 7) + (8 * 7 + 9 + 9)) + 2 +9 * 4 * (2 * (6 * 9) + 3) +((7 + 4 * 6 + 4 + 6 * 4) * 6 + 3) * 2 * 2 + 5 * 7 +((6 * 5 * 9 + 7 + 9 + 4) + (7 + 2 + 7 * 3) * 9 + 9 + (7 + 7 * 9 * 5 * 3 + 6)) + 7 +4 * ((6 + 2 * 9 + 6 + 3 * 3) * (6 * 8 * 7 + 5 * 4)) + 8 * 8 + 7 +(5 * 3) + 3 + 4 * (5 + 8 + 2) +6 + 3 + 5 + 4 + 4 * 4 +2 * (3 + (8 * 9 * 3 * 3 + 8) + (9 + 7) * 7 * 2) + (5 + 4 * 7 * 2 * 3 * 6) + 7 * (7 * 4) * (4 * 5 + 6 + (6 * 3) + 6 * 5) +3 + 7 + 8 * 3 + (3 * 2 * 4) * 9 +9 + (2 + 2 * 6 + (9 * 9 + 6 + 8 + 5) + 4) + 2 * ((7 + 2 + 6 + 7 + 3 + 4) + 2 + 8 * 3 * 3) + 9 +3 + ((6 + 5 + 6 + 7 + 9 * 4) * 9 * (2 * 6 * 6) * 6 + (9 * 9 + 8 * 9) * 2) * 6 + 3 +(2 + 8) * 7 * 3 + 9 * (7 + 6 * 7 * 4) +(5 + 2 + 2 * (3 + 5 + 5 * 9 + 2) + 5 * (9 + 8 + 2 + 2 * 4)) + 6 + 6 * 3 +3 * 5 + 6 * (8 * 3 * (7 + 8 + 6 + 4 + 9) * 7) * 7 +2 * 9 * 8 * (6 + 5 + (3 * 9 + 6) + 3 * 4 * 4) + 2 +3 + 8 * (4 + (3 * 5 + 6 * 2 * 7) * 2 * 2 + 2 * 5) + 2 +((6 + 9) + 3 * 3) + 9 + 3 * (8 * 2 * 6 * 5) + 2 +7 + 5 + (7 + (2 * 3 * 4) + 2 * (5 + 8 * 2 + 4 * 4 + 7)) +2 + (4 * 9 + 7 + 8 * 4 + 4) * 9 + 5 * 5 * 8 +5 + 5 * (3 * (2 + 5 * 3 + 7 + 5 + 3) + 6 * 9 * 7 + 6) + (7 * 8 * (9 * 9 * 9) * 2 * 9 + 2) +9 + (9 + (8 * 7 * 7 + 6) + 9 + 6 + 4) + 9 + 5 * 2 +4 + (6 * 9 + (8 * 7 + 8 * 6) + (6 + 8)) + 2 + (4 * 3 + 6) +8 + 5 + 3 * (9 + 7 + 2 + 7 * 4) * 6 +(3 * (9 + 9) + 7) + (6 * 8) * ((7 + 7 + 4 + 5 + 6 + 6) + 8 * 7) * 8 + (2 + 7 + 4 + 5 + 9) +(5 * (8 + 9 * 2) * (3 + 5 * 7 + 9) * 6 + (8 + 3 + 5) * (9 * 9)) + 6 * 5 + 6 +((6 + 5 * 9 + 3 * 6) + (3 + 4 + 8) * (5 * 4 + 4 + 6) * 2 + 9) + 6 * 5 * 4 * 4 * 5 +5 + (7 * 9 + 9 + (9 * 4 + 5 * 9 + 5) + 5) * 7 +5 + (3 * 3 + 6 * 9 * 5 * (7 + 5 + 2)) + (8 * (4 * 2)) + 9 * (7 * 6 + 8 + 5 + 9 + 6) + ((6 + 2 + 5) + (4 + 3 + 3 + 2 * 3 + 4) * 3 * 9 * 3) +7 * (2 + 2 + 6 + 7 * 7) * 2 * 7 + (8 * 7) + 5 +2 + (7 * 6 + (4 * 2 * 9 + 3) + (2 + 5)) + 8 * (2 * 2 * (8 * 3 * 3 * 6 + 2) + 7) * (8 + (7 + 4 * 6 + 5 * 9) + 4) +((6 * 3 * 6 + 3) * (3 + 4 + 9 * 6 + 6) + 4 + 2 * (9 * 9 + 4) * 3) + 4 + 6 +8 + ((5 + 7 * 5 * 8 + 9) + 4 + 8 * 4 * 5) + ((3 + 4) + 3 * 7 + 9) + (6 + 2 * 9 + 5) + 9 +(9 + (8 * 5 * 7 * 4 * 2 * 7) + 8) + 8 * 7 +9 * (4 * 7) + 8 +3 * 6 * (5 + (5 * 5 + 6) + 2 * 5 + (8 + 2 * 4 + 9 + 4)) + 8 + 7 +((6 + 8 * 2) * 2 + (4 + 2 + 5 + 9) + 9) + 2 * (8 * (2 + 9 + 5 + 4)) + 9 + 4 * 2 +4 * 5 * 4 * (3 * 4 + 4 * (5 + 3 + 8 * 2 * 7 * 5) * (6 * 4 * 8 + 5 * 9 * 8) * 9) + 7 + 2 +8 * 6 * 9 + 3 + (6 * 7 * (6 * 7 + 6 * 6) + (9 + 3) * (7 * 7 + 9)) +3 * (9 + 7 + (5 * 9 + 4)) +5 * (2 * (5 + 4 * 2 * 6) * 4 + (5 + 3)) +7 * ((3 + 8 + 8 + 2 * 2) * 5 * 6) * (7 * 2 + (6 * 4 * 9 * 5 * 9)) * 7 +(5 * 5 + (3 + 3 * 8 * 4) + 8 * 4) * (5 * 9 + 4) * 9 * 7 + 5 * ((2 + 7) * 9 + 5 * 4 + 3) +9 * 4 + ((3 + 9 * 3 * 2 + 9) + 4 + 6 * 2) +2 * (6 + 6 + (7 + 6) * 2 * 2 + 4) + ((2 + 3 + 5) * (2 + 9 * 9 + 7) * 4 * (2 + 4 + 6 * 3 * 9 * 3)) + 3 * 4 +(8 * 7 + 6 * 6 * 7 + 9) * 8 +9 + 8 * ((2 * 9 + 9 + 5 * 2 + 5) + (8 * 3 + 7 * 5 + 7) + 9 + 2 + 8) * 8 * (5 + 4 + 8 + 4 * 6) * 8 +6 + 6 * 2 + (6 * 9 * 5 + 6) * 3 + (5 * 4 + 8 * 6 + 9) +5 * 6 + 7 + (7 * 4 * 4 * 8 * 8) +(6 + 5 * 3 + 3) * ((9 + 7 + 6) * 4 * 6 * 6 + 4) +5 * (2 + 7 + 5 + 2) + 6 * 5 +7 + 5 + ((7 * 3) + 5 + 9 * 8) * (3 + 2 * 7 + 7 * 5 * 8) * 7 +3 * 9 + (5 + 8 * (6 + 8 * 6) * 4 + 3 * 4) * (2 + 6 * 5 * 3) * 8 * 7 +9 + 8 + 2 +(3 + 4 + 6 + (5 * 6 * 8 + 4 + 5 + 7) + 6) * 9 +4 * 3 + 9 + 3 * (5 * 4 + (7 + 4 * 2 + 8 + 2 + 6)) +7 * (2 * 6 + (3 * 5 * 7 + 4 + 6)) * 5 + 9 * 4 + 6 +((7 + 4 * 5) + (5 + 5 * 5 + 7 * 6 * 9) * (9 * 3 + 9 * 3) * (6 * 6 * 2 + 5 * 7) * 3) + 6 * 4 +((9 * 7) * 8 + 4 * 8 + 5 + 5) + ((2 + 4 * 3 + 4) * 9 + 2 * 5) + 6 + (4 * 6 + 2 * 9) +(4 * 3 * 3 * (9 + 9 + 9 + 3 + 6 + 9)) + 9 +((6 + 2) + 9 * 4) * (2 * 7 + 5) +2 + (4 * 8 * 8 + 8 * 9 * 9) +((2 + 6 * 4 * 8 + 5) + 2 + 7) * 9 * ((3 * 8 * 7) + 3 * 9) +((4 + 9 * 5 + 7 + 8 * 8) * 6 + 6 + (5 + 8) + 4) * 8 * (5 + 4 + (5 * 3) * 5 * 6 * 4) + 8 + (2 + 9 * 7 * (5 * 8 + 4 + 2 * 8 + 5)) +5 + (8 * 6 + (2 + 5 + 9 * 8 + 9) * (9 * 2 * 4 + 6 * 5 + 2) * (3 * 8 * 7) + 9) +2 + 8 + 7 + 6 * (3 + 4 + (6 + 7 * 2 + 9) * 7) * 7 +7 * 8 + 7 + 4 * (5 + 6) * 3 +7 + 5 +(2 + (6 * 3 * 3) + 2) * 5 + 7 + 8 * 6 +(6 + 6) * 3 + (2 * 4 + 3 + (3 + 9) * 9) +(5 * 4 + 3 * 8 * 9 + 4) + 5 + (6 + 9 + 3) + (9 + 8 * 3) +5 + 4 * (6 + 5) + (3 + 9 + 4) +4 * 5 + 5 + 7 * 5 + (6 + (4 * 6 * 8 + 7 * 4 * 6) * 9 + 2 + 3) +7 * 9 + 6 * (8 * (8 + 6 * 4) * 4) * (7 * 2) + 6 +(3 + 5 * 9 * 8 * 4 + 2) * 3 * 6 * 3 +3 + 8 * 3 + (3 + 3) * 3 +2 * 8 * 8 * (2 * 7 * 9 * 4) +(5 + 7 + 9 + 7 + 4) + (5 * 9) * 3 +8 * 9 * 5 * 4 * 3 + ((6 + 9 * 5 * 7 * 2) + 5 * 4) +(7 + 3 * (8 + 2 * 3 * 9 + 2 + 9) * 6 * 9 * 2) * (4 * 4) * (2 * (4 * 8 * 5) + 3) * 2 + 4 * 9 +7 + 8 * 6 * (9 + (4 + 8 * 5) * 2 * 3 * 7) + 6 + 8 +(7 + 7 + 7 * 9) * 2 * 4 + 5 + 5 * 6 +(2 * (3 * 8)) + (5 + 4 * 4 * 3) +(5 * 7 * (5 * 7 * 9 + 3 * 3) + 7) + 3 +9 + 9 + 8 + 8 * ((3 + 3 * 6 + 4 * 4) + 2 * 3) + 6 +(2 + (2 * 2) + 9 + 7) + (5 + (8 + 4) * 3 * 3) + 4 * 5 + 4 + 3 +6 + (5 * 3 * 7) * 6 + ((5 + 6 * 4 + 3 * 5 * 9) * 4 + 8 + 2) + (8 * 6 + 5 + 2 * 2) +9 * (5 + 7 + 9 + 9) + 7 * 3 + 4 +(6 * 8 + 5 + 8) * 2 + 2 * (4 * 2 + 8 + 5) + 7 + ((5 * 5 * 3 + 6 * 5 * 8) + 6 * 3 + 2 * 7) +(3 + (6 + 4 * 6 * 7 * 4) + 5 + 2 * 6) + 5 + 6 + 3 +6 + (8 + 9 + 5 * 5 + 5 * 2) * 6 * 8 +(5 + 2 + 2 * 3 * (4 * 2)) + 8 * 5 + 6 + 3 +7 * (8 * 3) + (7 + 5) + 2 + 8 +5 * 4 + 8 * ((9 * 9 * 3 + 3 + 9 * 8) + 2 + 5 + (7 + 3)) * (3 + (7 * 3 * 6 * 5) * 8 * (6 * 6 + 2 + 9 + 5) * 2 + 5) + (2 + 4 + 5 * 8 * 7 * 6) +5 + (8 * 6 + (7 * 2 + 9 + 6) * 8 * 2) + 3 * (9 * (5 * 2 * 3) * 5) +(2 * 8 + 4 * (7 * 8 + 2 + 5 + 3) * 4 * 3) + (7 + 5) + 9 * 9 * 2 +((3 + 7 + 9) + (8 + 8) + 6 + 4) + 4 + 8 + 7 * (4 * 3 * 6 + 7 + 8 * 2) +9 * (4 * 3 * 8 + 8) * 3 + (4 * 8 + 6) +7 * ((4 * 3) * 6 + 6) + 5 * 3 * 3 + 9 +4 * (5 * 4 * 3 * (2 + 5 + 6 + 2 * 2 + 6) * (5 * 6 * 2 * 7 * 7) * 6) * 2 +7 * 7 + (8 + (7 * 6 + 7) + 2 + (4 + 5 + 6 + 4) + 2 + 9) + 3 + 3 +8 + ((4 * 6 + 2 + 7 + 9 + 5) * 3) +3 * 7 +(5 * 7 * 4 + (7 * 6) * 9 + 4) + 5 +(2 * 5 * 9 * 6 * 5 + 7) + (3 + (3 * 6 * 7 + 5 + 2) + 4 + 5) * 6 +9 + ((8 + 9) * 5) + (3 * (7 * 7) * (7 + 8)) * ((8 + 3 * 5 * 8) * 9 * 9 * (6 * 8) + 7) + 8 * 3 +7 + (7 + 9 + 9 + 3 + (8 * 2 * 9 * 6 * 7 * 4) * 6) * 7 + 9 +(9 * 5) + 3 * (2 + 6 * 4 * 6 + 4) + (2 + 5 * 3 + (3 * 7 + 6 + 8)) + 6 +(8 * 2 + 8 * 6 * (4 + 3 + 2 * 3 * 4)) + (7 * 4) +(2 + 3) + 7 +3 + 3 * 8 + 9 + (9 + (6 * 5 + 7 + 6 + 9 * 6) * 8) + 5 +2 + (6 + 8) * 3 * 3 + 2 + 3 +5 * ((4 + 8) + 2 + 7) +(3 * 8 * 9 + (9 * 3 + 8 + 2) + 2 * 5) + 7 +4 + 9 * 3 * (4 + 2 + 4) +5 * 6 * (6 + (7 * 2 * 4 * 5 * 4) + 6 + 5 + (6 + 9 + 7 + 8 * 3) + 3) + 2 * 2 + ((6 + 5 * 9 * 8 * 3 + 4) * 4) +6 + 8 * 9 + 6 + (5 * 9 + 9 + 7) +(6 * 6 + (8 + 5 * 5 * 9) * 9) + 2 * 4 + (9 * 4) * 8 * 7 +((5 * 3 * 8 + 6) + (2 * 8 * 4 * 6) + (6 + 8 + 5 + 4 * 5)) * 7 +9 * ((4 * 4 * 6 + 3 * 2) + 3 * 6) + 5 + 7 + 7 + 3 +6 * 3 * 6 * 9 +6 * 7 + 9 +3 * (6 * 8 + 3 + 7 + 8) * (3 + (3 + 2 * 3) * 6 * 8) * 8 * 8 +3 * (9 + 6 + 7 + 9) +6 * (5 + 6) * 5 + (8 + 5) * 3 * 7 +6 + 2 * ((7 * 2) * (7 * 9 + 8 + 2 * 3 + 5) + 6 + 3) +5 * 3 * 2 + 7 + (6 * (3 + 3 + 3) * 5 + 6) +5 * (2 + 7 * 7) * 3 + 3 * 9 +7 + 4 * 9 * ((8 * 5) * 8 * 4 * 4 * 4) +(5 + 4 + 9 * 9) * (4 * 3 + 2) + 2 * 9 * 7 +8 + (6 * 3 * 8 * 7 + 8) * 2 + 5 * 5 + 3 +4 + 8 * 8 + (4 + (8 * 5 * 6 * 2)) +((3 + 2) * 4 + (7 * 5) + (8 + 5) * (5 + 6 + 5 * 7 + 9)) + 4 + 6 +(6 + 2) + (8 * 4 + 3 * 4 * 7) + 5 * 2 * ((4 + 9 * 6 + 8 * 8) + 6 * 9 + 2) +7 * 9 * 9 + (6 * (3 * 8 + 3) + 6 + 5 * (4 * 9 * 7 * 9 + 4 + 3)) + 9 * 5 +5 * 9 * 3 * 9 +(6 + (7 * 8 + 4 + 9 * 7) + 8) + 6 * (2 + 7 * (6 * 3 * 9 + 2 * 3)) + 7 * 5 +9 + (5 * 4) * 6 * (8 * 8) +2 + (8 + 8 * (9 * 6 * 6 * 8) * 2 * 5) + 9 * 9 + 8 +((9 + 3 + 9 * 3) + 9) * 9 +6 * 7 + (2 + 5 * (6 + 6 * 4 * 5) * 3 * 7 * 5) +6 + (5 + (2 * 4 * 2 + 7) * (3 * 7 * 9 * 5 * 4 + 7)) + 6 +2 * (9 + 7 + (5 * 4) + 3 + 9) +8 * 9 * (6 * 6 * 9 * 5 * 5 * 9) * 4 +(7 * 2 + 4 + 2) + 9 + ((9 * 7 + 4) + 6 * 5) * (5 * 8 + 8 + 2 + 2) * 3 +7 * (8 * (6 + 7) * (7 * 9 * 2) + 2 + (8 * 6 + 9 * 5 * 3 + 8) * 2) +((8 + 7) * 9 * 5 * (3 * 2)) + 4 +7 * 7 + 3 + 8 * (3 * (7 + 8 + 9) + 8 + 3 * 3 + 8) +(4 + 5 * 7 * 3) + (2 * 4) +9 * (3 * 7 * 6) * (5 + 8 + 3 * 2 + 5) * 2 +7 * (6 * (8 + 5 * 9 * 3 + 8 * 4) * 9 + (8 + 9 + 5)) * (8 * 6) * (7 * 3 * 8 * 9) + 9 +8 + 6 * 5 * 6 + 3 +2 * 7 * 9 + 6 +(2 * 8 + 2) + 4 + 8 + 9 + 7 * 4 +(7 + 3 * 8 + 4) + (4 + 8 * 6) * 8 * ((6 + 5 + 2 * 6) + 3) * 2 +((4 + 2 + 8 + 9) + 3 * 8 + (2 + 5 + 8 + 3 * 6)) + (8 + 7 * 9 + 6 + 9) + 9 + 5 +(6 + 7 + 9 * 8) * 4 +(2 + 7 * 7 + 8) * (7 * 2) + 9 +(8 * 5 + 3 + 5 + 8) * 5 * (2 + 9 + 4 * 8 + 8) * (3 * 6 * 6 * (4 * 4 + 5)) * 6 +5 + ((3 * 5 * 7 * 3) + (5 * 2 * 8 + 6 * 9)) + 4 + (2 * (9 * 9 + 5)) +4 + 3 * 2 + 2 + 8 + 4 +(8 + 2 * 8 + 5 + 5 + 9) + 4 + 5 * 9 + 6 +5 + 9 + 7 + 6 + 6 + (4 * 3 * 7 + 5) +9 + 3 + 4 * (2 * 6 + 8 * 3) * (4 + 6 * 7 * 3 + 6) * 4 +8 + 9 + 2 + (9 + 9 * 3 + 4) * (3 * 8 + 9 + 3 * (3 * 2)) * (3 * (3 + 9 + 4 + 2 * 4 * 6) + 6 * 8 * 9) +6 * (7 * 8 * 8 + 5 * (2 + 6 + 9 + 4 * 9)) +9 * (7 + 5 + 9) + (5 * (7 + 7 + 5 * 3 * 7 * 4) * (6 * 9) + 4 * (6 + 4 + 6 * 7 * 9)) * 4 + 6 + 6 +(4 + (7 * 7) * 2 + 4 * 3) + 8 + (3 * 9 * 8 + (5 * 6 * 2) * (7 * 6) * (5 + 4 + 2)) * 9 +((2 * 6) * 7 * (4 + 7 + 9 + 3) * 6 + 6) + 4 * 8 + 6 * 8 +(6 * 2) * (4 * 5 * (9 + 9) + 7) * 6 +7 * 2 * 4 + 4 + 5 + (9 + 3 + 7 * 8 + 5) +8 * (9 + 7) + 5 + 9 * (4 + 5) +8 + 7 * (5 + (6 + 6 + 3 + 5 * 8 * 7) + 3) * (8 + 5 * 4 + 9 * 2) * 2 + 7 +3 + (5 * 2) + 5 * 4 + (5 * 5 + (9 * 2 + 8 * 8) * 6 * 8 + 4) + 6 +8 + 9 * ((2 * 8 * 9) * 3 + 9) +6 * (5 + 5) * 5 * 4 * 3 +(6 + 2 + 3 * 5 + 6) + 8 + 9 * (3 + (9 + 5 + 4 + 9 + 4)) * 2 + (3 * 5 * 2 + 2 * 2 + 3) +(8 + (5 + 4 + 9) + 8) + (9 + 5 * 2 + 7 * 8 * 7) * 6 + 9 * (2 + 7 * 6) +2 + 6 * 5 * (6 * 6 * 7 + 4 + 4 + (7 + 6 * 2 * 5)) + (2 + 5 * 8 + 4) * (5 + (2 * 2) + 9 * 2 * 6) +(8 + (9 + 8 * 5 * 3 * 8) * 7 + 4 + 7 + (7 + 3 + 9 * 7 + 3)) + (4 * 6 * (9 + 9 * 4 + 5) * 6) * (5 * 8 * (5 * 7 + 4 + 7 * 5)) + 9 * 6 +2 * 4 * 3 * 6 * (8 * 9 * (5 * 8 * 6)) * 7 +4 + (4 * (7 * 6 + 2 * 8 + 2)) * 7 +(4 + 8 * 8 * (3 + 8 * 7) * 3 + 8) * 7 +8 + 5 + (7 * 3 + 5 * 4) * 6 + 9 +7 + (5 + (3 * 6 * 8 * 9) * 6 + 7 + (4 * 5 + 8 + 4 + 7 + 5)) + 3 + 6 +(9 * 6 + 2 + 6 + 6) * (8 + 7 * 3) + ((4 * 4 + 3 + 6 * 9 + 5) + 4 * 3 + 5) * 3 * 6 + 4 +8 * 3 * 2 * ((4 * 4 + 5 * 4) + 9 * 6 + 5 * (7 * 7)) * 2 + 7 +8 * 7 * (6 + 6) + (3 * (4 + 8) + 4 * (2 * 4 * 5 + 9 + 7 + 9) + 6) + 4 +4 + (5 + 6 + 4 * 8 + 7 + 9) + ((5 + 7 * 5 * 5) + 4) * 4 * 2 +5 + 9 + 4 + ((4 + 4 * 5 * 2 * 5 * 5) + 5 * 5 * (5 * 3 * 8 + 6 + 4) * 8) +7 * 2 + 4 * ((9 + 9 + 9 + 4 + 6 + 5) + 7 + (5 * 5 + 6 * 8 + 8) * (5 + 6 + 7 * 6 * 4 * 6) * 9 + (3 * 6 + 7 * 4)) + 9 +(4 + 9 + 5) + (7 * 2 * 7 * 5 + 5) * 8 * 6 * 2 +(4 + (3 * 9 * 5) + 8 + 7) * 9 + (3 * 8 + (5 + 7) + 8 * 3) +(4 + 9 * 8 * 2 + 3 + (7 * 3)) + 6 +8 + 4 + 5 * 2 * (2 * 9 * (4 + 5) * 3 * (7 + 3 + 6 * 5 * 6 + 2)) +8 * 5 + 8 + 8 + (4 * 6) +4 + 2 * 9 + (3 + 8 * (7 * 2 + 5 + 4 * 8 * 5)) * ((5 + 6 * 7 * 4) * 7 * 8) +3 + 4 + 3 * 4 + 6 +(5 * 5 + 2 * (7 + 5 + 4 * 7 + 8 + 6)) * ((5 + 5 + 3 * 4 * 5) * 2 + 2 + 4 + 4 * 5) * 9 + 6 +(3 * 9 + (5 * 6 + 5) + 4) + 2 +(7 + 6 * 8 + 7 + (8 + 5 * 4 * 6)) * 2 + 4 +5 * ((4 * 9 + 9 + 5 * 6 * 4) + 4) + (4 * (3 + 4)) +5 * (4 + 2 + 2 + 9 * 8 * (4 + 7)) + 9 + 7 +8 * (5 + (5 + 8 + 5) + 2) * (9 * 4 * 5 * 7) +(4 * (2 + 8 + 7 + 9 + 6 * 7)) * 5 * 8 * 6 * 2 +(2 * 4 * (2 * 5) + (9 + 2 + 4 + 6) + 4) + (2 * 3 + (7 + 9 + 7 + 2) * 7) + 5 + 9 + 2 +2 * (8 + 3 + 9) +4 * 3 * 7 + 4 + (7 + 8 + 2 + 7 * 8) +3 + 3 + (8 * 7) +6 + 7 * 3 + 6 * 2 + 4 +(9 * 3 * 5 * 9 * 3) * 6 * ((2 * 5 + 2) * 5) * 8 +(2 * 6) * 2 * (8 + 5 * (2 + 4 * 6 * 6 + 2 + 4) * (9 * 5 * 8) + (8 + 7 + 6 + 6) + 5) + 6 + (5 * 3 * 3 * 7 * (6 * 2) + (9 + 4 * 7 * 2 + 5 * 6)) +(2 * 5 + 4) * 6 + 8 +5 * 4 + (9 * 6 * 3 + 7 * 6) + (9 * 2 + 7 * 5) + 8 + 3 +8 + (6 + (9 * 2 + 9 * 4 + 2 * 9) + (7 + 7 + 2 + 8) + 7 * 8) + 7 * 7 +(3 * 2 + 8 * 9 + (3 * 2 * 6 * 6 + 3)) * 9 + 9 * 8 * 5 +(3 + 4 + 6 + (7 * 6 * 7 + 2 + 6)) * 2 + 5 * 9 +6 + 9 + (8 * 4 * 8) +9 + 7 * (5 * 5 * 8) + 7 +2 + 8 + (4 * 7 * 4 * (7 + 2) + 2 * 7) * 8 * 9 * (5 * 8 + 8 + 6 + 4 + 5) +3 * 3 * ((9 * 6 + 2) + 7 + 9 * 5 + 2) * 7 + 9 + 9 +(4 * 6 + 7 * 6 * 4 * 8) + 4 + (2 + 6) * 9 * (2 * 3 * 5 + 7) * 2 +6 + (4 + (2 * 9 + 9 * 5 * 6 * 3)) * 6 * 8 +(8 * 2) * (7 + 7 + (4 * 2 * 2)) * 8 + 4 + 7 * (2 * 2 * (2 + 6)) +4 + 7 + 9 * (3 + 6 * 8 + 3 * 4 + 2) + 9 +8 * 8 * 7 * 5 * 3 * 6 +8 * (2 + 6) * (8 * 7 + (7 * 5 + 5 * 4) * 5 + 5 + 5) + ((7 * 8 + 2 * 3) + 8 + 4 * 4 + 3) * 9 +(2 + 7 * 4 + 9 * (6 + 9) * 9) + 2 * 4 * 8 +(6 * 5 * 6 + 3) * 4 * 3 * 3 +3 * (3 * (3 * 3 + 5 + 4 + 7 + 8) + 9 * 9) * 4 + 4 * (9 * 8) +7 + 5 +((6 * 7) * 8 * 5 + 3) + 8 * 8 * 6 * 7 * 8 +(9 + 4) * 4 * (7 + 6 * 2 * 7) * 9 * 2 +6 + 5 + (5 * 5) + (3 + 3) +5 + 6 + (9 + 3 * (3 + 9 * 4 * 2 * 9)) * 2 + (9 + 7 + 8) * 4 +8 + 2 + (7 * 4 + 8 + (3 + 2 + 2 * 4 * 9) * 4) +6 + ((8 * 6 + 5) * 8 + 9 * 3 + 5) * 6 + 9 +(5 * (8 * 6 * 3 + 8 * 7) * 2 + 2 + 2) + (6 * 5) * 7 * 5 + 8 +(7 + 9 * 6 * 5 * 2 * 3) + 9 * (2 * 2 + 6 * 5 * 5 + 8) + 8 * 8 * 4 +5 * 9 * (6 * 4 * 3 * 7) * 5 + 9 + 5 +7 + 7 + (6 * (8 + 2 * 7 * 9 + 4) + (8 + 9 * 5 + 3 + 9 * 4) + 4) * 9 + 8 * (5 + 5 + 9) +((9 * 2 * 5 * 7 + 8 + 7) * (6 * 8 + 3 + 5 * 6 + 4) + (3 + 2 * 6 + 7 * 7 * 9) * 5) + (6 + 4) +7 + 2 + 8 + (6 * 8 + 7) * 2 +9 + (3 * 6) + (3 + 8) +3 * 3 +4 + (2 + 4) +2 + 8 * 4 +4 * 5 * (5 * 7 * 6 * (3 + 5 + 6 + 5)) * (8 + 7 + 5 * (2 * 6 + 9 * 5) * 2 + 8) +6 + 6 * 2 + ((9 + 6 + 2 + 5 + 7) * 8 + 2 + 2 + 3) * 4 +3 + 6 * 8 +5 * 3 + 6 + 8 * ((6 * 4) + 4 * 6 + (4 + 5 + 4) + 3 + (7 + 2 * 8)) * (6 + 2 * 4) +3 + 3 * 2 * 2 * 2 * ((5 * 5 * 9 + 5 * 3) + 4 + 5 * 9 * 6) +(7 * 6 + 6) * (5 + 4 * 6 * 8) +4 + 7 + (4 + 5 + 7 * 6) * 3 +8 * ((5 * 6 * 5 + 9 + 3) + 6 + (4 * 8 + 7 + 5 + 7) + 6 * 5 + (4 + 9 * 5 + 2)) +(9 + 5 + 6 * 7 * 4) + 8 * 3 + 4 * 7 +(2 * 2 * 4 + 4 * 4 * 5) * 3 + 6 * 3 * 4 + ((8 + 2) + 4 + 6 * 2) +(9 + 4 + 9) + 7 * 9 * 6 +7 * 3 + (9 * 2 + (2 * 6 * 8 + 3 * 2) * 5 * 5 + 7) +8 + 7 * 6 + 3 * ((6 * 6 + 3) * 3 + 5 * 5 * 8) * 7 +3 + 6 + ((2 + 5 + 7) + 5 * 2 + 9) * 7 * 2 +2 + 3 * 3 * ((9 + 3 * 3) + 7 * (3 * 4 * 7) * 8 * 9) * 3 +8 + 7 * 2 * 2 * 3 * (8 * 5 + 8 * 2 * (7 + 2 + 3) * 7) +8 + 4 + 8 + ((3 + 7) * (5 + 9 + 9 + 5 + 7) + 6 * 4 * 7) +((7 + 8 + 3 * 9) * 9 * 4 * 4 + 8 * 8) + 2 * 6 * 6 + ((8 * 9) + 2 + 9) +5 + ((8 * 2 * 5 + 4 + 8) * 9 + 6) + (2 * 5 + 3 * 9 * (2 * 5 * 5)) + 2 * 5 +2 * ((2 * 5 * 8 + 9 * 6 * 4) * 5 + 5 * 6 * 2) * (9 + 6 + 9) * (5 + 3 + 5 + (8 + 9) * (6 + 3 + 2 * 6 * 3)) * 9 +5 + 5 + (4 * 5) + ((3 * 8 + 8 * 6 * 2 * 4) + 3 + 9 + 5 + 2) * 2 +(9 + 9 + (3 * 6 + 6 * 2) * 9 + 4) * (7 * 4 + 3) * 4 + 3 + 9 +4 + (7 * 2 + (5 * 3 + 9 * 7) + 8 * 9 * 7) +6 + ((7 * 9) * 9 * 3 * 6 + (7 * 8 * 7)) + (9 * 9 * 5) * ((6 + 6 + 4) + 4 + 5 * 7) + ((2 * 9 * 9 * 9 + 3 + 5) * (6 + 2) * (6 + 5 + 9) + 2) * 6 +7 * 9 + 2 + ((2 + 5 + 5) * 4) * 9 + 3 +9 + 5 + 5 * (8 + 7 * 7) + (7 + 8 * 9 + 4 + (8 + 8)) * (3 + (2 + 4 + 5) * (3 + 7 * 5 + 7 + 2 * 6)) +4 * 2 * (7 * 6) + 3 +(3 * (6 + 4 * 6 * 8) + (2 + 4 + 8 * 5) + 3 * 4) * 6 + 8 + 3 +8 * 4 + 9 + 7 * 4 +5 * 3 * 9 * 9 * 5 * (6 + 2 + 4 + 5 * 9 * 7) +3 * 9 * 3 + 9 +5 * (6 * (4 + 5 + 5 + 9) * 3) + (9 + 2 * 5 + (8 + 3 * 2 + 9) + 2) * 3 +3 * (5 * (2 + 3 + 6 * 3) + 6) + 2 +7 + ((7 * 3 * 4 * 5 * 3 + 2) + (6 * 3 + 7 + 6 + 9) * 3) * (7 + 7 * 3 + 8 + 2 + (3 * 5 + 5)) + (7 * 5 + (5 * 3) + 7 + 2 + 8) * 5 +4 * 4 * 6 + 4 +8 * (5 + 4 + 7 + (9 + 9 + 5)) * 3 * 7 + 2 +4 * (7 + (6 * 4 * 4 + 6 * 8 + 5) + (3 * 5 + 8 * 6 + 5) + 4) * 7 * 4 * 7 +2 + (5 * 6) + (5 + 4) * 8 +9 * ((6 * 2 + 5) + 8 + 6 * 8 * 8 * 6) + 8 * 5 * 9 + 4 +3 + ((5 + 3) + 7 * (3 + 5 * 3 + 9 + 5) * 6 * 6) + 2 + 5 * 9 +4 * (8 + 4 + 2 * 8 + 6) + 9 +(5 * 9 * 6 * 6) * 8 * 4 +(9 * 7 + 8 * 3 * 8) + 9 +8 * 9 + 4 + 2 * 9 * 2 +5 * (2 + 7 + (2 + 7 * 5 + 2) * (3 * 5 + 5 * 7 * 8)) +6 + (4 * 6 * (9 * 5 + 9 + 7) * 6 + 4) * 4 * 6 +8 + 9 * 8 + (2 + 8 * (5 * 7 * 7 * 9 + 8 + 4) + (6 * 4 * 9 * 8 * 4 * 9)) * 7 * (3 * 9 + 8 + 2 * 4 * 8) +(9 * 7 * 4 + 5 * 8 * 7) + 2 + 4 + 3 + (5 + 5 + 8 * (4 + 2 * 7 * 8) + (7 + 2 + 6 * 5 + 2 + 5) * (4 + 3 * 8)) +6 * 2 * 5 * 2 + (6 * 8) * (2 + 8 + 3 + 7 * 6) +(7 * 9) + 4 * 7 + (5 * 9 + 7 * 3 + (2 * 4 * 9 * 9 * 6)) + 8 +6 * 4 + (5 * 6) * 7 + 6 * 7 +(4 + 7 + 8 * 9 + (6 * 9 + 8) * (8 * 9 * 5 + 4 * 9 + 3)) * 2 * 3 + 6 +6 + 5 + 9 * (6 + (8 + 8)) * 4 + 2 +9 + (2 * (7 * 9 + 2 + 9) + 2) * 3 * 8 * ((4 + 6 + 9 + 5) * (5 + 2 + 9 + 3 + 5 * 9) + (8 * 2) * 3) + 9 +(9 + (3 + 8 + 7 * 2) * 6 + 6 * 8 + 7) * 3 +((4 * 4 * 9) * (3 * 6) * 3 * (8 * 4 * 5) * 5) + 2 + (9 * 5 + 8 * (7 * 4 + 9 + 3 * 3 + 2) + (3 * 4 * 9)) * 7 + 9 +2 + 3 * (3 * 4 + 4 * 3 + 2 + 7) * 8 * 9 +((6 * 7) + 3 + 7 + 3) + 4 +(5 + 3) + 2 * (8 + 4) * 3 + 7 + 9 +(8 + 5 + 5) * 6 + 6 * (5 + (7 * 6 + 7 * 6 + 3) + 2 + 5 * 6 + 6) * 3 +9 + 2 * 5 + (8 + (8 + 6)) + 8 + (4 * 2) +(5 * 5 + 5) * (4 * 5 + 2 * 3 + 4) + 9 +5 + (9 + (8 + 9 * 2 * 9 + 8) * 5 + (4 + 4 + 4 * 6) + 4) * ((3 + 9 * 7 + 8 * 2 * 7) + 3 + 6 + (3 * 3 * 7 * 2 + 3) + 2) * 5 +2 + 6 + 5 + (6 * 3 * 9) + 2 * 9 +8 * 7 + 9 * 2 + (3 + 7 * 6) +7 * 6 * (7 + 8 * (2 * 5)) * 2 +9 * 6 * (8 * 8 * 4) + 6 * 6 * 5 +9 * 5 * 9 + ((2 * 7 + 8) + (2 + 4 * 2 + 9 * 3 * 6) * (9 + 8)) + 8 +2 * ((7 * 6 + 9 + 5 + 2 + 3) + 6 * (8 + 3 + 9) * 2 * 3 + 7) * 3 * (6 * 9 * 2 * 4) + 5 * 6 +4 * (7 * 4 * 4 * (4 * 2)) + 4 + (3 * 9 * (5 + 2 * 7 + 8 + 8) + 5 + 6 + 5) +3 * 7 + 7 + (7 + 7) * 4 * ((8 + 4 * 3 + 7 + 3) * (2 * 3 + 4) + (2 * 6 * 3 + 6 * 2 + 7)) +8 + 2 * 5 * (2 * 7 + 9 + 3 + (7 * 2) * 4) +4 + (9 + 3 + 5) * (6 * 3 + (6 + 8 * 2) * 5 * 4) + 3 +8 * 2 * (5 * 9 + 4) + 5 + ((7 * 7 * 2 + 5 + 3 * 9) * 8) * 9 +2 + 8 + 8 + 4 * ((7 + 9 * 7 + 5) * 5 + 2 * 9 * (2 + 2 + 7 * 7 + 4) * 3) + 5 +(7 * 8 + 8) * 8 +8 * 6 + 8 + 3 + 2 + (8 + 9 + 2) +6 + 4 * 9 * ((9 + 9 * 2) * (5 * 7 * 3 + 4 * 6 * 6)) +(9 + 4 + 7) + 2 + ((8 * 8 * 8 + 7) + 3 * 3 + 8 + 5 * (9 * 7 + 3 + 2 + 2 + 9)) +(9 * 2 + (6 * 4 * 8 * 9 * 9 + 5) * 2) * 7 + 4 * (6 + 7 * 5 * 5 * 6 * (9 * 3 + 8)) +8 * (7 + 5 * (8 + 3 + 9) + 6 + 6) + 2 + (4 * 2 + 8 * (3 * 4) + 7) + (2 + 4) * 8 +(6 * 4 * 7 * 7 * 6 * (5 + 6 + 4 * 8 * 9)) + 7 + (8 + 3 + 6 + 8) * 8 * 5 +4 * (4 + (7 + 3 * 2 + 9)) * 3 + 6 * 7 * 4 +9 * (8 * 6 + 7 * 9 + 4 + 9) * 7 * 4 + 8 +((8 * 7 * 6 + 4) * (4 + 9 * 5 + 8 * 2 * 7) * 2 + (6 * 3 + 9 + 6 + 5 * 7)) * 4 +5 + 2 * ((7 * 8 * 6 * 4) * 4) * 4 * 4 + 9 +5 + (2 + 2 + 3 * 5) + 2 * 2 * (7 * 7 * 2 + 4) +8 * (7 + (9 + 5 * 6 * 6) * (6 + 5 + 7)) * 3 * 6 +(7 * 7 * 2 + 3 + 9) + 3 + 7 * 4 + 8 + 4 +5 * (7 * 6 + (8 + 5 + 2) + 7 * 7) * (6 * (2 + 5 * 4) + 4 * 7 + 4 * (6 + 7)) + 2 diff --git a/input19 b/input19 new file mode 100644 index 0000000..e472e6c --- /dev/null +++ b/input19 @@ -0,0 +1,617 @@ +101: 118 64 +83: 132 118 | 108 2 +61: 19 2 +33: 126 2 | 68 118 +80: 2 48 | 118 91 +47: 38 2 | 64 118 +40: 25 2 | 93 118 +18: 38 2 | 108 118 +2: "a" +74: 118 108 | 2 12 +41: 118 17 | 2 58 +56: 125 2 | 132 118 +66: 12 2 | 27 118 +62: 118 52 | 2 125 +58: 2 128 | 118 99 +89: 110 2 | 3 118 +30: 118 85 | 2 21 +20: 2 70 | 118 111 +85: 118 115 | 2 52 +98: 118 46 | 2 10 +12: 118 2 | 43 118 +99: 102 118 | 56 2 +127: 2 119 | 118 100 +53: 125 2 | 108 118 +15: 2 27 | 118 108 +22: 95 2 | 61 118 +109: 115 2 | 46 118 +90: 76 2 | 121 118 +37: 15 118 | 23 2 +27: 118 2 | 118 118 +104: 2 46 | 118 12 +32: 64 2 +26: 35 118 | 32 2 +123: 131 2 | 89 118 +21: 118 132 | 2 115 +95: 112 118 | 125 2 +79: 88 2 | 60 118 +34: 107 2 | 133 118 +6: 2 101 | 118 110 +55: 118 112 | 2 64 +10: 2 118 +115: 2 118 | 2 2 +39: 2 61 | 118 81 +42: 92 118 | 124 2 +105: 38 2 | 10 118 +7: 10 2 | 27 118 +106: 87 2 | 1 118 +75: 118 46 +28: 2 71 | 118 16 +120: 118 27 | 2 112 +100: 69 2 | 109 118 +102: 46 118 | 132 2 +5: 39 118 | 51 2 +14: 57 2 | 96 118 +8: 42 +25: 118 59 | 2 67 +3: 19 118 | 52 2 +59: 2 74 | 118 83 +87: 118 72 | 2 78 +130: 111 2 | 117 118 +112: 2 43 | 118 118 +116: 118 38 | 2 108 +17: 2 122 | 118 29 +124: 41 118 | 40 2 +11: 42 31 +38: 43 43 +44: 118 123 | 2 114 +23: 12 2 +29: 2 113 | 118 129 +121: 2 10 | 118 19 +93: 2 26 | 118 36 +13: 19 118 | 46 2 +107: 118 132 | 2 10 +54: 118 27 | 2 12 +63: 2 105 | 118 82 +84: 2 37 | 118 73 +52: 118 2 | 2 118 +50: 118 111 | 2 9 +111: 118 112 | 2 27 +82: 118 46 | 2 108 +118: "b" +133: 115 2 +103: 34 2 | 22 118 +36: 66 2 | 65 118 +31: 33 118 | 79 2 +69: 12 2 | 115 118 +122: 54 118 | 66 2 +114: 6 118 | 80 2 +92: 118 14 | 2 44 +0: 8 11 +117: 132 2 | 108 118 +76: 64 2 | 27 118 +126: 2 28 | 118 127 +113: 125 2 | 19 118 +43: 118 | 2 +46: 118 118 | 2 118 +132: 118 118 | 2 2 +49: 118 130 | 2 50 +129: 19 118 | 27 2 +24: 2 27 | 118 52 +119: 118 47 | 2 98 +91: 19 118 | 10 2 +35: 115 118 | 46 2 +57: 2 63 | 118 90 +125: 118 118 | 43 2 +108: 118 118 +4: 115 118 | 19 2 +94: 112 2 | 115 118 +1: 2 55 | 118 75 +9: 38 118 | 112 2 +71: 2 18 | 118 53 +60: 103 2 | 86 118 +51: 116 2 | 24 118 +128: 24 118 | 117 2 +45: 118 2 +16: 104 2 | 62 118 +70: 118 115 | 2 45 +77: 118 13 | 2 94 +131: 61 2 | 107 118 +68: 2 49 | 118 84 +86: 118 97 | 2 30 +78: 118 38 | 2 12 +88: 5 2 | 106 118 +81: 2 45 | 118 52 +64: 2 2 +19: 2 43 | 118 2 +110: 132 2 | 64 118 +96: 2 77 | 118 20 +67: 104 118 | 4 2 +65: 115 118 | 38 2 +73: 118 110 | 2 120 +72: 64 2 | 115 118 +48: 2 46 | 118 10 +97: 7 118 | 133 2 + +aaaaaababababbbbbababaab +aaababbabbbbbbabaaaabbaaabababaabababaaa +abaabababaababbaaaabbaaabaabbbaa +aabbaaaaabbbaabbaabbbabbbabaabbbaaabaabababaaabb +bababbbbbaaaaaababbbabbb +bababbaabbaaaaabbaabbabbbabbabbbbbbbbbababbbabab +aaabaababbaabbbbaaabaaabaabababb +babaaababbbaabaaaabababa +aaababbabbbbbaabaababbaabbababbbabaabbbbabababaaaaabbaab +baabbbbabaabaababbbbbabaabaabaabbaaaabab +bbbbaaabbabbbbabaaaabbabbbbbabaaaaaabbaa +bbababbbaabbaabaababbbab +bbaabbbabbbaababbbabbabb +abbaabbaaabbbaaaaabaabababbaabbababaabbbaaaabbaa +bbaababbbbbbbaabbbabaaab +baabbbaabbababbbababaaabaabbaabb +baaabbbababbbabbabbaabaa +bbaaabaabbbababbbbbbbabb +aabaabbbabaaaaabbbbaaaaa +babbbaaababbbbaaaabaaabbbabaabba +abbabbbbaabbaaaaabbbbbaabbbbbabbbaabaabb +aabbbbaaaabaaabbaabaaababbbbbabbbbaababa +abaaaabaabbaaabaabaaaabbabaaabaaaaabaaab +babaabbbbaaabaabbbababbbaabbababaaaaabababbbbaababbbbbbb +ababaaababaaaabbbababaab +bbbbabaabbbabbabbabbabbaaaabbaab +abababbbaaabababbbbbabbbaabbbabbbabaabaababbbbabaababbbb +bbaaaababaabbaabaabbababaabbbbba +abbaabaaabaaabaabababbbbbbaabaaaabbbabababbababbbabaabaabbabaaaa +bbbbaabaaaabaabbabababab +abbabbaabbbbbababbaabbbb +bbbbaabbababbbbbbbbbaabaaabbabaaaabaaaba +bbbbbaaaabbaabbbaaabbaaaabaabbaabbbbbabb +bbaaabaabbbbbbbbabbbbbaa +baabbbbaaababbababbaaabb +aaaababbbbaababaabbbbbbbaababbbb +aaaaabababaaaababbbaaaaa +abbbaabbbababbaaabaaabaa +bbbbbababbbbaabbaabaaaba +aabbbabbbbbababbaaaabbba +aabaaaaabbaaaabababaabab +bbbbbaaabbbabbabaabaaaab +bbbabbbaaabbbabbaabaaabbbbabbababbabaabbbbababab +abaababbabaabbaaaabbbbbababbbbaaababaaaabbbbabba +abaababbbbbababbabaaaabbababababaaabaaab +baaabbabaabbbabbaaaabbabbabababbbbbabaabaababbbbbababbba +bababbabbbbbbbaaaabbbabaabaaababbbbaaaaa +baabaaabaaabaaaabbaaaabb +bbbabbbbbabbbbbaababbaab +bbaaaabaaabaababbaaaaabbbbaaaabb +abbabbaabaaaaaabbaababaa +aaaaaaaaabaaaaabaaaabbabaabababa +bbbbaabaabbabbaabaabaabb +bbbbabbababaabbbabaaabbb +aaabaabbaabbaaaabbbaaaaa +abbabaaababababbbbbbaabaabbbaabbaaabaaaaaabbabaaabaabaaa +baaaabbbbabaaabaabaababbabaaaaaaabbabaaabbabbaab +abbbaabababbbaaababbbbaaabaabbbbbaaaaaababbabaaaabbbbbaabbbabababbabbaaa +aaaaaaaaaabbbaaabbabbaab +bbabbbaabbabbbbabbaababaaaabbabaaaabaaba +abbaaaaabbaaaaabbbaababbaabbbababababbbabbabbbbabbbaaaabaabaabab +bbbabaabaaabbaaabaabaaabbaabbbbb +aaabbaaabbabababababbaabbabaaaaabbbaabbbbabaabab +abaabbbbabbbbaaabaaaabab +abbaababbbbababbababaaaa +bbbbbaabbbabbabaababaaaa +bbbaabbaabbbbbabaabbbabbabbbaababaababbbaaaaabbbbaaaaaba +aabbbabbbaabbaaaaabbaabb +aaabbaaaabaaaabaabbbabab +bbbbaababbbbbaabaaaaababbabbbaababbabaab +baabbbbabaabbaabbabaabaaabaabbabaaabaaaaababbbabaababaaa +bbbbaaaabbbabbbbabbbbbaa +abaababbbbbbababbababababaabaaababbbbbaa +aaabaaaabbaabaaaabbbabaa +bbbabbabaabbababbaabbbaababbaaaaabbabaab +aabaaabbabbbbabaabaabaaa +bbbbaabbabababbbaaaaaababababaaabbbababa +bbbabbbabbabaabbaaabbbbb +abaaabbabaaababbaaabbbab +bbbbabaabaaabbbbaaaabbabbbaaabaababbbaab +abbaaaabaababbabaabaababbbabbaab +aabbabbaaaabbbbababaaaab +abbbabbaabbbbababbbbbaabbababbabaaabaaabababbbab +bbabaabaabaaaabababbbbbb +bbbbbbbbaaababbaabbbaaab +bbaabbababbbbaaabbaaaabb +babbabbbbaabbabbababaaba +baaabaabaaabbbbaababbbbaaaabbbaaaaabbbaabbbababaaabbbaab +aaaaabababbabaaabaaabbbaabababababaabbba +baaaabbbaaabbaaabaababbabababbababbabbaabaababbaaaabbabaaababaaa +babbbaaaabbaabbbbabbbbbb +bbbbbaaabbaabbbabaaaabba +abbbabaabbbbabbaabaabaaabaaaabbabbbaaaabbbaabbabababbaabbaaaabaa +babbababaababbababbababa +abaabbbbabbaabababbaaaaa +bbbabbaaaaabababbbaabbaabbababaabbbabaaa +abaaaabaababbbbbaabaaaaabbbabbbabbababab +aababbababbaabbbbbbbbabb +bbababbbaabaaaaabbababbabababbabbbabbaaa +abbbbabbbababbbaaaaabbabbbabbbabaaabbbaabbbaabbaaaaaabba +ababaaabababbbbaaaaabbababbbbaab +baabbbbabaaabaaaabaababaaaabbaba +baababbabbbbbabbbaabaabb +bbbababbbababbaaaabaabbbbbbbbabaabbaaabb +baabaabaababbaaaababaaabbbbbbbba +babbaababbbbababbaabaabb +aabbbabaaabbaaaaabbaaabababaabba +bababbbbbaabaaabbbaababa +bbbababbbaabbabbabbbaabaabababaa +bababbaaaabaabbbbbbbaaab +bababbabaabbaaaabbbaaaba +baabbaabaabaabababaaaaaababaabab +baabaaabbbaabaaabbbbbbab +abbbbbbabbaabbbabbaabbbaabbaabbababbaabb +babbbaaaabaabbbbaabbaabb +baabbbababbbababbabaaaaabbababab +babababbaaabababbbbababbaaaababa +abbbbaaaaabbabbaabbaaaaa +bbbbabaababbbbaaaaaaaaab +abbabbaabbbbaabbbabaabbbbaaabaaaaaaabaabbbbbbbaa +bababbbbbbababaaaabaabba +bbbbbaabbbabaababaaaabab +aaabaabbbbaababbaababbbaabbbbbbabababbab +aaaaaaaaabaababbbbabbaab +abababbbabbabaaabaaabbaabbaaaabb +babbbaaabaabaaaaabbbaabaabbbbbbaaaabbabbabbbabab +babbabbbbbbbaabbaaaabaaa +baabbbbaabbbabbabbaabaab +bbbbabbabbababbabbbabbabbabbbaaaaaaabbabaaaaaabb +abbaabbbababbaaabaaaabaa +babbbaaababababbbaabbbbb +bababbaaaaababbaaabbaabb +bbbbabbbbbaabbaaabbbabbabababbbbbababbabbabbabba +abbabaaabbaabbaababbbbaaaaababbaabbababb +baababbabbbbababbbbabbabbbbbbaaaabbaabba +babbbbbaabbabbbbabbaabba +baaaabbbabaabbbbbaaaaabbbbbabbabaaaabbbabbaaabab +abbabbbbbbbaababababaaaa +baaabaabbbbbababbabaabbbbbbbbbbabbabbaab +bbbbbaabbabaaabaaababbabbabbbbabaabaabaa +bbaaaaababbbbabababbabbbaaababbb +aababbbaabbbaabbabaababababaaaab +bbbabbbbaaaaababaabbbbba +bbabaabaabbbabbabbbbbaabbbbbabababaaaababbbaaaabbbbbbabb +bbbbbabaabbbbababbababab +bbbaabbaabbbbbbabbbabbbaabbbbaaaabababab +baaabaaaabaaaabaaababbaabaabbabbababbbbabbaaabab +baaabaaaaaabaaaaabbbbabb +abaaaababbabbabaabaaaaaababbaaaaabbbbabb +baaabbbababababbaaaabbbb +aaabbbaaabaaabbababaabbbbbaabaabbbaaabbb +bbbababbaaababababbbbaaaaaabaabbbaabbbbb +abaabbbbababbbbaabbaabbbaabaababbbbaaaba +aabbbabbabaabababaabaaabbbbabbaaaaabbbbbbaaaabab +aaaaabaaabaababababbbbbb +bbbbababbaabbbbababababaabbbaaab +baaabbbbaaabbaaababbaabb +aabbbabbbbbbbaababbabbab +babaabaaabbbbbbaabaaaabbbbaabaaaaabbaabaaabbabbb +baaaabbbaabaabbbaaaababb +aabbababaaabababbabbabbaaabaabaaaababaaa +abbbbbabbaabaaababbbaabbabbaabababababbbaaaabbabaabbbbbabbabbbaabbbaaaba +baababbaababbaaaaaaabbba +bbbbaabbbaaaabbbbaaaaaaa +bbbbababaaaaaabaaaababbb +aabaaaaabbaaaaabbbbababbbbbaabbabbbbbabb +bbbbaababaabbabbabbbaabbbbbbaabaabaabbbbabbababbbbbaaaaa +abbaaaabbbabbabaababbaaaaababbabababbbabababbabb +bbababbbbaaaabbbabbbbbaa +bbaabbaabbbbabaaabbbbaaababababbabbbbbaabbaabaab +bbaabbbabbbbbaaaaabbabaabaaabbbbababbbbb +baababbabbbababbbbbbbbab +abbbbbbaaaabbaaaaaaaabba +bbaabbbababbabbaaaaabaab +bbbaabaababbbbbabbabbaaa +bbababbbabbbaabbbaabbbbb +bbaaaabaaaabaaaaaabbabbabaaabbaabbbababa +aaabababaaabbbbaabaaabbb +bbaababbaabbabbabaababbb +babbbabbaabbabbaaaabbaaabbbaabaababaaabbaabbbbabbbaaaabb +babbbbababbbaababaababbb +bbbbabbabababababbbbaabaaabaabbbabbaabbbbbaabbaabbabaaaabbbaaaba +aabaaaaaabbaaaabbbbababbbbaaabaabbaabbabbbabbbaa +bababbaabaaabaaabababbbbbbaaabbbabbababa +aaabbbbaaaaaaaaabbbaaabb +bbbbabbabbbbaabbbaaabbaabbbaaaabbaaaabab +babaabaabaaaabbbbaaaabba +abbbaabbbabbabbbbaaabaaaabbabbaabbbaaabb +bbbbaabbaababbabaaabbaaaabaabbaaabbabbab +abbbbaaaabbbaabaabaaaaaabbaaaabaaabababa +baaabaaaabaaaaababbabbbbbababbba +baabaaaabbaaaaabaaababbaababaabbaabaabaa +baaababbbaabbaababbbabaa +babbbbaaaaababbababbbbbb +bbaabaaaaabbabbabaaaabbbaabaaabbbbabaaaaabbababa +baabbbaaaabbaaaabbaaaabb +baabbbbabaabaaabaabaabaa +bbbabbbbbbbabbaaababaaababbabaab +aaaaaabaaabbbbaaabaaabaa +ababbbbaabbaababaababbbb +abaaaaababbbbbabbbbbbbba +aababbbabbaaaaababbbbbaabbabaaabaaababaa +aaabaaaaabbbabbaabaaabbb +bbaababbbbbbaabaabbaaaaa +bbababbbbababbaabaaabbbbabaaaaababbbbaabaaaabbba +abbabaaabbaabaaaababaaaa +aaabaabbabaaaababaaabaaaaabbbabbbabbbbabbbabbababaabbbbbaababababababaab +abaabababbababbbbbbaaaba +abbbbababbaabbbaaaababaa +aaaaabaaaababbbaaaaabbba +abbaababbbbabaababaababbbbabaabbbbbbbbaa +abbbaaaabbbbabbabbaaaaaabaaabaababbaaabbababaaaaaabbaaabbbabbaaaaababababababbbbbaaaabab +ababbaaababaabbbbabaaababbbaabbb +bbbaabbabbbaabaaaabbbbaaaaaaabaaaababbabbbabbbbaabaabbaabbbababa +bbbbaabbabbbbabababaaaab +aaabbaaaaabaaaaababbbbbabbabbbab +bbbbaaaaabbbbbbabbaababa +abaaaabbbbababbabaaaabbbbabbbbbabbababaabbabbbabaabaabbabababbba +baaabbbabbbabbaabbabaaab +aaababababaabbbbbabaaaab +bbaaabaaaabaabbbbabbbabababaaaaa +abababaaaabbbbaabbabbbaababbbbaaaaaaaabbabababbbbaaaabaa +baabbbbabaababbabbabbbba +baabbbaaaabaabbbabababab +abaababbbbbababbaababbabababbbab +baaabaabbabababaaaaaaaaaabbabbbbbaaaabba +baaaaabbbaaabbbababaaaaa +baabbaaabbaabbabbabbbbbb +babbababaaabababaabbaabb +bbbabbbbaabbabbabbbaaaaa +bbbabbabababbaaabbbaaabb +aaabababababbaaabbabababbaaabbabaaaaabbbbabbbbaaaaabbaab +aabbbbaabaaaabbbbbabbbaa +bbaabbaaaaaaaababbaabbaabbaabaaabaaaaaaaababbaab +bababbaabbaaaaabbabaabbaababababaaaaababaabbaabbbbabaaabbaaaabbabaabbbbaabbabbbb +baabaababbbbaaaababbbbbb +baaabbaaabbbaabaaaaaabaabbbabbababbaabbbaaabaaaaaaaabababbbaabbbbbbaaaabababbabbbababaab +aaababbabbaabaaaaabaaaab +bbbabbabbbbbababaabbabbababababbaababbbaaababaaa +babbbabbbbaaaaabbbaaabaabbbaaaaa +bbaaabbabbaaabaaaaaabaab +bababbbbbaabbaaabaaabaaabababbabbaabaabaabaaabaa +bbbbbabababbbbaaaaabababaaaabbabaabbbbab +bbbbaaaaaababbbaabaaaabbaabbaabb +babaabaabbaaaaabbaabaabababbbbbaababbaaabaaaabbbbbbbbbabaabaabaa +babbbabaaaaaaaaaaababaaa +bababbabbabbbbbaaaababbb +abbaaababbaaaababaaababa +bababbaabaaababbbbbbaaaabbbaabababbabbba +baaabbbbaabbbaaaaaaabbababaaaaaaabbabbababbbaaaaababaabb +babbbabbbbababbaabbbaaaabaaabbbabbababbabbbbbaabaaaaababaaabaaaa +ababbbbbbbbbabbaaabaabaa +bababbaababbbbaaaaababababaaaaabbbaaabbb +bbbbbaabbbaabbaaaaabababbaababab +aabaaabbabbabbbbaabaaaaaaaabbbbb +bbaabbabbbbbabbaababaaba +aaabbbbaaabbabbababaabbbaabbababbabbaaabaabbbbba +babbbbabaaaabbabbbbbbabb +babbbabaaabaaaaaaabbbbaababbaabaaababaababbaaaaa +aaabaaaaaabbabbaaabbbabaabbaaabaabbaaaaa +babababbbbbbabaaabbbbbbaababaaaaaabaabaa +aabbabbababbbaaabbbaabbb +aabbaaaaabbaaaaaaaabbbaaaaababbbbbbabbabbbbabaabababaaaaababbbaaaabbbaab +bbbabbaabbbbaaaaabaabbba +babbbabbaabaabbbaabbabbb +abaaabbabaaaabbbaaaaabaaababaaabbabbbabaabaaabababababab +aabbaaaabbbbbaaababbaabababbaababbaaaabaabbabbbaabbaaabbbbabababbaaaaaaa +bbbbbbbbbbaaaababbbbbabbaaabaaababbbababaaabaaba +aabbbababaabbaaaabbaabba +bbbbbaabbbbaabbabbbbbababaabbbbbaaaaabba +abbabababbbabaababaaaabbbbbaaabbbaabababbbaabbbabbaabababbabbbba +aabbbabbababbbbbaaabbbab +bbbbbaaabbbababbbbbabbbaaaabbababbabbbaa +bbbabaababbaabbbabbbbabb +bbaabbbaaabbababbababaaa +abbabbbbbbaaabbaabbbabbb +abbbbaaaaabbaabaabbaabba +bbababaabbbabaabaababaabbbaaaaabaababbaababbaabbaaabbbabbabaaaaa +baaabbaabbbabbabbaabaabb +bbbabbbbabbbbabaababaaababbabbbabbababab +bbbbbaaababaaabaaabbbababbababababbaabba +baabbaababbbabbabaabbabbabbbabaaaaabbabb +bbbbbaaabbbabbaabbabbaab +babbbababbaaaaabbabbbbbb +abaaaabaaaababbaaabababa +bbbababaaaabbbbabbbbabbaaabbaaaababbaaaababbaaaaabbaaaaa +abbabbaaaaaabbabbbaaabab +bbbaabababaabbbbbabaabab +babbbaaaababbbbbbaaaabba +bbaababbbbbbababbbaabbbb +aabbbbaabaaabbbbababbaaabaaabbababbabbbbbbabaaaa +bbababbabababbaabbaaabbaabaaabbabaaabbaaaaaabaaaababaaaaabbbbbaabbabaaaaaabbabaaaaaabaab +baaabbbbbabbaababbbaaaaabbbaaabaabbaababbaababbbbbbbbbbaaabbabbaabbaabbaaababbbaaaaabbabbbbbaaba +aaaaaaaabaaaaabbbaabbaba +baaaabbbbaabaaaababaaaaa +baaaabbbbaaaaaabaaabbbbabbabaabaababbabaaaaabaabababbbaa +bbbbabbbabaaaabaabbabbaaabaabaaa +baaabbaababbbbbaaabbaabaaabaaabbabaabaaabbabababababaaba +bbaaaababaabaabaaaabbbaaaabbaaaabbbbbabb +bbbbabbbbbababbbbbabaaab +bababababbbbaababaababbaababbbbbaabaabba +bbaabbbaaaaaaababababbba +bbbbaabaabaaaababbabbabb +bbbaabbaabbbbaaaababbabb +abbaaaabbaabbabbaabbbbaabaabbaba +abbbbbbabaaaaababbaaabababbbbabbaabbbbba +babbabbabbbaabaabbbaabaabbaaaaaababbbbbb +abbaaaabababbaaaaaabbbbb +bbaaaababbaaabbaabbbbbbaabbaaaabbbabbaabababbbaabaabbbbb +aababaabababbabbaaabbaababaabbbabaaaabbaabbaaabbbbbbaabbaaababbabababbaaaaabaaba +bbbbaabbbbaabbaaaaababbaabbbaabbbbbabaaa +abbbbababbbaababbabbbaaabaabbaabbbbaaabb +aaaaababbaaabbabaabaabaaaaabaabaabbbabaaabbbabaababaabaa +aabbbbbbabaabaababaaababbabbbabbababaabaaaabbabb +bbaabaaabaaababbaaaaabababbaabbbaaababbbbababaaa +bbabaaabbabbbabaabaaaaaababbbababaaaaaaaaaaabbabbabaabbabbbaaaabaaaababb +baaaabbbbaaabbabbabbbbbabaaababbaabbbabbaaabbbabbbabbbbbaabaabaa +babbaabababbbaaabaababbaababbabbbbbabaaabbabaaababbbabbbbbbababaabbaaaaa +abaabbababaabbabaaaabaaa +bbababbaabbaaababaabbaba +baaabbaaaabbababbaabaabb +aabbbbaabababbabbbabaabaaaaaaabb +bbbabbaabbbbaabaaabababb +aaabbbbabababbaabaaaabab +abababbbbbabaabbbbbaabbabbabbaabbbaaaabb +aaaaaaaaabbaaabaabbaaabb +babbabbaabbbaababbabbbba +aaaaaabaaabaaabbbabababbbbabbabb +babaaabbbbbabaaababbabaabaaaabab +aaababbbababbbaaababbaabbbbbababaababbbaaabaabbabaababbbbbaabbbbbabaaabababbbbaaaaaabbabbbababaa +abaababbaabbaaaaabbbaaaa +abbaaaababbabaaabbaabbabbaabbbaabaababaa +aaaaabaaaabbaaaaabababaa +baaaaaababaaaabaababbaaaaaabbbabbaababababaaabaaabbbbabbaabaaabb +bbbbabaabbbbbaabbabbaabaabbaaabbbbabaaaababbbaab +abbabbbbabbabaaaabbabbba +baaabbbbbabbababaaaabbbb +abaabababaaabbaaaaabaabbabaaaaabbabbababbbaababa +abaaaabaaababaabbabbbbaabaabaabaaaabaaaababaaabbaabbbaabbbbaabbb +bbaaabbabbbababbbaaabbaaaaababbb +bbaaabbabaabaaaabbabbabaaaaaaaaaabbaaaabbbabaabaababbababbbbbbba +aababbbabbababbbabaabbba +aabbbabbbaaabbabbbbbbbbbbbbabaababbaababababbbaaabbaabaa +aaaaaaaaabaaaaaabbbabbaababbbaaaaaabaaab +bbaaabaabbabbabaabbabbaaababbaab +abaaabbaaaabbaaaabaabababbbbbbaaaaabbbbb +baabbaababaababaaabaaabbabaaabaa +bbbabbbabbababbbaaababaa +bbabaabbbbbbaababbabbbbb +abbbbababbbabbaaabbbabab +baaabbbababaabbbbbabbaab +aaaaaaaaaabaaabbababaabb +bababbaaabbaabbbaabbaaab +babbaababbaaaabaabaababbaaaabaaa +bbbabbabaabaaabbaaaabbabababbaaaabaaabbb +aabaaaaababaabaaaaaababb +aabbabababbaababaaaababb +bbbbabbabbbaabbabababbbbbbaaaabababaabbaaaabbbbbaabbbbba +ababaaabababbbbaabbaaabbabbbbaaaaabbbaabbbabbabaabaabaab +aabbababbabbabbbaaabbaba +abaabbabbaabaaaabbbaaabb +babaaabaaabbaababbbabaaa +bababbabbaabbabbaabbaaaaaabaaabbabbabbbbaaabbaba +babbabbaabaabbabaababbbb +babbbbaaabaaabbabbaabbbabbbbabbbbbabaababbbbaaababaabaaabbabbbaaaaaabaab +baabbaabbbbbbaaabbabbbbb +bbbababbbaabbbaabaabbbbabbababbbbaaaaabbaabbbaab +aabbaaaaabbabbaaababbbbbbaabbbbaaaaabbbbbbababab +baabbabbaaabbbaabbbbabababbaaabb +babbabbbbbaaaaabbbaaaaaaaaaabaaabaaaaaaaaabbbbbbbaaaabbbababaabbaabbbaaa +bbbaabbabbabaabaabaabbaa +abbaaaabbbbabbabbaabaaaaabaaaaabbbbabbabbaababaaabaabbbaaabbabbb +bbbabaabbbbaababaaababaa +aabaabbbbaabaabbbabaaaaaabbbbbbb +aaabaaaabaaabbaabbaabbbaabababab +abbaaabaabaaaabaabbbbbab +aaaaabaabaaabbaaababaabaaaaaabbabbaaabbbaaaaaababbbbaabbbaabaabababbbaababababab +bbbbaaaabbbaabaaaabaaabbababbaaaaaaabbbababaaaabbbbaaaab +bbbabaabbbaaaaabbabbaaab +abbaaaabaaaaaabaaabbbbaaabbbbaababaabbba +baabbaaaaaabbaaabaababbb +aaabaabbbabbaabababaabbbaabbaababaabaaababaaabbb +bbabaababbbabbabaabbaaab +bbaaaaabbbaabaaaaaabbaaa +bbbbbaaabbbabaabbaababbabaaaabbaabbababa +aabbbbaabbaaabaababbbbbababbbbbaabbaabbbbaaaabbbababbaab +aabbbabbaaabbaaabaababbaabaaaaaaababaaabaaabbbbaaabaaabaaaabbaabababaaaabaaabababbbaaaab +aaabaaaabbbbabaaababbbbbabbaaaaa +abaabbbbabbaaabaaaaaabaabbbbbbaa +bbaaabaaaaaabbabaabbbbab +baaaaaabaaababbabbbbaaab +bbabaabbbabbbaaaaabbabbaaabbaababbabaabbaaabaaaaaaabaaba +abbbbbaabaabbbabbabbaaaabaaaaaba +aaabbaaabbbbaaaababaabbbbbbabbbaaabaaabbbaabbabaaabbaaab +babbaababbbbaaaabbbbaabaaabbbbaaabbabbba +baababbabbaaaaabbbababaabbabbaaa +aabbababbbaaaabaabbabaaabbbbbaaabaaabbbaabbbabab +abbbaabaabaabaababababbaabbbbaabbbabbaabbaabbaaa +baaabaaabaaabaaabaaaaaba +bbbabaabaabbbabbbbabbaaa +bbaaabaabbbbaaaabbabbabaabbababb +abababbbabaaabbabaaaabbbaaaabbabbaababbabbaabbbb +bbbbbaababbaaaabbaaabaababbbaaab +baabbabbbbaaaababaabbaaabaababaabaaaabab +baababbaabbbbbbaaabbabbabbbbababbabbbbbbaabbaabb +baabaaaabaaabbbaabababbbaaabbaba +abaabbabbaabbaaaaaabaaababbaabaabbbaaaaa +baabaaaaabbaabbbabaabbba +bbbaabbababbaabaaaaaaabb +bbbbabaababaabbbbbababaabaaabaabaaaabbaa +aabaababbaabbbbababbaabababaabaabaabbaaaabababab +abaaaaabbbbaabaabaabbaba +bbbbaabbbaabaaabaabbaababaabbabbbabaaaaaaaabaaba +aabbabbaabaaaaaabbabaababbbaabaababaaabb +abaaaababbbaabaaaabaaaaabaabaaaabaaabaaaaaaabaab +aaaaaabaaabbbababbbbbababbbbababaabbbaab +bbbabbababbaabbbabababaa +baabbbaaaababbbabbbaaaba +baaaaaabaabbbabbbaaaaaabababaaba +bbbbaaaaabbbabbabbbbaabaaaaaababbbaabbbb +aaabababbaabbaaaaabbbbab +abbbbaaabbaabbababaaabbabaaaabba +bbaaaababaaabbaaabbbaaaa +ababbbbbaaaaaabaabbabbbbaaabbbbbabababaa +bbabaabaabbabaaabbbaabbb +aababbbaabbbabbabaaabbbbbbabaabaabbbbaaaabaabbaabababaab +aababbabbabbabbaabaaaaaabbbababbabbabbbbabbaabba +aabbbbbababaaababbaaabaababababbbabbaaabaaabbbaabbbabbab +ababbbabbabaaabaabaabaaababaaaaa +abbbbbbabbbaabbaabbabaaabbbbabaaabbbbbaa +bbaaaaabaabbaabaaabbabaa +bbbbaabbabbbaababbaababa +babababbababbbbabbabbaaa +aabaabbbaaabbbaabbbbabaaabbababa +abbbbbabaaabbaaaaabbbabaabbbbaaabbbaaabbbaaababa +baabbaaaaaabaabbbaabbbaaaaabbbaaaabbaababaaaabbbaaaabbba +abaaabbaababbaaababbaabaaaaaabababaabaab +bbbabbabaababbbabaababaa +bbaabbabbbbaabbabbbbaaab +abbbbabababbbabbbbbbabbbbbabaaaaabbaaabb +aabaabbbbbbbaabbabbabbbbaabaabbbbaabbaaaabaabbabaaaababbabbabbab +aabaaaaabaaabaabbbabbaabaababbabbbaababababbbbab +baabaabaabbaababababaaba +aabaaaaaabbbbbabbaabaabb +aabaaabbaaabbbbaaaaaaaaabaaaaaba +babbbabbbbbbabbaaaabbaaabababbbbabbbaabbbaababbabbaabbbbabbbbbaabaaaabba +baabaababaaabbbbabbaabba +bbababaabbaabbbaabbbaabbababaaabbababbaaabbbaaabbbaabbbb +abaaabbabbaaabbaaabaabaa +babababbabbabbbbbababbaaaaabaabbaabaabbbabaaabababababaabaababab +bbabaabbaababaabbbaabaaaabbbbaabaaaaaabb +aababbaaabababbbbababbbbbbbbabbaabbaaaaabaababaa +abaabbabbaaabbaabaaabbba +bbbbaabaaababbababbbbbaa +baaabbbbbbbbbaaabaabbaaabbaabaab +aabbbababbababaaabbbaabbbbabaaab +bbbaabaaabbbabbaabbbbaaaabbbaabbabababbaabbbababbbaabbbb +aababbbabbabaababaaababbaabbbbaabbaabababbaaaabbaababaaa +bbaababbbabaabaaaabbbbbb +bbbabbbbabbabaaaababbbbabbbabaababaabbbbaababbbbabbbaaababbbabaabbabbbaa +bababbbbaabbaaaabbabbbab +bbabbabaaabaabbbaabbabaa +baabaaaaababbaaabbbbbabb +bababababbbbabbaabbaaaabaaabbabb +baaaaaababaaaaabbbaaabbb +ababbbbababababaabbabbab +baabbbaaabbabbbbbbaaaabb +bbbabaabbbaabbbabbabbbbb +aabaababaaaabbabbabbabaa +bbbbbabaabbbaaaabbaababaabaaababbbaabbabaababaaabbbaabaa +abbbaababababbbbabababba +bababbabbbbbabbabbbaababbaaabbabbabaabbaaabbbaabababbbaa +baabbbaabbbabbbbbbaaabab +abbbaabbaabaaabbbbbbababbbbbaabbbabaaabbabbbaaababbabbab +bbbbaaaaababbbbbaabbabbabbbbbaababbababbbabbaaaabbabaaab +bbbabbbbbaabaaababbbbaaaabbbabbbabbbabab +abbbaababbbbbbbbaaaabbabbaaabbbb +bbbababbaabbbabaabbbabab +ababbaaabbaaaaabaaaababa +bbbbabbaabaabbbabbabbbbbbbbbabbbaabbbababaaaabbaaaaaaabbbbaaaaaa +bbabaabbabababbbaaabbbaabaaabbaaabababbbabbbaaaaaaaabbaa +aaaaaaaaaaabbbbaaaabbabbaaaaabba diff --git a/input2 b/input2 new file mode 100644 index 0000000..50888d2 --- /dev/null +++ b/input2 @@ -0,0 +1,1000 @@ +3-5 f: fgfff +6-20 n: qlzsnnnndwnlhwnxhvjn +6-7 j: jjjjjwrj +8-10 g: gggggggggg +5-6 t: ttttttft +6-11 h: khmchszhmzm +4-6 q: qqbjqqqj +6-8 j: gtkwwjjj +13-14 w: lwgwrwczwwhkww +2-4 p: vcnptzdppvpdzp +4-6 n: pmlnzwrnbnxnpmwmhbnz +4-9 w: wwprdwwwx +13-20 b: rbbcbbbbbbbbsbbbbbmj +1-3 r: zwhrnvr +4-6 f: fmfgfcf +13-15 z: zxzzzzzzzzvxkplvzzz +12-18 r: phjqccgmgzmdwxgtrtb +5-19 s: ssssssssssssssssssss +6-7 d: pddqmdd +7-9 p: pwrlpvlhpfpppzp +4-5 m: mpmmmm +9-10 s: ssxsssssrj +6-9 p: lpjrvpppp +6-13 r: rrrzvtrgrhqxqrvrvwzr +1-3 p: dpjp +6-7 w: wkjnmww +1-5 r: cfqhhr +5-9 m: wmmlpgmqmmrm +12-13 x: sxgnwxxkjwrxr +6-8 n: lnnrnnnnn +10-11 q: kqqqzqqfqqqqq +12-17 k: kkkkkkkkkkpkkhgvnjhk +12-13 v: vvvvvvvvvvvvvv +12-15 h: hhhhhhhjkhhhhhth +6-7 l: hmqtlllnllnlmtqnn +6-9 m: mcmmmdnmh +3-5 k: kkhtn +2-4 n: tnfjmnnn +5-6 j: cjwlmn +4-11 b: bcbbkrlgcbbc +5-10 r: rcrcgrrrzwrrxgpzwrcm +3-4 n: znnn +11-14 s: sssjsssssssssss +6-7 d: rwdddddmdddddkdd +1-4 s: gssssskssss +4-5 j: jjjjzj +11-12 j: cjjjgpjxnjjk +3-6 z: zzkdzzz +7-9 d: mkddddqdhddgdd +1-9 d: rxwqcdrswdg +2-4 m: gmmmn +2-4 k: kkkmk +15-16 r: rrrrrrrrlrrrrrrr +1-11 g: grgggcgggcggp +7-8 q: qqqjqqgq +13-14 c: cxccccgccvcpccccc +2-5 j: txvwlls +3-13 w: plwqwhbwdgxcwfmwjl +9-11 g: ggggggggggggggggdgg +3-12 g: ggsggggggpgm +3-11 g: bcgqgxmbjpwm +8-9 z: zxvzrzzzzzdvzzgz +17-18 z: zzzxzzzzzzzzzzzzsw +9-10 t: ftrmtttktttttdtmdk +15-17 r: rjrrprrrrrrrrrrfrrrr +7-8 k: kkkkkkkkk +6-13 n: nnnvnfgntnnnjnnxh +17-19 l: llllflllllllllllqlrl +11-13 d: hdlddddddhxddddkd +13-17 h: hhhhhhhhhhhhnhhhjhhh +1-12 c: ncccczwcnctcwcc +4-5 w: wgwkl +12-13 w: wwwwwwwwwwwwfwww +3-12 s: scssgwshsspsss +15-17 w: wwwwwcwxmhwwwwwwwww +1-3 x: xxxxw +8-9 p: mpppppppzptp +11-12 n: nntnbnnnnnmx +2-10 x: xrspbmkcthqsdxrdxwx +13-14 l: lllllllpllllll +5-10 x: xxxxjxjdrx +7-8 k: kkkkkkjk +9-11 k: vkkkkkkvkkzddbzr +3-8 r: lbrrcwbdf +6-14 l: lgwllrgllllllgllll +6-9 q: nqqkhqqtqgqc +2-4 g: ggxggggggg +12-13 k: kkkkkjkkkkkvf +5-9 b: scvbbpzbbbzbfb +16-17 d: mdddddddddddddcttd +4-10 l: lllflllllllllllllll +3-6 q: qqqqqtqqqq +1-3 n: pblsghl +9-11 v: bvvvmvfvvgtvfpv +4-5 s: ssshq +5-8 g: ggwgnggp +1-4 f: ffmr +4-5 g: ggwzs +4-5 h: fhhqs +10-17 l: clhlllhslxpgljpvlrkl +7-9 m: pnswhtmvmsrmjwrbfz +6-16 v: vvvvqcvvvdzvjvldvv +5-6 c: cntcrl +12-13 n: nnnnnnnnnnnnln +2-4 w: wwww +2-13 w: swrqssmmwrxtw +15-16 z: zzzzzzzzzzzzzzgqzzz +6-8 c: cctvkbdcwcbvhc +1-2 w: wwzdwjtm +1-3 z: mzzh +6-13 t: fttttdwtttttkht +3-9 g: cggfjgqngwmj +1-5 k: pkkkkkkrk +1-5 q: qknqd +7-11 t: tttttckttkb +6-7 q: qqqqqbl +16-17 c: ccccccccccccccctc +2-5 v: vfcnvlvvvxvrnvvvvvv +1-5 w: nwtwnnwwhtwwdwwww +2-10 v: ftvxxbjzlqctp +5-7 d: nddddgddjdbk +8-11 s: wxqjwkcsflssm +17-20 v: vvvvvvvvpvgvvvvvvvvv +6-8 w: wwlwwwqfw +13-14 r: rrrrgrrrrrrrrr +5-6 t: ttttzq +13-14 c: cccccccccccccc +11-12 k: kwzkkkbdkjkk +10-11 t: ttttpttttrwwtttt +3-4 w: ljwwww +7-8 q: ggqzdvqqw +1-3 z: zzsg +1-2 c: crjvdhgwckszmzpcjmr +10-11 n: nngnntnnnqn +7-16 w: bwdgwwwgwwnnqtcwc +4-16 v: vfkvqvvsvnjhfvvv +10-11 p: fgbhpzqvkmn +10-11 w: wswgwqwszwwhwnwww +15-16 t: stwtfxttthptttttt +1-3 v: vlvsdmrv +5-8 z: zzzzfzzz +14-15 t: ttpvtrlqtlcdrlv +2-6 b: qwfnbkc +6-9 p: jppjpspplm +3-4 s: brgqssz +2-6 q: cqwqlq +13-14 d: rrdljqdddddcxzdc +8-13 s: tsnssssssssrcssrssq +7-8 d: dwddddgl +9-15 b: gspmhlgbbzbbbrbt +3-4 h: khhh +3-4 c: nkccpmcct +6-7 g: ggggggg +17-18 p: ppppppppppppppppjnp +2-6 f: rfjxtff +3-4 g: ggvg +7-9 k: kkkkkkkkkkk +11-16 f: fjdffrtfffjfdffcln +4-8 w: lhpdwbnfssswwfswwwrw +5-9 l: lvlllflll +5-6 t: wtrtlr +4-8 m: mnmmjgqtgs +5-11 n: nnrngbnntnk +5-8 s: ssssfssss +7-14 m: hrnbhsfcvdmxbmvzfvnq +1-5 x: xxxxxxxxwxxdg +1-10 v: vcjvvjvvvv +5-10 l: vvdmhskmprszklvvl +3-17 d: dsddkddddddqddddfjdd +9-13 p: pppppppptpppqp +12-13 h: hhhhhhhhhhjhh +1-4 z: mrvlzlzhzlp +3-4 h: hhmc +7-17 w: wwwwwwwwwwwwwwwwww +6-8 z: cgzxzznzzdhcvwh +4-5 g: mgggg +7-8 t: ttrthtdkjtgtts +8-9 w: wwwwwwwpw +9-15 k: kkkkkkkkkkkkkkk +8-14 q: qqqqqqqqnqqqqq +14-19 w: jkwbwwlwdcmwmmwwrwr +4-5 m: hsxgkdmz +2-4 v: vsvqvcv +4-9 h: grhnhhmhhxhlh +6-14 t: tmttrjbtjtfttc +1-4 d: pjdbrb +15-16 r: rrrrrblrrrrrrrxwr +16-18 p: pppjpppppptpplpppppp +4-7 x: mxtngxnpsx +9-10 b: bbbdbqvmrgbzbbbb +4-5 w: wwwwj +1-2 d: dgws +3-10 l: lglsphlbgfmgdtw +10-11 h: hhhhhfhhhpdhh +5-9 x: xxxxqgxxjf +11-19 m: bfmxmmfgzzhqwsmgwmlr +10-14 x: xxxrxkxxqrlxmpxbdx +3-8 l: lxlxvwlllznlptfv +5-9 h: hhthhhhshdq +1-5 q: sqqqqqqq +9-14 j: jxfcjpjfjjgjjjjjjjhj +1-7 g: gvdgjgsvvgnd +2-5 t: tmttpttttt +17-19 c: ccccclcccccccccccccc +10-13 d: mdvddtsddrxtx +11-12 g: gggggggwggzgp +3-5 k: hzxnpkq +9-11 q: qqqqqsqqqqq +8-9 x: btrkbxngx +3-5 g: jpkchcxcxhzfhsggqkg +7-13 s: ssssssssscssssn +13-15 p: pppppppnppppppp +5-15 f: ffffjfffffffffgf +2-4 p: zqphp +1-4 r: wrrr +3-9 b: jsjcbrkkczkzmjbg +1-2 k: kkkkl +2-3 n: dlnxjwzstsdxns +7-14 v: fvvvvzhhvpsvvckdvv +2-8 r: rrrrwrhrrrr +5-8 n: nnxdnnnnnn +5-12 c: scmcdscccccmcc +9-10 v: vvvvvvvvjm +14-15 w: lwppdwwwwdmrrww +6-7 c: qcgcvxdrcccpxchrnlq +8-10 x: hbrqsksxwxxttz +18-19 w: jnftgwpwmwfdgrcpkww +3-4 k: ffkj +5-9 f: flffsvffsff +3-4 k: kkkkk +1-3 l: dlglkll +10-16 f: bfffjzfffnfffffxhfff +11-20 d: ddbdqsddddddddddfddd +6-20 l: vmjltmkclbmqrflzgdzl +5-19 f: ffffffffffffffffffff +5-10 n: nnnnmnnfnz +4-13 f: kmrfrfkvjxdbftvhnsdm +10-11 k: kkkkkkkkskk +12-13 k: kkkkkkkkkkkhj +7-8 p: ppppppnhw +5-8 l: gtpllwklh +13-14 h: hhhhhhhhzhhwsrh +7-15 h: hhhhhhthhhhhthqgfh +1-3 f: mfdmhv +15-16 f: fffffflfffffffbqf +12-13 c: cccmcccccccxn +2-12 q: nqltxqfdcrxqvt +8-10 d: dddddddddvdddd +2-9 g: mdrwnvtsd +12-13 l: lllllllllllll +2-3 m: mnrgmdm +6-9 v: hvvvvvvvv +4-7 q: bqqqrqcqqqq +8-11 v: vvvvdvvvvvr +3-4 n: cnnw +2-12 r: rrrklfrrrksrr +2-12 p: pxppklhsppwdxwcpzvm +10-11 n: nnnnnnnnnnn +5-6 w: wfwwww +3-5 p: pppppp +3-8 g: ggggggggggggggg +1-4 x: xxxxx +11-16 d: ngcdkglddtppbddgdrd +11-12 k: kkkkkkkkkkhr +12-13 c: hgxxchcvxpdlsrt +1-3 m: vmmm +4-6 z: kvzgzzzp +11-12 d: dzddzlcbvdxk +10-11 g: ggsgggggggggdz +6-8 q: xfhgpqltbfbdzqg +4-7 v: vvvlvcxmvvxq +5-7 v: vkkgvgvnpvvlpgkv +6-7 b: bbkvnwbqblbvbb +2-4 l: wmll +6-9 j: djqjcxxljm +3-4 j: nmzcsnlnjjjdms +3-8 w: wnwwsvww +9-20 m: wbntxzztwmblxmsmltmg +7-8 r: rprrrtrf +1-3 r: lnrfxfswmhgvf +5-12 k: zlkdlktsrqjt +13-14 v: vvvvvvvvvvvvvbv +11-12 d: ddddddddddgc +9-11 c: mdwpjjcdcrc +5-6 m: mmmmnl +5-6 l: lblldn +13-14 c: sccfcxsnsclccc +4-5 q: qqkkq +5-8 m: mmmmmmmm +5-8 z: tzhzzttzvwfcv +12-15 b: bbbbbbbbbbbtdfb +7-10 b: bbnplbbxxbh +1-7 x: zxxxxxvx +6-17 b: kbnbbbbbptbbrbbbb +1-3 l: llllll +13-15 c: ccccccccccccqcz +1-8 s: sssssssb +12-19 x: xxxxxxxxpxxcxxxxxxq +12-13 x: xxxxxxxxxxxxxx +14-18 w: wwwwwwwwwwwwwlwmbk +7-8 q: mzwqblqqz +1-7 p: hrppppgdzp +2-7 n: qmvpmsjncgkgpbb +8-10 x: xxxxxxxwxx +2-4 v: rfcpmpvsswsrjkxpdrxh +14-16 k: kkkkkkkkkkkhkkskkt +14-15 d: ddddddkdddddrqdd +4-16 m: njmqmmmjfmmxhmwgdbc +12-13 h: hdmdfhhhzhkdhr +3-14 n: nbntrsmnmrcwbf +6-8 h: hhwhhlhnhh +18-19 v: vvvvvvvvvvvvjvvvvvp +11-20 l: ldllllbvllmqllmlllfl +2-3 d: dcddd +4-6 n: bsnncn +3-6 f: dwlfqfzgs +8-12 d: xdddddfhnddfddd +5-13 l: llllqlllllmllll +10-14 m: mnmzrmmmmwmmqm +3-12 c: qjchcclnbccccpc +7-16 j: jjjjjjwjjjjjjrjnjj +1-10 v: svvdvvgmgpkfkvhvv +2-4 b: gbpbczblbbv +7-9 w: drwwbwtgwswwww +2-8 h: fhkprhplz +1-6 m: mmmmwm +3-4 g: gggp +1-3 q: qqqqj +10-11 h: htfrdwrnkzntnfpdmkhq +5-6 x: nxxxxxxxj +7-8 w: wwwcwwww +1-5 h: lhhhhh +7-8 f: ffjfftff +3-5 g: kdgfgjgbghggp +2-11 p: flgpvfbhpzxmmntw +12-13 z: zzzzzzhzzzzgzzqz +12-13 j: ttmhmdfjpdpnj +5-7 h: hhhhvhh +9-13 x: xhxbxxsxxqwxxvxxxx +1-3 c: ccchcc +2-5 h: hhrsh +1-3 q: rqqq +2-8 x: sxrxbcxx +12-15 b: bbbbnbbrbcbtbbb +14-18 m: hmmmmmmmkmmmmmmmmrmm +1-4 v: vvvv +5-11 h: brnzvqhrrwh +4-10 f: dbtfdvlfnffqmwp +3-16 r: krrrvmrwrrrtrrrrkrwr +11-15 c: gxbccccccccccbh +13-18 z: zzrzzzzzzzzzzzzzzzz +1-3 l: lkvxtrthfvmdzn +7-9 p: vpppmpppppp +3-4 w: wwwwwwww +8-11 z: vlzzzlzvzzmzzz +2-4 v: vqfv +10-11 s: sssssslssgss +4-5 z: zzzww +11-19 p: zpbpdjfjpdfgnpphhpg +1-8 f: fftlxmfl +9-10 p: phlpqzppxpxp +5-7 q: kbqjqqq +3-6 m: jcblmv +9-10 l: llllllllll +13-14 w: wbwhwwwwhwqwmswwmjwf +6-11 j: jjjjvtjwjbdjj +4-8 j: jljjjvgj +3-4 r: lrhvrzrr +2-4 p: plpfkphpq +2-6 b: bbbbrbvwbbgh +2-11 t: mmjmcwcdcbtztxfbtst +7-15 r: grsrrjrrtrgvrtrrr +6-17 d: dddddgddpddzddddddd +3-10 t: qpnbrnmmjtjxtdg +6-7 v: vvvvvhb +5-20 j: vxmkjnssjdtldsdwltlg +7-10 r: rrrrrrrrrrr +2-4 r: rrpl +3-4 m: mmzg +1-8 h: fshhjrhm +5-8 m: mmmvmmvmmnmdxnjcjpn +8-10 m: mmmmmmmlmzmm +14-15 q: qqqqqqqqqqqqqqb +6-16 q: qhkdtqnzqqqjgjrqrkbq +3-9 b: gtbbfgfhbs +14-16 h: hhhhdhhhmhhhhmhhh +9-10 n: nnnndnnnvjnl +11-12 p: pqpppppppppppp +7-9 d: ddpwfdtdd +6-10 z: qzzzzjzzmz +9-14 q: qqdjqdqqrqqwqnqqp +6-7 k: kkkkkbkk +7-14 j: hjvjmzkhgltffljjvjj +4-5 z: znhzz +11-16 r: rrrrbxdrrqrrsrrb +5-8 v: vvhvvvvvwvlvhlqg +4-10 n: wvnnjnndcnk +5-6 g: ggkggk +8-9 w: wwwwwwwww +5-9 r: mrwrrrrrx +4-6 r: jcfrjrrrg +6-9 w: wkwwsxwgfcwqb +5-6 x: grxjxnrb +2-7 s: nsmldnsszdk +5-9 j: gjjzkjvjwjcjbj +6-11 r: jtrgcvwccrrrfmj +7-12 j: jfjjmjjjjxjqzdjjxq +1-2 n: nnwqcnr +5-16 l: lllpclllllllblllll +5-6 j: wjgdjcdpjxfjxnjj +3-16 s: klstwqksfclmcbbcn +17-18 t: ttttdtttttthtttttttt +9-13 p: ppppppvpvhhqp +1-2 n: tsnnn +3-4 p: jpqpjmpplpw +4-6 t: dtfthsxtfpd +2-6 m: zhszctkm +1-13 p: dppmkpbprgppxcpvhrpz +2-7 m: gvmmflp +9-16 c: rcdsppjbcwdxnfbc +5-15 p: pppxpppqnhpptpppz +10-13 q: xfhqhkqkjqjwqqcfrgl +14-15 t: tttttttttttttdvtttt +5-8 q: qqqbqvqzqqn +1-7 v: cvgvvbcgjv +6-9 r: rrrrrrrdr +2-11 j: wjjgxngswkj +11-13 d: dddddddddddddm +5-8 p: pzppppppkjp +15-16 c: cccccccccccccctc +1-7 c: vsvkccbc +2-5 h: hhhhchhhhhhhhhh +9-11 n: nnnnnnnnnnnnn +11-12 q: mdmfmkxcxzjq +6-11 m: mmkgnjdhfbc +1-4 d: dgrdwbdfdkdrmthsj +12-14 k: kkkkkkkkkrjkkkkk +2-4 d: hdrvdzd +2-3 s: sxmsssssssssssssssss +13-15 z: zzzzzzlzzlzztzzz +3-8 r: lxrrrnvrtrgnmkrr +6-7 w: wwlbrwwww +4-7 r: zlnmmkpnrkkcrrxrmfq +2-6 v: zgvvjjvvjhjv +8-11 l: llllllllllcl +8-14 m: mlmldmmgnqzmmmm +7-10 z: wzzzzhtzdqzznzz +4-7 k: mvgwkkk +5-9 p: pdpltvdpptpppg +4-15 q: qqqfqbzqlqqqqqpqfqs +5-7 q: qqqcxqqm +14-17 x: rltjxxbxxxllsxwcx +1-13 w: gwggwwwwwwbsbwkwwd +8-14 k: kkbkkkkhkkkxjzblgk +5-8 p: cppnpprp +6-7 k: jrnvhkkgkkb +12-14 h: hhhhhhhhhhhhhn +10-20 j: gjwjjjpjjljjjjjsjjjj +16-17 n: nnnnnnnnnnnnknnnnn +5-6 f: cdpppf +12-13 z: bvpzqzzlwzccfszt +1-9 k: wdkkvtrprltkkltz +9-16 x: xxxjxdxhtzjxgxsbx +17-18 j: jjjjjjjjjjjjjjjjlrxj +2-5 x: xkknmxxxn +3-9 f: tfffhfffffff +11-16 r: rrlgrrqmrrprcrrrvjr +9-12 m: nrlmgmxvgkmpmqvntx +4-7 r: hrrrzrrnm +3-15 g: stgjgbgggvdljcgdgfg +6-9 j: jjjzbpjjjjjj +2-3 p: ppjp +9-10 t: tttttttttt +10-12 w: wwwfwvwvnkwdwww +11-14 d: nvljddddftrndzx +6-7 r: rlrrrbqcrqr +2-4 c: xbdl +11-18 c: ccccccccccvcccccccc +5-6 j: gjjjjjj +3-7 w: xwhnqlhnpfrvlkqqrp +6-19 q: qqqfxdglhqqkqqqjnhdq +8-9 d: ddsdddqsv +14-16 g: gggggggggggggggt +3-5 b: bbbnh +11-14 t: mtttwttfttttltq +8-10 x: xxxcxxxfxq +8-11 l: lfgvnlzrfcllnxss +1-3 t: gtttttttwgtptt +1-20 j: jjgjlqjjcjcjjjsjgjlj +8-14 v: dqgmngvvqnswvvrrvc +2-8 m: gmpkmmsmmmmm +5-6 m: mmmmtm +6-7 z: zfzrxzxz +4-15 k: wmwkhhskgwzqpnk +2-6 d: hddddfzdsdtvg +9-10 g: gggsggggggrgggqg +11-12 m: mmmmmmmmmmmm +5-7 w: wwhqqhwwwwd +4-9 k: gtkrkkkdfk +1-4 g: kgtvg +7-11 r: rhdbzjrwrcr +9-18 f: fjffffffdffkfffffvf +3-5 t: ttttt +13-14 q: qqqqqqqqqqqqcqqq +1-8 n: vnnnnwnqlbln +3-5 s: ssmss +2-4 q: qqqbkvqxh +3-4 n: nshscq +10-18 s: sssssssssnsssssssgs +9-10 v: vvvvvglvzddvvjv +5-16 s: sspssssrssssslss +4-7 t: ttptxtt +2-4 r: rrrrrxdrr +8-9 b: xqvbbbbbh +3-4 b: bbbbc +1-13 v: qhvvvvlvvvvvdv +4-8 l: lhkllblwllll +3-4 q: qhjgq +8-9 p: rpbpppshdpp +13-18 k: kkkkkkkkkkkkkkkkkx +8-9 r: rrrrrrrrr +5-10 f: bjfwwqvjwffpnl +1-3 l: pbhl +4-6 g: mggfgv +1-4 t: tttttt +5-10 t: llqrtccxtttntxjcdczk +13-14 q: qqqqmqqqdqqfqgqqqq +6-10 w: wpwmwwrgwwk +13-16 q: qqshgkqkqvscqtqq +4-5 t: qttdt +2-12 h: fpbbxgpskzjpkvtr +10-12 z: zrszvzzzzrzkznpzw +1-4 z: tgzz +3-6 c: cdwccvgm +1-15 q: jqqxkqrqmtfqpvbpq +4-6 v: vjvlvvv +1-7 l: hjlllwj +6-13 s: lrspslfwsgjks +3-4 p: dpvk +4-8 h: hsjjhhff +1-18 k: pkkkkkkkkkkkkkkkkkk +6-8 n: nvcnxqnnrnnn +7-8 p: ppppppvzp +12-17 h: hhhhhzhhhhhkhhhhph +13-17 p: ppmpppnppppplpbvcppp +8-14 m: tmmcjvmmjgcfmmnj +1-3 t: tttth +3-4 x: zxxx +1-3 d: kpwhxpctcgdbdkb +5-6 z: knnlzzzzxjrghzb +9-10 w: wwmwwwwxgww +9-11 b: bqbbfbbwbbqbb +2-3 d: ddxp +10-12 g: gggvgsgtgggggbg +3-4 b: gbbb +8-20 c: jccqcxjcqfncfcbccgcc +4-9 z: zzzztzzzzzb +2-12 x: gmfmzzrxsqbx +10-12 x: xxxzbxxjxxxkxb +3-4 v: szpvbvlvr +2-5 r: grqqr +4-8 q: mqqnvqvqqq +6-10 v: vdbvnvvxvvvnvvvvv +4-10 d: dddtdddddjd +3-4 l: klmc +10-13 k: kkbkkkvkhkvkkkkkl +1-3 v: vvkz +13-14 h: pkgffgcszgsghbcdtpm +11-16 c: dgccccccctchxbfm +8-9 b: bbbbbbbbbtb +1-9 h: hrnhhlphhh +17-18 s: ssssssssssssssssst +5-10 h: hhhhhzhhhhhx +2-7 k: dlrncbkkwp +3-5 k: kfqkk +4-8 d: ddddddddd +10-15 m: mmmmrmmmlpmmmrgmkmx +2-4 g: gsgggkm +7-9 l: llsllllvrzlxlrgglk +2-9 f: fzfbvfkff +13-14 p: pxppppppppppvf +15-17 z: nbkxkjtszptcndzdl +3-6 z: zzxzzhz +12-13 t: tttttttttttttt +5-10 s: pssbfsbsssnssvsb +9-18 c: ccxthchscjjdccvcncl +3-5 f: fndfqffffff +2-4 m: clwvcdjmz +7-8 b: bbbpbjbb +2-3 r: rbxx +3-8 j: jjjjjjjjj +5-10 v: zrwnvbrvmm +4-6 h: hhghhhhh +6-8 f: fnffzfwfgffpfc +5-6 q: qvqqqqkqqq +3-5 v: vgwvrgqc +9-10 p: pppphbbpphppb +10-12 l: rdjrcxkgflll +9-14 h: qwwxnhfhnfhhbhhjr +9-10 d: ddddpddddd +4-13 w: wwwwwwwwwwwwwwww +8-16 x: xrxxxxxxxdlxxxxxxx +6-10 p: pplppkpzwb +5-7 j: wpjjjgjjvjqjrgj +4-13 w: cwwswwwwwjwwdvw +5-6 j: jjjsjjj +4-5 c: ccfccqdqctllbm +7-13 c: bcccccccccccccc +4-5 p: pgptw +1-4 p: qpwmp +3-5 f: fftfff +2-6 m: mmhbpmjlx +9-13 r: zrrczrlrzqxrszrrlrr +2-9 w: xrszwwwdkww +6-14 g: qlwswsgjdlgmzvwg +6-8 z: zzzzzzfz +6-7 w: xwzsjjr +2-13 f: fxmfdnfffkpggz +1-7 d: rdnlqdplfddjdd +11-14 j: kjjvjjjxpjjjjjzjjjz +12-14 p: gpppwvmqpfpptpfppkpc +6-11 k: kkkkkhkknkkkkkgk +2-6 m: swpgmf +1-3 x: sxzqnxxv +12-18 n: nnnnlnnnnnnnnnnjnxnn +3-4 p: pppq +8-9 v: vvvvvvvpv +6-9 l: ltsldwtlhll +11-14 x: xxxxlxxhdtxxxxxsxx +4-5 q: qsqvqvq +5-6 b: sbbbbt +10-13 l: lllllslllrllll +1-5 m: zmmmmmmm +2-10 s: ssssssssss +5-8 r: qqcsbjcrljvksc +11-15 n: bndcnknnxnnnnnbn +14-15 v: tvvvvvvvvhqwvvv +2-3 s: jsvcsb +12-15 d: mddddfddddlxddddd +12-18 w: wwznwcgwwwwwwhwwgwgw +2-9 v: dxlvvlvqg +2-5 h: njpsxr +11-13 m: rmmmmmmqmmzmtmm +4-8 m: smmmmmmm +3-10 j: ngwtkjfrjjtrxfnvj +2-3 p: ppwwpp +3-5 c: cbmcncnqc +11-13 m: mmmmmmmmmmcmm +4-14 g: gggggggggggggxg +2-4 b: bbfb +16-19 p: ppppppppcppdpppmppwp +10-12 g: gghgxgkvggrggrg +1-8 b: wjjqktjbbfkdz +8-11 c: cqccdcncfcccnc +2-10 z: qzvlqltzns +3-7 p: kgpmpzpbx +1-6 m: mxmdmlmmzmmmmmmmmm +1-7 r: rrrrrrrrrrrc +8-10 h: whhhqhhhjjhnch +6-10 x: xwxxxxkpxdkdnxvh +10-12 z: zzzzzzkzzpzzzzz +1-12 s: dssssssssssds +4-7 f: fvzbfcf +5-6 w: fwwxfwmswxkd +14-15 g: gggggggzgggggfhg +6-7 j: jjjjjnb +1-6 v: vcgksvnrbgsvkrwsc +6-15 w: wkvwwwpqwwwbtwxvhw +8-9 m: smmmmmmmmm +14-15 r: rrjrlrrrrrrrrzbr +3-8 w: tjqncxsnqkdpwzm +4-5 k: kkkkk +8-11 z: zzzzzzpzzxzzkzglzrz +5-6 k: kkkktzk +18-20 w: wwwscwwwwwwwwwwwwgws +1-12 z: dsfxzctdzzjxbt +14-15 q: qqqqqdqqqqqqqqq +7-10 r: rrxrrqrrxcbr +1-13 d: fmgjzgqhdhddd +4-6 g: mnggxttn +6-7 v: gwtmscl +11-14 g: gggnmgggggjggcgggrgg +17-18 k: gcslskskkkwkwkklkk +14-16 r: rrrrrrrrrrrrrbbrr +13-15 s: sjsxszssgfssdgwsbbsp +1-9 d: dddddddddddd +1-13 j: mnjjzckxzjjdj +1-2 j: hwrqjxxcj +6-7 z: fzzzwxnnrg +2-10 x: wxnqjddpxxpxw +3-10 s: srvvssdcvzfn +3-11 w: gwwwmwvwwww +3-4 q: qnqs +11-12 d: dddqdddzdrddddd +2-15 l: wldlltxhrwzzlhz +4-7 g: vgsgkfgmc +7-9 t: jdsltcgttdttd +9-10 q: xvqjqqqwqqqqqpqq +6-9 b: bbkbnbgbbb +2-5 t: ttcjtbkb +7-8 r: rdrrqrnrrrrrvp +2-4 f: pnfqfffvpfffffhbffv +10-12 z: kzzzzzzzzrzpzszz +4-5 m: tmmgxlm +3-4 k: kwhhk +1-11 h: hhhndhhfhvhchmmqhz +6-9 m: lmmmmmmmtmmm +1-5 d: dwdkd +5-6 d: dddddq +7-9 j: jjjvgvmjdjbjj +3-6 w: gwzhpjwkg +10-11 h: hhlmftlhkhhnh +8-20 h: hhgnchpthzhhhhqqwhcz +6-7 s: sssssgfs +3-11 g: jfgqgbvqppjn +5-6 d: ddqkmbd +14-15 h: hhhhhhhhhhhhhphhh +12-13 l: fwkwphdlwmfwg +3-4 z: pmbncwz +3-4 w: lgwv +3-4 s: sshs +2-7 z: zzflznzzzlzl +1-2 k: klbjvbwpkkptb +17-18 r: rrrrrrrrrrrrrrrrlrr +7-8 l: mlqgltml +9-14 l: llljlllxllllvl +5-13 b: bbbbtbbbbbbbfbbbg +7-10 d: cddlddgdqkld +4-6 q: kqqqqq +5-11 r: rrrvrrrsrjrr +7-10 t: tttgtltttbt +13-14 h: hhhhhqhhhhhhndh +3-4 s: dsss +6-12 w: jwwtxwwwkkwbw +7-8 v: cvvgnvvv +12-16 q: qqqqqqqqxvqqqrqqqq +6-11 z: zzkvzvzzzxzzzz +4-9 s: lcrvsssmfs +6-13 c: ccccpdcbcbcgdcccgdcc +7-9 q: qpqqqqqqhq +1-10 k: kwfkkxrkwhtmkwknkx +9-20 x: dxzrxxxsxxxjxxsxdczx +15-16 c: ckcccdccccccgccdcccn +2-7 s: sscxswskxhchxpfs +2-3 h: hhlh +2-6 p: ppppppp +6-8 r: ztmrsjqtrk +1-2 r: drsdvpmzdn +6-7 v: vqvvvgp +5-6 g: gggggg +3-7 d: tfkddmjzjgdxzlkd +16-17 b: bbwbbbbbbbbbbbwbt +2-11 b: hbrwqqhkcrbbvmx +5-11 f: ffffqfffffffff +2-5 n: nnwhn +8-11 j: jxjsjjmjkjkjhjx +1-3 h: hhhh +5-12 t: pttttszttwvlt +7-8 q: mqqqqqqqtkq +7-10 z: xzzzzzdzzzzzzzz +6-7 l: ljzqklhmm +3-5 k: bkkkrk +6-8 x: xxxxxlxcxxxbx +6-7 j: jjqjcpjfjj +8-9 l: cwmllhslwv +14-15 z: zzzzzzzzrzzzzcz +11-12 f: sfccmxxffsfg +5-6 q: qqqqqqqq +12-15 t: tttttttttttttttt +7-12 q: pqwsnhqfzdtqxd +4-5 b: fbcbb +5-7 t: tttstft +2-4 h: vjmr +4-6 r: rrfrprr +18-19 x: xxkxxxxxxxxxxxxxxxxx +2-4 k: qklkc +3-6 s: svjsrs +14-15 j: pjjjhjjjjjjdjgj +2-15 l: lhllllllllllllwlll +2-7 q: qvqqgsq +2-6 z: zzlzzzn +8-15 p: pppppppspppzppgp +3-4 l: kfzbl +9-12 w: hqjwwtdwwlwwmw +3-4 k: lghgg +3-5 k: khgzkk +2-10 r: rrsjlmrsrr +2-5 j: jjjjj +10-12 j: jfgzbdbjwhjjjf +1-4 f: ffff +9-10 j: jjjwjjwzgtcjzj +1-6 m: mmmmmq +5-6 h: hhwhph +3-6 w: wwpwwz +5-6 q: qqqkcb +8-9 f: ffffffxrff +13-14 m: lqvpbrhgmxmkgj +4-6 q: pqqxqk +7-11 b: mbbnsvbbjbbmb +17-18 q: qqqqqqqqqqhqqqqqqqq +3-12 w: qzcwxswwzvwzb +10-11 l: llllllllxxs +1-4 c: bvcch +11-13 s: svssqfvssshst +6-7 l: lllllrl +5-8 n: nhqkfnggnpkbhpgntlht +1-14 g: pgrdgjggggpggc +12-16 n: hlnhkxpnnsfctsnq +6-8 c: cccftqcfqc +1-5 f: fbfff +1-15 t: mttptftctttptttt +6-11 t: cxtttnnfttt +7-11 h: hsrfjswhhhhhhhhc +12-13 b: bbbbbbbbbbbnfbvb +12-13 x: lzvxjxxxcxxxq +12-13 p: ltwhhhqvdjptbsw +7-9 z: zzzzzztzn +4-5 g: ggqlgg +8-10 r: rbqxwzfhlzt +3-5 g: grhgk +14-19 z: zrzzbzztszpzvzbdfzm +7-11 d: tdjbcdpdddb +3-7 j: jpqjjjj +1-2 m: mcxklcmmws +7-8 r: drqlcrfqrgrrxrrg +1-5 g: kgngw +8-10 r: wrrbfrrrpntjrrrgrr +1-4 s: sstf +3-7 b: fnjnpmfjlwb +2-5 s: pwjkj +9-11 t: tbtbtrsrfzntwqq +13-16 m: mmmmmmmmmmmmmmmmm +13-18 b: bbbbbbbpqlbbbtbtpxb +9-11 w: wclwwwrwwwkhww +7-13 b: bbbbbbbwbbbbb +8-12 t: sxlwtttttnhn +4-7 q: kmdqxcqswqw +3-4 r: rjrr +4-6 m: mdmdmmmm +6-17 h: kjrkchhnfhqqcrmhhhdh +6-9 j: vjjgcjjjpdj +7-9 x: xxxxsxxxxx +8-16 j: jjjjjgjnjjjjjjjczd +6-8 t: tttttttd +7-17 s: ssmsspvsssspssssfssl +3-10 f: cgffsqxhdmrvdf +1-3 f: wfpf +11-12 k: kkkkkkkkkkfqk +12-15 s: cxghswzsbttmvpscr +3-4 n: nnkn +7-17 w: wwlwnxwxwwswwwwwg +3-10 h: hhvhhhrhhhfghhcn +10-11 l: lllxlllllllsl +5-7 d: ddbddtddv +5-15 g: ggtggqggggzggggwggv +2-10 r: mrpdmtrzsrngstsr +9-15 t: bsbptttttqwzmmtgbgm +8-10 q: qqqqqqqqqqq +6-9 h: hlrbcsnhh +12-17 f: ffkjfffffffnftfmf +11-12 s: ssssssssssss +9-15 k: hpkskfkkfkkkkbkk +8-18 b: bbbbbbdbbbbbbjbbjw +2-14 p: nppppkkppppppw +11-12 s: sxhtlrtnbgss +8-10 q: lnwqqqqqqsqhgqgbq +2-3 l: llll +14-17 d: gdddtlfmrdscgsqcmkm +5-8 w: tmmskwpq +16-17 b: cbbbpzbbrrbnkbbbbgj +14-17 b: bbbjbbbbbbbxbvbdszbb +9-10 q: qqqqqtqqqqr +5-6 t: ctgttztrtn +2-3 f: gcfgw +3-8 d: ddzddddsddddddd +15-16 g: ggggggjggggggggg +4-10 m: mcmmmmmmmmmvmmmm +11-15 p: ptppxjppppmkgpvdp +12-13 n: nnnnnnnfnnnrn +1-7 t: tnbwtttmtt +1-14 c: ndncvjbkcmcjplcp +1-2 f: fffh +14-17 t: llzkwltkmdntwndqs +4-7 w: bffzzwdwtkwwv +4-8 p: zpbpqpppxpb +8-14 n: fdnnznhnnlhmtn +7-14 l: vltrjnzhplkshlt +1-2 d: ddbhsjtv +2-10 d: dddddbzrdrdd +4-10 p: pkppshsfmp +10-11 g: gmgggzvzmgjgggzqxggd +2-4 j: fjvjjqf +5-19 h: cstkhhrctkxhhsfzpph +6-16 s: sssssssssssssssks +17-18 v: vvvvvvvvsvvvvvvvtv +2-5 j: zjjjjj +2-3 r: xrrrqlxl +17-19 c: cccrcccgcwcchccccdcc +7-14 l: lllllllllllllcsl +12-14 p: jlmhpjgdzjkpnbmnbk +17-18 n: nnnnnnnnnnnnnnnnqv +8-10 b: lqzrtbzbrb +8-11 x: xgxxfxxxxkxx +5-9 x: xxxsnxnxk +2-11 t: stxbxwssmgthttx +6-13 t: ktbktrtqcnlrgtvtwt +10-12 q: qqqqqqqqqrqq +14-15 q: znptzmgllrfrqrf +2-13 f: ffffffcffffff +9-10 h: hrbhnhhhhhhhh +8-14 k: lskskkkfzkkkkmkkm +1-3 g: kbmswhmghvwvnwxzzk +2-4 v: vttv +2-3 h: qhhmhghbh +6-13 t: ttgtttttktttdttt +7-9 v: vvrrvvvvvv +5-6 z: hcfwdr +5-13 g: sgmgggcggggggjrggggk +10-14 k: kzkkkkkkdskkktkkk +1-2 j: ptjj +4-11 b: xnbbbbnbbbb +14-16 b: bbbbbbbbbbbbbkbc +4-12 w: mwrwrcpwkpzwxrj +5-6 l: qlndzlcvw +1-2 s: ksxk +4-5 p: spgwql +7-10 j: ljjjjvxjhzjjjjrj +6-14 f: ffffffffffffff +11-15 d: ddddddddddzdpdn +3-5 t: ttmtz +6-7 x: kxvxxxx +3-6 m: mhmklm +4-8 h: bnhjhphgqxphpnthh +3-4 w: gwpq +10-13 t: ttvttjhttcttrtthtb +1-5 f: ffffg +6-14 v: rtjjvpbvnvjwlvktvvf +8-9 n: nnknnnxmnnn +9-10 v: vvsvvsvvqcvvpp +9-11 x: xxxxxxxxxwl +3-6 h: bwqxnrhkhhwhhh +4-8 l: lvllrlcf +1-2 m: gtrm +2-4 z: zzzz +6-7 j: jjjjjjj +15-16 g: sggggggggqgclgggmggw +7-9 v: dvmskjsczkvjcpsv +3-11 d: hmdrdfdqrddzdddjdd +7-9 m: mmmwfmmmtmm +6-8 x: lxsbxmlx +3-5 q: qqqxq +5-10 n: nnnnznnnnrn +4-6 m: zmmbzg +10-11 c: cpdndvlfltc +2-4 k: kzkkk +1-14 m: jmmmmmzmqtmsmmnmm +3-13 h: gwhhrlbstldmh +2-5 l: rrlhdqkzst +1-6 s: sqgsjs +3-4 h: hhgpb +11-16 l: llllllllllllllwkllll +7-11 j: gjjjtvhjjpj +14-15 h: hjjvmbhfjhhxkbh +1-2 t: rwxgz +13-18 p: pppppppppppppppppppp +1-14 x: xxrxxjxhxxxxxxbxxx +4-6 b: fbzsbpbbb +12-16 j: fjjgmnjwbvhjzzzs +6-7 m: mmmmmtq +12-16 n: nnmnnpnnnnnknqxkjnjn +5-8 w: wmwwwwpwlwllzwkcw +7-10 q: gbpsnqwqfm +10-13 x: vxxxxxxxxxdqnxx +7-12 q: qqqqqqqqqqqqqqq +1-2 n: snnn +6-10 l: lljllklllwp +3-4 b: bsnjzbb +13-14 g: tggztfgdggngmglgg +6-16 l: bkcwjlwcnfwthlll +8-11 s: sssssssvsss +3-4 k: xmthtrcx +7-8 h: wpmjhbgg +4-5 p: pcpkvp +14-15 s: ssrssssssssssjs +14-15 x: xxxzxxgxxtxxxxqx +6-7 m: nwmfmxmm +6-8 k: hsknkmvhkgkkfzkjf +4-5 s: sssms +7-9 g: gfgqldxgxdjzglcgg +10-11 k: ckkthkzpdrfv +1-14 p: jptppkcppjpppppppp +10-11 x: pxkccxpxdsq +2-8 x: xsgxxxxvgxxk +6-14 j: jjjjjzjjjjjjjtjjjj +7-10 x: rxxnxrzgxxd +6-12 g: dmgggpgggwczggghggm +3-6 h: hdhjhhhhchh +11-12 r: zrrkcrrrrrlh +7-9 v: vhqvlvwvzqwqvrxvjnf +1-5 r: rvmjr diff --git a/input20 b/input20 new file mode 100644 index 0000000..28daebc --- /dev/null +++ b/input20 @@ -0,0 +1,1728 @@ +Tile 1471: +.#...##.## +#...#.#..# +##.......# +#..#.....# +#..##....# +.#.#..#... +##.##.#..# +...###..#. +......##.. +.##..##.#. + +Tile 1699: +.##..#..## +#....#.... +.##..#.... +##......## +#...#....# +#.#......# +...#...##. +#......... +#..#..#... +.#..###.## + +Tile 2909: +##...####. +.......#.. +.....#...# +#...#..### +.......... +##.......# +#..#.#..#. +.#..#..... +#......##. +.#...##... + +Tile 2297: +.#.##..... +#..###.#.# +....###..# +..#...##.# +...#...##. +#........# +#........# +##.....#.# +.#....#..# +...#.##.#. + +Tile 3109: +#...#.##.# +....#..... +......#..# +#.####.#.. +###..##... +........## +#..####..# +##..#..... +.#.#..#..# +####.###.# + +Tile 3767: +##..###.#. +##........ +..#.....## +...#.....# +#..#.....# +#..#..##.# +.#......#. +.......... +.......#.. +#.#..##.## + +Tile 1061: +..###.#... +.....#..#. +.#........ +..#..##... +#......... +#...#..... +...#....## +#.#....#.# +........#. +...##.#.## + +Tile 2953: +#..##.#.## +#.....#... +...##..... +#.#....... +..#.#....# +#.....#... +...#..#..# +.#.#....#. +#........# +..##.##... + +Tile 3659: +###...#.## +..#.#....# +#.#...#... +#........# +#.#.##..## +#.###.##.. +..#....... +.#.##..... +#..#.....# +.#..##..## + +Tile 3733: +.##.##..#. +.#...##... +#........# +#.###..... +##...#...# +.##....... +..#...#..# +#.#.#..#.# +.#.#...... +....#....# + +Tile 1741: +#.#....... +#.......#. +.....#..## +......#..# +##.#.....# +#......... +#.#......# +#..##.#.#. +...##....# +###..##.#. + +Tile 2053: +..#..##.#. +#...#...## +..#....##. +..#.#..#.. +#.##...... +#...##.#.# +...##..... +###.#...## +#....#.... +.####.#..# + +Tile 3391: +.#.#.#.### +....###... +...#.#.#.# +..#..#..## +.....##... +......#... +....#..#.# +.......#.. +#..#..#... +#.#######. + +Tile 2969: +#...#.#..# +###.##...# +.###..##.. +#......... +##........ +.#..#..... +#.....#... +#..#..#..# +.........# +...#....## + +Tile 3167: +#..#.#.### +###.#....# +.#...#...# +...#.#...# +..#.##.... +#....#..#. +#.##.....# +#...#...## +...####..# +..##..###. + +Tile 3719: +...###.##. +...#....#. +#.#.##.... +#...##...# +#.....##.. +#.#....#.. +#.#.#..... +#...#....# +...#....## +#.#.#.#..# + +Tile 1531: +####.#.#.# +##....###. +..#...#... +#.##...... +#........# +#.#....##. +......#.#. +..##.###.. +..##..#..# +###...#### + +Tile 1361: +#....#...# +#..#.....# +##....###. +#........# +##.....#.. +#...#..#.# +#...#.#.## +..#...##.. +.......... +#.##..##.. + +Tile 2393: +.###....#. +.........# +#.......#. +....#..... +......#..# +....###... +##.#.....# +##...###.# +#..##..... +##..###### + +Tile 1481: +####.#.#.# +...#...... +#....#.### +.....#...# +.......... +#.#....#.# +###.##.... +##.......# +#.......#. +.##.#.###. + +Tile 2851: +.##.....## +#..#.#.... +.#...#...# +#.....#... +..#....... +.#........ +...#.##... +...#..##.# +##...#.... +.####..#.. + +Tile 3833: +.#.##.#.## +#.....#... +##.....##. +..#....... +..#.#....# +##.....#.# +#..##...#. +#.#....... +.......... +#..#####.. + +Tile 2971: +##.#.#.... +......#... +#.#.#..... +.........# +.....#...# +#....##..# +...#..##.# +..#....... +#..#..#..# +..#..#..## + +Tile 3203: +###.###... +...#####.# +...#.#...# +#..##..... +.........# +#.#..#.... +#.#..##.## +###...###. +###.#.#..# +##.#..##.# + +Tile 3067: +...#.###.# +......##.# +.#...#...# +###...##.# +#........# +.......... +#......... +#.#....#.# +.....#.#.. +.#...#.### + +Tile 1993: +.#...#...# +.##...#..# +#....#...# +.#..###... +...#..###. +#.#....#.. +##...#...# +.....#..#. +.......#.# +...#....## + +Tile 2903: +##.#..###. +###.....## +.#...##..# +...#.....# +###...#.#. +#...##...# +..#..#..#. +...##...## +..###..... +#.#...##.# + +Tile 1439: +....##.#.# +###....... +##......## +#...#.#... +.......... +........## +.#......## +#.......#. +.#......## +.####.##.. + +Tile 3023: +..#..#..#. +##....#### +##....#..# +...#.#..## +.....##... +......#.## +##...#..#. +...##.##.# +#.....#... +#.#..#.##. + +Tile 2503: +##.###.#.. +.......... +#.#..#..#. +#####.#..# +##....#.#. +#..#.#.#.. +#..#...#.. +.#........ +#.#.##.... +.#####..#. + +Tile 1277: +#.#....##. +...##.#... +###....#.. +#.#.#....# +#....#.##. +.....#..## +#...#...#. +#.......#. +#...##..## +#..#.#.### + +Tile 2027: +..###..#.. +#......... +...#..##.. +..#.....## +#.#......# +...###.#.# +...#....#. +...###...# +##.#.....# +##.#####.# + +Tile 2333: +#.#.#.#..# +..##...... +.........# +.#.#.....# +#...####.# +.##......# +#....####. +...#.....# +###..#.##. +.######.#. + +Tile 2069: +#.#.##..#. +..#.....#. +..#...##.. +.......#.. +..#####.#. +.#####...# +..#....#.. +...##.#### +.......#.# +.#...###.# + +Tile 1999: +#.#.##.#.. +#.....#.## +..#.#..... +..#......# +..###....# +...#.....# +#.#...##.. +#....#.#.# +##......#. +#..#..#.#. + +Tile 3181: +...#####.. +....##.#.. +......#..# +.#.#...... +#......#.. +#........# +.#.....### +....##.### +#..#..#.## +########.# + +Tile 1321: +.#..#..... +..#...##.# +#.#.....## +....#..... +#....#..#. +.....#.... +#...#..... +#.#.#..#.# +#..#..#... +...#...... + +Tile 2549: +.##....### +#...####.. +##.......# +#.###...## +..#####... +#.#..##.#. +#..##..... +#....#...# +#.###...#. +#...#.##.# + +Tile 1951: +.#.#...#.. +##..#..#.. +..#.....## +.#.#..#..# +#...#..... +...#...#.# +.#.......# +.#...#.#.# +.#......#. +#..#.##### + +Tile 2111: +.##.#....# +#.#.....## +#.#...#..# +#......### +#....##.## +.......#.. +#....#...# +.##.##.#.# +#...#..#.. +.##.##.### + +Tile 1447: +..#.#..... +##..####.. +##...#...# +.##..##.#. +.....#...# +...#...... +.....##..# +..#..#..#. +.#.......# +#.#.#.#... + +Tile 2707: +.#.#####.# +###.#..... +.#.##.##.. +......#... +#.#...##.. +.#...#.### +....#.##.# +...#..#... +.#.....#.# +#.#####.## + +Tile 2437: +..#.#...#. +..#....... +.##..##..# +#..#...#.. +..#....#.. +##.....#.# +##........ +...##...#. +.....#...# +.#...#.### + +Tile 2699: +.##.#..### +.........# +...#..#..# +...#.#.... +#......### +##......## +...#.....# +.....#...# +#....#...# +..###.###. + +Tile 1913: +.#######.# +.#.##.#..# +#.##.....# +####..#..# +.##..#.##. +#.....#..# +...#.#.... +..#..#.... +##......## +.######### + +Tile 3361: +.....##... +#.####...# +#.#..#...# +.#.###.##. +....##...# +......#... +.#.#....#. +#........# +#..#..#... +#.#...#... + +Tile 3359: +.####.#..# +#.......#. +.......... +..#..#.... +#...##.##. +....#..... +..#..#..#. +...#.#.... +#..#...#.# +#######... + +Tile 2731: +###.##.##. +......##.. +#........# +.......... +.........# +###....#.# +...#..#..# +##...#.#.. +.#.#.#.#.. +#.#....#.. + +Tile 1543: +.#..###.## +#........# +#...#.#... +..#..##.## +#...#...#. +.......#.# +..#...##.# +....#..### +......#.## +###.#..### + +Tile 2861: +##..####.# +##......## +...##...## +.#......## +...#.#.... +..##.###.# +##.#.#.#.. +#..#...#.# +##......## +##.#...##. + +Tile 3559: +.#..#.#... +......###. +.#...#...# +#...###.## +#...#..#.# +#..##..... +####....## +......#..# +...###.#.. +#.#.....#. + +Tile 2819: +.#..#..#.# +#...#.#..# +....#....# +.#.#...#.. +....####.# +.#...#.#.# +...#.....# +#........# +#..###.#.. +.###...#.. + +Tile 1613: +.##.#..### +#.....#... +#...##..## +.##......# +#.##...... +.#..#.#..# +#..#.##... +.#.#...... +#....#.... +.#####.... + +Tile 1213: +...#.#..#. +#.....#..# +...#####.# +.##..#.##. +.##....... +##.......# +#........# +###......# +....#...## +######.##. + +Tile 2161: +###.#.#... +.##..#...# +#.##...... +.....#.#.. +.......##. +#.#....##. +##....#... +.#..#....# +#......... +....#...#. + +Tile 3041: +....#.#... +.##.##...# +....#..... +##.##..#.. +#.......#. +#...#..... +.##....### +...#....## +#.....#... +..##.####. + +Tile 1871: +#.#.....## +##.....#.. +..###...## +.......#.# +........#. +..#.....#. +.#.#...... +.#..#....# +.##.#..### +..##.#.... + +Tile 2687: +.#...#.... +...#.#..## +..#....... +#.#....... +...#..#.## +...#....## +##.......# +#..#...#.. +#.######.. +.##.##.#.. + +Tile 2269: +#......##. +...#..#.#. +#.#.....#. +#.#.##...# +.#.#.....# +##.......# +#....##..# +#..#..#... +#...##...# +.###....#. + +Tile 2089: +##.#.#.... +..#.#..##. +.#.......# +#.....#..# +........## +.....#.### +#.......## +.#.......# +..##.##..# +...#..##.# + +Tile 1097: +##.##.##.# +.....##..# +..#.....## +##......#. +....#..#.# +..#..#..#. +.#.......# +..####.#.. +#...#...## +##...####. + +Tile 3001: +.....#..#. +#..#...#.# +..#...#### +..#.#...#. +..#..#.### +#......... +#...#.###. +#...##..#. +#......#.. +......#.#. + +Tile 2803: +.####.###. +##........ +..#......# +#.#..#.#.# +##..#...## +#.#......# +.##..##... +.###.....# +###....##. +#..#.#..#. + +Tile 3407: +#......... +........#. +.........# +#.##.##..# +###....### +.......... +.........# +.#..##..## +#..##.#... +.##...##.. + +Tile 2423: +#####.##.# +......##.# +..#.#.#..# +#...##.... +#...#.#.#. +..##...... +#........# +.........# +..##.....# +#..##...#. + +Tile 2213: +.##.#.#..# +#...#.#..# +........## +.#......## +#...#....# +.....#..#. +.......#.. +.........# +#......... +...####.## + +Tile 2879: +.##.#.###. +.#........ +..#......# +#..#.#.... +..#....... +#......### +.#...#.#.# +#.......#. +#.#....#.# +.##...#... + +Tile 3779: +.#####.#.# +.........# +.#....##.. +##...##..# +#..####... +..#..##.#. +.#....#.## +####...#.# +#.#....... +......#..# + +Tile 2647: +.###.##.#. +#.####.### +#........# +#.#.###..# +...#...... +.....#.... +##..###.## +..#.....#. +#..#..#..# +#..#.#..#. + +Tile 3623: +...##.#... +#.#....... +....##.#.# +......#..# +#.....#.## +.....##... +#.#.#....# +.#..#..... +#..#.#.### +#.##.....# + +Tile 1733: +.##.#.##.. +###....### +...#.###.# +#.#.#..... +#....#.#.# +######..## +#####....# +#..#.#.### +........#. +.#.....#.# + +Tile 1601: +##...#.### +#...###..# +...##.#..# +.##.#..#.# +#.##....## +#.#.##...# +....#.#..# +##....#... +.#.#.#...# +#####..##. + +Tile 2203: +#..#.#.#.. +...#.....# +#...#...## +#......#.# +...#..#..# +#.....#... +...##.#..# +.#........ +........## +...###...# + +Tile 1051: +##...#...# +.....#..#. +#....#.... +...#...... +..##..#... +..#......# +.#.#####.. +##.#...... +#...##.... +##.#.#.##. + +Tile 3823: +.######... +...#.....# +.#........ +........## +..#......# +.#...#...# +..#....... +.......### +#..#.....# +.#.#.####. + +Tile 3121: +.##.##.... +.#.....### +..#.#.#..# +.##....#.. +...#.#..## +#..##.###. +.#...#.... +###....#.# +#...#....# +#..#..##.. + +Tile 3347: +#..##.#.## +#.#.#.#... +.##......# +#..#..#..# +#.###....# +#......#.# +..##.#...# +###..#...# +#.#....#.. +.##..####. + +Tile 1609: +#...#.###. +#.#......# +#..#.#.#.. +..#.....#. +#......##. +..###..... +.......... +...#.#..## +#.....#... +#..#...##. + +Tile 1283: +..#.##.... +.#.#.....# +.#..#..#.# +...#.##### +.##...#.#. +#........# +#....#...# +##...###.# +#.#....#.. +..#.##.##. + +Tile 2543: +#####...## +#....##... +..#....... +.......#.# +.#........ +...#....## +#........# +....#..#.. +#.#.#....# +#####.##.. + +Tile 1019: +###..##.## +..#....... +.#...#.... +##.......# +#........# +#.#..##... +...#...... +.....#...# +#..##.#.## +#####.#.## + +Tile 3433: +.##.....## +#..#...... +.###...... +...#...... +.#.#.#.#.. +##.#...#.# +...##....# +#.###....# +######...# +.#...##.## + +Tile 2207: +.##.#..#.. +....#..#.# +..#....#.. +....#....# +...##...## +....#.#### +#..#...### +..#.....## +#.#.#....# +.#.##....# + +Tile 1861: +#.#.#..#.# +.#..#....# +.....#...# +...#..#... +........#. +#..#...... +#....#.#.# +#......#.# +#.....#..# +#...#..... + +Tile 3163: +####.#..## +...#.##... +##..#..... +.........# +.#.....#.# +.#..#..#.# +.........# +..#....#.# +#.......## +#.###.#.## + +Tile 1453: +###.#....# +#.......## +..#....... +..#...##.. +#.....###. +.........# +..##...#.# +#......#.. +....#....# +##.....### + +Tile 1987: +.#.#.##... +##.##..#.. +##.#.#...# +.......... +....#....# +##...##..# +.........# +##.#.....# +.#........ +.#.#..##.. + +Tile 2441: +..#.#.#.#. +..#....... +#.......## +.##.#.#### +.......... +.#..##...# +#..#.####. +.#.......# +##.#..##.. +.#####..#. + +Tile 1499: +..#######. +##...###.# +.........# +##......## +.#....#... +###....#.# +...#..#... +......###. +#..##..... +.#.##....# + +Tile 1151: +#..###..#. +#.#.##...# +.......#.. +#......##. +..#..#.#.. +#.##....#. +#........# +##........ +..####.... +..##..#### + +Tile 2939: +..#####.#. +...##...#. +#..#.#.#.. +#.#......# +......#.#. +........## +.......#.# +#...#....# +#.#..###.# +.....#...# + +Tile 1571: +..#..##### +.......... +##.#.#.##. +........#. +#.###....# +..#.###..# +.#..#.#.## +#.#.#....# +#..#...... +.##..###.# + +Tile 3863: +#..#..#... +##.##.#... +#.#...##.# +..#..##.## +#..###.... +#..#.....# +##......#. +#......... +....#....# +..##....#. + +Tile 3881: +#.#.#..#.. +##.......# +.........# +.#.#..#... +#.#.##.### +#..#...... +.....#...# +#.#...#... +..#....#.# +##.#..#... + +Tile 1307: +.....#.... +###.##...# +.###.#.... +....#..... +..#....... +..##.....# +#....#.... +..#..##..# +#.#.#.#.#. +.......### + +Tile 3739: +...#.##.#. +#...###... +##.#..#..# +#..#.#..## +....#.##.# +........## +..#..#.#.. +.#...#.... +.#..#..... +.##....#.# + +Tile 1621: +##.#.#.#.. +#.##..#..# +...##..... +..#..#.... +.........# +#..##..... +..#..#.... +#..#.....# +#..#..#..# +....##.#.# + +Tile 3011: +.#...####. +..#.#..... +.......... +#.##.#...# +#..#...### +#......##. +..#.#..... +#...#...#. +........#. +#.##....#. + +Tile 2309: +#......#.. +..#....... +#...#....# +##.#..#..# +.......... +.#...#..#. +.###.#..## +##..#..... +..#.#..... +.#.####... + +Tile 2383: +.###.##.#. +###....#.. +#..#.#...# +#......... +..#......# +##..##.#.# +.#..#..... +###.#.#... +#....#...# +##.#..#... + +Tile 2273: +.##.#...#. +.......... +#....#.... +#.#..#.... +#.#....#.. +#......... +.#....#... +..#.#....# +#...#..#.# +.#.......# + +Tile 1549: +#..#.###.# +.#.#.#.#.. +#..#....## +#..#.##..# +#....##..# +....#.#... +#...#..##. +.....#...# +#......#.# +.#..####.# + +Tile 1867: +.#.#..#..# +#.##.###.. +.#...#...# +#.#...##.. +......#... +#.#..#..## +...##..... +.......#.# +#........# +.....#.##. + +Tile 3061: +...####### +#...#....# +.....##... +#....#...# +..#.#...## +.......... +........#. +.#..##..#. +...###.#.. +#.##.###.# + +Tile 2447: +#.#.####.. +#.......## +......#.## +#........# +......#... +####..#... +#...#....# +.#........ +#.#..#..## +.#.#.##... + +Tile 2243: +###.#..#.# +..#....... +...##....# +#..###..## +.##...#.#. +#.#..#.#.# +#....#.#.. +#....#..#. +..#...##.# +#.##...#.. + +Tile 2551: +.#.#.....# +#..#....## +..#....#.# +.###....## +#...#..#.. +#........# +#.....#.#. +##...##.## +......#... +.####.#... + +Tile 3037: +#...##.#.# +#...##...# +#...###.#. +...#...#.# +#.....#.## +#....#.#.# +#..##..### +....##...# +##...#.#.# +......#### + +Tile 2389: +###..##.#. +##..####.. +....#....# +.........# +.#..#..#.. +#..#.....# +...#...... +#...#....# +..#.....## +.##..##.#. + +Tile 2791: +.###.#.### +#....#...# +##...#.#.# +##.####.## +........## +##.#.#.... +.##...#... +#.#..##### +.#...#.#.# +#.#...#... + +Tile 1229: +.#.###.#.. +#.##..#... +.#.....### +.##.....## +#.#......# +..#.#....# +.........# +##.#.....# +###.....## +###.#.#... + +Tile 2579: +#..#.#.#.. +##.....#.. +####....#. +....#.##.. +#....#.#.# +###....#.. +#.#.#.#... +#..#...#.# +#..#.....# +..###.#... + +Tile 2837: +##.#####.. +....##...# +#.#......# +.......... +.......#.. +.#........ +#......### +#.#.....#. +##....#... +.....#.... + +Tile 2957: +#########. +.......... +###..#.##. +##....#.## +...#.#.##. +.......#.# +#....#.... +#...##.#.. +.#......#. +.....####. + +Tile 3083: +..#..#..#. +......#... +....#..### +#....##... +.#.......# +.......#.# +.....#...# +.......#.. +.....###.# +#.##.###.# + +Tile 3533: +...#.###.# +#..#..##.# +#.#..#.#.. +##..##.... +#....#.... +#.#....... +##...#.... +.........# +#.......#. +....###.#. + +Tile 1289: +#..##.##.# +......#..# +#..##..... +#......... +....#..##. +##...##.## +#..#.#...# +....#..### +#......... +......##.. + +Tile 1559: +.#..##.#.# +###....... +##....#.#. +.##......# +#.#...#... +.##.#....# +##.....### +#......... +.....#.... +###..#.### + +Tile 2693: +.#........ +.......#.. +#.#....... +.......... +#.......#. +#......... +#.#....... +....##.#.# +.....#.... +.#.##...#. + +Tile 1669: +###.###.#. +#........# +.......... +#..#.#.... +#...#...## +.#....#... +#..#...... +##....#... +.##.#..#.# +########.. + +Tile 3541: +#..####.#. +.#.......# +#......#.# +..#...#### +#.....#... +......#... +#......##. +..#.....#. +.......#.# +.###..#..# + +Tile 3389: +#..####... +#.##.....# +.#.##....# +#...##.... +.####...## +#.#..##..# +....##.#.# +.###..#... +#..#.....# +#.....##.# + +Tile 1889: +#.#.#####. +.##..##.#. +#..#.....# +#..##....# +##..#...#. +...#.#..#. +#..#..##.# +#.#.#...#. +...#..##.. +.....#.#.. + +Tile 3343: +##...#.#.. +#..##...#. +##.......# +#......#.. +..#...##.# +##..##.#.. +.###....## +#.##...#.# +##.......# +...#.....# + +Tile 1231: +......##.. +#..#.##### +.##...###. +#.....#... +#..#.##.## +#....#.#.. +#.#.....## +...#.#.### +.......#.# +#.##.####. + +Tile 3637: +.#...#...# +###.###..# +##..#....# +.....#..#. +....#..... +#.#.#..### +#....#.#.# +.##..#...# +.#..##..#. +..#......# + +Tile 3499: +.#....#.## +.##...##.# +#..#..#..# +...#.....# +.#....#... +...####... +....#..... +.......... +#......... +#..#.#.##. + +Tile 1009: +..####..## +.#.....#.. +.......... +.........# +#.#.#....# +#.##..#..# +.#..#.#.#. +#.....#... +#......#.# +.##.#.##.# + +Tile 2473: +#.#.##.#.. +.##..#.... +#...#....# +...#....#. +..##..#..# +.......... +...#....## +.#......#. +.....#...# +.#....#..# + +Tile 2137: +##.##.##.. +.........# +#..#.#...# +#........# +.........# +###.##.#.# +.........# +#.#.##.... +...#.#.... +###...#### + +Tile 1489: +.##.####.# +#.##.##..# +...#.##.#. +#.##...#.# +.##.#.#.#. +###......# +##.#...#.. +#.#...#.#. +.##...#.## +.#..###..# + +Tile 1291: +..##..#..# +.#....#..# +.........# +#......#.# +.........# +...#...#.# +#......... +...#.....# +###....### +.##.###... + +Tile 1483: +#.##....#. +#...####.# +..#...#..# +.........# +..#####... +.#..#..#.# +#....##..# +#..#.....# +#....#...# +.#.##.##.# + +Tile 3119: +..##.#.#.. +#....##.#. +##.......# +#....#.... +......#... +..#....##. +#...#..... +.........# +...##....# +#.#.###... + +Tile 2609: +.....##.#. +.....#..## +#.#.#..... +#.##...##. +...##..#.# +..##..##.# +#.##...### +......#.#. +#..#.....# +..#####... + +Tile 2399: +..#.#...#. +........## +#.##...... +#..##..#.. +.......... +..#.#..#.. +#......... +#...#...## +#........# +##...#.##. + +Tile 3847: +#..#....## +...####.## +...#....#. +..#...#... +##..#.##.. +#.##.#...# +...##....# +#.###....# +..#.#....# +###.#.##.# + +Tile 2531: +.###.#..#. +....#..#.. +#......#.# +.........# +....#..#.. +.###..###. +#.#......# +##...#..## +#...#.#### +#..#...#.. + +Tile 1627: +..#.##..#. +.........# +###....### +#....#.#.# +#..#...#.# +#......### +...##..... +##..##.#.. +....#.#... +#....##... + +Tile 2719: +#...#.#... +......#.## +#..##..... +.....#.#.. +.#...#..#. +...##....# +#........# +##......#. +#.#..#...# +.####..#.. + +Tile 3169: +#.#.#..#.. +..#.#..... +......#... +#.#.##.... +....#....# +...#...#.# +...#...##. +#...#..... +#..#.#...# +...#..###. + +Tile 1193: +#.#....### +...#.#..#. +..#..#..#. +#........# +#......... +#.#.....#. +##........ +#......... +#......... +...##..#.. + +Tile 1459: +###..##..# +.........# +.........# +.##....... +##.#...... +###......# +#.#.....## +........## +...###..## +#...##.### + +Tile 3943: +...##....# +........#. +..#....... +#.##.#.... +##.#.....# +#.......## +.#..#.#... +.......... +.......##. +##.##.###. + diff --git a/input21 b/input21 new file mode 100644 index 0000000..d6be6e2 --- /dev/null +++ b/input21 @@ -0,0 +1,33 @@ +lfqhssm pcxzx jrs rxhv mhtc dvc jvd ttvtr srvzpc thzbt jfkhrp zxstb tkpqpb lcplblp jflxtnp jnqgtrq zdfl kdxht dfxfqs qdths cnzz drcj stjr jtrrnz rlh ljfsmv ptrj rdnsghf kllgt dgtxv zpxvch rfnzl xszpg qmbn nfff cxzrtx fvmzmrd szsdbv mcmrzs hfdxb slgnk szsmh zngdbgf hgndp pxxjmds pdbcdp zczv hvkvz mhzbkt qjhmth gmstmh tvmpdqp ztbgdkd xdfjsm hbfnkq fxzgqn ljclf mpzq mxsbp cjdcn jgjx gnbxs sqrk tlqtz mdghb npvv nkrpv thvbm dfdr srgh xkvgj fmj smxk khqvlxn nkvdvs tnd fqgl dhlmfn rzvj ljvx (contains dairy, sesame, nuts) +tfshb zxstb thzbt dfxfqs prkc qxst nzdmcf mxsbp cjdcn hfdxb hbfnkq dfdr fdknsl nvrndt hhrdrl mcmrzs nkrpv szsdbv jgkvfl slfpcp dvc nfff bmttzd snlhkm nkvdvs sdts qftpx thd qxc zpxvch rdnsghf zpp jrnqx cqvqlp tvmpdqp lbzg kcvzks grzdp zhdtt mdghb zdfl qmbn kllgt mhtc gnbxs mk fmj jmc smxk sqrk fbkpkv mhzbkt nltxdhr hjnx thtsvz fstx ffmq dvffd jfkhrp mdlr rgpvhb (contains nuts, eggs, dairy) +txvg zjlxft fstx mk rkrqrk flrn cqvqlp ptrj pxxjmds tlst jxj fmkmrk xxgd lfrt mhtc drcj njpx fqgl kllgt hfdxb nltxdhr ztbgdkd cnzz qxc hjnx pcxzx ljclf gqsnd svbvqlq ljvx jfkhrp ndqgjs jrs cgrjf thd jrnqx slfpcp tcxz bfrj bdclf jtnfbh zxstb rlh lbzg jvd thvbm nvrndt jtrrnz cxzrtx khqvlxn vnrnn slsdck mhzbkt jlfmg zdfl gnbxs bmxlldv sstvx (contains dairy, soy) +pxxjmds qdths mjpqlvj szsdbv rknm tnd sdts fstx sstvx zxstb lgfmt pdbcdp thtsvz vxmvk mdghb jrs rfnzl smxk rrlszk jgkvfl ljclf gmstmh lfrt fxzgqn hbfnkq tlqtz crrgj rtpgqd jmc rxkt zpp qnvml lgcrd zpxvch ltnqh fdrgkrx gqsnd grzdp ljvx zczv mhtc jnqgtrq srgh qlcvd cgrjf jrnqx hfdxb mxsbp srvzpc kpn lbzg qjhmth njpx crbbk jlfmg bmxlldv hkchvb dxbmdj zpvkl dvffd kllgt srj sqrk jvjtrxt ndqgjs rxhv jflxtnp jvd ffmq bghtk bhrv cxzrtx fnfm zvmnd xbjqr kkdzxr bdsxbd mxprt cqvqlp pbqn cmfjr (contains wheat, nuts, sesame) +hgndp qnvml mhtc krgmpn zpp fdknsl gqsnd xhxrg tlqtz hvkvz ltnqh tkpqpb bmxlldv srvzpc slgstf fvmzmrd ttvtr jtrrnz dgtxv jrnqx zhdtt lgfmt kclh xxgd jnqgtrq hbfnkq kllgt slfpcp xszpg hfdxb ljclf rxhv bfrj zxstb ztbgdkd jtnfbh hqqzdc dfdr mtlcq lgcrd xkvgj ndqgjs rxkt lfqhssm dctgv ljvx zczv szsdbv tfshb bghtk zjlxft (contains fish, soy) +mhtc zpp qdths slsdck rxhv fmj hbfnkq cqvqlp kpn jlfmg nnxxsjh rlh flrn slfpcp ljclf gmstmh srgh jtrrnz tlst lvtrmn hhrdrl sstvx nkvdvs dgtxv zczv vmfhv jrnqx fnfm bdclf slgstf tlqtz cgrjf stjr krgmpn tkpqpb rrlszk bmpt ljvx dvffd tnd gqsnd dfdr ztbgdkd npvv svbvqlq rgpvhb qpktd sdts fqgl qmbn gvtvmn kdxht hfdxb rxkt kcvzks kllgt rzvj slgnk qxst khqvlxn qxc rtpgqd szsmh qnhvn tzxmtx fdrgkrx vxmvk kkmvg gnbxs (contains wheat, dairy) +lfqhssm hhrdrl tcxz srvzpc hbfnkq jrnqx kcvzks sxtfvrhl zhdtt dvc jvd rkhs rkrqrk fbkpkv vmfhv rltxnqf rgpvhb bhrv slsdck dhhf sqrk mxsbp dvffd slsqp tlqtz nltxdhr tvmpdqp cxzrtx crbbk jfkhrp zxstb mk stjr fqll mhtc dctgv xhxrg rdnsghf hfdxb xqnrcg xbjqr slgstf qmbn qxst ztr kllgt hvkvz fdknsl xszpg npvv nzdmcf szsdbv zgcncf qpktd bdsxbd zpvkl xdfjsm ncgn ttvtr jrs gqsnd pdbcdp hgndp bmxlldv zmdl ljvx rfnzl txvg qjhmth (contains dairy, wheat, nuts) +hbfnkq kpn mk hfdxb szsmh kkdzxr rfnzl jflxtnp lgfmt sstvx qxst dhhf npvv zngdbgf nnxxsjh mjpqlvj jfkhrp ljvx krgmpn ztbgdkd smxk jtrrnz bdclf vhchv zpvkl gnbxs nvrndt zbkjjkz qjhmth jmc pdbcdp fmj rkrqrk mpzq kllgt gfgmz crrgj dfdr jrnqx dnjt lcplblp nfff jgkvfl fnfm dctgv mcmrzs slsdck mxprt szsdbv dfxfqs mhtc hvkvz (contains wheat) +bghtk hkchvb nkrpv rlh jrnqx zvmnd hfdxb hbfnkq qxst mdghb jfkhrp jlfmg lbzg tnd ljvx krgmpn ptrj xdfjsm tlqtz slsdck dgtxv fdrgkrx xkvgj qdths szsdbv kkmvg mhtc nvrndt fvmzmrd mhzbkt jnqgtrq pbqn nnxxsjh zxstb ljfsmv nzdmcf cnzz fmkmrk dfdr jtnfbh kllgt ttvtr (contains nuts, fish, soy) +lgcrd ljvx mhzbkt zpp bdsxbd hjnx jnqgtrq fvmzmrd jtrrnz rxhv zvmnd xszpg mhtc zbkjjkz hbfnkq lvtrmn qdths gnbxs flrn dctgv txvg hfdxb qjhmth sdts zgcncf nltxdhr tcxz jlfmg jrnqx lcplblp fmj cgrjf mpzq gvtvmn jflxtnp jgjx qlcvd mjpqlvj kllgt cnzz jmc zjlxft jgkvfl slgstf ttvtr fqll pdbcdp srgh vxmvk sxtfvrhl rknm rdnsghf bmpt kcvzks szsmh srvzpc zmdl rltxnqf dhlmfn (contains dairy, peanuts, soy) +zpvkl fdknsl xkvgj fvmzmrd lfqhssm txvg bdclf hbfnkq jgkvfl bmxlldv qxc dhhf xxgd gvtvmn hvkvz srgh dhlmfn zjlxft svbvqlq jtrrnz rgpvhb jtnfbh mhtc nvrndt sdts bghtk gnbxs kkmvg gfgmz dgtxv mxprt fdrgkrx jmc jvjtrxt fstx sqrk hgndp mhzbkt jflxtnp szsmh zvmnd gqsnd crrgj tnd vnrnn srj vmfhv rfnzl hqqzdc slgnk szsdbv thzbt slgstf ljvx kllgt nltxdhr zgcncf jrs kpn fxzgqn dnjt jnqgtrq jrnqx zpxvch slfpcp ltnqh zxstb dctgv sxtfvrhl qdths (contains wheat, nuts, peanuts) +tfshb cxzrtx tvmpdqp sqrk qlcvd rltxnqf gnbxs bdsxbd lbzg fmkmrk ffmq dhlmfn jrnqx crrgj ljclf lfrt stjr jvd hbfnkq hhrdrl dvc srvzpc flrn bfrj kllgt fdrgkrx zpvkl sdts ljvx qnvml npvv nltxdhr pbqn vhchv zmdl nfff pxxjmds xdfjsm jrs hkchvb svbvqlq hfdxb rlh jxj vmfhv zxstb kkmvg bghtk mxprt (contains fish, nuts, peanuts) +zdfl fqll ljfsmv dfdr ljvx slfpcp jgjx mxsbp mpzq smxk stjr hjnx jmc kcvzks slgstf bfrj bdclf hqqzdc zczv mk rdnsghf jnqgtrq ltnqh cmfjr xqnrcg szsdbv hhrdrl dgtxv gnbxs pcxzx ptrj zjlxft dvc tzxmtx mjpqlvj fvmzmrd bmpt ztbgdkd tlqtz tlst kllgt zmdl gfgmz sxtfvrhl hfdxb bmxlldv vnrnn ncgn kkmvg nltxdhr ztr hbfnkq drcj dhlmfn cqvqlp rknm vmfhv nfff npvv mdlr jrnqx cjdcn sqrk krgmpn mxprt gmstmh xxgd mhtc nvrndt fmkmrk zhdtt rkrqrk (contains eggs, sesame) +cmfjr qlcvd bhrv zjlxft cnzz crbbk qnvml dfdr zxstb ljvx nkvdvs szsmh tkpqpb kllgt kcvzks fqgl tlst hvkvz srj fvmzmrd lcplblp qnhvn jlfmg qftpx slgstf tfshb drcj xxgd kkdzxr rxhv dvc vtbxs slsdck nkrpv gmstmh bmpt zmdl vnrnn dgtxv bghtk mdghb vhchv lfrt ptrj dnjt gfgmz vxmvk smxk bdsxbd thvbm qxst tlqtz zdfl dhhf mk dhlmfn rrlszk njpx sxtfvrhl hfdxb ztbgdkd zczv zhdtt xkvgj txvg slgnk lgfmt hqqzdc tvmpdqp rlh ffmq jrnqx gnbxs pxxjmds mhtc lvtrmn (contains sesame, eggs) +zvmnd kkmvg jgkvfl pbqn grzdp svbvqlq gnbxs mdlr rkrqrk szsdbv kllgt bmttzd rzvj qpktd vhchv srvzpc ncgn crbbk hfdxb qftpx srgh mpzq njpx dhlmfn hjnx mhtc srj tkpqpb ndqgjs jvjtrxt jtrrnz jrnqx sxtfvrhl snlhkm bfrj khqvlxn mhzbkt dgtxv jrs slsqp cxzrtx bghtk rtpgqd zczv nfff zjlxft zxstb xbjqr cnzz dfdr dxbmdj lcplblp qnhvn lfqhssm bdclf ffmq hbfnkq mjpqlvj gmstmh fxzgqn jnqgtrq lgfmt jflxtnp (contains peanuts, sesame) +crbbk hjnx thd ljclf ttvtr xkvgj slgnk srvzpc rfnzl tvmpdqp txvg fqll cjdcn mpzq crrgj vmfhv zhdtt sstvx ztr zxstb ljvx dctgv kcvzks jmc zngdbgf cgrjf kkdzxr rknm jnqgtrq xhxrg zjlxft cnzz xxgd lbzg dfxfqs jgjx jrnqx gmstmh dfdr lfrt snlhkm khqvlxn gnbxs gvtvmn zgcncf svbvqlq mhtc hfdxb dhhf hbfnkq bmttzd jvd (contains sesame) +jfkhrp dhhf slsqp jtrrnz mjpqlvj mdlr zmdl sdts mpzq tzxmtx bhrv nvrndt nzdmcf flrn tkpqpb krgmpn bmttzd zngdbgf nfff zxstb jrs khqvlxn jflxtnp tfshb slgnk ltnqh rdnsghf hjnx fstx hkchvb xbjqr fdknsl ljvx rlh kkdzxr smxk hbfnkq jgkvfl thzbt mhtc xdfjsm lfqhssm hhrdrl zvmnd gnbxs srgh rtpgqd sqrk jrnqx gmstmh rfnzl xhxrg njpx qmbn rknm fqgl rgpvhb lcplblp qxst qjhmth bmxlldv fvmzmrd ndqgjs zjlxft qftpx qpktd jmc mcmrzs slgstf rkhs dgtxv hfdxb nkvdvs (contains peanuts, nuts, eggs) +vhchv jtrrnz kkmvg bdsxbd zxstb kcvzks rxkt gmstmh sqrk mtlcq gnbxs lcplblp qftpx qnhvn drcj zmdl tvmpdqp nfff ljvx mhtc cmfjr dvc kllgt txvg qnvml slfpcp stjr pdbcdp fqll zpcqb slgnk zczv ljfsmv jrnqx fmkmrk rrlszk rlh xqnrcg dctgv srvzpc flrn zgcncf vtbxs lvtrmn hbfnkq xxgd hqqzdc jlfmg snlhkm mcmrzs xhxrg fmj cqvqlp bfrj srj sxtfvrhl (contains nuts) +nnxxsjh slgstf srj mhtc prkc njpx thd tzxmtx hkchvb fqgl zxstb mdlr qxc fmkmrk krgmpn bmttzd kllgt zgcncf cmfjr nzdmcf rdnsghf ptrj mxprt gfgnx lgcrd txvg snlhkm ljfsmv mxsbp vxmvk ffmq bdsxbd stjr pcxzx qnvml kkdzxr jxj jrnqx sdts dctgv dvffd fdknsl cnzz flrn qdths crrgj fstx fbkpkv zpvkl slsdck hqqzdc jflxtnp rxkt kclh bhrv gfgmz dfdr jvjtrxt lgfmt pbqn ljvx bghtk jvd xdfjsm kkmvg gnbxs ttvtr bfrj tlst jgkvfl cxzrtx hbfnkq (contains dairy, nuts) +jgkvfl bhrv ztbgdkd mcmrzs mk thvbm gnbxs xbjqr kllgt thd sstvx zxstb cjdcn jnqgtrq hbfnkq slfpcp jrnqx szsdbv hfdxb rlh xdfjsm lvtrmn kcvzks rknm mhzbkt hhrdrl tvmpdqp ptrj slsdck lgcrd zhdtt bmttzd slsqp lcplblp rrlszk slgstf rzvj crrgj hqqzdc gqsnd jtrrnz ljclf zpp crbbk ndqgjs mhtc tnd qlcvd npvv srj smxk rkrqrk hgndp (contains sesame, dairy) +rlh fdrgkrx mxprt jvd thd jflxtnp mtlcq rgpvhb rdnsghf svbvqlq flrn zhdtt zjlxft jtrrnz mjpqlvj hqqzdc mdghb mhzbkt bmpt lgfmt crrgj tkpqpb slgnk smxk lgcrd rltxnqf bhrv qdths vnrnn slsdck zngdbgf fstx jrnqx hbfnkq cgrjf gnbxs bmxlldv xdfjsm ljvx ztbgdkd dfdr nvrndt sxtfvrhl qmbn snlhkm nkrpv bdclf fqll qjhmth zvmnd tlst tcxz ttvtr xqnrcg grzdp mhtc jnqgtrq tvmpdqp dhlmfn rxkt xxgd kdxht nzdmcf xbjqr ndqgjs ptrj dctgv thvbm pcxzx zgcncf zdfl zmdl dxbmdj cxzrtx hgndp nfff fmj hkchvb bghtk kllgt cqvqlp fqgl zxstb txvg (contains eggs, dairy) +zpcqb crrgj rkhs jtrrnz lvtrmn mhtc vtbxs thtsvz vhchv rxkt lfqhssm ljvx xqnrcg dvc hkchvb thd sdts nkvdvs jvjtrxt drcj rxhv bhrv slsdck tlqtz gvtvmn cnzz ndqgjs qxst hbfnkq pcxzx kllgt hqqzdc fnfm smxk mxsbp bmpt jgjx tzxmtx jtnfbh jflxtnp khqvlxn zngdbgf slfpcp szsmh ptrj zjlxft fdrgkrx kclh dfdr rknm fbkpkv zpp jrnqx nkrpv vmfhv mdghb zgcncf qlcvd srgh xxgd mk kpn gnbxs kcvzks dnjt rlh hjnx kkmvg rrlszk lbzg tfshb npvv bmxlldv zxstb zhdtt rkrqrk zpvkl zbkjjkz zvmnd xdfjsm (contains eggs, fish, dairy) +mhtc hbfnkq jxj bhrv ljclf hfdxb jflxtnp njpx tzxmtx khqvlxn prkc cnzz bdclf kllgt cgrjf vxmvk xbjqr qnvml rltxnqf ljvx rkrqrk nltxdhr rlh dfxfqs gfgmz ndqgjs jrnqx qftpx fvmzmrd vhchv snlhkm srj ljfsmv dgtxv xxgd kclh dvffd szsdbv lgfmt zpp rxkt hjnx mxsbp thd krgmpn sqrk fbkpkv zxstb kpn hhrdrl dvc mpzq lbzg qdths ltnqh lfqhssm gvtvmn mhzbkt zngdbgf jlfmg (contains wheat) +jtnfbh mdlr cqvqlp kllgt hfdxb cmfjr vmfhv mjpqlvj rrlszk zpp jmc nfff srgh jrnqx xszpg qnvml slgstf hbfnkq drcj kpn rlh lbzg dvc mhtc hvkvz zdfl fbkpkv cnzz fqll zxstb dfxfqs vxmvk dhlmfn pcxzx ztr ffmq jvjtrxt cjdcn sstvx xkvgj jlfmg gnbxs bdsxbd cxzrtx kkdzxr snlhkm pdbcdp (contains sesame) +jrnqx qnhvn khqvlxn jlfmg kdxht rgpvhb cqvqlp qdths xszpg lgfmt ndqgjs grzdp hfdxb rkrqrk nltxdhr npvv krgmpn pbqn mhtc tzxmtx kclh dxbmdj fvmzmrd srgh mpzq kkmvg pcxzx fstx gnbxs slgnk jrs ttvtr ljclf nkrpv dvc bfrj kllgt rkhs thzbt qnvml fdknsl cmfjr hhrdrl hgndp xqnrcg jnqgtrq hbfnkq drcj tkpqpb gqsnd fmkmrk thd slgstf rknm nfff qxc vhchv kpn ljvx ptrj jflxtnp flrn qjhmth lvtrmn nzdmcf tlst fqll (contains sesame, dairy) +flrn rltxnqf cqvqlp gqsnd bghtk krgmpn jlfmg hfdxb xbjqr zjlxft fstx ljvx kllgt qxc npvv jxj jgjx srgh cmfjr mhtc dhlmfn sqrk svbvqlq tfshb zxstb vmfhv hbfnkq jmc jvjtrxt xkvgj kkmvg cxzrtx sstvx stjr ffmq thtsvz jrnqx zbkjjkz tkpqpb (contains nuts) +xhxrg hbfnkq kllgt hjnx mk nkvdvs dvc jnqgtrq lgfmt mhtc dxbmdj bdclf grzdp qnvml ljfsmv cqvqlp kclh rrlszk xxgd xbjqr thvbm smxk zbkjjkz fbkpkv rkhs mtlcq qxc gnbxs njpx bhrv snlhkm ljvx jrnqx zpcqb zxstb tcxz thd vxmvk slsqp ljclf txvg krgmpn jflxtnp rgpvhb (contains sesame, fish) +ljvx thvbm grzdp dfdr tfshb dgtxv ztr dhhf gvtvmn ndqgjs mdlr rlh zdfl zngdbgf zxstb mhtc rknm zpxvch jfkhrp hfdxb mjpqlvj nnxxsjh njpx lfrt nzdmcf jnqgtrq gqsnd gmstmh hbfnkq lcplblp jtnfbh khqvlxn sxtfvrhl slsdck crrgj jrnqx rrlszk thd slfpcp zvmnd mpzq pbqn hgndp stjr txvg gfgnx cjdcn xszpg kllgt mhzbkt kpn rfnzl (contains soy, eggs, dairy) +dvc tkpqpb vtbxs zbkjjkz bmxlldv pbqn rknm bhrv jflxtnp jmc kclh zvmnd dctgv hfdxb sstvx gnbxs zdfl hhrdrl tfshb mxsbp rgpvhb qftpx npvv slsqp dgtxv hjnx mhtc hqqzdc mxprt szsdbv xdfjsm gfgnx xhxrg pdbcdp qmbn zxstb jtrrnz thvbm ndqgjs svbvqlq gvtvmn drcj fvmzmrd zhdtt bfrj cjdcn zpcqb zjlxft slgstf rdnsghf lbzg cgrjf lgcrd hbfnkq ljclf rxkt thd rrlszk fdrgkrx smxk kpn qnhvn ttvtr bghtk jfkhrp thzbt jgjx ztr snlhkm jrnqx flrn pxxjmds njpx grzdp sdts zgcncf jrs mjpqlvj ljvx fmj dxbmdj jgkvfl (contains fish, eggs) +jrs xhxrg ljvx hbfnkq dfxfqs zpp mhzbkt mhtc lgfmt bhrv zpxvch dxbmdj kllgt ttvtr dctgv dfdr prkc gnbxs kdxht ffmq qpktd fvmzmrd gfgmz stjr vhchv thtsvz vnrnn kpn zxstb sstvx hjnx xxgd krgmpn qftpx rtpgqd thvbm fstx jrnqx tzxmtx ncgn svbvqlq slgstf rdnsghf qmbn tvmpdqp hgndp dhlmfn xkvgj jxj (contains wheat, nuts, dairy) +cgrjf hfdxb vtbxs qpktd zngdbgf bhrv kclh jvd zdfl nnxxsjh nzdmcf fmj cqvqlp zmdl kkdzxr xqnrcg rzvj ljvx thzbt nkrpv lcplblp kllgt rlh tkpqpb dxbmdj mhtc sxtfvrhl tzxmtx thvbm slgstf zpvkl zxstb txvg jflxtnp hbfnkq ljfsmv zpcqb jmc jrnqx dvffd jgkvfl xszpg dgtxv cxzrtx khqvlxn fbkpkv zpxvch tfshb slfpcp lgfmt smxk dnjt jfkhrp bdsxbd bfrj pxxjmds gfgnx drcj (contains dairy, soy, fish) +slgnk qftpx hfdxb qjhmth nfff fmkmrk qlcvd tlst fxzgqn ndqgjs lbzg rxhv lfqhssm gvtvmn jtnfbh ltnqh tnd gfgmz ttvtr rdnsghf rkhs kllgt mhtc hbfnkq tfshb nnxxsjh mjpqlvj rrlszk hqqzdc fstx jvd mk lfrt thvbm kpn grzdp rkrqrk dhhf zngdbgf txvg njpx zxstb vnrnn krgmpn srvzpc nzdmcf mpzq bmttzd dgtxv hvkvz rtpgqd srj vmfhv jrnqx dnjt cnzz nkvdvs vhchv xszpg ptrj zpxvch qmbn svbvqlq kdxht kkdzxr npvv stjr fbkpkv xqnrcg slfpcp snlhkm jlfmg zhdtt bfrj thzbt mtlcq fnfm fmj xdfjsm zgcncf jmc pxxjmds gnbxs qxst dfxfqs (contains eggs, soy) +tfshb rxkt tlqtz fmkmrk mtlcq dxbmdj zxstb rdnsghf fnfm qjhmth zpvkl jrnqx njpx cmfjr svbvqlq mhtc hhrdrl ptrj cjdcn vmfhv gfgmz hfdxb ffmq nnxxsjh mxprt gnbxs zpcqb rkrqrk szsmh hbfnkq bmttzd cnzz fvmzmrd kkmvg zdfl kllgt zjlxft thd dfdr prkc kclh (contains wheat, dairy, peanuts) diff --git a/input22 b/input22 new file mode 100644 index 0000000..95d4838 --- /dev/null +++ b/input22 @@ -0,0 +1,53 @@ +Player 1: +26 +16 +33 +8 +5 +46 +12 +47 +39 +27 +50 +10 +34 +20 +23 +11 +43 +14 +18 +1 +48 +28 +31 +38 +41 + +Player 2: +45 +7 +9 +4 +15 +19 +49 +3 +36 +25 +24 +2 +21 +37 +35 +44 +29 +13 +32 +22 +17 +30 +42 +40 +6 diff --git a/input23 b/input23 new file mode 100644 index 0000000..c13a556 --- /dev/null +++ b/input23 @@ -0,0 +1 @@ +362981754 diff --git a/input24 b/input24 new file mode 100644 index 0000000..bbb1ed9 --- /dev/null +++ b/input24 @@ -0,0 +1,394 @@ +swswwneswswswswseswewwswswsewseswneesw +nwenwnwsenwnwsewswnenw +swswwswswswewswswnewswsewwswswwsw +nwswswswswwneswsweswenwswswwsewswswswsw +sewnwnwwwnwenwnwsenwnwwwnw +sesesesweswseeseswnwswwswwseseneswnw +wsenweneswseseseeeeseeneeseeeese +neenwneneseneeneeeneseswnwnweesenene +swneswsewwwwwwswwswwswneswswwsw +swwwswswswweswswnewswwswsewnwswwsw +eswnweneeenwnwnenweeseeeweswswee +wneneseswswwseseswswnwseeeswseseswsw +wnwesenwswnesewnwneeswenwnwnenwnwwnw +swswswswswswswseswesenwseswwswweswnwne +nwwenwswnwnwnwwnwnwnwenenwnwsenwnwnenw +nwwnenwwnwnwenwwnwwwwsewnwwsew +wsenwwswwswesweeseneswnwswne +wsenwnewnwnwseenwnwsenewsesewewne +nwsesenwwnwsenwnwnwnwnewswenwnenwnwnwne +eesenwnewesenwneswseeseseeesweew +seseswsenenwswswswseswswswswseseeswwsw +nenwnenwnwenwswnwnwnwne +nwswsenwseewswsenwseseesweswnesenw +wnwwswenwsewwnwwwnwnww +seswnwsenwnwseswseseswseseeseseseenwse +esewswwwswwnewswwwwswwwwnww +eneseeeeeneewseneeneenweeee +wneswwswwswswnwwwswswswneswsewswswe +swswneswswsweswswswwwnwsweswswswswswsw +nesenenwnwnesewnwnenwswnesenwnwnenwnwne +neneswnweneeenwnwwnwseseeeneewswsew +nenwseneeseneneswneeeeeeneenwenw +neeswswnwseswswsesenwswswswswneseneswse +wswewswwswwsewnwwneswwswswsenew +nwnenwseswneseswswswswnwsesesweneenw +sesweseseseseseswnwseseseeseeesenwse +wneneswneenwwewnesenenweneneew +swswseseeneseswswswsenwswswsesesenwsesw +seewwwwwswwneswswswswnewwwnwnwsw +swwwsewwwnenewwnenwnwsewneseswe +neneseswsesenwseswwswsweswseswswseswswsw +swwnwwswswswwwswneswwwwwswewe +enewewneeseeeeeeeseneweesee +swnwnewnewswswswseswnweswswnwsene +swenwneeeneeesenwseesewneenwwneee +wnwnweswwnwwwnwswewwnwseswneew +swseeeeseeenewweesesenweese +nwsenenwnwnwsenwwsenw +eesewwwseeeneeseneeseeenweese +eeneeswneswneesweenenwneneneneenew +senwenenwswswseseneeswswswwwwsenwwenw +wwwnwnewwwenwwnwnwsewnweswsewse +nwnwnwnwnwnwnwnenwswnwnwsenwnenw +neseeenewnewsenenew +senwnwnwwnwnwnwswnewnwnenwwnwnwnwsenw +seswseeseseswnewseneswseswwnwseneswne +seseseseseneneseswseew +nwneenenwsweneeeweswseswenenenese +wnwnwnwnwwnwnwnwewswswnenwnwwnwww +wwnwswwneswswwnewwwsewseeenww +wnwenwsenwnenwnwnenesww +senewneneneneneseneswnweneneneneneee +sewnwsenwnwnwsenenwwnwwewwnwwnww +eseneswwwswswswswswswenwswsweswswsesw +nenewswweseeneeseeweeeeneswnwsw +swswnwwwsewseswswswnwwswseswwneswsw +nwnewnesenwnesenwwnwnwnewenwnewsenesw +seeswnwenwseseewseeeseneeswseesenwsw +swswseswswswsweseswswsenwswswnwswswseese +wswswwnwnwwswswseewswwweneswnwwse +eswseswswswwwwswnwwnwewnwwneww +swswsesenwneweseenweeseeswnwnweswse +wwwswneswwnewwswswswwwewwnwsew +wneswnenenewnenenenenenweswnweenew +enwnwnwnwnwnewnwnwnwnwenwnwnwnwwnw +eeeesenweeeeeesewewenwee +seseseeseeseseenwnwsesesesesenweswse +sesewnweenwnesenwnwswnwnenenwswwnesenwnw +swnwseswwswwwwwnenwswswsenwswewne +weseswsewswswseseneseseneesesesewse +senwwnewnwnewsenewseswswwwwswseww +swnwneneswswwneesenenwenwwneswneneeee +wswnwswnwneswswwsweswseneswsweewsenw +seneseseneswseweesenwseseenesewesese +seeesweeenwenweseseseeeeseee +seseseeseeenwnwseseseseswsesesewsesese +swnenwswenwnwnwenwnweswswweneswsenwne +swswnenwnenweneneseeewnenwnwswnwswnenw +swseseseseseseesesenenwseswseseseseseswnwsw +eneseeseseeseseeseseewse +swnenwswwswseswswswswswswswswswwswsew +eswnenewswswnweeeeeeeeeeseee +swwneswsenwnwsewnwnenewnwnwsenw +nweneeesweeneneneneswneeneenenee +eeeeseneeswew +nwnwnwnwnewnwnenwnwnwnenwnenwe +newswneswswsewnwswswswwwswswswseswsw +nweswswswseswseswseseswswnw +sesenesesesewseeseseweeesesewsew +swseseswswswswswneswseswsw +neseseswseseswsewwseneseswsenwewsesw +eenwwwwswswswswnenwseswswseswswww +seseseswseseneseeseseseee +esweesenweeesenenweesesweeee +eswseeewseeeeeeeesewewwenw +nwewwsewwwwsenwwnwswnewwwnwnw +swsewwwwswswswswnwwwwswsweesww +wsewswsenwneeswwwwenwwswweswswwne +eseswseneesesenwseesesewesesesene +neeeswnwseeswnweesenenwenenewene +seneneseeneeeneeeeenwneeenenew +eneenwenweneneneneneeneseswwse +neeesenwswswwwswnwsewnwswwwswswsw +swnwswswswseswswneseswswswsesenewswwswne +neneneeneneneneswnesenwswneneneneeneene +nwswnenwnwnwnwnwnwsenewnwnenwnenwnwnwnw +weeeeeeeeneeeesweeeeeew +nwnwnenwnwnwnwnwwnwswesenwnwnwnwnwnwnwnwse +nenwwwnwnwnwnwnwnwneswnwnwnwnenwnesee +wswnewneneewesewweseeswnewnwwsew +nwneseswnewneneneneneeneneswnenwwnenene +senwesenenewnwnenwnwnwnwnenwwnwnw +senesesweneeewneseswsewe +swwwwnewswwswwswswesewwswswswnw +weenwnwnwseneneswseenwnwnwnwnenwswnenene +seswnwesweeeeenweesee +wswwwwwwswewswsewnwswwnewwww +wwwwwnwsewnesewwwwnenwsewsenwwe +seswnewsenwwnwwesw +seenwsesesenwswsenwsenweswswswswnwswenw +seswnenwneneswsenwswwwesw +wnwwwwwwewnwwsw +swsenwsenwnwnenwwenwwswseseewsenww +enwswnwnwnwnwnwnwnwsewnwswsenenwneenew +neneseneewnenwneneenewnenenenwnenenene +nwnwwnewnwnwnwnwseeswswsenesenwwnwne +swneeswswnwswsenwnwswseneseeeswswswne +swweswneswswneswsesewnw +swwswenwneswseseswsesesesesenwseswnese +wnwnwseweenenwnwsenwswneenwnesenene +swswseseswswsewswswseesesesw +neseeeewwnwnenwseeeeswee +swnwneeswwneswswsewswewswsewswwwww +nenwesesesesesewwneswsweseweesesee +nesenesewnwwnwnwsenewnwwnenenwenwsene +swenwenwneeeswsweeseneeneneswe +swswsewneswswwswswwsww +nwnwnwnwnwnwnwnwsenenwnwnw +nwnwewnwwnwnwnwnwnwswnwenwnwnw +senwswnwwnesenwswneswnwwwsenwsenenee +neswseswenenwwnwnwnenwwnwenwnwnenwne +nenwnenenenenwnenenenesenwnenene +neesenenewnenesenenewneneeneneenenene +nwwnenwnwneenenenenenwnwnenenewseenene +senenewsenwnwnwnwnenwnenenwnwnewnenwnwnwse +ewnwwnwwwwsew +swseswwwswswwswneswenewswwswswswswswsw +sweneeeseeenwneseswseswseeneeswese +nwwnenwnwnenwnwnwnwnenwnwnwsenwnwswnwneswe +eeeeeeeweneeweeseeneeee +swenweseswenwnwswswnwnenese +nwwnwneeswsenwwsenwnenwenwwnwwnwnw +nenewseswwnenenewneseneesenenwnenenene +nenenwnenenenwnesenwnesenenenene +nenenenenewneneneneneseneneneswnenwnewse +wseseseseswsesesesesenwswenwseesenwne +eenesewneneseenenenesenewneeewne +seseswwseeswnwseswseweswswswswneswse +neeneneneneseswneneewneneneenenewene +eesenweesweeesesee +wseswwnwwwnwwnwneenenwnwswnwsenwnewe +wwnwewswwweswwwswswwwsweww +esweewweenwseswesweneeenwene +eewneneneewneneeeneneneneenee +seneseseseeseswsenwwseseseeseseseewse +eeneeneesenewneneneee +swwswenwswswswswswswsweswswswnwswswsw +wnwswweewwwnwwswwwwenwwnw +nweneseewwwwseenwenenwnwenwswwnw +eeesweseeweeeenwseneeewesenw +eenewneeeeseewseeeeeeee +ewseswneeeseneeenewenene +senwnwnwnenenwnenwnenwnwnwnwnw +nwnwnwnenwnwswnwwnwnwnwswnwnwnwne +nwnenwneswnwnewswnwseenenenwnenenenese +nwswnwnwnwwenwesenwswwnwnweneseswese +nwnwwwwsewweneswswwwsewnwnwenenw +esenwesesesweseseswsenwseseseseseenwsesw +eeeneeeseeseeeesewsweneewswe +ewswsweeeneeenweeneeewneseneee +seseseseseswsesesesesesenwsenwswswswsenw +neenwwsweeneswsesesesesewwseneesw +eseswweeseeneswnweeeeeseneese +swswnwswswnwseswswswnwswsweswsweswneesw +seseenwwnwneneweeseswseseswseswsenwse +seneseswswswswswswswseseseseswsw +eeewseseneseseseseseeeeseese +enwnwnwnwswnwnwnwnwnwnwnwwnwwnw +seseseswnwseseeseseeeeesese +swneswseswswwswswwneswswswswwswswsw +wwwsenwwwnwswnwwwswewnwwwnwe +seseswneneseswswneseswswsenwsesesesesesew +senwswswswsweeswnwse +senwnwenwnwneswwnweswnwnenweeswnwnww +neeswesewesewnwnwnewswseswseseswne +nwwwnwwsewnenwnwwnwnwnwsewwnwwnw +wwswnwwswneswwwwwwewwwwsww +swwseseseeseswwnewseneneswseswsw +eewsewseeseeneseseeneeseseeee +swswseneseswwseseseswne +swswnweswswswnwswswswswswswswswesw +seneseswsewseseswseswseseseswsesene +swsesesesesesewsesesewseeseseseenwse +swswnweneeeeeneenweeswenweeese +seeeewnweswneeeneeeeeenwneeee +nenwnenenwnwswesesesesewneneswwwewse +swswswnwnwsweswwwsweswwswswswswswswsw +wnwenwnenwenenwseswsesewswnw +neswswseswswseseswnwseswswswswswswswswswnw +neeseesesewseswnwesweswnewneewnwe +seseseewnweeseneseeseseseesesesese +nwneneneeswneneweeneneneesesenwne +neneneneneneseswnewneneseneneneneenewne +wwnwwewnwnenwnewwswwnwsewwnw +eeseeseswnenweseesenweeswesesesw +wswsweswswwnwswswswsw +eswseneneswseswswsenwswwwneswwwswse +enwseseseseseeswsewesenewwse +nenenewswseseenenenwneswwnewswneeneenw +swwnwneseeesweswswseeneenwnweswne +eeseeseenweesesesesese +swwenwsweneswsesweswswswswswswswnwswswnw +swwesenenewnwneneeswnwneeswnwswnenwe +swswswsesesweswswswswnwswsw +wnewwwsewswseeewnwwswwnewewnew +neeseneseswenwseseseeswswsewsesenwenw +swnenesewswswneswswwswswswwswswneseswsww +seswneneeeneneneswwneseswnenwneswnenenw +senweswwswswwwwwwwwnewwwswsew +wnwwwwsenwwnewenwwwwnwwnwwew +neneeseswswnenewseneneenenewnenwneneww +senenwnwseseneswnwswnwwwewwswnwneeww +sesesesesenwseseesesesesewswseseswese +sesesesesewneswseswswswswseswswnwseswswe +senwnwneneneenenenwwneswnwnenenenenwnw +wnwnwwwnenwwwsenw +seesewwweeseeeseeeseseeseee +swswswswseswseswsweseseswswwswewswnwne +eseeeeswseseenwseesesesweesesenw +nwnwswnwenwwewnwnwnewnwnwnenwnwswnw +seswnenwwenwnwnwnwnwnwnwnwnwnwnenwnwnw +wwseswwwswewswnwwnewneswwenwnw +seseswseeswswsenwsesewswneswseswseseswsw +swswswswnwswseseseneswseseswswswswnwneswsw +wwewnwwwsweseswwwwwwwwwnese +swswnwneweswswswswswneswswewswsw +wnenwewewwwnwnwnewnwsewseeswwne +neswsenenweenwweseeeswseeewsew +esesenwswsesesesenenwsewsesenwsesesee +swsesenwwnweeswnesewwseenw +eeneeneneenwneneeesesweneeeeew +nweseneneneswenesewnwwswswnenwnwsese +swnwswewwwneseswwsweswwswswswesw +swseseswseswseseswseneswswneswwwsesese +wwwwswnwnwsewwsenwnwnwswnwenwnwnwnenw +wsweswswwnewsweneswswswswwswswwnw +neeswnweneneneenwnwewwswnwnwwnwnenw +nwenwnwnwnwnenwnenewse +swewwwneeswneneseneseneneeenenwneenw +eenenenesenwneeseneneneswsenenewnenwne +wsweseeswneeweneneneeneeeeneee +nwnwnwsenenwnwnwnwnwswnwnwnw +neneenwnwneswwnenwseswesenwenewnwne +eswneswswwswneswswswswnwsw +nweeswsweseeeeeeseenweeeeenwe +weneswsweswswswswseswwswswseswswsww +senwswswswswseswsewweseswsenwswswnenesw +sesenwsesesesesesesesese +swnenweenwneeeeeseenwwswswe +neenenwsenwweswnenwnwnenwnenwwnenenw +sewseseswseneneseeseswsenwwnesesesene +nwwswwnwwwwswwwsewwewnewew +nesewwwseseewnwseeswwsesenesenene +weeneeseseeesweewe +swswswswseseseswseneeneseseswnwsw +neseseseweseseseseenwsesesesesesesese +seswswsweswswswswswwsweswswswswswnwsw +wwwwsewsewnewwwwnwwwwww +nwneswnwnenwnenwnwnenwnwnenenenw +seenesesewsweeneneneneenenenwnewe +nwwnwnwnwswwnwnwnwnwenwnwnw +newseneseewnwnwseneneneneeneneneswnew +neeeeseeeneswneswweneswnenewneene +nwswswnwenenwswnwnenenenenwnenwnenenwnw +eseeeeseeeseweeeeeeenw +swsenwwswnweneswewsenenesesenweese +seeeeseseewswsenweseneseeseeesenw +neseswwseseneweseseseseswsesewsesenesese +newesenwnwewnwnwnwwewseseswwwwnw +seswneswneenwswneswswwenwseswwswswwsw +nenwnwnenenwnesenwne +sewseeeseeeseee +esweweenweeeeseweeneneeesw +ewswnenwswnwsenwwwwseewewseswww +wwneneneseseswsesenwe +wswneswwswewewsenwenwnewweseswsw +wswwwwwnwnwnewww +senwnwnwnwnwnwwnwnw +senenenwnenwnenwnewnwnwnenwsenwnenenenwsw +nenwsenwnwnwnwswnwsenwnwnenwnwnwnwseenwesw +seseswwneseeswnwswswneeswsewswswnew +swwewwwseneenewswwswswsenwswswsw +nwnwsenweeneneneeeneweeswseneswne +swswnewwswswenweseswewsweswswewsw +wseswnwswseswnwnwswswnenweeswswneswse +wnenwswnwnenwenenwnwnwnwnwnwnesenenwnwne +eswsweswneweswenenwswnwwnwnwsenwnese +neeeneeeeneesweeneeweenee +swwneswesewswwswwnwneswseneswsenwsw +ewswswwswwwwwswwswseswwnewswe +nwsewsesweewseseseseseswseswsesesesese +enwnwnwswnenwwnwewnwnewswnwenwseswsw +wwsewwneswwwsenwwnewsewswnwnew +eeeneeswswnwneeseneseeneeewene +seseswwseeswsesewneeseseswsesenesenwsesw +wswswswswswwseswnwswswneswsw +wneswswwnwnwenewwwwwwnwswnwesenwne +swnwnwnwnwnwnwenwnw +swswnenenenenenenenenewwseneneneneenenene +nwwwwnwwenwnwnwwwwwweswwnww +swnwnwnwnwnwnwnwnwnwnwnwnwne +seseseseeseeesewsene +enwnwwnwnwnwnwnwnwnwnenwnenwnwnw +wswnewwwwswwweswwwwwswwew +sesewswswseswseseneswse +sesenweweeeseeneeeseesesweee +swswswswswswswswwweswswesenwnweenwse +swswswnwswwswseswseenenesweswwswwsw +seseeswnweseseswswsenwnwnwseesenwnwww +wnwnwwwwwsenewwnwwnwnwsene +swesenwseseswnwseseswnwswsweseseseswswsese +senwwenwnwnenewnwsenenwnenweewswse +eeenenwenesenewneweneeeeesenwe +senwwneseseseseseseseseesesesesesesese +ewnwswnwswenwswnesewseseneseswswsesw +nesenenweeeeeswwnenwnesweeneenene +neeswwewnweenwewneswsesenwwseee +nesenwseesenwnwswnwsenwnwswenwnwnenwnenw +senenenwnenenewsewnenwnenwnwnwneenewsene +wwwswswwnewwwswswswsenewwwww +neseseenweenesewswsewwseswseseseesw +seseseseseneseseswsesenesesesesesenewwse +swseswswswswswswwseeswseswswsw +swnewnewsesewneswwswwnw +seesesesenwseseswseseseseneeseswseee +neneneneneneseneenwwnenenenenenenwwne +seseewenwenwseeseseeeeseeneeneesw +neswsweeseeseneeesesenwswewnwe +seneswnwwnwwwwnwnenesewenwnwwwnwww +newnwnewswwwwwwwswwswwswwwsew +swseswwnwwwwwswsewswswenwwsw +wnenwnwewsenwnewsewwswnenwsewwswnw +nenwneswnwnesenenwnewsenenwneswnenwnwenw +wwswnwnwnwwwwwwnew +swswswnesesenwseswsewweneneswnesewse +swwsewwwwwwswwneswnenwwwnewsw +nwnwsenenenenenenenwnenenesenenwnwenwsw +sesesenweswswseseseswswswswswnwseswese +wsewwnwwwewnewwwsewwwwww +swseswswwnwesenwswswsenee +sesweseesewsewswswseseseswneseseswsesw +nwsenenenwnwnwwnwnwnwnwenwnenwnwnenwnwsw +nwwnwsesewwewneseswwwnw +eeseseseeseseeswenwseeeseeeenwsw +nwwnewwwsewwsew +wwnewwwwswswwneswswwwneswwwse +wswswswswswswswnwswwswswseneswneseswwsw +nenwnwwseeweswswswswnwnwwewneeswswse +nwnwnwenwsenweswwnenwnwsewnwwwnwnwnwne +eseswwnwneenwsewswsenweswwneswnenw +wswswswnwswneswswwswsenew +swwsesewnwwnwwswswwswwwswsww +wwswesewswswswswnenwswswswnewwwsw +swwwswseswswwswneswswnesweswneswswswsw +swnwnwswnwnenwwwwswnwwnwnwenwnwne +seeseseesesesenwswsesenwswsesesesesese +seeeseseseseseeseesenweswwseewsese +enenenenenewneseseswnenwswnenenenwnenene +swwweswesweswnwnweneenweseswene +senenwnenwsweweenweseneswseneswwnw +nesewneneswwneseneesenenenwnenwnwswse +swnesesewnenwwwnwnwenesewwweseew +nenenesesenwnwnenewnenwsenenwnwnwnenwne +nwseseeeseesenwewseeeseseseenwsw diff --git a/input25 b/input25 new file mode 100644 index 0000000..3e56505 --- /dev/null +++ b/input25 @@ -0,0 +1,2 @@ +17773298 +15530095 diff --git a/input3 b/input3 new file mode 100644 index 0000000..c6ed96d --- /dev/null +++ b/input3 @@ -0,0 +1,323 @@ +....##..#........##...#.#..#.## +.#.#..#....##....#...#..##..... +##.#..##..#...#..........##.#.. +.#.##.####..#......###......... +#.#.#...........#.....#...#.... +#.......#....#.#.##..###..##..# +.#...#...##....#.........#..... +..........##.#.#.....#....#.#.. +.......##..##...#.#.#...#...... +.#.#.#...#...##...#.##.##..#... +........##.#.#.###.........##.. +#.#..#.#.#.....#...#...#......# +.#.#.#...##......#...#......... +.#..##.##.#...#...##....#.#.... +.##...#..#..#......##.###....## +.....#...#.###.....#.#......... +#.##..#....#.#.#.#............. +........#...#......#...#..#.... +##..##...##.##...#...#.###...## +#.#....##.#...###......#..#.#.. +..#.....#.##......#..........#. +#.......#..#......#.....#....#. +.....###...........#....#.##... +#.#........##.......#.#...#.##. +.#.#.#........#........#.#..... +#..#..##.....#.###..#.#.#.##..# +..#.#...#..##.#.#.#.......###.. +........#........#..#..#...#... +##............#...#..##.##...#. +#....#.#.....##...#............ +............#...#..#.#.#....#.. +#.#.#...##.##.#....#....#...... +................###.....#.....# +##.#####.#..#...###..#...###... +...#.....#...#.#....#...#..#... +.......#....##.##.#.##......... +..#..#..##.....#...#.#.....#... +...#...#.#.##.#..###.......#... +...#...........#.#####..##..#.. +#.#...#........####..#......#.# +#..#.##...........#.#......#.## +#.#..#....##..#..##.#.......... +.....#..#.....#........##..#... +...###.......#.##.......#...... +...##..#..#...#....#.###...#... +....####....#........#.##.#.#.# +#....#.....#.###.##...##..##.## +.##.#...#.##.#......#..##.#.... +...#.............#............. +..##..##.#.....#........##....# +#.....#....#.......####...#..#. +..#...#..#...#...##.#....##.... +.#...##....#....#..#....#...... +##..#.#...##......#..#.......## +..#...#.##..#.....#.#...#..#.#. +#..##....#..........#.......... +.#........#..#......#......#.#. +...##.#.........#.#....#.#...#. +#.....#.#..#...#...#..#...#...# +#.........#.#.........##....... +.#.......#......#.........###.. +.#..#..##...........#.....#..#. +.#....................#.....#.. +.##.....#....#....#.###.....#.. +...##.#.....#.#....#.........#. +.........##.....#.....#.##..#.. +......#......#.#..#..###...#..# +..##...#.#..#...#.#....#....... +..#..##.###.#..#..#..#......#.. +.....##...##.........#...##...# +###.#..##....##...##.#..###.... +#...#.#..##......##...#.#..#... +..........#....###....#........ +#.#.#.#.#.....#..##.##.....#... +.##.....#...#.....#......#..... +.#..........#.#.............#.. +.#..##..#.#..##...#....#.##...# +..#.#..........#...#..........# +.#.......#.......#...#..#.....# +##.#...##...#......#.#..#...... +#####..#....#..#...#...#.#..... +....#.......#.#..#............. +#..#..#.#.####...#....#....##.. +#..#.##.#......#...#......#.... +#...##.##...#....#..........##. +..#..#.......##.#....#...#.#... +.....#.##..............##.....# +..##.##...##.....#.........#.#. +.#....##...##...##..#....##..#. +.#...#....#..#......#.#........ +#....#.#.#..............#....## +..##..#..#....#####.#....#.#.## +#....#...#.##..#.##.........### +#..#..#....#...............#.#. +#....##...##........##.##.#.##. +......#......##....##.....#.### +#...##..#..#.....#.#........##. +..#.#.##...#...#....#..###...#. +#..##..#.###..##.#.#....#...... +..###..#.##........###.....#... +#.............#.............#.. +.#.##....#..##.#...#....#.##### +###.....###.#......##..#..##... +.#.#......##.#....#....#.#..#.. +###..#..#....#......###.##..... +......#.......#......#..##..##. +..#..#...#..#....#.##....#.#..# +.......##..#........#.#.##..... +.#...#..#........#..#.#..#..#.# +.#..#.##.......#......#...#.#.. +.##..##......##.#...#......#### +.....#....#......#.....#......# +..........#.#.#...##.#..#.#.... +...#.......##......#..#.#.##... +.###..#.#.#.................... +##...#...#.##............#..... +....#....#.##...#..#.#...##.... +..#.#....#.###...#...#.#.####.# +..#..#.#...#.#......##......... +#..#..####.##.#.#..###....#...# +....#..........#.##.#..#.#.#.#. +#.#.##.........#.....##...#..## +#......#...#.##.#......#..#.#.. +#...#........#..#..#...##...#.. +.....#.####..##..#.#.##..#...#. +#..#........#........#...#....# +...........#..#.....#.#.#.#.... +....#......#....#...#....##.... +.#.#..#...#.#....#..#.#....##.# +....#...#...#.##..#...#..##...# +#######...............##.....## +.#.#..............#....#..#.### +#......#.#......###....###..... +##..#...#.##..##..##.#....#.... +#....##..#..#...#.#.#...#...... +..........#..#.##..##.##.#..##. +....#.#.#.....##........#..#... +..###...#.....##.##.....##..##. +....#.#..#.#.......#.......#... +..##.#..#.....##...###...#...#. +..#.........#...##...#...#..#.. +..#..#..#..#..##.#...##..#.#... +...##..#..##..#..####...#.....# +............#............###... +.#.#.###.#.....#.#.#..#.###..#. +...#.........#.....####........ +....##.#..##.#.............#... +....#.##.....#..#.....#......## +..........#.............#...##. +#..#.....#.......##..###....... +..##.#...........#.......#..#.. +...#...#.#.##.###....#.#..#.... +...#..........##..#..#..#...### +.........#.....#..##.....#..#.. +#........#...#...#..#.#....##.. +.#.#.....####..#.##.#.......... +###.......##..#.##...#.....#... +..###.##.#..#..#..#.....##...#. +.........#.....##.#..#..##..... +#..#..##...###..............#.. +#....#.#....#..#.....#..####... +####..#.....##...#..#.#.#.#...# +...#....#.....#.##.#.#.#....##. +..........#...#.....###....#.## +#....#.#.#....#..#..#.....#.... +.....#.#...#......#....#......# +.####....##...#...#......##..#. +.#...#..#....#..#.............. +##.#...##...#.##..#......#..... +..####.##..#....#.#......#.#.## +........#.....##...#.#..##....# +....#.#.#.#.###...#.#...##...## +#.....#...####.#....#.#........ +..#.....#...##.........###..... +....#....#....#..#......#####.# +###.....#..#.#.#......#.##.#... +....#.##......#..#.#........... +.#....#....#.#..#.......#...##. +...................#.#.#..#.... +##...#.....#........#....#...#. +........##......#...##.#..#.#.# +#.#..###...#....#.#...#.......# +#..........##......#..#..#..... +.............#...##.#...#...... +#..#....##..#.........#..#.###. +.....#..........#....##.#...##. +###....................#.#.##.. +#........##...##......#....###. +#....#.............#....#...#.. +##.......##.#.......#....#..#.. +##...#............#..#.#....##. +..#.#..#...#####..........#.... +..#.........##.....#.#...####.. +....#..............#........... +..#...#.#.#..#.......##.#.#.#.. +....#.##.....##..#.....#..####. +#...#...#...#.......#.........# +......#..#.####...###.#.#.....# +.......#..#..#.....#.#..##.#..# +.#......##..#............#..... +.#........#.#....#....#........ +.....#.#..#.##.#..##....#..#... +#.#...........#....##.....#.... +..#..#..##.###..##..#..###.#.## +##.#..#...##.#.........#...#.#. +......#..#..##...#....#...#.##. +#.##.......................#... +.......#..#..#.##..##......#... +..#.#...#.....#..###....#...#.. +##..#.....#..#..#.##.....#...## +#...##...###...#.#..###....#... +...#.#.#..####.....#...##....#. +.#.#..##.....#..#.....##..##..# +#...#..........#.##.#.#........ +..##....#.##....#..##......#... +....#..........###.....####..## +...........###....##.#.#.#.#... +...#......................####. +#.#.#...#.#.#.#.#......#.....## +..###...#.####...#..##..#....#. +....#....#.......#...#......... +.#.###.............##..#...#... +....#.#....##...#.....#.##..... +#.......##.....#.#.....#....##. +....##.....###..#.#..#....#...# +......#..##...#......#.....#.## +.#.....#.##.###....#.....#..### +...#..#.###.#....#..#..#...##.# +...##..#...#..#.#.#..#...#..... +##.####...##..#.#.#....#....... +..##..#.#.......##.#......##.#. +....##....#....#..#....#..##.#. +..##..........##....#...#.#..#. +#.#...#.#.###.#.#..##.#...#.... +.....#..#.............#...#...# +....#.#..#...##...#....#.##.... +#..#...#.###.....#...#.....#.#. +#####....#....#....#.......#.## +#...##....##.#.#...#.....##.#.. +#.......#...#..#..#...#....#... +....#......#.#..........#....## +#.###...#.#..##..#.##........#. +#..#.....##.......#..#..#.#.... +...#...#.##...#....#.#.#.#...#. +...##..#.#....#......###......# +#.#....#...#..#..#....#........ +..#..#.#...##..........#.###... +#..........#...#..#....#....### +..#..#.#....#..............#... +...#........#...#.#....###.#..# +....#.#.#................#..#.# +..#........##.#....#.#..#...... +...##..#..#.......#..#......#.# +..#..#....#.........#....#.##.. +#.....#....###.#..#..#...#...#. +..#..##.###.#..##....#.###..... +...#...####..#........###.#.... +.........#.#...#..#..#.#....... +.##.........##.#..............# +..#.#.#.....###........#.#.#..# +....##..#....#....#.#..#....... +#.#.....#...#........##........ +.##.#.#..#..#.#.#.........#.... +#.....#..#.##...#...#.......... +##..#....#....##.#..#.........# +................#.##.#......#.# +..#..#.#........##...###..#...# +##........#.......#...##.##..#. +##....#.....#..##....#.......#. +#.#....#.#........#..#......... +......##......#...#.....#.##... +###....#..........##.#.#......# +......#...###.........###..#... +.####....#...##..#.#.....#...#. +.##...#...###....#...#.#..###.. +#..#......##...#.###..###...#.. +#....#.#.#..#....##...#.##..#.. +..#.....#...#..........#.##.### +#.....#....###.......##..##.#.. +#..##...#..#....#.###......#... +#..#........##..#.....#.#.#.... +#.##.#.#..#....#.#............. +.#...............#....##....... +.#.##......##........#...#..#.# +.#...#....#....#...#..#...##... +.....#..###...##........#.#.... +...#.......#....##..#..#....#.. +...###....#........#..#.###.#.. +......##..##..............###.# +.......#.####..##....#.#....#.. +#...#......#...#..#.....##....# +.#..#..###....#..##.##.#....... +#......##......#..##....#..##.. +.....#..#.#......##.##..##..... +...#..#.......#......#......... +....#..####......#..#....#...#. +..#.#..#...#....#....#.......#. +####..#........#.###...##.#.#.# +.......##........#.#.#...##.... +...#.........#..#.#..##....#... +.....#..#...#.#....#...#.#.##.# +#..##.....#.....##.......#...#. +.......##.#.#.....#....#......# +...#...#.##...#......#....#.... +..#..#.#...#..#.....#...###.#.. +.........#...#..#.......##..... +..##...................#..#.### +.##.##..#.#...#.#....#.....##.. +#.#...##...#...#...##..#......# +....#..#...#.....##.#.....#..## +##.#..........###..#...#..#.... +...##....#.##....#......#...... +.....#.........#....#.#.......# +.......#............#.#.....#.. +..#..#...#..#####..#....##..... +...##......##...#.#........##.. +.....#..###...##.#.#.##.#...#.. +..#.#.#..##..#.##...##.#.#..... +......##...#..##......#.#...... +......................#........ +#...#..#....#..#.#.##.#.....#.# +.#......#.#....#.#.#..#....#... +.#..#.#.#..#....#.............. diff --git a/input4 b/input4 new file mode 100644 index 0000000..46fe04a --- /dev/null +++ b/input4 @@ -0,0 +1,1100 @@ +ecl:grn +cid:315 iyr:2012 hgt:192cm eyr:2023 pid:873355140 byr:1925 hcl:#cb2c03 + +byr:2027 hcl:ec0cfd ecl:blu cid:120 +eyr:1937 pid:106018766 iyr:2010 hgt:154cm + +byr:1965 eyr:2028 hgt:157cm +cid:236 iyr:2018 ecl:brn +hcl:#cfa07d pid:584111467 + +eyr:2029 ecl:hzl +iyr:1972 byr:1966 +pid:2898897192 +hgt:59cm hcl:z + +pid:231652013 hcl:#602927 hgt:166 +ecl:grn eyr:2025 +byr:2008 iyr:1986 + +byr:1928 hgt:167cm +hcl:#18171d iyr:2012 +ecl:oth pid:237657808 eyr:1944 + +hgt:73in ecl:grn byr:1931 pid:358388825 iyr:2020 +hcl:#602927 eyr:2020 + +hcl:#efcc98 eyr:2024 ecl:hzl +byr:2030 hgt:192cm +iyr:2013 pid:7479289410 + +pid:053467220 iyr:2012 hgt:169cm +cid:149 hcl:#866857 +eyr:2030 +byr:1995 ecl:oth + +hgt:162cm hcl:#efcc98 ecl:grn byr:1985 pid:419840766 +eyr:2022 +iyr:2020 + +pid:22086957 hcl:c69235 ecl:#c458c5 eyr:1986 byr:2014 hgt:72cm iyr:1934 + +hcl:#866857 +ecl:brn eyr:2024 +iyr:2017 +pid:505225484 cid:144 +byr:1980 +hgt:170cm + +hcl:#866857 ecl:gry +byr:1972 iyr:2019 eyr:2023 +cid:234 pid:721290041 hgt:191cm + +pid:346301363 +eyr:2020 +hcl:#733820 iyr:2019 hgt:177cm +byr:1998 + +hgt:157cm byr:1963 +pid:898055805 +hcl:#fffffd ecl:blu iyr:2017 cid:87 +eyr:2030 + +pid:605900764 iyr:2011 +hgt:73in ecl:hzl eyr:2024 +hcl:#888785 +cid:281 + +iyr:2010 eyr:2026 hcl:#4f7e76 pid:883386029 byr:1946 ecl:brn + +hcl:z +iyr:2020 pid:9121928466 byr:2014 ecl:zzz eyr:2025 +hgt:172in + +hgt:151cm cid:163 pid:670884417 iyr:2012 +ecl:oth hcl:#ceb3a1 +eyr:2028 + +hcl:z cid:92 hgt:69cm +byr:2008 pid:492284612 +eyr:2020 iyr:2023 +ecl:hzl + +byr:1933 +hcl:#7d3b0c eyr:2020 hgt:170cm +pid:949064511 iyr:2010 +ecl:oth + +eyr:2025 byr:1989 ecl:oth cid:100 hgt:182cm +pid:629190040 iyr:2017 hcl:#b6652a + +ecl:hzl cid:76 hcl:#e71392 eyr:2021 iyr:2013 byr:1995 +pid:762177473 +hgt:179cm + +pid:198500564 eyr:2029 hcl:#733820 cid:51 iyr:2012 +hgt:70in byr:1938 ecl:oth + +hgt:190cm ecl:brn byr:1952 iyr:2015 hcl:#623a2f +eyr:2023 + +hgt:169cm hcl:#602927 byr:2001 pid:823979592 iyr:2016 eyr:2029 + +iyr:2010 ecl:gry +eyr:2022 hgt:156cm byr:1953 pid:434063393 +hcl:#733820 + +pid:091724580 hcl:a7069e eyr:1984 ecl:#95d01e byr:2012 iyr:2005 + +eyr:2022 byr:1972 hcl:#866857 ecl:hzl pid:227453248 +hgt:153cm cid:324 iyr:2018 + +cid:195 pid:049871343 +eyr:2024 hgt:169cm +byr:1952 iyr:2010 ecl:grn + +eyr:2035 pid:189cm +hgt:77 iyr:1973 ecl:#dc83d5 +hcl:z byr:2004 + +byr:2027 +pid:89338932 hcl:1de39e ecl:grn hgt:159in eyr:2034 iyr:1937 + +pid:076534920 +hgt:152cm +byr:1969 +ecl:blu +hcl:#866857 iyr:2011 eyr:2024 + +iyr:2019 eyr:2028 +ecl:blu hgt:169cm +hcl:#888785 pid:332202163 byr:1923 + +hgt:65in byr:1964 iyr:2019 +pid:287612987 ecl:hzl cid:213 eyr:2023 hcl:#ceb3a1 + +hcl:#623a2f pid:182484027 +iyr:2016 ecl:brn byr:1943 +hgt:71in eyr:2021 cid:344 + +hcl:#cdee64 iyr:2011 ecl:brn eyr:2026 hgt:176cm +byr:1985 pid:978641227 + +eyr:2029 ecl:brn hgt:173cm byr:1920 cid:211 +hcl:#866857 +iyr:2016 pid:289769625 + +hcl:#7d3b0c pid:770938833 iyr:2010 byr:1941 ecl:oth eyr:2029 hgt:161cm + +hgt:172cm iyr:2015 ecl:gry byr:1948 +eyr:2029 +pid:466359109 hcl:#341e13 + +cid:74 pid:405199325 ecl:blu +hcl:#6b5442 +eyr:1980 byr:2024 hgt:174cm iyr:2011 + +hgt:183cm pid:075760048 cid:78 byr:1960 ecl:hzl eyr:2030 hcl:#6b5442 iyr:2014 + +cid:264 hcl:#7d3b0c +ecl:blu iyr:2011 eyr:2020 hgt:182cm +byr:1929 + +pid:435338286 byr:1931 +hcl:z ecl:amb iyr:2013 hgt:73in +cid:165 eyr:2027 + +pid:511898552 eyr:2025 hgt:184cm hcl:#602927 +iyr:2018 byr:1989 ecl:hzl + +iyr:2016 +hgt:168in +hcl:#623a2f +eyr:2025 pid:310738569 ecl:#0c3039 +byr:2027 + +pid:158cm byr:1946 ecl:grt +iyr:1920 cid:189 +hcl:389bce hgt:165cm + +pid:973732906 hcl:#cfa07d iyr:2010 eyr:2020 hgt:180cm +byr:1930 +ecl:brn + +pid:930994364 byr:1967 hgt:151cm +iyr:2011 eyr:2022 + +eyr:1968 hgt:75cm cid:241 +iyr:2011 pid:5493866745 +ecl:grt +byr:1976 hcl:#a97842 + +eyr:2026 ecl:oth +iyr:2016 hcl:#c0946f +byr:1929 +hgt:175cm +pid:9421898537 + +eyr:2028 iyr:2016 byr:1962 +ecl:grn hgt:186cm hcl:#cfa07d pid:432962396 + +iyr:2010 byr:1934 eyr:2023 hgt:180cm hcl:#cfa07d ecl:gry + +cid:168 +byr:1978 +eyr:2027 hgt:189cm pid:802710287 +hcl:#2f980b iyr:2014 +ecl:grn + +eyr:1970 +pid:576329104 +ecl:xry iyr:1954 hcl:#341e13 byr:2026 +hgt:74in + +eyr:2027 hgt:153cm +ecl:oth +hcl:#866857 +pid:290407832 byr:1956 iyr:2017 + +iyr:2011 +cid:128 +ecl:amb hcl:#7d3b0c hgt:68in pid:743606119 eyr:2020 + +ecl:oth hcl:#cfa07d +byr:2016 pid:#de98ae iyr:1984 cid:194 +hgt:170cm +eyr:2034 + +pid:526098672 hgt:168cm +hcl:#7d3b0c cid:167 byr:1923 ecl:blu iyr:2016 +eyr:2030 + +pid:495569197 hcl:#866857 hgt:193cm +iyr:2013 eyr:2021 byr:1921 ecl:amb + +ecl:amb +hcl:#a97842 pid:862249915 iyr:2012 byr:1964 +cid:325 +eyr:2021 + +iyr:1958 +byr:2003 +hgt:160 hcl:#18171d +ecl:hzl eyr:2020 + +iyr:2019 byr:1997 ecl:brn +pid:342735713 hcl:#efcc98 +hgt:181cm cid:307 +eyr:2027 + +pid:817121616 eyr:2020 +iyr:2012 +hgt:185cm +hcl:#18171d byr:1969 ecl:hzl + +pid:381399203 +ecl:oth byr:1930 +iyr:2014 hcl:#6b5442 hgt:71in cid:156 eyr:2025 + +byr:2002 hcl:#18171d iyr:2017 +pid:398245854 hgt:64in ecl:gry eyr:2025 cid:127 + +eyr:2028 hcl:#341e13 +ecl:amb iyr:2012 +pid:079796480 hgt:69cm +byr:1995 + +cid:315 iyr:2028 +pid:775929239 +hgt:162cm ecl:dne byr:1940 eyr:1952 hcl:#c0946f + +iyr:2015 +hgt:154cm byr:1997 +ecl:grn +cid:125 eyr:2024 pid:834780229 +hcl:#18171d + +ecl:hzl hcl:#a97842 pid:553710574 eyr:2028 +hgt:183cm cid:196 +iyr:2014 + +pid:377912488 hgt:159cm ecl:amb eyr:2024 byr:1974 +iyr:2014 +hcl:#ceb3a1 + +eyr:2024 +byr:1947 hgt:63in ecl:brn +cid:69 +pid:185228911 hcl:#b6652a iyr:2016 + +eyr:2024 +hgt:168cm hcl:#602927 +iyr:2013 +byr:1993 +pid:681091728 ecl:gry cid:203 + +pid:037922164 iyr:2020 +byr:1990 hgt:156cm eyr:2023 hcl:#866857 +cid:97 ecl:grn + +hgt:170cm pid:980455250 +iyr:2011 ecl:hzl byr:1957 +eyr:2030 hcl:#cfa07d + +hgt:158cm +hcl:#602927 +byr:2002 ecl:hzl iyr:2013 +cid:99 +eyr:2020 pid:48646993 + +byr:1955 pid:814033843 eyr:2030 hcl:#a97842 +hgt:191cm iyr:2019 + +pid:111196491 hgt:191cm iyr:2012 ecl:blu hcl:#a97842 +eyr:2026 cid:131 byr:1979 + +hcl:#fffffd hgt:68in +cid:121 ecl:oth eyr:2024 pid:343836937 +byr:1955 +iyr:2020 + +eyr:2025 byr:1954 +pid:737517118 +cid:343 hcl:#b6652a +iyr:2017 ecl:hzl +hgt:175cm + +ecl:brn +iyr:2011 hgt:171cm cid:102 pid:066348279 byr:1981 + +ecl:oth iyr:2018 byr:1975 +eyr:2029 +hgt:185cm cid:226 +pid:978243407 hcl:#341e13 + +iyr:2015 pid:918017915 hcl:#3e52b7 +byr:1999 ecl:brn cid:314 +eyr:2025 hgt:192cm + +hcl:#19d1fa byr:1984 ecl:dne hgt:76in +iyr:2015 cid:118 pid:417075672 +eyr:2020 + +iyr:2019 +cid:120 hgt:186cm +hcl:#733820 eyr:2024 pid:423238982 ecl:brn byr:1968 + +hgt:70cm cid:173 pid:767014975 +hcl:#866857 eyr:2039 ecl:brn byr:1985 + +pid:340424924 +eyr:2027 hcl:#7d3b0c +hgt:168cm ecl:hzl iyr:2016 +byr:1994 + +ecl:hzl byr:1933 pid:580425691 +iyr:2010 hcl:#c0946f eyr:2024 +hgt:64in + +hcl:#9fe6b0 pid:913184461 ecl:grn eyr:2030 +cid:262 iyr:2014 + +ecl:amb pid:640007768 eyr:2030 byr:2017 iyr:1988 hcl:z + +byr:1977 cid:54 +eyr:1939 pid:882762394 iyr:2030 hcl:#ceb3a1 ecl:blu + +iyr:2011 hcl:#7d3b0c byr:1928 +pid:340969354 cid:199 hgt:168cm eyr:2029 ecl:hzl + +pid:729464282 +iyr:2012 hcl:baae60 +eyr:2026 ecl:hzl hgt:166cm byr:2019 + +pid:930997801 iyr:2019 eyr:2030 +hcl:#866857 ecl:oth byr:1960 cid:235 hgt:73in + +ecl:brn +byr:1988 hgt:179cm iyr:2017 +pid:864768439 cid:305 hcl:#c0946f +eyr:2029 + +hcl:#7d3b0c ecl:grn +hgt:182cm eyr:2021 pid:719891314 +byr:1920 iyr:2017 + +hgt:62cm +cid:71 ecl:brn hcl:#fffffd iyr:2025 eyr:1997 +pid:175cm byr:2022 + +hcl:#cfa07d cid:239 eyr:2025 ecl:hzl hgt:189in byr:1980 iyr:2020 +pid:703047050 + +byr:1951 +eyr:2030 +ecl:hzl +pid:130992467 hgt:157cm hcl:#341e13 + +hgt:175cm +hcl:#623a2f +cid:68 eyr:2025 +byr:2001 ecl:oth pid:253618704 iyr:2016 + +hcl:#fffffd pid:379344553 ecl:grn +eyr:2026 +hgt:72in byr:1974 iyr:2013 + +ecl:#b4e952 byr:1970 hcl:z +eyr:2039 pid:6056894636 iyr:2021 hgt:165cm +cid:328 + +hcl:#602927 iyr:2014 pid:890429537 byr:1957 hgt:68in eyr:2020 ecl:hzl + +cid:265 byr:1961 hcl:#ceb3a1 eyr:2022 iyr:2016 hgt:184cm pid:921615309 + +byr:1951 eyr:2024 +hcl:#341e13 +ecl:amb pid:414644982 +iyr:2010 hgt:159cm + +iyr:2015 cid:319 +eyr:2029 ecl:brn pid:380237898 +hcl:#efcc98 hgt:157cm byr:1972 + +pid:237156579 ecl:#312a91 +hgt:167cm iyr:2011 hcl:#c0946f eyr:2021 byr:1953 + +ecl:hzl iyr:2015 pid:10160221 eyr:2025 hgt:175cm hcl:z byr:1939 + +hgt:59in hcl:#18171d byr:1962 ecl:hzl +iyr:2019 eyr:2025 +cid:337 pid:491938615 + +ecl:utc hgt:82 pid:51674655 byr:2020 +eyr:1954 iyr:2029 hcl:z + +pid:119530189 +cid:103 +iyr:2010 byr:1979 +hgt:168cm hcl:#a97842 ecl:brn eyr:2029 + +hgt:177cm ecl:brn +byr:1990 +pid:015089628 eyr:2028 hcl:#733820 iyr:2020 + +ecl:blu iyr:2020 hgt:189cm +hcl:#efcc98 byr:1982 pid:346500376 eyr:2021 cid:160 + +ecl:brn hgt:173cm iyr:2011 cid:259 hcl:#6b5442 eyr:2026 +byr:1995 +pid:654875035 + +ecl:grn eyr:2025 pid:147155222 byr:1942 +cid:341 hcl:#602927 +hgt:165cm +iyr:2016 + +pid:543171646 +hgt:153cm +iyr:2019 hcl:#fffffd byr:1985 cid:266 +eyr:2027 +ecl:hzl + +ecl:blu +eyr:2022 +pid:667939101 byr:1974 +cid:259 hcl:#888785 + +eyr:2030 byr:2016 iyr:2022 +pid:86902982 +ecl:zzz hgt:72 hcl:ceb867 + +hcl:#fffffd +ecl:grn pid:046978329 +byr:1924 +eyr:2025 hgt:158cm iyr:2011 + +hgt:150cm eyr:2028 byr:1985 ecl:gry hcl:#866857 pid:340615189 +iyr:2017 +cid:50 + +cid:171 hcl:#18171d pid:009562218 byr:1981 hgt:175cm eyr:2024 ecl:oth iyr:2017 + +iyr:2019 +eyr:2022 +ecl:brn hcl:#cfa07d pid:050270380 cid:159 +hgt:151cm +byr:1951 + +hcl:#7d3b0c hgt:176cm iyr:2015 byr:1923 pid:348188421 ecl:blu eyr:2029 + +byr:1997 hgt:162cm eyr:2023 pid:445685977 +iyr:2012 ecl:amb hcl:#efcc98 + +iyr:2017 ecl:oth eyr:2028 pid:791977055 hgt:170cm byr:1991 +hcl:#623a2f + +byr:1998 hcl:#fffffd +eyr:2020 +ecl:gry pid:039483695 hgt:163cm iyr:2020 +cid:165 + +ecl:hzl hgt:74in iyr:2016 pid:026214321 +cid:152 hcl:#a1f179 +eyr:2036 byr:2001 + +pid:257900949 cid:80 byr:1956 iyr:2012 hgt:165cm eyr:2030 + +pid:918371363 +ecl:xry +iyr:2012 +byr:2012 hgt:65cm +eyr:2029 + +pid:041789006 iyr:2018 byr:1945 eyr:2024 ecl:blu +hcl:#5ab31e hgt:171cm + +ecl:gry +byr:1956 cid:318 iyr:2020 hcl:#623a2f +eyr:2030 pid:020576506 hgt:184cm + +hgt:173cm iyr:2025 +eyr:2023 +ecl:amb pid:958983168 hcl:#866857 byr:1935 + +byr:1974 +eyr:2040 pid:57104308 iyr:1980 hcl:z +hgt:192in cid:295 ecl:amb + +pid:180cm hcl:1109f7 eyr:2039 byr:2020 +ecl:dne hgt:189in iyr:1921 + +iyr:2013 byr:1961 +hcl:#866857 +eyr:2025 hgt:158cm ecl:gry + +ecl:brn iyr:2013 eyr:2021 pid:978650418 byr:1980 +hcl:#ceb3a1 cid:110 +hgt:166cm + +pid:864880558 ecl:hzl hcl:#c0946f byr:1955 eyr:2027 hgt:169cm iyr:2011 + +eyr:2023 hgt:191cm hcl:#866857 +pid:454509887 +ecl:grn byr:1938 iyr:2015 + +pid:793008846 eyr:2025 ecl:grn hcl:#341e13 +hgt:187cm +byr:1973 cid:224 +iyr:2013 + +hcl:#866857 eyr:2022 pid:802335395 hgt:171cm ecl:amb +iyr:2015 byr:1991 + +hcl:#888785 pid:768625886 +hgt:180cm +eyr:2026 ecl:oth cid:178 byr:1958 + +pid:921387245 cid:82 hgt:190cm hcl:#c0946f ecl:grn +iyr:2015 eyr:2023 + +pid:0704550258 hcl:1ba8f6 iyr:2010 byr:1978 cid:130 +eyr:2030 ecl:dne hgt:66cm + +pid:626293279 hcl:#7d3b0c hgt:185cm ecl:oth +eyr:2020 byr:1937 iyr:2012 + +hgt:175 +eyr:1933 ecl:gry +hcl:#7d3b0c byr:2003 pid:#5d8fcc +iyr:2012 + +eyr:2027 +byr:1927 cid:154 +ecl:gry pid:683668809 hgt:164cm +hcl:#a97842 iyr:2011 + +byr:1940 iyr:2014 hgt:172cm eyr:2024 pid:033678324 hcl:#10fded +cid:292 ecl:oth + +iyr:1970 ecl:#201515 pid:#4cd485 eyr:2034 hgt:162 +byr:2005 cid:67 +hcl:#c0946f + +cid:306 +byr:1948 +hcl:#efcc98 +eyr:2024 hgt:171cm pid:440657854 iyr:2015 ecl:brn + +hgt:172cm ecl:brn byr:1958 pid:054926969 hcl:#4b8065 iyr:2019 + +pid:45977569 ecl:amb byr:2002 hgt:71cm hcl:z iyr:1983 + +pid:811407848 hcl:#866857 cid:112 hgt:180cm byr:1986 +ecl:brn eyr:2026 + +ecl:amb +byr:1992 +cid:288 pid:417117245 hcl:#623a2f +iyr:2011 hgt:181cm +eyr:2021 + +byr:1974 hgt:192cm cid:172 +eyr:2022 +ecl:blu +hcl:#cfa07d iyr:2014 + +eyr:2024 ecl:gry +pid:874569675 byr:1960 iyr:2017 hgt:186cm +hcl:#6b5442 + +byr:1988 eyr:2024 iyr:2020 ecl:oth hcl:#866857 pid:227304269 hgt:170cm + +ecl:grn iyr:2019 byr:2002 cid:150 hcl:#efcc98 +pid:600740993 +hgt:167cm eyr:2027 + +pid:553824537 iyr:2019 ecl:blu eyr:2025 hcl:#e21269 hgt:193cm +byr:1923 + +byr:2030 iyr:2019 ecl:#cb0911 +hcl:#cfa07d hgt:74in eyr:2012 +pid:7647207386 + +cid:289 hgt:128 pid:178cm iyr:2025 ecl:#4ad977 byr:2020 eyr:2036 hcl:#efcc98 + +cid:119 hgt:150in +hcl:z +iyr:2012 +ecl:brn eyr:1975 +byr:2007 pid:#0dcd32 + +hcl:8a1ce7 pid:0434291854 +eyr:2034 iyr:2005 +hgt:62cm byr:2029 ecl:utc + +ecl:gry hcl:#ceb3a1 byr:1976 eyr:2024 iyr:2010 hgt:188cm +pid:636312902 + +hcl:#888785 byr:2027 hgt:178in iyr:2017 pid:973095872 eyr:1952 + +hgt:179cm iyr:2015 hcl:#ceb3a1 +byr:1944 pid:182079308 cid:317 +eyr:2025 ecl:hzl + +hcl:#6b5442 ecl:grn eyr:2023 hgt:71in pid:829794667 byr:2000 +iyr:2014 cid:192 + +iyr:2014 pid:096659610 hcl:#c0946f ecl:oth byr:1991 cid:180 +hgt:177cm +eyr:2023 + +byr:2017 +eyr:2036 iyr:1933 +cid:225 ecl:gmt hgt:179in +hcl:b5c44d pid:99932231 + +hcl:#18171d +hgt:187cm eyr:2023 byr:1934 cid:286 pid:878541119 iyr:2020 ecl:amb + +hgt:185cm +pid:754207134 ecl:oth eyr:2023 +hcl:#a97842 cid:313 byr:1966 +iyr:2015 + +hcl:#ceb3a1 byr:1921 eyr:2022 pid:799265846 cid:285 +hgt:67in iyr:2015 + +iyr:2011 byr:1941 +hcl:#341e13 cid:65 pid:413556937 +hgt:169cm +ecl:amb eyr:2020 + +iyr:2016 +hgt:158cm ecl:grn byr:1931 hcl:#7d3b0c + +pid:574299170 iyr:2013 byr:1961 ecl:hzl hcl:#866857 hgt:168cm eyr:2022 + +eyr:2022 pid:245416405 +iyr:2019 hgt:173cm hcl:#c0946f +ecl:brn +byr:1965 + +byr:1980 hgt:162cm ecl:brn pid:239318191 +hcl:#fffffd +cid:58 eyr:2025 iyr:2020 + +pid:892646915 +iyr:2012 hcl:#733820 byr:1991 eyr:2021 +hgt:157cm ecl:oth + +pid:310597466 eyr:2025 +hcl:#cfa07d byr:1944 iyr:2018 ecl:oth +hgt:183cm + +iyr:2010 hgt:187cm ecl:oth +pid:975763328 +hcl:#866857 eyr:2023 cid:283 byr:1997 + +iyr:2020 cid:225 hcl:#efcc98 pid:424680047 ecl:blu +hgt:154cm +byr:1968 eyr:2027 + +ecl:oth eyr:2020 hgt:183cm hcl:#623a2f +pid:771851807 +byr:1990 +iyr:2017 + +hcl:#efcc98 ecl:blu byr:1991 hgt:191cm pid:266021118 +cid:124 +eyr:2025 + +byr:1993 +ecl:hzl eyr:2020 +hgt:163cm +iyr:2015 pid:831538073 hcl:#18171d + +hgt:74in hcl:#420afb eyr:2028 +ecl:grn pid:264469103 +byr:1993 + +eyr:2020 +cid:79 +byr:1972 +pid:084953331 hcl:#a97842 ecl:brn iyr:2010 +hgt:170cm + +iyr:2014 ecl:gry pid:094812116 eyr:2026 hgt:190cm byr:1965 hcl:#944667 + +hcl:#fffffd byr:1953 iyr:2014 ecl:hzl hgt:164cm +cid:123 eyr:2023 pid:546394433 + +iyr:2012 hgt:155cm byr:1998 pid:#2c9be6 eyr:2023 hcl:#ceb3a1 ecl:gry + +eyr:2029 ecl:gry pid:752489331 iyr:2015 hgt:167cm hcl:#18171d cid:70 byr:2002 + +byr:1938 +ecl:gry +pid:764937909 iyr:2014 +hcl:#7d3b0c +eyr:2022 cid:145 hgt:184cm + +cid:340 +byr:1924 hgt:169cm eyr:2026 +iyr:2013 ecl:amb +pid:499844992 hcl:#18171d + +pid:838417672 hgt:175cm +ecl:grt iyr:2017 eyr:2025 hcl:17aa1a + +eyr:2020 +byr:1925 hcl:#341e13 +ecl:brn cid:342 pid:047426814 hgt:156cm iyr:2012 + +iyr:2011 hcl:#341e13 byr:1959 +ecl:amb pid:969679865 + +byr:1978 cid:320 hgt:180cm hcl:#435ceb pid:363518544 eyr:2023 iyr:2016 ecl:blu + +iyr:2010 eyr:2028 +pid:183cm byr:1948 +ecl:oth cid:133 +hcl:#8d3298 hgt:190cm + +hcl:#6b5442 byr:1929 iyr:2019 pid:207713865 eyr:2029 +hgt:166cm ecl:gry + +ecl:blu iyr:2019 +byr:1985 eyr:2030 hcl:#866857 hgt:155cm pid:659180287 + +ecl:hzl +eyr:2020 iyr:2016 pid:440624039 +cid:147 +hgt:61in byr:1976 hcl:#733820 + +hcl:#341e13 pid:178082907 eyr:2023 +iyr:2015 byr:1956 +ecl:amb hgt:163cm + +eyr:2023 +iyr:2011 hcl:#cfa07d hgt:164cm +pid:291621559 byr:1960 ecl:gry + +hcl:#efcc98 byr:1976 +iyr:2017 pid:394566091 cid:248 +hgt:176cm ecl:hzl eyr:2026 + +iyr:2013 eyr:2029 hgt:152cm ecl:gry byr:1984 hcl:#623a2f pid:511780941 + +pid:953716819 iyr:2010 hgt:156cm ecl:amb +byr:1947 +hcl:#18171d eyr:2025 + +eyr:2025 ecl:amb +iyr:2016 +hcl:#cfa07d byr:1925 pid:322787273 hgt:168cm + +hgt:59in iyr:2012 +pid:916978929 byr:1959 +hcl:#c0946f eyr:2021 +ecl:brn + +byr:2018 eyr:1929 hgt:187in +hcl:z +iyr:2003 pid:0377361331 ecl:utc + +byr:1949 hcl:#fffffd pid:071791776 eyr:2030 iyr:2015 hgt:71in ecl:hzl + +hcl:#341e13 +hgt:154cm byr:1927 eyr:2023 ecl:blu iyr:2017 +pid:639867283 + +hcl:z pid:315276249 byr:2026 +hgt:151cm +iyr:2028 eyr:2020 +ecl:hzl + +hcl:#341e13 eyr:2027 byr:1981 cid:342 pid:999898177 hgt:187cm +ecl:blu iyr:2011 + +byr:2009 +hgt:73cm iyr:1921 hcl:z +pid:181cm +ecl:xry + +ecl:hzl +byr:1925 +pid:034183103 hcl:#341e13 hgt:158cm eyr:2029 iyr:2010 + +byr:1976 +iyr:2011 hgt:177cm pid:833479839 hcl:#dcab9d ecl:blu eyr:2020 + +cid:230 hcl:#7d3b0c byr:1954 +iyr:2014 eyr:2026 pid:122150889 +ecl:brn hgt:182cm + +hcl:#a97842 +ecl:brn hgt:187cm +eyr:2028 +pid:427631634 iyr:2002 byr:2004 + +pid:912516995 ecl:hzl iyr:2017 hcl:#ceb3a1 byr:1929 eyr:2028 +hgt:155cm + +pid:019809181 +cid:128 iyr:2013 hcl:#f5b9f7 byr:1931 +hgt:161cm +ecl:amb + +hgt:64in byr:1924 +iyr:2016 eyr:2029 ecl:hzl pid:474940085 hcl:#c0946f + +pid:172419213 +ecl:grn +hgt:193cm iyr:2010 byr:1973 hcl:#6b5442 +eyr:2027 + +ecl:#7b5cfd iyr:2019 +byr:2016 +eyr:2040 hgt:191in +cid:187 hcl:z pid:#c61084 + +eyr:2032 iyr:2014 pid:430247344 byr:1967 +hcl:#ceb3a1 +cid:241 +ecl:brn hgt:178in + +hcl:#623a2f iyr:2017 cid:235 +eyr:2020 byr:1978 ecl:blu hgt:175cm + +iyr:2013 ecl:amb hgt:174cm hcl:#866857 pid:285533942 byr:1954 + +hgt:152cm ecl:blu pid:952587262 eyr:2024 +iyr:2019 cid:268 hcl:#602927 byr:1947 + +hgt:176in cid:245 byr:2011 iyr:2018 +eyr:1987 +hcl:z +pid:346518170 +ecl:utc + +hgt:180cm +iyr:2015 ecl:brn eyr:2027 pid:807494368 cid:324 byr:1980 + +byr:1936 hcl:#866857 ecl:blu +eyr:2021 hgt:187cm +iyr:2016 pid:244556968 + +byr:1950 cid:125 +iyr:2020 hgt:168cm hcl:#c0946f eyr:2030 pid:758313758 ecl:blu + +eyr:2021 +pid:618915663 hcl:#cfa07d iyr:2018 byr:2002 +hgt:157cm ecl:blu + +byr:1967 +ecl:brn hcl:#c0946f pid:200495802 eyr:2021 iyr:2020 +cid:335 +hgt:181cm + +byr:1996 +ecl:brn iyr:2015 +eyr:2030 +hcl:#fffffd cid:207 +pid:022460311 hgt:158cm + +eyr:2022 hgt:59cm iyr:2023 +byr:1974 pid:354098699 hcl:b244f7 +ecl:#219505 + +hcl:#866857 eyr:2025 +pid:370874666 +byr:1947 +cid:162 ecl:oth hgt:186cm iyr:2011 + +ecl:hzl eyr:2029 +byr:1981 +iyr:2012 pid:433430792 cid:252 +hgt:171cm + +pid:512473844 hgt:186cm iyr:2012 eyr:2028 byr:1949 ecl:hzl hcl:#18171d + +hgt:60cm iyr:1934 +ecl:#4a4017 pid:3067366202 hcl:1161df +eyr:1938 byr:2008 + +pid:119509757 hcl:#cfa07d eyr:2022 hgt:174cm byr:1983 +iyr:2015 +ecl:blu + +byr:1955 eyr:2023 +cid:114 +hcl:f1aa8a pid:609049659 ecl:grn hgt:177cm +iyr:2015 + +eyr:2027 cid:284 +pid:654627982 byr:1964 iyr:2018 hgt:168cm +hcl:#fffffd ecl:oth + +iyr:1988 +hgt:191cm hcl:b87a62 byr:1990 ecl:xry +pid:996624367 eyr:1960 + +pid:641466821 eyr:2028 hcl:#7d3b0c +iyr:2010 hgt:175cm ecl:gry + +hcl:#b6652a +ecl:oth +byr:1926 eyr:2030 iyr:2019 hgt:183cm +pid:057196056 + +iyr:2017 +eyr:2022 pid:936841429 +ecl:blu hcl:#6b5442 cid:179 byr:1927 hgt:161cm + +eyr:2021 +cid:289 hgt:174cm iyr:2013 +ecl:grn pid:329574701 byr:1970 + +eyr:2021 byr:1939 ecl:gry pid:933505139 iyr:2014 hgt:173cm hcl:#7d3b0c + +cid:116 hcl:045bff eyr:2030 iyr:1920 +ecl:brn +byr:2030 +pid:#38f7f3 +hgt:155in + +eyr:2028 +pid:225829241 byr:1928 hcl:#cfa07d iyr:2019 +ecl:oth +hgt:166cm + +cid:80 byr:1936 +iyr:2017 +hgt:94 hcl:#2e7503 ecl:oth eyr:2030 +pid:597284996 + +ecl:oth +iyr:2019 hgt:76in +byr:1956 pid:821874039 + +eyr:2026 hgt:168cm +pid:019015588 +iyr:2010 +ecl:amb byr:2009 hcl:#623a2f cid:159 + +iyr:1980 hgt:167in +pid:380644909 eyr:1966 ecl:blu byr:2004 hcl:z + +eyr:2020 iyr:2013 +hcl:#08ad66 pid:540886868 +ecl:oth byr:1980 hgt:158cm + +eyr:2026 hgt:186cm byr:1995 +cid:275 +hcl:z iyr:1958 ecl:blu + +eyr:2026 iyr:2012 +hgt:61in byr:1936 pid:390833536 cid:298 ecl:grn hcl:#623a2f + +pid:393878498 eyr:2023 ecl:gry byr:1943 iyr:2010 hcl:#888785 hgt:158cm + +hgt:191cm cid:197 iyr:2014 byr:1945 +hcl:#fffffd +eyr:2020 +pid:183948344 ecl:amb + +ecl:gmt hgt:88 +cid:260 iyr:2024 byr:2022 eyr:2031 hcl:z pid:#532c6e + +hcl:#a97842 +hgt:160cm eyr:2024 ecl:blu iyr:2015 byr:1970 + +byr:1964 hgt:178cm +eyr:2025 +pid:813643223 ecl:brn iyr:2014 +hcl:#ceb3a1 + +byr:1965 eyr:2024 iyr:2018 +hgt:165cm hcl:#18171d ecl:grn pid:475669993 + +hgt:116 +iyr:2024 eyr:1974 hcl:504345 byr:2010 cid:206 pid:166cm ecl:zzz + +iyr:2014 eyr:2020 pid:096460673 byr:1948 +hgt:153cm +ecl:blu hcl:#341e13 + +hcl:#ceb3a1 +iyr:2017 hgt:67cm +pid:178cm byr:2028 ecl:brn +cid:293 + +hgt:157cm +hcl:#602927 byr:1941 +iyr:2012 pid:611003211 eyr:2029 + +iyr:2019 byr:2000 pid:083917767 eyr:2024 hgt:172cm +cid:248 hcl:#7e4d15 + +byr:1946 +hgt:160cm iyr:2020 hcl:#559278 pid:989139577 +ecl:amb eyr:2020 + +pid:165cm byr:1927 cid:178 hcl:#733820 iyr:2017 hgt:156in +eyr:2029 ecl:brn + +hcl:#18171d hgt:163cm eyr:2022 byr:1962 pid:639124940 cid:258 ecl:hzl +iyr:2015 + +cid:123 pid:4542006033 +eyr:1987 byr:2010 iyr:2029 ecl:amb +hgt:191cm hcl:#18171d + +hcl:z +byr:1928 iyr:1965 +eyr:2022 hgt:75 ecl:oth pid:400765046 + +hcl:#c0946f hgt:62in +ecl:blu byr:1978 iyr:1923 +cid:260 eyr:2021 pid:404628742 + +pid:#bf1611 ecl:grn +iyr:2018 cid:146 byr:1948 +eyr:2025 hcl:#fffffd hgt:87 + +pid:767547618 +iyr:2018 hcl:#b6652a eyr:2029 hgt:165cm ecl:hzl byr:1937 + +ecl:blu iyr:2019 pid:960083875 eyr:2027 hgt:71in hcl:#c0946f +byr:1921 + +iyr:2011 +pid:9562042482 +hcl:z hgt:59cm +eyr:1994 cid:258 ecl:#6c1bcc byr:2025 + +eyr:2028 pid:494999718 byr:1928 hgt:176cm +iyr:2015 ecl:oth hcl:#733820 + +cid:78 eyr:2020 hgt:160cm byr:1947 ecl:blu +hcl:#b6652a iyr:2016 pid:069457741 + +hcl:#6b5442 iyr:2010 +byr:1971 +eyr:2028 hgt:169cm ecl:brn pid:528961949 + +eyr:2028 +hcl:#7d3b0c +byr:1952 +ecl:hzl +cid:317 iyr:2016 +pid:832169844 + +hcl:#c0946f +ecl:brn +iyr:2017 eyr:2028 +pid:161390075 byr:1993 cid:50 +hgt:171cm + +ecl:#ae12d3 hgt:74cm cid:239 hcl:z pid:345439730 iyr:1924 byr:2029 eyr:2031 diff --git a/input5 b/input5 new file mode 100644 index 0000000..1b2e977 --- /dev/null +++ b/input5 @@ -0,0 +1,771 @@ +FFBFFBFLLR +BFBFBFBRLR +FBFFBFBRRL +BBFFFBFLLR +BFFFFFBLRL +BFBBFBBRLR +FBFBFBBRRL +FBBBFBFLRL +BFFFFBBRRL +FBBBBBFLLR +FBFFFBFLLR +FFBBBFBLRR +BFFFBBFLRL +FFBBBFBLLL +FBFBBFFLRR +FBFBBBBLLR +FFBBBFFRLR +FBFBBFFRRL +FBBBFFFLRR +FFBBFFBLLR +BFBFBFBLLR +BFBBFFFLLL +FBFBBFBRRL +FFBBFFBLRR +FFFBFBBLRR +FFFFBBBRRL +BFBBBBFRLL +FBFBBFFLLR +FFFBFBBLLR +FFBFBBBRRL +BFFBBFFLLR +BFFFBBFLLR +FBBFBBFRRR +FFFBBFFRLL +BFBFBBFRRR +FBBFFBBRLR +FBFFBBFRRL +BFFFFBFLLR +BBFFBFBLRL +FBFBBBBLRL +FBFBFBFRLL +FFBFBFFLLR +BFBFBBBRLR +BFBBFFBLRR +FFBFBFFLLL +FFFFBBBLLR +FFBBBBBLRR +FFBFBBFLLR +BFFFBBBRLL +BFBFBFFLRR +FBBBBFFRLR +BFBFFBBRLL +FBFBBFBRRR +BFBFFBBLLL +BFBFBBFLRL +BBFFFFBLLR +FFFBFFFRLL +FBFFFBBRLL +FFFBBBBLRR +FBBBFBBLRL +BBFFBFFRRR +BFFBFFFLRR +FBBBBBBLLR +BFBBFFBLLL +BFFBBBFRLR +FBBBFFFLRL +BBFFFBFRRL +BBFFBFFRRL +FFBBFFFLRR +BBFFBFBRLR +BBFFFFBRLR +FFFFBBFLRL +FFBBBFBRRR +FFBFBBFLRR +FFFBBFBRRR +FBFFBFBRRR +BFFFFFBRRR +BFBFFBFLRL +FFBBBBBLLL +BFFFFBBRRR +FBFBFFBRLR +FBFFFFBLLR +FFFBFFFLLL +BFFFFFFLLR +BBFFFFBRRL +FBBFBBBRRL +BFFFFFFLLL +FBFBFFBLRR +FFFBBFFRLR +FBBFFBBLLL +BFBBBFFLRL +BFBFBBBRLL +FBFBBFFLLL +FFBBFFBRLL +BFFFFBBLLR +FFBBFBFLLL +FFFFBBBRRR +BFFFBBBLLL +BFFBBFBRLR +FFBBBFFLLR +FBBBFFBRLR +FFBFBFBRLL +FFFBFFFLRR +FFBBFBBLRL +BFFBFBFLRR +FFBFFFFRLR +BFBFFFFLLL +BFBBFBFRRR +BFBFBFFRLL +BFFFBFBRLL +FFBBFBFLRR +FFBFFFFRRL +BFBBBBFLLL +BFBFBFBRRR +FFFFBBFLRR +FBBBBFFLRL +BFBFFFBLRL +BFFBBFBRLL +FBFFBBFLLL +BFBBBBBLRL +FFBFBBBLLR +FBBFFBBLRR +FFBFFFBRRR +FFFBBBBRRR +FBBBBBBLRL +FFFBBFFLLL +BBFFBFBLRR +BFFBFFBRLR +FFBBFBBRLL +BFFBFBBRLR +FBFBFBFRRL +BFBBBFBRLL +FFFFBBBLRR +BBFFFFFLLR +FFBFFFFLLL +BFBBFBFRLR +FFBBBBFRLR +BFBFBBBLRL +FBBFFFFRLL +BFFFBBBLRL +FBBBBFBRLL +FFBFFFFRRR +BFFFBFBRLR +FBBBFBBLLL +FFBFFBBLLL +FBFFFBFRLL +FFFFBBBRLR +BBFFFBBLLL +BBFFFFBLRL +FBFBBBFRRL +BFBFFBBRLR +FBBFFBBLLR +BFFBBFFLLL +FFBFBBBLLL +BFFBFFFRRL +BFBBBFBRLR +FBFBBBFLLL +BFFBBBBLRR +BFFBFBFLLL +FFFBBBBLLR +BFFFBFFLLR +FFFBFBBRLL +FFBBBBFRRL +FBFBFBBLLR +BBFFBFFLRL +FBFBFBFLLR +FBFBFFFLLR +BFFFBFFLRR +BFFBFFBRRR +FFFFBBBLLL +FBBFBFFLLR +FFBBFBFRRL +BFBFBBBLRR +BFFFFFBRLR +BFBBBBFRRL +FFFBBBFLRR +FBBFBFBRLL +FFFBFFBRLR +BFFFFFFRRL +BFFBFBFRRL +BFBBBBBRRL +FBBFBFFRLL +FFBFBBBRRR +BBFFFBFLRL +FBBBFBFRRR +FBFFFFFLRL +FFFBBBBRLR +FBFFFFBLRR +FBBFFBBLRL +BFFFBBFRRL +FFFBFBFRRR +BFFBFFFRLL +BFBFBFFLLR +BFFBFBFRLL +FFBFFBBLRR +BFBBBBBLLR +FBBBFFBRRL +FFBBBFFRLL +BFFBFBFLLR +FFBBBBFRLL +BFBFFFBRLR +FBFFFFBLRL +FFFBBFBRLR +FFFBBFFLLR +BFBBBBFLRR +FFBFBFFRRR +BFFBBBBRLR +FBFFFFFRRL +BFFFFFBRLL +FFBBBBFLRL +BFFFBFBRRL +FFBFBFFLRL +FFFBFFBLLR +FBBBBFBRRL +FFFFBBFLLR +BFBFFBFRLR +FBFFBFBRLL +BFBBFBFLRL +FBBFBBFLLL +BFFFFFFRLL +FBBBBBBRLR +BFFFFBBRLL +FBFBBFFLRL +FBFFBBFLLR +FBFBFBBLLL +FFBBBFBLRL +FFBBBBFRRR +FFFFBBBLRL +BFBBBBFRLR +BFBFBBFLRR +FFFBBFFRRL +FFFBBFFRRR +FBBBBFBRRR +FFBBBBBRLL +FBBBFFBRLL +FBFBBFBLRR +BFFFBBBRRR +BFFBBBBLLR +BFFFFBFRLR +FFBFFFFLRR +BFBBBFBLRR +FBFFFBBRLR +FFBFFBFLRR +FFFBFBBLLL +BFFBFFBRLL +FBFFFBFLRR +FBBBFBFLLL +FBBFFBFLRR +FFBFBFBRLR +FFBBBBBRRR +BFFBFBBRRL +BFBFFBBRRR +BFFBBFBLRR +FBBFFFBRLL +FBBBBFFLLL +FBBBBBFLRR +FBFFBBBLLL +BFFBFFBLRR +BBFFFFBRRR +FBFFFBBLLL +FFFFBFBRRL +FBBFBBBRLR +FBFBFBFRLR +FBFFBFFRRR +BBFFFBFRLL +BFBBBFFRLR +FBBFFFFRRL +BBFFFFFLLL +FBBFFFBRLR +FFBFBFFRLR +BFBFBBFRRL +BFBBBBFLLR +BFFFBBFLRR +FBFBFBBLRR +FBBFFFBLRR +BFBFFBFLLR +BFBFBFBRRL +FBFBFFBLLR +FBBFBFBLRL +BFBFFFFRLR +BFFBBFBLLR +BFBBFBBRLL +BFBFBFFRRR +FFBBFBBLLR +FFBFBFFLRR +FFFBFFBLRR +BFBFFFFLLR +FBFBFFBRRL +FBFBFFFRRL +FBFFFFBRRR +FFBBFFFRRL +FFBFFBBRLR +BFBBBFFLRR +BBFFBFBRLL +FBBBBBFRRL +BBFFFFBRLL +FFBBBBFLLR +FBBBBFBRLR +FFBFFBFRLR +FFFFBFBRLR +FBBFBFBLRR +BFBBFBFLLR +FFBFBBFRRR +FFBBFBFRRR +FFBBBBBLLR +BFBBFFBLRL +BFFBBFFRLR +FFFBBFBRRL +BFFFFFBRRL +BFBBFFBRRL +BFFBFBBLLR +FBBFFFBRRR +FBBBFFFLLR +BFFFFFFRLR +FBBFFFFLRL +BFFFBBBLLR +BFFFBFBLLR +BFFFBFBLLL +FFFBFBFLRL +FBFBBBBRLR +FBFFFFFRLL +BFFBFFBLLL +FFBBFBBLLL +FBFFBFFRLL +FBFFBFBLLR +FFBBFBBLRR +FFBFFFFLLR +FBBFBFBRLR +FFBBBFBRRL +FBFBBFBRLL +FBFFBFFLLR +BFFBFBFRRR +FBBFBBBLLR +BFBBFFBRLR +BFFBBFBRRR +FBBBBFFLRR +BBFFFFFLRR +FBFFFFFRRR +FFBBFFFLLR +FFBFFBBRRL +FBBFBBFRRL +BFFFFFBLLL +FFFBBBFLLL +FBBBBFBLRR +FFFBBFFLRL +BFBBBFBLRL +FBBFBBFLRL +FBBFFBBRRR +FFBFBBFRLL +FBFFFFFLLL +FFFBBBFRLL +BFBBFBBRRR +FFFBBFBRLL +FFBBBFBRLL +FBBBBBBLRR +FBFBBBBRLL +FFBBFFFRRR +FFFBFFBLRL +FBBFBFFRLR +BFFFBFFRRR +BFFFBFFRLL +FBBBFFFRLR +FFBBFBBRRL +FFBBFFFRLL +FFBBFBFRLL +FBBFFBFLLL +FBFFBBBRRL +FBFBFFBRRR +FFBFBFFRLL +FFFBFFFRRR +FFBFFFBLRR +FFBFFFFRLL +FBFFFFBLLL +BFBBFFFLLR +BFBFBFBLRR +FBBFFFFLLR +FBBBBFBLLR +FBBBFBFRRL +BFBBBBBRLR +FBFFBFBLLL +FFBBFFFLLL +FFFFBBFRRR +FBFBBBFLRR +BBFFBBFLLL +FFBBBFBLLR +FBBFFFFLRR +FBBFBFBLLR +FFBFFFBLRL +FBFBBBFLLR +BFBBBFFLLR +BFFFFBBRLR +FBBFBFBLLL +FBBFFBFRLR +BFBBFFBRLL +FBBBBFFLLR +BFFBBBBLRL +FBBFBFBRRL +FBBFFBFLRL +FBBBFFFRRL +BFBFBFFLRL +BFBFFFFLRR +BBFFBFBLLL +BBFFBFFLLR +FBFBBFFRLL +BFFBBBFLLR +FFBFBBFRRL +FBFFBBBLRR +FBBBFBBLLR +FBFFFBBRRL +FFBBBBFLRR +BFBFFBFLRR +FFFBBBFLRL +FBFFBFFRRL +FBBFBFFLRL +FBBFFFBLRL +FFBBBFFRRR +BBFFFBFLLL +FBFFBFBLRR +BBFFBFBLLR +FBFFFFBRLR +BFFFFFFLRL +FBBFBBBLLL +BFBFFBBLRR +FFBBFFBRRL +BFFFBFBLRL +BFBBBBBRLL +FBFFFBBLRR +BFBBFBBLLR +FBBBFFBLLL +FBFFFBFRLR +FFBBBFFRRL +FFBFBBFLRL +FFBFBFBLLR +FBBFFBFRLL +FFBBBFFLLL +BFBBBBBLLL +FBBFFFBLLL +BFBFFFBLRR +FFBFFBFLRL +BFFFBBBRRL +BFBFBBBLLR +BFBFFFFLRL +BFBFBFFRLR +FBBFBBBRLL +FFBFBBBLRL +FBBBFFFRRR +FBBFBFFRRR +FFFFBBBRLL +FBFFBBBLRL +FBBBFBBRRL +FBFFBBBLLR +FFFBBBFRLR +BFBFBFBLLL +BBFFFFFRRR +BFBBFBFRLL +FBBBFBBLRR +BFFFFBFLRL +FBBBFFBLRL +BBFFBFFLRR +FFBFBFFRRL +FBFFFBBLRL +FFFFBBFRLL +FFBFFFBLLR +FBBBFBFLRR +FFFBFFBRRR +BFFBBBFLRR +FBFFBFBLRL +FFBFFFBRLR +FFBFFFBRRL +FFBBFFBLRL +FBFBFBBRLR +FFFBBBBLLL +BFBBBFFLLL +FFBBFBFLRL +BFBFFFBRLL +BFFBFFBRRL +FBBFFFFLLL +FBFFFFBRRL +FFFBFFFLLR +FBFFFBFLRL +FFBFBFBLRL +FBBBFFBLRR +BFBFFBBRRL +BBFFFFFLRL +BFFBBBFRRR +BFFFBBFRLR +BFBBBBBLRR +BFFFBFBLRR +FBBBBFFRLL +BFBBFFFLRR +BBFFFBFLRR +FBFFBBFRLL +FBFFFFFLRR +FBBBBBFLLL +FBFBFBBRRR +FBFBBFBLRL +BFBBFFBRRR +BBFFBFFLLL +FBBFBBFLLR +BFFBBFFRLL +FBFBBBBRRL +FBBFBBFRLL +FBBFBBFLRR +FBBFFBBRRL +FFFBBFFLRR +BFBBFBFLRR +BFBFBFFRRL +FFBBFFFRLR +FBFBBBBLRR +BBFFFFBLLL +BBFFFFFRLR +FBFBFFBLRL +FBBFBBBLRR +BFBFFBFRRL +BFFFFFFLRR +FFFBBBFLLR +FBFFBFFLLL +BFFBFFFRLR +FBBFFBFRRR +FFFBFFFRRL +FFFFBBFLLL +BFBFBBFRLL +BFFFFBBLRL +FFFBFBFLLR +FBBBFBFRLR +BFBBBFBLLR +BFFBFBFLRL +BFBFFFBLLL +FFBFFBBLRL +BFBBFFFRRR +FFFBFFBLLL +BBFFFFBLRR +FFBBFBFLLR +FBFBBBBRRR +FBFBBBFLRL +BFFBFFFLLR +FBFBFFFRLL +FBBBBFBLLL +FBBBBBBRRR +FBBBBBFLRL +BFBBFFFRLL +FFFBFFFRLR +FFBFFBBLLR +FFBFBBBRLL +BBFFFFFRLL +FFFBFBBRLR +FFBFBBBRLR +BFFFFBFLRR +BBFFFBBLRL +FBBBBFFRRL +FBBFBBBRRR +BFBFFFFRLL +FBBBBBBRRL +BFFBFFBLRL +BFFBBFBRRL +FBFFFBBRRR +BFFBBFBLLL +BFBFBFBRLL +BBFFFBBRLL +FBFBBBBLLL +BBFFFBBLRR +BFFFFBFRRL +BFBBFBFLLL +FBBBFBBRLR +BFBBFBBLRL +BFBBBFBRRL +FBFFBBBRLL +FBBBFBBRLL +FFBBBBBRRL +FBFBBBFRLL +BFFFFFBLLR +BFFBBBBRRR +BFBBFBBLLL +FFBFBBBLRR +FFBFBFBRRR +BFBFFFBRRL +FBBBFFBRRR +BFBFBBBLLL +BBFFFBBRLR +BBFFFBBRRL +FBBBBFBLRL +FBBBBFFRRR +FBBBFFBLLR +BFFFFBFLLL +BFBFBFFLLL +BFFFFBFRLL +BFFBFBBLRL +FFBFFBBRLL +FBFBBFFRLR +BFBFFFBRRR +FBFFBFBRLR +FBBFBFFLLL +FBFFBBFLRR +FFBFBFBLRR +FFBBFFBRRR +FBBFFFBLLR +FBFFFBFRRR +BFBFFFFRRL +FBBBBBFRRR +FFFFBFBRRR +FFBBBBBLRL +FBFBFFFLRR +FBBBFFFLLL +BFFFBFFRLR +FFBFFBFRRL +FBFBFFFRRR +FFBFBFBLLL +BFBBBFFRRL +BFBFBFBLRL +BFFFBFFLRL +FBBBBBFRLR +FBFBBFBLLL +FFFBBBBLRL +FBBFBFFLRR +BFBBBFBRRR +FBBBFBBRRR +FFFBFBFRLL +FFBBBBFLLL +FBFFBFFRLR +FBFBFBFLLL +FBFFFFBRLL +FBBBBBBRLL +FBBBBBFRLL +FBBFFBFLLR +BFFBBBFRRL +FBFFFBFLLL +FBBBFFFRLL +BFFFBBBRLR +FBFBBBFRRR +BFFBFBBRLL +FBBFFFBRRL +FBFFBBBRLR +BFBFFBBLRL +BFFBBFFLRL +FBFBBBFRLR +BBFFFBBLLR +FFFBFFBRLL +BFBFBBFLLL +BFFBBFBLRL +FFFBBFBLRL +BFBBBFFRRR +FBFBFFFRLR +BFFBBFFLRR +BFFBBBFLLL +FBFFBBBRRR +FBFBFFFLLL +FFBFBBFLLL +FBFFFFFLLR +BFBBFBFRRL +BFBBBBBRRR +BFFBFBBLLL +BFFFBFBRRR +FFFBFBFLLL +FFBFFFBRLL +FBBFBFBRRR +FBBBBBBLLL +FBFBFFFLRL +FFFBFFBRRL +FBFBBFFRRR +FFBBFBFRLR +BFFFFBBLLL +FBBFBFFRRL +BFFBFFFRRR +BFFBFFFLRL +BFBBBBFRRR +BFBFBBBRRL +FFFBBFBLLL +FBBFFBBRLL +BFBBBFFRLL +BFFFBBFRRR +FBFBFBBRLL +BFFFBFFRRL +FFFBFBBLRL +FBFFFBBLLR +BFFFBBFLLL +BFFBFFFLLL +BFFBBBBLLL +BFFFFFFRRR +FFBFFBFRLL +FBBFFBFRRL +BBFFFFFRRL +FFFBBFBLRR +BFBFFBFLLL +FBFBBFBRLR +BFBBFBBLRR +FBFFBFFLRL +BFBFFFBLLR +FFFBBBFRRR +FFBBBFFLRR +FBFBFFBLLL +BFBFBBFRLR +FBFBFBFRRR +FFBBFBBRRR +FBBFFFFRLR +FBFBFBBLRL +FBBFFFFRRR +FFBBFFBRLR +BFBFBBFLLR +BFFBFBFRLR +BBFFBFFRLL +BFFBBFFRRR +BFFFFBFRRR +FBFBFBFLRL +FFBFFBFRRR +FBBFBBBLRL +FFFBBBFRRL +FBFFBFFLRR +FFBFBBFRLR +BBFFBFBRRL +FBFFBBFLRL +FFFFBBFRRL +BFBFFBFRLL +BFBBFBBRRL +FFFBBFBLLR +FFBFFBFLLL +FFBBBBBRLR +BFFFFFBLRR +BFFBBBFLRL +BFBBFFBLLR +FBFFFFFRLR +FFFFBBFRLR +FBFFFBFRRL +BFFBBBBRRL +FFBFFFFLRL +BFBBFFFRRL +FFFBBBBRLL +BFBFBBBRRR +BBFFFBFRLR +BFFBFFBLLR +FBFBBFBLLR +BFFBFBBRRR +BBFFFBFRRR +BFFBBFFRRL +FBBBFBFRLL +FFBFFFBLLL +BFFBBBFRLL +FBFFBBFRRR +FFFBFBFLRR +BFFBFBBLRR +FBFFBBFRLR +FFFBFBFRRL +FFFBBBBRRL +BFBFFBBLLR +BFBFFFFRRR +FFBBBFFLRL +FBBFBBFRLR +FFFBFFFLRL +BFFBBBBRLL +BFBBFFFRLR +FFBFFBBRRR +FBFBFFBRLL +BFFFBFFLLL +FFBFBFBRRL +FFFBFBBRRL +BFBBBBFLRL +BBFFBFFRLR +BFFFBBFRLL +BFFFBBBLRR +BFBFFBFRRR +FBBBFBFLLR +BFBBFFFLRL +FFFBFBFRLR +FBFBFBFLRR +BBFFBFBRRR +BBFFFBBRRR +FFBBFFBLLL +BFBBBFBLLL +FFBBFFFLRL +FFFBFBBRRR +FFBBBFBRLR +FFBBFBBRLR diff --git a/input6 b/input6 new file mode 100644 index 0000000..5e763e8 --- /dev/null +++ b/input6 @@ -0,0 +1,2178 @@ +w +s +q +s + +klfrwivqhc +w +wgyze +anw + +khfraeogtbdscw +rdofujgnm +ydfrgo +dgjoqmrf +yrfdgzpon + +xmivszjcnqhda +efwvanjd +dvjuywna +egjwvndkboa + +mraiyzpxngdl +ynzdmgkxwpaiolr + +ur +rq +r + +xbkdvzgwuterocn +zukrvtbneogdx +umykaztlrodgbxwve +odujhzrpsxekgbiv + +vhkmesczrwpj +cvkmrzhsewpj + +rpt +qwu +j +k +p + +crjqtmzkba +kjuhynv + +xjnpivhszgofwum +cipqmtugyobxvwfhn + +qgcmjr +rbmgjoq +zuekypfwdng +amsxg + +ykwj +yjunwk +jkwyd +iwkzjy + +qsdczjkoixlrnyvbmgtf +woickyhaguesfrnpq + +pma +ma + +g +n +rh +n + +tjhcxba +bxthacj +abhtxjc +hjbaxtc +jbctxha + +obuairedl +wauixvbogejdpln +ldciokbaue +myblsdeuiazo +tdembualfizo + +bpumtwsxe +tsaumxw +hxuftswm + +vqglbnuhej +xbglpwzyam +uelbgovc + +qcdwjtghispmorvlu +mziopsvhdwtlgjuqrc +rdlspoujmtwgihvcyq +nojtaidspuhvmkblwercqg +dpqohtufrcvlmjgswi + +jgmbovu +akiuxtg + +rsuypgkdiofnbwt +npcdvyokbirwgt +mnybkgeortadpw + +idt +idta +idt +idt +nidtry + +amoxgqywpznistrlf +zqfidnsbyjgaxwo +nsyqijwxvohazfg +sioxnqfwazgy + +ryhgae +ahygre + +waopckqgeyrsuh +qrkwaegysocuph +csohuawqegrpky +ykqahecrsoupwg + +eswjgdxfmkvq +jmtkwbvxqfedrs + +eqkmozylat +yjmaezkrl +zbmkalye +zmaekigyl +ylakemzjc + +tqlrzgwdokxnu +lkdanfmci +nhmejkdflap + +mxviraylsouf +vbspyxfaewiruqktdczl +yhlravxgfisu +nxyvlusafir +rsvafxliyu + +qlrgcjdpnyzofkxmeiv +kmazvnxscotrjeygdilpf +zxdnogtmlqjevfkiypc +pglconixjvbzkfymue + +zyxucs +sxcy +csxy +xscy +xscy + +uavrcwslpdqghmenbioxjyz +kjcqgrpdnymelxuzothawvib +lhbcumsfqrvzwnxjydpoagie +qgozpicjumxwaybnrlvdhe + +vwdegcnoqafb +avbwqectgnof +acqefnwvgbo +oeqabfwrcjlgnv +ancqwovegfb + +qva +va +xba +a + +nhxeygm +oaypjdznr + +ngzm +uhql + +nyujw +uynw + +ercqboln + +s +yh + +d +qs +n +efwcn +w + +yzowkdciuqljeg +goiyjwzckludeq +yuekgwjodlzicq + +qxkhclsg +xlqckg +qxkcgl + +nwrxtshalk +fqoc +ypqug +pmfvzc +vzigd + +diqentabxumf +utnmieadqb +udtemqinba +mbqidntaeu + +imjpuxdlsr +pmrlxsjdi +xjpisrdml +ialpxshdmyjr +smjxzplrdi + +eivhrugycstznxjkawqo +rhxwkizjeqayougtvncs +zbsygjuwacioxpnktqvhre +cyirhogexjzkwsntuavq +csrovwjqxnhzayktegui + +h +fd +h + +uphjsebqgklcomtwify +cqkltbwofhspugimeyj +wvrekmaxicufgyjbhqopsltz +qtobyikeschjmgflwup +sceghujwtfkpblyqmio + +a +a +a +a +a + +gskndyzmophwclqv +mylhsqdcnozpkgwv +snyodvwplgmkzchq + +nyfjkgwielzq +shoumqbpxg +zlvkwrgaq + +omndevzcwyajltfksq +ztfvpyjwdrlbmqoce + +viqrlshezknaow +vheawroznstkblq +hxfswlvegjnoyrkqc +iblhwqneouvkrms +hdpsnwqrvekol + +r +tr +srk +ryz + +aqzkthji +qkwzjta +jzktqa +tgzkasrojq +nzikhjaqut + +wr +wrg +wr + +lmvpujx +bczhsgfaqt + +fhadqpy +qbk +ixstvjlcrmwognuez + +cpuznxavj +pxvuzcja +cjpuzaxv +upzjvaxc + +hftodjcxvbrisuy +bhuodryvsfjxi + +wtdf +nwuikz +lxmbjawysh +kdrtw +qfkw + +ymxzrfh +zrwjdhf + +lniw +wnli +wnzrli + +ubwjo +sjzo +rjo + +zikumqlvjobw +ktoaufevgrb +rnkbtovduh + +jmvbntqilzhrgp +qhgzvkmtripw +psrqwgihzvtm +vmgqrtpihzd +vqrwipgmthsz + +hnyzvkwgeo +ezhvoynk +evnhkoqwzy +hvznelgkoy +oyekhaxviznu + +pwqivtzgebnolk +inqwtvgzopb +qwinobvgzpt +vbiowqtpnzg + +ulsvitcxngwzhryaebkfp +sxypjlzgoihkrnubva + +bzgt +gotxzb +ztgb +tbglz + +lsrqikouybjdvawz +qnchepfoi + +ufwavmp +vfpamwu +wfvmpau +vwumfpa +pmtfuawv + +g +gh +e +n + +swfjhadxgnuzrybokl +sleobifpuqhkzc + +pcwfrnhsvdgejimlzoaubk +vducpzwnsjmhoilgkbaerf +rpbjnwvguahecofmkisdzl +ufbxshgloznvrwipjcqeadmk +hnmscakpleigdfjozvburw + +ouraitbgl +trdmgi +fcxpstnyjg +gouat + +nmrvxhdc +chnrmvxd +xvrhcnmd +mrcdvxhn +mxvndhcr + +cufsjilngrbydkhqex +kljdhfaxyguqisbrw +dkgubshipmxrlqftoyj + +jsi +sij +sji +isj +jis + +prnxkmutl +pdvuaeyxochzltnkmr +gmxlutkpnrb +lxpmkrtnu + +amcxhzlrpg +kpmowcr + +n +ryn +an +n + +qfgeuyn +unqcfe + +haj +ocja + +tbfmzce +tfmzbe +smzefbt +mbztfe +mfztbe + +cgrtbynxejvqmhalf +hyafxecjqvrnmbltg +qtghbfrmcxaevjlny +fyqjgcemhlabnrtxv + +h +h +h +wh +hg + +mpidnesyhcowqtgulfk +oehmlsxqundfgbkytwa + +hsqywtmpgazudj +tpuewnhoagzsydjlm +gdupwstzjahym +qwrpgikdyuatzhjms +mtaduhswzjpgy + +yfcirgulotspbxehdzmwnkqv +aqvgyhtrniemlxpbcudwsf + +bguysvaqwcmdjk +xmgfuybtkprqacd + +rjmoslapxkvuht +uavxpsflhjoktr +hpcjtarlsqwkoxuv +jvakpxloushtr + +iwcnso +bgwc +gpwcu + +jwdiuyabzklmqsxv +uxyjkvqwdszflabmi +aiqwuszlxbkjydvm +vysjdmqlzwxaibku +mksabwzxqivujdly + +a +alo +a +a +a + +dzushfvegcopkbw +oueshcbkvdpwg +esbcowkgvpduh +pghduksijcevywobl +puezsvdohbwckg + +ymow +moy +ohmyle +ymo +moy + +mzctqbypdkrialjgoxsf +kqpoyabcigszdrtmfljx +xkfgltdipzjqysacmbro +lirmkbxsafcgdozytjpq + +yhtvcsfaigk +wrevhoqdm +zphujdrlnv + +zyahfewvcs +sfzcweayh +woeshuacyf + +p +ljbr +wxp + +cfdltixjupqon +nmuptcqodlfij +rpltfunoqjicd +nlqctporjifud +ufipcdtlnojq + +xu +uowa +ux + +ycloxsvrwajqbzfkhpgmun +wjlrmuoaxvkqfbpzsyhcng +aqrcybjgonhkpuvmzlfxsw +warfnczvokmyjgsqxhblpu +tvzngwyqbfulxcphoskjrma + +yfhzaw +hmuazqwbj +ayhzwi +awxetzh +gawzih + +gsbqoynfmevkcadjzu +dmyofukqezgasctvn +zqkmoadfnubsiveygc +gezqymskdfnouvaci +kzgncourmyfqeavsd + +pzkyu +pyedw +ypr +tyifxjnsp +rbkqywup + +mlwtuqxsog +xzmusgwtlq +qmitxvulsgwcak +uxwgjmrtslq + +bcnkpwtmqgorsfxy +hmogknxfpqwsctbr +gqsracvfiobzkxnpmw + +kpxv +pfkzxv +xpk +pkx +xubokps + +bwlytxgviueczfqakrpsmhojd +fowlhcmvasbqdgptjikyxruze + +nowi +ivonqx +if +lysuabtiprdkzh + +u +u +u + +dkrhoamveqlgcjwfsz +dgokizyvfjhaqwcme +thwguqxoadznekvcjpmbf + +hyrsn +rhdyjsf +ycbzrs +smrykotpu + +tsnfogyic +ingctoysf + +cvnoazqpkthxwj +qhsmjdlznvkwfbt +qnvkhjwlstz +ltjzkugbqhwvnis + +q +ytx + +vxjyeorpcgbsta +oajbxtysv +tymsxjoabv + +jwko +wojk +wjko + +nfjvu +nfkv +dvnfse + +toe +toe +ote + +zqrmchysuf +oyzufmqslke + +sgbwp +pgwbs + +bl +klp +led +l +lq + +ea +ea +rfeah +ae +aex + +kbpnxtliue +kxbtieunp +exbtipuknr +nburkipxtel +igtpwhnejqbuckx + +hfarpblqs +baophlqrexfsd +hbqfsnlpar + +fspkvb +hfpkvsb +vpsfkb + +fbnx +fknl +nftl +cuzownfq +fyn + +qd +qfdzy +dq + +jhwgyisz +vfkcdjqhme +hxwjo +jyhbr +hsuj + +bip +jolwnbcgp +reptb +pbz +bpe + +hrdiepna +vitecpzyndar +esbkaudrijpnlog +pxivdaenrh + +hpfwjy +fjya +ajyf +yfj + +r +rz +r +r +r + +r +r +r + +sqlcpxhtouyzwv +tyxhrsbuczklidogvq + +aisdgc +mcdsiga +asigdc +dcisag + +iswu +siw +sqwi + +aixlbtqznjcgshu +oayljitqguzbchxns +suxgbcntaliqjzh + +fubhpe +ufibkay + +lena +izaj +axbvk +chav + +fkoshgqju +jiq +qjwbi +jiq +jyqbi + +ebaqscfvhgtuoirnjwxlzykp +hfjxqtuvrwgeknboipazyscl + +qrdo +qlfejdru +pqxyra + +gmnafo +fsgmepna +mfonag + +pnxtgjqsbizkyc +ithkycsjbpzxru + +snfwtloepqdrkiy +qkobliwsdnh +wsxjqnihzkodl +ahdwsilnkqbo +duowiqcmksnl + +cjft +haorelpitd +gbxhedt +knzthvyaqu + +vgyoklbrhedtwcjxans +eaxgovbrudfnhzktjsyclw +ytcgjxvodwhaenlsbrk + +fnmhxj +lfnxr +xmnefc +wduktfvqgn + +omf +jwfou +cpdgxqevabkrzny +lwhts + +vhn +hirkuj +hzngm + +minhkslfp +rfahobpksn +plfknsch +psifmcnhk + +xkoiztsqvpceywhfbndu +ebkpvsunzcxhmofdiqyt + +nfp +fne +fn + +hinmuatrvygoqxfsjc +vrfxtuagojyiqnhscm +tifguysjoxrnqmadhcv + +yetihjzfkndum +nejhiatzumkyd +zitvhkdenmjyu +hinjeumtzykd +ekztmhndjiuy + +glbtefawdsycomj +djbsgnalyokcwmte +mojdwysnategclb +bvgcjosaytwldemp + +evwuatlypjixqzrsmhc +erwiucsaxmtvhyjzl +lhcxeavjmyzurtsonwip +mxveyutrhslgbaczdjifw +snmyhxctuazerkwlvji + +rvpwjbh +yfecq + +vxbchwiygoe +gwivcydbxeho +ylogwcevibhtxa +bgwphicvexyo +emivwogychrbx + +pwghmnxtfzbyl +vqsakujrdo + +areduqjvczsm +jadhzebrcum +dcrumqayjzei +rczsujymdea + +omtyndvrha +vwdhaort + +crb +r + +uirepncmbyhzkaofwxvd +recwkxyhfnbmzaduovs +kwceyznjbfoidhamrxvu + +lejmaipctkvuwgzqfsnor +okmuaizfsrtnwlevjcgqp +lqkwnraeuovstmizpjcgf +atsunvqljzepckrmogwif + +rjobteshildmxacpz +lrpdbajtmhcsoexiz + +l +pvnsiom +khgx +f +f + +khjgfwy +fpgykjw + +wajntv +wdzuvtj +iowjvtke + +fwvopmi +singjtf + +nocq +nugbvmqeo +qaoscn + +rlkzoi +opfsta +qvuo +soxp +xhmoj + +guvqownkfrilte +aegnhfyxcszqbwvl + +qzo +qlr +vquo +fgq +nkwhbdactmxijq + +ijqgmnkeoxwuvbta +tiubnkgwamoqvj +ajdkuqtimbpvonhgw +mjgnyqitvwraobuk + +s +g +g +g + +vspbciqmaj +pijumqscva + +evpqzoxgtmbns +tevgqbpfsnxl +epnbtgsxvq +qxpsnetgmvb +depavkqngtrbjxs + +aplrhkuiyf +mxhpvwfzolsn + +fxtbhediuslacmy +hbkufmistx +ihupfsmtbxz +mfhipusxtb +xihmtjbsuf + +muzqcfp +mcpfzu +mrzfpucw +zfcvmup +pzcufm + +q +q +q +q + +jbk +peiw + +vuejaotbcp +ulbakiotxdcry +cobunat +bmcfvhauto + +qpo +qopw +pqo + +ckpequzlfdtrb +yphsdgwbzn +bgmpzd + +nbuqtywiloaesz +rkghxdvf + +owetrs +etbwciulf + +heaudnstmjwrpg +pxkyniszuebmolhfjdgr +jenrsqcupdwhmg +pujhrdmcengs + +cutnl +ltunc +cntlu + +hd +bih + +rdf +drf + +kftwxpoqmgbuil +wfstpikuhqbcmxog +zktqfjpxayobvumin +qgtfbopkruidmx + +sovyuxi +vux +uvqx + +j +j +j +j +mav + +qark +tdeaquk +zaxnwcpylkgvoqmhi +kaq + +rfysxdtumlwavingkhqo +gbudftnxypmzrlevakjoq + +qafyltcembujhd +jmaqtdublyfche +dmhbqljfeaytuc +emdtqyjahucbfl +tcbfjlyemaqudh + +cpxhbjlqwarm +bhlzcawpjmqyg +cjlwbamhqpe +fhlbjcmpqawv +jalmbqiphwc + +zoyw +yzo + +qvudhfxtjesibgwynaorl +nuctmlvpkgoefqsihbrwyzxa + +mgkqthideusny +ohtgleqksudiynm +nhgikyustdqme +puqgrdyntmhkise + +hlmfcir +lcmfrih +rlkcyfmhin +imhcrlf + +ifqds +spodiqf +ifdsq + +ajp +apj + +dramqyjeiskugn +qidmekaysrgpjfun +egysqnkrijluadm +ngdirjyksameqlu + +tmpogzdsxrye +sryedpmqxzg +zcxpmlsukydreg +dpeolsyxkwgtzijrm +mefyrxdpbsvghz + +qafgj +agfjd + +hrczjfebg +fjergzc +cfmrztsygvl + +istujvdk +keyoahi + +ktwuhfqas +qksmthdwaru +ajkthusqpw + +eprjtfahignbcklvuqwyx +apxqrceguwtjnkbhyfilv + +drosxgbv +orvbgx +xgrobv + +ylmpr +yrmlp + +auwizmytjcsdbnvo +ywsmkoatibzndcju +nytqecdbxhlzmiwuoarsgj +vtdowcfjymsauknbiz + +z +z +z +z + +hxjiqdaveoku +jxqkdvheioau +hxoqdueajvki + +tuxfs +usxtf +uxtfs + +dnaiovgxlryzhqwepbmuj +zbgxvpaudnmwrqohejyil + +qaybxdnelzokvjhmwrgusiftp +pyoukjfretqzsdxmhwvna +szwcvfkohpuyeqntrdamxj +jzkrfqvyptahxsmnowdue +yepoudnfxzkwjmqvtrsha + +pd +e +m +lq + +xcyvzopaubf +zhuyovbpcx +bcxuyvgzhop +dyczxoubvpmsw +zovykxucpb + +w +w +w +h + +aohk +kao +vkyhoa +oqvak +akjow + +r +r +g +r + +clnhiwztgq +ydfxzrcvjg + +otmchepjl +gkvunyfwlm + +ruzxit +ixtzdr +xrzit +xqzitckr +trizux + +grufeslzwvxqndhimakcyjp +soaxtzmwgjdlnkpcqevrfuiy +bdaxjepnmzkruslyvqifwcg +qjiysmvhxfurkaegzdwlpcn + +cerjstxhanlzkqgodfuy +crjsonqyuvdaelhftxzgk +rksaucfxdgmoqnhytejzl +gsnuojthickrealfzdyqx + +wmstjfqhvaplord +fgnejqhkouizpvt + +ojzucmk +upvmaozj +uhimrxjoqgzbw +utzjoemk +vztojmeu + +elqmorhugsxypbtza +ogtlyehzpfaqxurbms +eqbgrxhauymptlzso + +xldewg +lgdxznew +zexwgld +ldwxge +bghlxviwed + +pgqovbkfxciz +fqobpzxkct +czqfxpbko + +h +h +w +h +h + +gw +wg +wg +gw +gew + +byvadoriwmkhfqtcznglusxpje +xmwvnjpglyeocqhfarusbkzdti +zlrgmsbhinxvqueojtfawdcpky +pwghxcjybruidskelqmvaonftz + +zwqlxogbvtuafeh +xrhaelugfwkoztb +zytuelfhoawxgb +deglztxbouawhf +xuageoztfhlbw + +rqydeszwhu +uwzydhqcers +yqsdhruewz +reyhqdzsuwn + +bomazjw +wzabmjno +jamzowb +ojawbzm +wbhzfamjo + +pxzofjkney +aedkui + +iezhxcldqrasu +givchplftdorun + +xy +gydxv + +igduyfakwjeot +utewfoajykid + +cvudfonrqshzbgyemtkxlap +fxlapvmdcqzybugnhrketso +fkbersnvythqodmuaglzxpc +luqerdogftkmxnyzvsbahcp +fsolzkxvdtughqmabcyrpne + +zwayveu +dvpwyiztgae +yzeuawv +evarwyz + +tpkeivrucdhsawmn +imspcednuvw +epmnvlicsdwu +icmupenvdws +fmswudvpeionc + +nbekcurq +rnckqbeu +qrlkcnbuv +buerqkcn + +jylehvp +ejvlyph +ypjvhegl +ehpylvj +hlvyjfep + +cnwjxzisphtdgveqky +njqvwdyhitocxzkpesg +teywxgihcsvdkjpzqn +hdiqyntzgxwejpsvkc + +a +a +ma + +cd +cj + +nzekclihqfyrovdwgtusm +eosqnkxdpcuftzhwjmrily +ynimldrewskufczohqt +foreinluhctqkyszmdw + +gxwfcasjqbnoyrv +cnqjyfvwgas +vfqangjcwuys + +en +jn +n +gnzdf + +knarqm +lknhmars + +wpenjuhd +krucdjzb +nutjhd + +xiejmt +cijktnpxme +pmixcj +xoijm +bzjqrmighx + +ftucvebloxijamnzwy +vqxtyiucdlnfbzaj +cntxajbfslviukzy +cbtxlzjfsudvinay +dvftjyizuxnbacl + +ty +ry +y + +kanrgxtibzsjydf +pscfavzqyb +blasyzfcvum +wfhzasbey +ampozwyfbuqs + +ihmpuwjfvygbnze +vzgcwefnihymxpubs +hvmbuwznygpife +vzdiknatrgmhyebwfoulp + +hretmjgxwcidl +hjkiedvmcglx +jdmilhxewgc +clhgbjndxie + +gnabr +rnbga +bywnuar + +lhd +d +mqdbo +ahd +d + +kisuyql +qsymkglu +skvuiyplq + +xhyabuesjpd +lxagr +xzlaqt + +kepiznwbyas +gyfirmnbodztsv + +b +b +b +b + +zskcmdxeaogqbu +zmbscodakqupxge + +e +j +b +q + +blvwcsymj +vwjsymbcl +wbmlcyjsv +mwjvcybsl +symvcblwj + +yivbad +dayibv +bviayd +idvyba +ivadby + +atzulnbxedjgq +egbvijuzyxtqadl +ladebjzrtgu +blzdjetaug +ehpzmcdgtuasbkolj + +vejskrgaqnbltxiy +bviglyatsrno +iwcbrlysgvntad +gsliobcrynavtp + +ybowxj +sufavcpghd + +fjcikx +cjxki +cjxmik +xjkic +cjxki + +o +tz +p +o +p + +f +h +f +f +f + +n +n +din + +udlnyspztvcf +uzpdhtcayv +ydhzcvutp + +teylnzmf +lntmefzy +lnztyemf + +ugwcfqzrpsdxhnyv +ldfosniyuwxhcvbg +lxvdumygwfsnch +vcowxgynhusfd + +qwxuykodtpehbzmgsrc +nyxqougapktdbh +ykdpbxtfquohg +tubxpdygoqhk + +zgyomlb +moglkbzy +yogbclmz + +qrejtivfwzubyknaplhmgcodxs +witcplundkhaqxeryvbzsgfojm + +fvoindcxqhzabketlug +xgdqizetlhvkubaofcn +xciztehdlufnkvboagq + +hbolxizvkmctw +udoarnhsjwk +owdrhsk +ghfwkyoea + +cfzkvieqtoagsln +egtolisqrcf +stlqcifgoe + +erjlptikwqoczdgubanxvf +evaqfnxljitbkdwucozrpg + +ojqbicpwexfglrvyastzk +pzvisdhlortfqjxkwgacyeb + +xiezsdhj +hwvgtplfs +hioskr + +atyqbkzlw +bzakwqylt +ovwpzaybqktjl +ylakwtbqz + +flxozwatvkcmibjn +wcxhokusjzvmbtn + +jm +n + +vmtwznjklocridexufapb +nztijrefwxuvkmacdplb +wjtipvfzenlmcrxuadbk +vpyefticjsxrzdauwnkbml + +sjryquvzi +qvzsiuryj +vyjruqsiz +quykrjszvi + +iqgpeslwatumyvxrkndhcjb +gcdqpktlmuzwjrvbsinha +usbcltqjmvpagndkrwhi +hkatgblrqpidnwjumvsc + +ijrwnhlfsaxuy +cyzdt +cyvpm +qpkybtoe + +agtpnyvweqrmohfil +lmtwhfgyzneaipq +yianftmwsgqlpeh +ezfsihltawgpnbmqy + +fvdj +djv + +jybuhgeapvnk +qdmscixzlto +wpvgfar + +dtlbwgjyxphmqus +hkjxdtvqngyzar + +i +i +v + +jpbamlvyowxsgkzinc +dwijheuxmkbstqpnvoza + +pnfbzdmysukvlj +fzlksnydpjumvb +djfmbqnvyzskplu + +ylxfuzsdr +yxvfrzlkus +yxlsfwrzu +yulsfxzr +yrzuxlfds + +cq +qcp +g + +hyadprtkis +tykpiharsd +sdyahrtpki +pakifrhdyst +ritysadhkp + +tdnuxmkhcveqgwasyr +vmhctngxuawsrqykbed + +x +dhkts +pfg +fg + +oz +qnudf +owzeg + +axkvulniypoezgdmcht +kgeponhxactvylzdmi +fdkotcgiwhnljbqmepazyrvx +udhtkyexzncopglmvia +olhadkzxiepngvytcm + +cxilwnkmdatosv +saovmlncxiktwd +swdmlnaivkotcx +kdclnvtsiaoxwm +vmndksiawtxolc + +pla +ifgjtx + +zvfsaiykgrh +vgzafikhsyr +faghrvizsyk + +bvsldjymgzcqokie +zstldyexgrwokvimjqb +oqjgalksbymizcedv + +thkil +puas +vqhlt + +gvbhrqewyxj +bgejxvh +jsvibeagx +geftjxbvhw +exvgjbwh + +ywjaichxrfvq +lnugcesm +tcmoe +etkbc + +vlitomya +vmiplyoa +amvliyo +ayvlmio +ovfdmajyli + +pxeqymbdt +fetymxnzs + +ogerunlazpijskqfbmtdywv +orgudspwmfzvyljniakqeb +jkruynsdbcxifelogmpqvwza +auprhvlodbwmqikgsjyezfn + +kjmehoatdxslfgrwyni +dzrnowjumiveqaltpfkc +jwmktnafrdieol + +z +hu +pd +ap +pjx + +hzjqrw +qrzjah +bvjizfyq + +wxpgcbzie +ctegxwvh +egxcqtwf + +zmwjpnviqde +npgijdvhzmwq +zwinjpqvmhd +tmwzjdpiqnv + +thoezprianclgudvksyfbw +gizdnfqwvebathopyurkl +qeipwgrbvfndjtazhlokyu +vodgpzryhxwtlenkfuiab +tufkbyhegznadjilwvopr + +dbvigopmznrclaexjfwkyhtq +kbvgmrioznjfycapxwleqdh +zrqgpeasymbhokunvjxdilwcf + +ahmsunwpjzrtdlxqey +mjuqrshdatxnpzelyw +nrjqamdstpxlehwzuy +qyxbahsrlmvzwuedjntp +hudayszfmxptwljrqne + +zdanj +manqwjed +anzd +jqdnwa +fcaxdbn + +rabxt +brta +arbt +tarb + +ajoshwczdmxkrivp +fxpskmtchuzra +pmyhacuzrxgkts +bskzphxmcrael + +x +x + +moay +omay + +izocxhdkenqyavb +ihlpsrnkfo +twnpikho + +ftpahurnomkcvdzily +ckapvofuzdlybtnrm +neglmcpyrdzjavfutowk + +cdlnuqbvfejao +vdsocqlfebxnau +enjduqfcavblogm + +yfnhbem +d +j + +izhy +ihyz +zhyi +ijzhy +yhzi + +jxzchrsb +xhi +vegaxdn +sfjopyx + +xu +yxe +x +x +x + +nyhlqrtzipagkmowuefvbcd +ewhoialgqyfpmcnrdkzj +roqhlinpdfwycmkgzase + +ytwerh +utgwoirne +wxsm + +xnjpohdmgykbtsraiqfu +sjphqtbuoankirgxdymf +amqpdilhfsytgoxbujknr +fsxordjuayhgkpiqbmnt +ipsvgmzyaqfdrtkuhonjbx + +xwekvftlbnujarm +jweukmvanrbxltf +luebtmwjranfkv +jfuvklrbnmtwae +rlhbvemkjfanwut + +pidycjeznrvh +vcjbepznry +wgnjvyofcaiplzer +ermiyzpvjcnh +pxrjqetknzvsyc + +qnxmivda +xvdqim +qvxdmi +vxmqid +vxdmqi + +wfapsg +scwgdufr +osfwg + +zfayobrc +fyzobarc +zobcryaf +rfboycza + +musbrjnygkftpoxad +sfnjgmoutkxrbyac +nljabtukighmrqyxosf + +hwqxn +wnhxq +xbqhw + +vg +qv +v +v +qv + +lwo +vwa +wus + +iwecv +dzvau + +ynewjdhtlcm +npydwjmehlc + +l +l +l +l +l + +f +m +z + +gqbawtycdnzhfjvix +wgnidzfxtajqychvb +dfqzjwvanycxtighb +ndgfatjwixvqhyczb + +lvsftm +mtvlsf +ltvsfm +fvltsm +tlsmvf + +wdvhntmbcausfgyk +mcanyusbkvgftdw +mauygksiwvftbcdn +cftwojgesayvkmudbn +kvdbcwafyzmnugsqt + +a +bhngw +a +vu + +prxqlit +pitqzr +featyrpmsi +iropt + +wkux +txg + +dto +o +bj + +uagbxqkwit +wvthxnqgaki +hjqikngxaw +odarkwgqpi +wqagki + +atobwlprngejvmixdqcu +ofwbtepxrqgimuyhdajkl + +hqeotif +mpnvuyas + +qzdlxrp +bdxzqrpl +rhqzpldx +qxpzrlbd + +wp +pg +dyvph +wp +pn + +netpfbl +jario +w + +pcefadnkhzv +kgdhaupicxnezf + +eadohrcjnkgiypsmtlfvzuq +hzaimfoqcuxtpdveykrgj +aytcjiumfpkdvgrehozq +btquhdlgfrmejkoiyvpzac +qcvkdrywezfmtiujaoghp + +msueprdbjnzflgvytcwo +glftyscmvbojzudwrpen +jlgyfsntvwmrzdcuopbe +osivwyfumczldjbgretqphn + +tuikjg +nmibokj +hbjikl + +bzgymjnd +ndbygmzj +yjnhbdmz +jnyzbdm +gibndyztmj + +iorhgcxbfjamwyenpvdksqu +evytoqjxznkbadhrmisgfcw +wbengjckvhmasfiyqrodx +esdcnwxjohmqkrgiybfav +ohkxbjgyvdeiqnsrcmawf + +mkqgwxicp +qvailgsnxymo +xqrmidg +gqxihm +xqmigrp + +zecksafgl +jlazcgfek +ugclqeakzxrf +cgkoflzae +eawcgkfzl + +lehtfqcx +wojlmpdu + +bnsjyrcmah +mynajrshbc +nbrhscamyj +jymhabnrsc +cybjsrnamh + +uzybinv +zvblpy +xvlmybz + +aeuyibogwkxpvjt +fismchnrzdqwp + +hgsnrqoupzitwafvxek +hurvxiqezgknofaptws +wagytrequfixhpvzonsk +opknhiteqjwzxlfauvgrs + +rghduv +aijsybl + +fboy +body + +azhcqrk +kmqfcuaz +mickatzqhg +qaosvkdzpcb +cazkgwhtq + +snpgwemqclyd +gfjhe +rvgeubx +jerkbigo +oeigax + +lhsifzcg +izhcfgls +ishgzlcf + +msfqhtecuibyg +gdwkvyiq +yroxlivgqp + +wftdvlgcubj +tsafjbwuiyxlqmr + +nsvibpqze +y +murd + +cbtukihfeqjrnv +uchikvqtebr + +jgszxqvyfrakpl +aslgzyfxpjvkrq +sgyjaxzqvlfkpr +yprgqvkxjsflza + +blxpv +xvlqsp +lvbxp + +bwu +uwb + +kuctazm +atcuzk +tuqkczad +cupkzta +iupzckat + +virjwanfcxdsqkyzthmub +shtdubncmkayzfqwjxri + +sdrvpcqybwomzah +mvhskw +swhemlv +wmvsh +hsmwlv + +wrivxopdhgfauslbe +vnfeoxdwrmiqlyapcbsgu +dolivuprewxazsbgf +zudaxgosplbvfiwer +oxiglrthpasvfwudeb + +gcjihxvtazydernl +exdhjtgacvryu +xqjhgystbrdaepcv +dcfryegvmjaxthz + +n +n +yxna +un + +uvsezitjwl +midztxjcesgrw +yulwizjset + +cpjn +cjn +ugnj +njic +jwn + +kmzjoe +qhsvdg +ta + +dtzar +rtdz +btzrd +duzrt +nkmszydrtxv + +rpjv +oqvkyjp +vemjp +pjvm +jtvp + +jqbywgpexdrc +eihgzxtrknsl + +zukegspqxhridyf +usfwpaihyjkxzerdq +zyfriudebqxpshk + +nzsiehmplbjgfqw +egwziblfhsqmjpn +zslbnghpjfqiewm +wgniseplhzfqbjm +gaznqpwsembihlfj + +d +knijh +d +xed +lev + +cfzpjatlw +taclzpjwf +cltjfzpaw +fptzjclaw +tfcpwlzsaj + +ni +ind + +jnpydc +dynjpc +jpcynd +ncdjyp + +wuilxjabeftcro +shpkudnygvmrq + +yqzhalsjf +azutsmkq +qaszr +qmrzsxa + +wjv +wxjv +wjv +wjv + +esgpbow +epogwbs +oewpsbg +wpgqmscobe +ewsobpg + +b +b +bw + +rgz +jvrgpa +tzrgk +rtegf +rxgk + +bcotpdrwmu +dwkmpbtcur + +rdzyjbvsmuoacwkg +fhciwsnzamkugpdybrvox + +mwpgv +zvw + +wbyktilsjuemvqpdornczhx +kyfzbqitgahrvsuocjpledmn +qhytnurliebszcdvmpojk + +ohxsjvdzqabegp +oqvgxrjbtelpuw +gqevkbpjnxoi + +fcjsuviaq +asvcfjuiq +aqcfsujiv +sicfaqjvu +vaiqusfcj + +icjtklarqhsmdy +qcamftiujys +zibcntjyasgoxeqm +wvyitlamrqsujpc + +hnmxwtudcsbp +ryzdijaguqvfko + +twqousdgyknvrmx +fpijbzeh + +ixg +mxiv +xi + +w +wu +w +gw + +e +e + +nktazsgmqvp +kxtcvsaznmpg + +xm +k +m +mx + +ntfkyoarlejixbd +colnibtxeryjadfk +yagxfwbisvhurjmpkqt + +jfqhmekxduwari +xhwfrdmqjuiake +lajdxeuikmhrqfw +ihdkmeafjqwurx + +otjeuvbqshdncxa +pmlcvukgsexriyabhq +bnvxquaeodtwcshf + +fgeu +oec + +mjflpw +jlwfpim +fwmlqpj +jpfmwlk + +vpjcbfaihnusglr +rbvpcsfyihnjazguxl + +kq +k +k + +pign +pkgh +ajp +pq +pzomcb + +qbo +hstryu +fljioe + +nypszgxrdhbe +rxeyhpnsdzgb +epghbynszrxd + +azlbegicyv +iavnezslg + +ymtkef +oasrun +wvzl +uerpw +qcidxbhgj + +hxqgt +gthqx + +pocvsz +otkwzpvs +zvosp +vopcnzsl +vzmpnfos + +rz +zgr +hrvze +rsz + +uebwmzk +purbtkdm +eyumskvjib + +d +d +d +nd + +kdarcnph +kouwr +tuexkor + +hnslcrtwyudpbxgv +htsrvqelyagudwbpo +mtubsahrkvpeyqwdlgf + +r +r +r +r +r + +xptijvhfa +xpricabvtfhj +vjpaxfhti +ahtxfvjpi +vhftijpxa + +bxshqfzgyr +bzgfxsrqyh +szrqhgfxby +txbczyhfqsrg +ybfhsqzxrg + +taevdznpkf +ezadwvfnkplt +kdpnzafvte +tvfdknpeaz + +ea +a +a +a +a + +dzwyofjxnugvbipar +uwrfvygonibzadxjp + +afcm +cmaf +facm + +lcisgd +jbkcid + +y +y +djgyen +yl + +tfbvzwocks +bzfstkvjcoy +kzuvsobxficthn +kftzogvcbs +vszjkobtfygc + +heszp +uhzepx +zehp +shepz + +b +ymel +z +zhq +s + +wvhlzgcet +bkuwzeopm +nbjwfaeqmkz + +mqaufjvwl +qlfuvirnjw +yvuwfglxejzt + +gkylzr +lwdiykg + +zuloiwargvxk +evxcy + +gjrvnwbxu +bvpugixnwj +uwrmjvngbx +gcnvwbxuj +jwnuxbvg + +q +q +q +q +ewq + +zwynrv +uvxym diff --git a/input7 b/input7 new file mode 100644 index 0000000..4aaeb96 --- /dev/null +++ b/input7 @@ -0,0 +1,594 @@ +pale chartreuse bags contain 3 faded orange bags. +drab gold bags contain 5 dark aqua bags. +mirrored magenta bags contain 3 dotted violet bags. +posh black bags contain 3 dark lavender bags, 3 mirrored coral bags, 1 dotted chartreuse bag. +striped yellow bags contain 5 pale red bags, 2 light lime bags, 5 clear indigo bags. +bright aqua bags contain 2 vibrant orange bags, 4 clear lavender bags, 1 pale gray bag. +dim silver bags contain 2 bright blue bags, 3 faded olive bags, 1 faded cyan bag. +light beige bags contain 2 bright silver bags, 4 vibrant crimson bags. +dull cyan bags contain 2 drab beige bags, 3 mirrored turquoise bags, 2 mirrored indigo bags. +dark black bags contain 5 dull turquoise bags, 4 faded cyan bags, 4 plaid coral bags. +dotted bronze bags contain 3 light blue bags, 2 dull teal bags, 3 dull chartreuse bags, 1 plaid green bag. +light purple bags contain 3 clear tan bags, 3 dull tan bags. +wavy orange bags contain 3 wavy tan bags, 3 faded green bags, 1 shiny brown bag, 2 dim tan bags. +drab beige bags contain 1 vibrant tan bag, 3 pale chartreuse bags, 3 plaid indigo bags, 2 mirrored chartreuse bags. +light coral bags contain 4 faded green bags, 1 pale crimson bag, 3 light bronze bags, 4 posh blue bags. +wavy coral bags contain 5 vibrant cyan bags, 5 light blue bags, 1 dotted turquoise bag. +dotted plum bags contain 1 clear orange bag, 2 drab black bags, 5 dull chartreuse bags, 5 plaid fuchsia bags. +striped olive bags contain 4 clear brown bags, 2 shiny beige bags. +vibrant maroon bags contain 2 dotted beige bags, 4 plaid olive bags, 5 dull black bags, 5 mirrored aqua bags. +drab purple bags contain 2 light green bags, 1 clear orange bag. +shiny violet bags contain 5 drab white bags, 5 dark aqua bags, 3 muted gray bags, 4 wavy orange bags. +muted maroon bags contain 2 plaid red bags, 3 bright silver bags, 5 posh yellow bags, 1 bright yellow bag. +clear black bags contain 1 bright plum bag, 1 faded brown bag, 4 wavy chartreuse bags. +dotted maroon bags contain 5 mirrored turquoise bags. +drab silver bags contain 2 vibrant violet bags, 2 muted orange bags, 4 dull purple bags. +faded purple bags contain 1 bright lime bag, 2 striped brown bags, 5 dull maroon bags, 2 shiny olive bags. +dull maroon bags contain 1 clear lime bag. +pale salmon bags contain 5 striped blue bags, 5 posh blue bags. +plaid orange bags contain 1 pale coral bag, 3 shiny orange bags. +drab black bags contain 5 vibrant orange bags, 1 dotted tomato bag, 2 dim red bags, 3 muted blue bags. +dotted teal bags contain 3 light fuchsia bags, 5 vibrant tan bags. +plaid tan bags contain 5 dark brown bags. +shiny coral bags contain 2 pale green bags, 1 muted lavender bag. +plaid plum bags contain 5 drab lavender bags, 2 shiny teal bags, 1 plaid tan bag. +dim olive bags contain 1 dark beige bag, 1 drab coral bag, 5 muted chartreuse bags, 4 bright teal bags. +dim bronze bags contain 1 striped turquoise bag, 4 muted turquoise bags. +muted red bags contain 5 dark gray bags, 4 muted gray bags, 5 muted blue bags. +shiny crimson bags contain 2 dark aqua bags, 4 faded fuchsia bags, 3 faded tomato bags. +vibrant teal bags contain 1 dark cyan bag, 4 wavy lime bags, 1 bright crimson bag. +dark yellow bags contain 2 striped coral bags, 1 drab tomato bag. +posh orange bags contain 3 wavy lime bags, 3 clear lavender bags, 5 bright indigo bags. +shiny orange bags contain 3 striped gold bags. +wavy magenta bags contain 2 vibrant crimson bags, 3 mirrored teal bags, 1 shiny lime bag. +clear indigo bags contain 2 pale green bags. +wavy red bags contain 5 plaid indigo bags. +wavy crimson bags contain 2 dim teal bags. +clear chartreuse bags contain 2 dull gray bags, 4 plaid lime bags, 3 striped cyan bags. +muted beige bags contain 2 drab white bags. +dim plum bags contain 3 vibrant green bags, 1 clear red bag. +dotted white bags contain 5 wavy magenta bags. +shiny chartreuse bags contain 2 striped tan bags, 2 dim maroon bags, 5 plaid bronze bags, 4 dark white bags. +pale green bags contain 5 drab crimson bags, 3 dull teal bags, 4 plaid red bags. +clear purple bags contain 3 light indigo bags. +striped brown bags contain 1 light yellow bag. +bright plum bags contain 4 faded olive bags, 2 dotted crimson bags, 3 pale green bags, 1 light yellow bag. +posh crimson bags contain 3 bright aqua bags. +dotted olive bags contain 4 striped tomato bags, 4 faded chartreuse bags, 2 dull bronze bags, 2 shiny olive bags. +striped magenta bags contain 2 posh indigo bags, 3 dotted tomato bags. +vibrant chartreuse bags contain 5 light crimson bags, 5 light bronze bags. +light cyan bags contain 1 faded red bag, 1 light silver bag. +faded teal bags contain 5 vibrant crimson bags, 3 drab gray bags, 5 striped turquoise bags, 1 pale plum bag. +mirrored aqua bags contain 1 vibrant white bag. +dull violet bags contain 2 dull orange bags, 1 light green bag. +clear orange bags contain 5 dark green bags. +muted silver bags contain 4 striped indigo bags, 3 mirrored lime bags, 1 bright lavender bag. +posh green bags contain 4 drab gold bags, 4 dim black bags, 4 faded gold bags. +dark bronze bags contain 1 faded plum bag, 5 mirrored teal bags, 5 striped indigo bags, 4 muted salmon bags. +shiny teal bags contain 4 plaid tomato bags, 3 clear brown bags, 4 dull silver bags, 2 wavy orange bags. +light gold bags contain 4 pale tan bags, 3 vibrant gray bags, 5 wavy tan bags, 5 dark violet bags. +bright indigo bags contain 5 shiny silver bags, 4 wavy indigo bags, 5 dark gold bags. +bright gray bags contain 5 shiny lime bags, 4 dull aqua bags. +dotted orange bags contain 1 dim red bag, 4 striped blue bags, 3 bright lavender bags. +dark indigo bags contain 4 drab indigo bags, 1 dotted turquoise bag. +pale lavender bags contain 2 vibrant green bags, 4 dim yellow bags, 1 mirrored yellow bag, 1 bright blue bag. +dotted silver bags contain 2 posh blue bags, 3 posh maroon bags. +plaid salmon bags contain 4 light yellow bags. +plaid magenta bags contain 3 striped gold bags, 2 mirrored black bags, 3 dull tan bags. +wavy blue bags contain 3 faded teal bags, 4 drab blue bags, 1 dotted gold bag. +muted black bags contain 1 drab teal bag, 3 muted lime bags. +clear violet bags contain 3 bright lavender bags, 1 vibrant plum bag, 3 wavy white bags, 1 shiny chartreuse bag. +bright teal bags contain 1 muted chartreuse bag, 4 dull indigo bags, 5 striped tomato bags, 1 drab white bag. +drab lime bags contain 3 posh maroon bags. +shiny tan bags contain 3 faded chartreuse bags, 3 wavy orange bags, 4 drab white bags, 4 light chartreuse bags. +light green bags contain 4 dotted tan bags, 1 dim salmon bag. +pale tan bags contain 3 posh green bags. +light gray bags contain 3 posh brown bags, 3 dim green bags, 3 mirrored tan bags, 1 mirrored yellow bag. +clear gray bags contain 4 dim brown bags. +drab magenta bags contain 4 dark aqua bags, 5 faded tomato bags. +pale violet bags contain 2 bright violet bags, 1 bright indigo bag, 2 muted salmon bags. +vibrant black bags contain 1 bright magenta bag, 4 vibrant crimson bags, 4 clear blue bags, 2 light chartreuse bags. +striped white bags contain 3 plaid yellow bags, 3 muted orange bags, 1 shiny gold bag, 5 light white bags. +wavy turquoise bags contain 5 wavy tan bags, 4 posh chartreuse bags, 5 posh red bags, 3 muted purple bags. +light white bags contain 3 shiny brown bags, 1 striped tan bag, 2 bright lime bags, 5 shiny yellow bags. +faded orange bags contain 3 dim silver bags, 5 wavy tomato bags, 4 wavy chartreuse bags, 1 shiny black bag. +mirrored fuchsia bags contain 2 plaid lime bags, 3 vibrant salmon bags. +dull aqua bags contain 5 clear brown bags, 3 dull indigo bags, 3 dull green bags, 2 muted gold bags. +dim gray bags contain 5 dark bronze bags, 4 dark silver bags, 3 wavy cyan bags. +dull tomato bags contain 4 drab tan bags, 3 striped brown bags. +dim gold bags contain 3 shiny tomato bags, 2 dim tomato bags. +striped beige bags contain 3 shiny violet bags, 3 striped aqua bags, 3 muted blue bags, 3 shiny gold bags. +mirrored coral bags contain 2 muted coral bags, 3 shiny teal bags. +vibrant white bags contain 1 clear brown bag, 3 drab gold bags, 2 wavy crimson bags, 5 light plum bags. +posh tan bags contain 3 dim salmon bags, 1 faded gold bag, 1 drab gray bag, 4 shiny coral bags. +drab tan bags contain 4 bright magenta bags, 3 dull green bags, 1 drab crimson bag, 4 dark green bags. +striped coral bags contain 2 drab tan bags, 4 wavy purple bags. +dark white bags contain 1 bright magenta bag. +striped red bags contain 3 plaid black bags. +drab coral bags contain 4 dotted violet bags, 2 pale magenta bags, 5 posh purple bags, 4 light lime bags. +pale yellow bags contain 5 plaid black bags, 3 shiny olive bags, 3 clear brown bags. +faded coral bags contain 2 pale salmon bags, 5 dim teal bags, 3 vibrant crimson bags. +faded black bags contain 2 wavy white bags, 5 faded brown bags, 4 drab beige bags. +dim salmon bags contain 4 vibrant white bags, 3 wavy salmon bags, 2 wavy lime bags, 2 bright purple bags. +dim black bags contain 3 dull tan bags, 2 striped beige bags, 2 plaid brown bags. +plaid cyan bags contain 2 muted coral bags, 3 dim red bags. +dotted gold bags contain 3 dotted orange bags, 3 striped coral bags, 1 clear magenta bag, 1 dotted crimson bag. +mirrored white bags contain 4 clear brown bags, 2 drab crimson bags, 4 shiny gold bags, 2 posh red bags. +vibrant olive bags contain 4 striped indigo bags, 5 dim salmon bags, 5 bright magenta bags. +dim teal bags contain 5 striped blue bags, 4 dull aqua bags, 5 dark cyan bags, 2 wavy magenta bags. +faded chartreuse bags contain no other bags. +clear yellow bags contain 5 wavy olive bags, 1 drab tomato bag, 2 plaid red bags. +mirrored bronze bags contain 1 vibrant beige bag, 5 clear cyan bags, 3 muted aqua bags, 5 striped turquoise bags. +vibrant tan bags contain 2 dull tomato bags, 5 dark aqua bags, 3 muted gray bags. +light olive bags contain 4 dark white bags, 2 dim teal bags. +light lavender bags contain 5 wavy indigo bags, 3 posh olive bags, 4 striped brown bags. +dotted gray bags contain 1 dim red bag, 5 light tomato bags, 2 dull gray bags, 4 light black bags. +plaid olive bags contain 5 wavy purple bags, 2 posh blue bags, 3 faded purple bags, 1 pale fuchsia bag. +muted salmon bags contain 5 shiny tan bags. +dark olive bags contain 4 mirrored black bags. +striped turquoise bags contain 4 pale olive bags, 2 pale tomato bags, 3 bright yellow bags. +plaid fuchsia bags contain 4 clear silver bags. +vibrant magenta bags contain 1 vibrant green bag, 2 muted silver bags, 4 light plum bags, 5 pale teal bags. +vibrant bronze bags contain 2 dull gold bags, 2 bright coral bags. +mirrored purple bags contain 1 drab tomato bag, 3 faded silver bags. +light lime bags contain 5 shiny violet bags, 4 wavy aqua bags. +pale gold bags contain 3 vibrant brown bags, 5 dim red bags. +dim orange bags contain 4 dark cyan bags, 3 light chartreuse bags, 3 wavy orange bags, 5 dark green bags. +clear fuchsia bags contain 4 posh blue bags, 4 mirrored lavender bags. +pale bronze bags contain 3 pale silver bags, 2 dotted tomato bags, 4 plaid gold bags. +dotted aqua bags contain 3 drab magenta bags, 3 dull green bags. +posh silver bags contain 5 striped lavender bags, 1 dotted maroon bag. +dim coral bags contain 1 wavy bronze bag, 5 striped gray bags, 2 light indigo bags, 2 dim orange bags. +bright green bags contain 5 drab plum bags. +striped teal bags contain 1 light fuchsia bag, 5 vibrant aqua bags, 3 mirrored white bags. +dim crimson bags contain 5 posh gray bags. +drab salmon bags contain 3 bright olive bags, 5 dim tan bags. +muted green bags contain 2 dark beige bags, 4 posh coral bags. +light tan bags contain 5 wavy white bags, 3 dim indigo bags, 3 bright green bags, 5 clear lavender bags. +posh teal bags contain 4 pale salmon bags. +muted cyan bags contain 4 posh yellow bags. +bright turquoise bags contain 3 posh indigo bags, 2 mirrored salmon bags, 2 dim magenta bags. +vibrant salmon bags contain 5 light tomato bags. +dark violet bags contain 3 light bronze bags, 5 dark gold bags, 1 striped magenta bag, 4 faded lavender bags. +faded maroon bags contain 5 plaid teal bags, 5 light turquoise bags, 5 posh white bags, 4 drab orange bags. +dotted magenta bags contain 4 shiny chartreuse bags, 5 drab turquoise bags, 4 bright tomato bags, 2 striped maroon bags. +dotted beige bags contain 5 clear white bags. +bright magenta bags contain no other bags. +dull red bags contain 2 muted lavender bags. +drab green bags contain 2 dotted cyan bags, 4 striped white bags, 3 muted magenta bags. +posh brown bags contain 5 muted lavender bags, 2 posh red bags, 5 drab magenta bags. +faded tan bags contain 3 bright purple bags, 5 plaid tomato bags, 3 dull teal bags. +faded brown bags contain 2 light silver bags, 5 mirrored tan bags, 2 clear tan bags, 2 drab gold bags. +striped black bags contain 3 vibrant yellow bags, 3 dull blue bags, 1 dull aqua bag, 5 dull teal bags. +faded white bags contain 1 muted maroon bag, 1 dark gray bag, 5 dark white bags. +drab aqua bags contain 3 muted white bags, 4 dark cyan bags, 5 pale tomato bags. +dull teal bags contain 2 plaid red bags, 5 mirrored teal bags. +vibrant plum bags contain 2 dim salmon bags, 3 light purple bags, 2 muted gray bags. +plaid crimson bags contain 5 shiny blue bags, 1 dull bronze bag. +wavy violet bags contain 3 dotted tomato bags, 3 striped brown bags. +clear cyan bags contain 1 drab crimson bag, 2 shiny lime bags. +shiny green bags contain 5 muted gray bags. +posh purple bags contain 2 vibrant white bags. +plaid lime bags contain 2 clear crimson bags, 3 bright magenta bags, 5 shiny silver bags, 1 posh blue bag. +dotted violet bags contain 1 dark teal bag, 5 faded crimson bags. +pale maroon bags contain 5 mirrored lime bags, 5 clear olive bags, 5 shiny orange bags, 4 mirrored fuchsia bags. +wavy indigo bags contain 5 plaid lime bags, 5 plaid fuchsia bags, 2 faded chartreuse bags, 4 dotted tomato bags. +faded silver bags contain 5 striped lavender bags, 4 muted lavender bags, 5 plaid brown bags. +drab violet bags contain 1 posh white bag. +bright white bags contain 3 light cyan bags, 1 dark indigo bag, 2 pale turquoise bags, 1 pale brown bag. +faded olive bags contain 2 clear lime bags, 4 muted chartreuse bags. +muted violet bags contain 1 clear lavender bag, 1 dark green bag, 3 dark cyan bags. +shiny gray bags contain 2 dull tan bags, 1 shiny olive bag. +plaid blue bags contain 3 dark aqua bags, 4 muted silver bags, 5 pale beige bags, 1 drab chartreuse bag. +posh fuchsia bags contain 5 posh red bags, 2 muted gray bags. +faded blue bags contain 1 plaid fuchsia bag, 1 mirrored turquoise bag, 2 plaid indigo bags, 1 dark aqua bag. +bright brown bags contain 4 drab violet bags, 5 shiny lime bags, 2 bright beige bags. +mirrored teal bags contain 5 dark gray bags. +bright violet bags contain 2 dotted crimson bags, 3 striped coral bags, 5 shiny maroon bags, 3 dull lavender bags. +striped plum bags contain 2 dim orange bags, 4 clear blue bags, 3 shiny violet bags. +plaid green bags contain 2 bright teal bags, 5 striped lime bags. +muted fuchsia bags contain 4 clear gold bags, 2 vibrant plum bags, 5 bright black bags. +bright purple bags contain 3 vibrant crimson bags, 1 dotted maroon bag, 4 dark gold bags. +faded cyan bags contain 4 dim teal bags. +wavy fuchsia bags contain 5 dull yellow bags, 2 light yellow bags, 5 bright black bags. +wavy salmon bags contain 1 shiny black bag, 3 bright teal bags, 5 clear yellow bags, 1 dull maroon bag. +dark fuchsia bags contain 1 muted violet bag, 3 light cyan bags. +clear salmon bags contain 4 light beige bags, 4 vibrant green bags, 3 pale yellow bags, 1 muted turquoise bag. +pale purple bags contain 1 bright blue bag, 5 pale bronze bags. +posh salmon bags contain 3 faded cyan bags, 4 posh maroon bags, 1 plaid green bag, 2 shiny silver bags. +bright blue bags contain 3 vibrant green bags, 2 drab gray bags. +shiny brown bags contain no other bags. +dark gold bags contain 5 vibrant aqua bags, 2 posh yellow bags. +mirrored violet bags contain 2 pale silver bags, 1 posh fuchsia bag. +bright fuchsia bags contain 3 muted brown bags, 3 plaid purple bags, 2 faded coral bags, 3 mirrored turquoise bags. +dim beige bags contain 2 dull lime bags, 3 dim gold bags, 3 plaid fuchsia bags, 1 posh yellow bag. +shiny white bags contain 1 pale fuchsia bag, 3 shiny beige bags, 3 posh aqua bags, 5 clear tan bags. +posh red bags contain 3 bright magenta bags, 2 dark aqua bags, 4 dark cyan bags. +vibrant fuchsia bags contain 3 striped indigo bags. +faded tomato bags contain 3 wavy olive bags, 5 shiny brown bags, 5 shiny tan bags. +dull purple bags contain 4 plaid teal bags, 4 dull indigo bags, 3 dull bronze bags, 4 faded tan bags. +shiny magenta bags contain 4 pale tomato bags, 4 shiny brown bags. +wavy tan bags contain no other bags. +dull salmon bags contain 3 faded crimson bags, 5 shiny fuchsia bags, 4 dotted silver bags. +pale magenta bags contain 2 faded chartreuse bags. +vibrant purple bags contain 3 muted orange bags, 5 dotted brown bags. +shiny turquoise bags contain 4 dotted turquoise bags, 1 dotted purple bag, 4 dim black bags. +shiny black bags contain 2 clear brown bags, 4 vibrant yellow bags, 1 vibrant aqua bag, 5 mirrored teal bags. +shiny cyan bags contain 3 dotted coral bags. +dim magenta bags contain 3 bright purple bags, 2 wavy white bags, 2 shiny fuchsia bags, 2 shiny yellow bags. +pale beige bags contain 3 dim orange bags, 5 wavy purple bags. +wavy bronze bags contain 5 posh yellow bags, 1 pale green bag, 5 dark cyan bags. +dull blue bags contain 4 wavy tan bags. +striped lime bags contain 5 striped crimson bags, 1 bright plum bag, 5 plaid yellow bags. +faded magenta bags contain 1 plaid green bag, 2 vibrant silver bags, 1 dim turquoise bag. +muted white bags contain 5 bright lime bags, 4 light fuchsia bags, 4 light violet bags, 4 dark aqua bags. +pale fuchsia bags contain 1 striped tomato bag, 1 drab crimson bag, 4 shiny yellow bags. +posh cyan bags contain 5 dark maroon bags. +dim indigo bags contain 3 dark gold bags, 5 bright maroon bags. +faded fuchsia bags contain 4 plaid tomato bags, 2 mirrored red bags. +shiny red bags contain 5 dull olive bags, 1 posh tan bag, 4 bright green bags. +posh maroon bags contain 4 clear blue bags, 5 muted chartreuse bags. +shiny indigo bags contain 4 wavy orange bags. +dim violet bags contain 1 dotted chartreuse bag, 2 mirrored lime bags, 1 drab chartreuse bag. +dim lime bags contain 4 posh fuchsia bags, 5 dull blue bags, 2 dull silver bags, 2 bright lime bags. +muted blue bags contain 5 mirrored lime bags. +dotted fuchsia bags contain 2 wavy magenta bags. +bright beige bags contain 1 mirrored maroon bag. +light bronze bags contain 1 posh maroon bag, 1 dotted maroon bag, 3 clear silver bags. +posh olive bags contain 2 wavy orange bags. +shiny salmon bags contain 2 light teal bags, 5 dark violet bags. +plaid tomato bags contain 5 shiny tan bags, 5 drab white bags. +striped blue bags contain 3 dark cyan bags, 2 pale magenta bags, 3 striped indigo bags. +bright lime bags contain 4 dark cyan bags. +vibrant crimson bags contain no other bags. +mirrored salmon bags contain 1 pale gray bag, 5 dark plum bags. +dim brown bags contain 4 faded fuchsia bags, 4 dull indigo bags. +clear aqua bags contain 1 mirrored black bag, 1 light bronze bag, 2 mirrored maroon bags, 4 mirrored white bags. +clear red bags contain 1 bright lavender bag. +dark maroon bags contain 1 light chartreuse bag. +bright silver bags contain 1 wavy tan bag, 3 plaid black bags, 2 dark gray bags. +faded lime bags contain 1 pale silver bag, 3 drab teal bags. +plaid lavender bags contain 1 plaid fuchsia bag. +faded yellow bags contain 4 dull blue bags. +dark blue bags contain 1 dotted red bag, 1 bright indigo bag, 2 posh tan bags. +light aqua bags contain 3 shiny olive bags, 2 dotted brown bags, 1 dull green bag. +striped gray bags contain 5 faded crimson bags, 4 clear white bags. +dark chartreuse bags contain 5 faded lime bags. +plaid chartreuse bags contain 3 shiny teal bags. +wavy gray bags contain 5 plaid lime bags, 5 wavy olive bags, 5 dim orange bags. +dull yellow bags contain 5 faded chartreuse bags, 2 clear crimson bags, 4 faded fuchsia bags. +muted magenta bags contain 4 mirrored teal bags, 3 drab silver bags, 3 drab lavender bags, 2 mirrored orange bags. +pale turquoise bags contain 3 bright lavender bags, 1 shiny tan bag, 4 posh teal bags, 2 posh cyan bags. +light turquoise bags contain 1 plaid gold bag. +pale brown bags contain 4 muted orange bags. +posh chartreuse bags contain 1 plaid lime bag, 4 shiny gray bags, 3 pale bronze bags, 3 vibrant bronze bags. +posh gray bags contain 3 dim salmon bags. +wavy tomato bags contain 3 vibrant salmon bags, 5 vibrant yellow bags, 2 vibrant green bags, 3 striped brown bags. +dotted indigo bags contain 5 shiny fuchsia bags, 1 posh lime bag, 1 muted beige bag. +pale lime bags contain 4 wavy fuchsia bags. +dull lime bags contain 2 light bronze bags, 3 light beige bags, 4 wavy tomato bags. +shiny olive bags contain 5 dull aqua bags, 5 muted gray bags, 5 posh olive bags. +muted teal bags contain 3 dull teal bags, 5 bright magenta bags. +dull white bags contain 5 striped yellow bags, 1 dim aqua bag. +shiny silver bags contain 4 shiny olive bags, 4 wavy orange bags, 2 mirrored red bags. +dim turquoise bags contain 4 drab gold bags. +clear brown bags contain no other bags. +mirrored olive bags contain 4 dim aqua bags. +striped purple bags contain 5 wavy tan bags. +faded violet bags contain 4 dull tan bags. +faded salmon bags contain 5 striped fuchsia bags, 1 muted lime bag. +mirrored yellow bags contain 2 dark orange bags. +wavy gold bags contain 2 muted salmon bags. +pale tomato bags contain 1 vibrant crimson bag, 5 light black bags, 3 dotted brown bags. +clear bronze bags contain 1 mirrored black bag, 3 wavy red bags, 4 faded white bags, 5 vibrant bronze bags. +mirrored silver bags contain 3 wavy salmon bags, 4 drab brown bags, 1 striped green bag, 4 mirrored lime bags. +dull bronze bags contain 1 dim orange bag, 1 light maroon bag, 5 wavy bronze bags, 2 posh blue bags. +posh lime bags contain 2 dark bronze bags. +light teal bags contain 4 dotted cyan bags, 4 dark crimson bags, 4 striped orange bags, 4 pale black bags. +dark lime bags contain 2 posh red bags. +vibrant yellow bags contain 4 dull indigo bags. +vibrant green bags contain 3 bright silver bags, 1 striped fuchsia bag, 5 dim tan bags. +mirrored lavender bags contain 1 dull maroon bag, 1 bright silver bag, 4 drab teal bags, 2 posh blue bags. +bright salmon bags contain 1 dark aqua bag. +clear green bags contain 3 vibrant blue bags, 4 dotted salmon bags, 5 striped violet bags. +clear lavender bags contain 2 faded silver bags, 5 dim tan bags, 4 drab white bags. +dim chartreuse bags contain 4 dark gray bags. +posh blue bags contain 1 clear silver bag, 5 clear crimson bags, 2 light beige bags. +dim maroon bags contain 5 dotted fuchsia bags. +muted crimson bags contain 1 dark cyan bag. +drab cyan bags contain 4 wavy brown bags. +faded lavender bags contain 3 posh coral bags, 2 dotted violet bags, 3 pale gray bags, 4 plaid beige bags. +dim aqua bags contain 5 dim tan bags, 3 posh olive bags. +posh magenta bags contain 3 bright orange bags, 4 bright salmon bags, 1 vibrant beige bag. +plaid purple bags contain 2 mirrored gray bags, 5 mirrored tan bags. +muted tomato bags contain 1 dotted tomato bag, 4 bright magenta bags, 1 striped turquoise bag. +dull black bags contain 5 wavy coral bags, 4 wavy beige bags, 1 drab lavender bag, 4 dark beige bags. +mirrored maroon bags contain 4 shiny teal bags, 3 light blue bags, 1 light aqua bag, 3 faded tan bags. +posh aqua bags contain 3 dotted orange bags, 4 wavy crimson bags, 5 pale magenta bags, 5 posh fuchsia bags. +muted lavender bags contain 4 faded green bags, 1 dark aqua bag, 4 posh maroon bags, 2 dark white bags. +posh tomato bags contain 2 posh black bags. +dull gold bags contain 1 faded turquoise bag, 4 drab brown bags, 4 shiny turquoise bags. +plaid violet bags contain 3 bright plum bags, 4 clear olive bags, 4 drab bronze bags. +pale silver bags contain 5 wavy olive bags, 5 dull indigo bags, 1 light plum bag, 4 dark gray bags. +dull brown bags contain 1 dim orange bag. +shiny beige bags contain 5 faded purple bags. +striped cyan bags contain 1 muted black bag, 4 dull aqua bags. +dotted green bags contain 4 wavy white bags, 2 shiny violet bags, 4 muted chartreuse bags. +dotted chartreuse bags contain 5 dull bronze bags. +plaid aqua bags contain 2 shiny indigo bags, 5 muted lavender bags, 3 light blue bags, 4 vibrant salmon bags. +mirrored beige bags contain 2 light white bags, 1 wavy coral bag. +light orange bags contain 3 drab salmon bags, 3 clear lavender bags, 4 dark beige bags, 1 clear purple bag. +dark tan bags contain 1 posh olive bag. +muted lime bags contain 3 faded chartreuse bags, 4 muted silver bags, 3 vibrant salmon bags, 1 mirrored blue bag. +posh gold bags contain 5 vibrant magenta bags. +faded beige bags contain 5 faded black bags, 4 clear coral bags, 4 bright olive bags, 1 faded lime bag. +vibrant turquoise bags contain 3 clear cyan bags, 1 dotted fuchsia bag. +faded bronze bags contain 4 posh teal bags, 3 plaid tomato bags, 4 dark bronze bags. +shiny blue bags contain 3 drab indigo bags, 1 dark lime bag. +plaid yellow bags contain 1 plaid lime bag. +shiny aqua bags contain 1 vibrant tomato bag, 4 dark aqua bags, 5 vibrant cyan bags, 4 striped coral bags. +mirrored indigo bags contain 5 vibrant turquoise bags. +wavy cyan bags contain 1 light yellow bag, 4 faded fuchsia bags, 2 clear silver bags, 3 vibrant fuchsia bags. +dull gray bags contain 2 mirrored turquoise bags, 2 posh yellow bags. +dim yellow bags contain 4 light silver bags. +striped crimson bags contain 3 dim salmon bags. +pale coral bags contain 4 vibrant violet bags, 4 posh teal bags, 3 drab aqua bags. +faded aqua bags contain 3 bright magenta bags, 4 muted aqua bags, 3 light salmon bags, 3 light black bags. +drab orange bags contain 2 drab purple bags, 5 light black bags, 5 dull blue bags, 1 bright purple bag. +drab bronze bags contain 3 clear violet bags, 3 drab crimson bags, 3 dotted yellow bags, 5 muted salmon bags. +drab blue bags contain 3 faded violet bags, 4 bright lavender bags, 2 vibrant cyan bags. +pale olive bags contain 4 shiny yellow bags, 1 dull yellow bag, 2 striped tomato bags. +light salmon bags contain 2 shiny gold bags, 2 light silver bags, 4 wavy magenta bags. +wavy brown bags contain 4 dim indigo bags, 3 pale olive bags, 3 mirrored orange bags. +vibrant beige bags contain 5 light lavender bags, 3 wavy bronze bags, 1 plaid yellow bag, 2 dark aqua bags. +clear tan bags contain 3 posh fuchsia bags, 1 pale fuchsia bag. +dotted turquoise bags contain 3 light maroon bags. +dull magenta bags contain 2 dark tomato bags. +dull chartreuse bags contain 5 light chartreuse bags, 2 dotted chartreuse bags. +bright red bags contain 1 dotted brown bag, 1 posh yellow bag, 5 light white bags, 4 shiny maroon bags. +bright bronze bags contain 4 bright salmon bags, 4 plaid bronze bags, 2 dim chartreuse bags. +vibrant gold bags contain 2 faded purple bags, 3 mirrored maroon bags, 3 dull gray bags. +vibrant cyan bags contain 2 faded olive bags, 4 dull silver bags, 3 mirrored lime bags, 4 faded red bags. +mirrored plum bags contain 3 dark orange bags, 5 plaid lavender bags, 5 dim red bags. +clear white bags contain 3 striped beige bags. +drab fuchsia bags contain 4 striped magenta bags, 2 vibrant violet bags, 4 pale aqua bags. +dark purple bags contain 5 striped violet bags. +mirrored tomato bags contain 5 drab olive bags. +dull olive bags contain 4 wavy purple bags. +wavy maroon bags contain 4 pale gold bags. +vibrant blue bags contain 1 faded lime bag, 4 light plum bags. +clear teal bags contain 4 dark green bags, 5 clear brown bags. +clear beige bags contain 4 shiny cyan bags, 3 striped salmon bags. +drab indigo bags contain 5 drab tan bags, 4 shiny black bags, 4 striped brown bags. +muted bronze bags contain 4 dark chartreuse bags, 5 pale crimson bags, 4 vibrant gold bags. +muted olive bags contain 3 wavy olive bags, 5 dark bronze bags, 4 bright aqua bags, 1 dotted yellow bag. +dull beige bags contain 1 dull purple bag. +dotted yellow bags contain 3 dim plum bags, 2 plaid lavender bags. +wavy lavender bags contain 1 vibrant violet bag, 4 posh blue bags, 1 posh plum bag. +dim fuchsia bags contain 5 pale yellow bags, 4 faded plum bags, 5 bright lime bags. +plaid gray bags contain 5 dark violet bags, 2 dotted crimson bags, 4 dull fuchsia bags, 1 drab magenta bag. +vibrant coral bags contain 2 shiny cyan bags, 4 pale magenta bags, 5 striped coral bags, 3 pale teal bags. +drab yellow bags contain 4 clear orange bags, 5 faded fuchsia bags. +dark red bags contain 5 mirrored maroon bags, 3 clear blue bags, 2 striped crimson bags, 2 dotted violet bags. +mirrored cyan bags contain 5 dotted maroon bags, 5 posh turquoise bags, 2 faded gray bags. +muted yellow bags contain 1 light cyan bag, 2 dim orange bags, 5 dull olive bags, 5 light green bags. +wavy aqua bags contain 2 muted cyan bags, 4 mirrored green bags, 5 muted tomato bags. +vibrant lavender bags contain 1 dotted gold bag, 1 light chartreuse bag, 3 mirrored gray bags. +bright black bags contain 1 striped lavender bag, 2 shiny tan bags, 4 bright lime bags. +wavy chartreuse bags contain 4 mirrored red bags. +dull turquoise bags contain 5 faded red bags, 1 light brown bag, 1 clear magenta bag. +dull silver bags contain 4 dark gray bags, 1 faded green bag. +pale black bags contain 1 plaid indigo bag, 3 light tomato bags, 4 drab blue bags. +clear tomato bags contain 1 dim tan bag, 1 clear lavender bag, 1 striped fuchsia bag, 5 clear orange bags. +dark cyan bags contain 4 shiny brown bags. +pale blue bags contain 1 clear green bag. +dotted lavender bags contain 3 dotted maroon bags, 5 wavy salmon bags, 2 pale tomato bags, 5 mirrored blue bags. +pale orange bags contain 4 pale silver bags, 4 striped lime bags. +drab chartreuse bags contain 2 dark gold bags, 5 clear crimson bags, 3 dull green bags. +striped violet bags contain 4 plaid lime bags. +muted gold bags contain no other bags. +mirrored gray bags contain 1 light green bag, 1 striped beige bag. +bright lavender bags contain 2 clear blue bags. +striped gold bags contain 3 muted turquoise bags. +dim white bags contain 1 vibrant lavender bag. +wavy beige bags contain 4 light chartreuse bags, 5 dark lime bags. +dim tomato bags contain 2 wavy aqua bags, 3 faded salmon bags. +light blue bags contain 2 wavy purple bags, 1 dull olive bag. +drab brown bags contain 5 drab magenta bags, 2 muted teal bags. +wavy olive bags contain 3 pale green bags, 5 muted gray bags. +bright chartreuse bags contain 1 clear yellow bag, 2 dotted olive bags, 1 posh olive bag. +posh violet bags contain 5 muted tomato bags, 5 light aqua bags, 3 pale cyan bags, 2 mirrored chartreuse bags. +dotted blue bags contain 4 plaid yellow bags, 3 vibrant bronze bags, 2 dull maroon bags, 3 shiny silver bags. +pale white bags contain 3 plaid brown bags, 2 mirrored aqua bags, 2 dim turquoise bags. +dull lavender bags contain 1 light blue bag, 5 drab tan bags, 3 light yellow bags. +pale cyan bags contain 5 pale green bags, 5 dull tomato bags, 4 vibrant orange bags. +mirrored tan bags contain 1 mirrored blue bag, 5 wavy purple bags. +plaid maroon bags contain 5 bright orange bags, 1 dull fuchsia bag, 5 dull indigo bags, 4 light white bags. +drab plum bags contain 5 pale silver bags, 1 clear yellow bag, 5 dotted fuchsia bags. +muted aqua bags contain 2 posh blue bags, 3 muted chartreuse bags, 1 drab tan bag, 3 dotted brown bags. +striped lavender bags contain 3 posh yellow bags, 5 drab white bags, 1 muted gold bag. +posh bronze bags contain 1 mirrored lime bag, 2 muted cyan bags, 3 muted aqua bags. +dotted brown bags contain 1 dotted orange bag, 3 striped blue bags, 3 dotted teal bags, 4 wavy magenta bags. +light chartreuse bags contain no other bags. +dotted purple bags contain 3 muted lavender bags. +vibrant violet bags contain 3 light violet bags. +dark green bags contain 3 mirrored teal bags, 3 bright magenta bags, 2 light chartreuse bags. +faded indigo bags contain 3 faded fuchsia bags, 4 dim magenta bags. +bright cyan bags contain 4 vibrant olive bags, 4 faded olive bags, 1 posh teal bag. +drab white bags contain no other bags. +clear magenta bags contain 1 dotted maroon bag, 2 wavy olive bags, 5 drab white bags. +light yellow bags contain 4 shiny brown bags, 4 light fuchsia bags, 1 mirrored turquoise bag, 2 drab teal bags. +dark beige bags contain 4 dim crimson bags, 5 mirrored turquoise bags, 3 posh yellow bags, 1 dull chartreuse bag. +dark teal bags contain 5 mirrored tan bags, 5 vibrant tomato bags, 2 bright violet bags, 2 striped silver bags. +pale plum bags contain 2 drab white bags. +light red bags contain 2 striped blue bags, 2 bright violet bags, 4 clear orange bags. +plaid brown bags contain 4 light maroon bags, 5 dull bronze bags, 3 plaid black bags. +plaid bronze bags contain 4 muted salmon bags, 1 light violet bag, 4 plaid black bags. +bright orange bags contain 5 light green bags, 2 wavy plum bags, 5 faded coral bags. +plaid black bags contain 5 dark green bags, 3 dull indigo bags, 3 dim tan bags. +shiny lime bags contain 5 bright lime bags. +shiny fuchsia bags contain 2 dotted tan bags, 3 drab white bags. +bright gold bags contain 1 drab magenta bag, 4 pale salmon bags. +shiny gold bags contain 1 drab white bag, 2 wavy purple bags, 2 muted gray bags, 5 clear crimson bags. +plaid beige bags contain 3 dotted yellow bags. +vibrant silver bags contain 2 muted gold bags, 5 dim teal bags, 4 mirrored white bags, 2 clear blue bags. +dotted black bags contain 1 wavy crimson bag, 5 vibrant purple bags. +mirrored brown bags contain 4 drab aqua bags, 4 dark teal bags, 5 striped plum bags. +dotted red bags contain 5 bright lime bags, 5 vibrant magenta bags, 1 striped turquoise bag. +bright tan bags contain 2 dull yellow bags, 2 posh tomato bags. +striped aqua bags contain 3 clear blue bags, 1 dark maroon bag. +dotted coral bags contain 1 vibrant silver bag, 3 dark green bags, 4 posh gray bags, 2 light red bags. +mirrored lime bags contain 3 mirrored white bags, 1 plaid tomato bag, 2 shiny yellow bags, 2 vibrant black bags. +dark gray bags contain 3 faded green bags, 3 vibrant crimson bags. +wavy lime bags contain 5 wavy salmon bags, 2 faded tomato bags. +dotted lime bags contain 5 drab brown bags, 1 faded salmon bag, 2 wavy violet bags, 4 posh olive bags. +light black bags contain 5 striped indigo bags. +shiny yellow bags contain 5 wavy tan bags, 5 drab white bags, 4 posh olive bags. +bright yellow bags contain 3 posh red bags, 2 plaid black bags. +dull tan bags contain 4 clear brown bags, 3 wavy tan bags. +shiny tomato bags contain 2 shiny orange bags, 4 light lavender bags, 1 plaid lavender bag. +vibrant aqua bags contain 5 pale green bags, 3 drab crimson bags, 2 shiny brown bags. +striped salmon bags contain 2 posh orange bags. +light silver bags contain 1 shiny yellow bag, 4 mirrored turquoise bags, 1 bright coral bag, 2 posh maroon bags. +striped fuchsia bags contain 3 drab white bags, 3 faded chartreuse bags, 4 vibrant black bags, 3 wavy tan bags. +bright tomato bags contain 3 light beige bags, 4 drab teal bags. +shiny plum bags contain 4 clear bronze bags. +vibrant red bags contain 3 bright magenta bags. +mirrored orange bags contain 2 mirrored white bags, 3 dotted brown bags, 3 bright silver bags, 4 pale teal bags. +dull indigo bags contain no other bags. +wavy yellow bags contain 4 wavy white bags. +muted turquoise bags contain 2 posh red bags, 3 dark green bags, 4 mirrored white bags. +striped indigo bags contain 3 dark cyan bags, 5 clear blue bags, 2 faded chartreuse bags. +mirrored green bags contain 4 mirrored chartreuse bags, 3 striped red bags. +plaid white bags contain 1 vibrant salmon bag, 1 dark yellow bag, 2 vibrant violet bags. +dark plum bags contain 4 muted coral bags, 4 mirrored blue bags, 1 vibrant aqua bag. +drab turquoise bags contain 1 dotted purple bag, 1 light plum bag. +light maroon bags contain 2 wavy purple bags, 2 dim orange bags, 1 mirrored white bag, 3 striped tomato bags. +shiny maroon bags contain 2 bright blue bags. +drab crimson bags contain 1 bright magenta bag, 3 drab white bags. +dark aqua bags contain 3 shiny brown bags, 5 dark gray bags. +posh turquoise bags contain 2 shiny gray bags. +muted indigo bags contain 4 wavy purple bags. +dotted salmon bags contain 1 vibrant violet bag, 1 mirrored lavender bag. +plaid indigo bags contain 2 wavy indigo bags, 2 dark white bags, 3 wavy tan bags, 3 vibrant crimson bags. +muted brown bags contain 3 posh yellow bags, 4 shiny lime bags, 5 striped lavender bags. +vibrant gray bags contain 1 mirrored silver bag, 2 light coral bags, 1 faded gold bag, 1 dull fuchsia bag. +drab tomato bags contain 1 wavy tan bag, 1 shiny tan bag, 1 clear crimson bag. +wavy white bags contain 3 muted blue bags, 2 wavy plum bags, 4 dim silver bags, 3 mirrored tan bags. +shiny lavender bags contain 1 posh coral bag, 2 dotted crimson bags, 2 plaid red bags, 1 striped silver bag. +dull fuchsia bags contain 4 light bronze bags, 3 clear gray bags, 1 bright coral bag. +drab teal bags contain 5 muted chartreuse bags, 4 dull silver bags, 5 vibrant black bags, 3 shiny olive bags. +clear crimson bags contain 4 clear brown bags, 3 drab crimson bags, 4 clear blue bags, 1 vibrant black bag. +posh beige bags contain 5 plaid teal bags. +clear silver bags contain 3 plaid tomato bags, 3 bright silver bags, 1 mirrored white bag. +mirrored red bags contain 2 striped indigo bags, 2 drab teal bags. +posh indigo bags contain 3 faded red bags. +dark silver bags contain 5 wavy tan bags, 2 dotted maroon bags. +drab red bags contain 2 dotted chartreuse bags, 3 mirrored tan bags, 5 pale plum bags. +plaid turquoise bags contain 4 dim silver bags, 1 bright orange bag. +dim blue bags contain 1 muted lavender bag, 1 wavy plum bag. +plaid coral bags contain 2 shiny coral bags. +striped silver bags contain 2 muted brown bags. +vibrant tomato bags contain 1 muted black bag. +dark turquoise bags contain 2 light silver bags. +vibrant lime bags contain 2 light beige bags, 3 bright green bags, 5 faded purple bags. +mirrored chartreuse bags contain 2 wavy tan bags, 5 dim tan bags. +light plum bags contain 5 faded green bags. +dim tan bags contain 1 faded chartreuse bag, 2 clear brown bags, 1 faded green bag, 2 muted gold bags. +shiny bronze bags contain 5 drab aqua bags. +dotted tomato bags contain 4 wavy magenta bags. +mirrored crimson bags contain 1 dim bronze bag. +light crimson bags contain 3 posh red bags. +dull coral bags contain 3 striped crimson bags, 4 mirrored salmon bags. +drab lavender bags contain 3 dim salmon bags. +dotted crimson bags contain 3 dark cyan bags, 4 posh blue bags, 2 light fuchsia bags. +dotted tan bags contain 2 posh fuchsia bags, 4 dim black bags. +dark coral bags contain 2 mirrored green bags, 4 shiny white bags, 2 shiny tomato bags. +striped orange bags contain 1 muted violet bag, 5 pale cyan bags, 2 drab tomato bags, 3 faded violet bags. +pale aqua bags contain 3 shiny fuchsia bags, 4 shiny violet bags. +wavy plum bags contain 4 light chartreuse bags, 5 vibrant tan bags, 4 muted lime bags. +mirrored turquoise bags contain 4 shiny brown bags, 4 drab tan bags. +dark magenta bags contain 5 faded violet bags, 2 posh lavender bags. +striped bronze bags contain 3 light silver bags, 3 mirrored brown bags, 3 posh purple bags, 4 drab turquoise bags. +faded red bags contain 2 dark cyan bags, 2 striped tan bags, 4 mirrored violet bags. +faded turquoise bags contain 1 striped crimson bag. +clear gold bags contain 3 clear crimson bags, 5 faded green bags, 4 dim tan bags. +clear coral bags contain 3 striped salmon bags. +faded gray bags contain 4 light salmon bags, 5 clear orange bags, 1 dim yellow bag, 2 wavy green bags. +posh lavender bags contain 2 clear silver bags, 1 wavy indigo bag, 4 faded brown bags, 2 light white bags. +pale red bags contain 3 clear orange bags. +dim lavender bags contain 1 posh silver bag. +vibrant orange bags contain 2 pale magenta bags. +pale gray bags contain 2 dark aqua bags, 2 mirrored turquoise bags, 2 striped fuchsia bags, 5 wavy purple bags. +pale teal bags contain 2 striped brown bags, 4 shiny brown bags. +muted tan bags contain 3 dotted purple bags, 5 clear blue bags, 5 bright plum bags. +dotted cyan bags contain 1 mirrored chartreuse bag, 2 dotted gray bags, 5 pale tomato bags, 1 mirrored lime bag. +dark brown bags contain 4 vibrant orange bags, 3 faded olive bags, 5 posh blue bags. +dull orange bags contain 5 posh coral bags, 5 vibrant green bags, 3 dull maroon bags, 1 striped tomato bag. +plaid silver bags contain 1 muted turquoise bag, 1 wavy green bag. +dull crimson bags contain 4 faded red bags, 1 dotted plum bag, 2 plaid orange bags, 1 posh yellow bag. +muted orange bags contain 4 pale yellow bags, 1 dark maroon bag, 5 mirrored white bags. +wavy black bags contain 4 mirrored blue bags, 4 drab chartreuse bags, 4 dull aqua bags. +light magenta bags contain 2 muted coral bags, 3 wavy violet bags. +faded crimson bags contain 2 dim orange bags, 3 vibrant crimson bags, 4 clear lime bags, 5 wavy olive bags. +light fuchsia bags contain 2 dull green bags, 4 dull indigo bags. +mirrored black bags contain 1 wavy magenta bag, 3 light bronze bags, 3 dull teal bags. +striped tan bags contain 5 vibrant yellow bags, 3 dull silver bags, 5 mirrored teal bags. +dark crimson bags contain 1 mirrored teal bag, 2 muted maroon bags, 5 dull green bags. +light indigo bags contain 5 dotted purple bags. +light brown bags contain 4 dark fuchsia bags, 1 bright olive bag. +wavy purple bags contain 3 vibrant black bags, 5 dull teal bags, 1 bright magenta bag. +posh white bags contain 5 muted purple bags, 5 drab silver bags. +faded gold bags contain 2 dull teal bags, 5 muted orange bags, 3 mirrored lavender bags, 2 clear orange bags. +clear maroon bags contain 2 dim crimson bags, 3 dim maroon bags, 5 wavy salmon bags, 5 mirrored black bags. +bright maroon bags contain 5 dark bronze bags, 4 pale coral bags. +clear turquoise bags contain 1 muted gold bag. +bright coral bags contain 3 striped lavender bags, 4 drab tomato bags, 1 bright lime bag. +wavy teal bags contain 3 faded tan bags. +mirrored gold bags contain 4 faded violet bags. +dark orange bags contain 5 muted purple bags, 1 drab turquoise bag, 5 pale beige bags. +dull green bags contain 1 faded chartreuse bag. +posh plum bags contain 1 dull turquoise bag. +plaid red bags contain 4 wavy orange bags. +faded green bags contain 2 wavy tan bags, 2 muted gold bags. +drab maroon bags contain 5 striped fuchsia bags, 5 light indigo bags. +clear blue bags contain 5 bright magenta bags, 2 muted gold bags, 1 faded chartreuse bag. +shiny purple bags contain 3 mirrored lavender bags, 3 light crimson bags, 2 light turquoise bags, 1 drab aqua bag. +wavy silver bags contain 5 mirrored tan bags, 2 dotted crimson bags, 3 pale magenta bags, 5 vibrant plum bags. +drab gray bags contain 4 mirrored red bags, 4 plaid yellow bags, 4 muted silver bags, 3 light black bags. +striped maroon bags contain 5 dull teal bags, 1 bright indigo bag, 3 clear gray bags. +striped tomato bags contain 2 clear gold bags, 4 plaid red bags, 1 vibrant yellow bag, 2 dark aqua bags. +vibrant brown bags contain 4 vibrant orange bags. +wavy green bags contain 5 striped coral bags, 5 clear brown bags, 4 drab gold bags, 3 faded green bags. +dark tomato bags contain 3 wavy gray bags, 4 clear yellow bags, 4 light fuchsia bags, 1 drab plum bag. +plaid gold bags contain 3 faded red bags. +light tomato bags contain 1 striped black bag. +clear olive bags contain 2 drab lime bags. +dim red bags contain 4 light yellow bags, 5 vibrant yellow bags, 3 dark green bags, 2 vibrant aqua bags. +vibrant indigo bags contain 1 vibrant silver bag. +pale crimson bags contain 4 wavy green bags, 1 striped fuchsia bag, 4 posh indigo bags. +clear lime bags contain 1 wavy tan bag. +muted gray bags contain 1 faded green bag, 2 dull silver bags, 4 drab crimson bags. +striped chartreuse bags contain 2 vibrant silver bags, 2 shiny tan bags, 3 muted silver bags, 2 shiny maroon bags. +muted coral bags contain 5 dark maroon bags, 1 clear lavender bag, 4 bright teal bags, 4 faded cyan bags. +posh coral bags contain 2 clear brown bags. +bright crimson bags contain 2 vibrant salmon bags. +muted plum bags contain 1 pale silver bag. +dull plum bags contain 2 shiny cyan bags, 3 faded salmon bags. +bright olive bags contain 3 dim brown bags, 5 dark brown bags, 1 muted white bag. +clear plum bags contain 5 clear chartreuse bags, 5 striped aqua bags. +muted chartreuse bags contain 1 faded crimson bag, 1 dark cyan bag. +muted purple bags contain 1 bright plum bag, 2 light olive bags, 2 striped red bags, 4 pale magenta bags. +posh yellow bags contain 4 wavy purple bags, 3 dark green bags, 3 striped tomato bags, 3 light chartreuse bags. +light violet bags contain 5 plaid black bags, 1 muted brown bag, 1 vibrant aqua bag. +drab olive bags contain 1 dim brown bag, 2 dull blue bags. +pale indigo bags contain 3 dark magenta bags, 2 dull blue bags. +mirrored blue bags contain 5 clear crimson bags, 1 clear orange bag, 3 drab tomato bags. +striped green bags contain 2 shiny black bags, 4 dotted chartreuse bags, 4 wavy white bags. +plaid teal bags contain 4 dark green bags, 5 muted chartreuse bags, 5 vibrant aqua bags, 4 dotted olive bags. +faded plum bags contain 2 drab white bags, 4 light blue bags, 2 clear lavender bags, 3 vibrant white bags. +dim green bags contain 2 faded green bags, 2 bright magenta bags. +dark lavender bags contain 2 muted lime bags, 2 faded tomato bags, 5 wavy purple bags, 3 light olive bags. +dim purple bags contain 4 dotted plum bags. +dark salmon bags contain 1 dull violet bag, 3 bright indigo bags. +dim cyan bags contain 5 dim crimson bags, 2 clear brown bags, 1 muted brown bag, 4 light silver bags. diff --git a/input8 b/input8 new file mode 100644 index 0000000..bda1247 --- /dev/null +++ b/input8 @@ -0,0 +1,656 @@ +acc -7 +acc +2 +acc +20 +acc +14 +jmp +191 +acc +47 +nop +339 +acc +49 +jmp +104 +jmp +629 +jmp +374 +acc +24 +jmp +220 +nop +474 +acc +25 +jmp +340 +acc +16 +acc +3 +acc +41 +jmp +566 +jmp +296 +acc +15 +jmp +452 +acc +21 +jmp +129 +acc +10 +acc -8 +acc +39 +jmp +396 +acc +5 +acc -4 +acc +0 +jmp +496 +nop +181 +acc +48 +acc +7 +jmp +1 +jmp +370 +acc +16 +acc -18 +acc +47 +acc +48 +jmp +99 +nop +17 +acc +25 +acc -15 +jmp +285 +nop +545 +nop +147 +nop +479 +acc -4 +jmp +386 +acc +36 +acc -12 +jmp +50 +acc +37 +nop +133 +acc +11 +acc +20 +jmp +32 +jmp +1 +nop +210 +acc -15 +acc -6 +jmp +446 +acc +25 +acc +1 +acc +17 +acc -4 +jmp +355 +acc -4 +jmp +292 +acc +16 +acc +44 +acc +26 +jmp +157 +acc -18 +acc +15 +acc -8 +acc -3 +jmp +46 +acc +30 +acc +16 +jmp -7 +acc +34 +jmp +515 +acc +11 +acc -8 +acc -9 +acc -3 +jmp +548 +jmp +278 +nop +332 +acc -19 +acc +49 +jmp +536 +acc -9 +acc +46 +jmp +124 +acc +41 +acc +47 +acc -5 +acc -13 +jmp +41 +nop +178 +acc +12 +acc +45 +jmp +461 +acc +37 +acc +12 +acc +38 +jmp -68 +acc -6 +nop +494 +acc -9 +jmp -63 +acc +42 +acc +16 +acc +30 +jmp +70 +acc +13 +jmp +1 +acc -18 +jmp +528 +acc +48 +jmp +493 +nop +402 +jmp +381 +acc -8 +jmp +372 +acc +20 +acc +25 +jmp +425 +acc -10 +jmp +510 +jmp +439 +nop +78 +acc +36 +acc +7 +nop +281 +jmp +504 +jmp -108 +acc +40 +jmp -122 +acc +23 +acc -2 +acc +7 +jmp +370 +acc +25 +nop -5 +acc +33 +acc +37 +jmp +70 +acc -6 +nop +336 +jmp +34 +jmp +1 +acc -18 +jmp +473 +jmp +1 +acc +20 +acc +4 +acc +25 +jmp -87 +acc -12 +acc +47 +acc +49 +jmp +323 +jmp +1 +jmp +1 +jmp +167 +acc -10 +acc +45 +jmp +355 +acc +32 +acc +38 +acc +2 +jmp -93 +acc +8 +acc +20 +acc +4 +acc -1 +jmp +108 +nop +164 +acc +41 +jmp +440 +acc -16 +acc +47 +jmp +355 +acc -13 +acc +29 +acc +50 +jmp -101 +acc -8 +jmp +316 +acc +27 +acc +31 +nop -29 +jmp +1 +jmp +250 +acc +12 +acc -13 +jmp +73 +jmp +72 +acc +36 +acc +44 +jmp +1 +jmp -33 +acc -18 +acc +16 +acc -8 +acc +6 +jmp +104 +jmp +295 +acc +10 +nop -80 +jmp +74 +acc -13 +jmp +1 +acc +22 +acc +50 +jmp +280 +jmp +265 +jmp +278 +acc +46 +acc -14 +acc -17 +jmp -19 +acc +39 +acc +31 +acc -11 +jmp +400 +jmp +80 +acc +0 +acc +27 +nop +209 +jmp -184 +acc +12 +acc +21 +acc +23 +jmp +352 +acc +29 +jmp -5 +acc +15 +acc +7 +jmp +6 +acc +31 +acc -5 +nop +83 +acc +31 +jmp -239 +acc +8 +acc -2 +acc +49 +acc -12 +jmp -52 +acc -15 +acc -14 +jmp +126 +jmp +385 +acc +30 +acc -5 +acc +6 +jmp -187 +acc +39 +acc +40 +acc +0 +acc +6 +jmp +24 +acc +20 +jmp +131 +jmp -127 +acc +8 +acc +30 +jmp -265 +acc -2 +jmp -265 +acc +22 +acc -19 +acc -9 +nop +10 +jmp +148 +acc -14 +acc +38 +acc +50 +acc -7 +jmp +197 +acc +11 +acc +22 +jmp +201 +jmp -155 +jmp -32 +acc +48 +nop -50 +jmp -99 +jmp -5 +acc +11 +acc -18 +jmp -186 +acc +6 +acc +43 +jmp +159 +jmp +249 +acc +44 +acc +29 +nop +313 +acc +23 +jmp +311 +jmp +152 +acc +0 +acc +41 +jmp -251 +jmp +102 +nop -17 +nop +176 +jmp +40 +acc +28 +jmp -21 +acc -4 +acc -10 +acc -19 +acc -15 +jmp +23 +nop +144 +acc +9 +acc +18 +jmp +141 +acc -19 +acc -10 +acc +48 +jmp -7 +acc +46 +acc -9 +jmp -174 +acc +30 +acc +30 +jmp -201 +acc +34 +acc +24 +acc +37 +acc +44 +jmp -158 +acc +4 +acc +39 +jmp -52 +jmp -329 +jmp +68 +acc +25 +nop -105 +acc -15 +acc +34 +jmp -6 +jmp +1 +acc +1 +jmp +163 +nop -285 +acc +8 +acc +48 +jmp +143 +acc -3 +nop -269 +acc -16 +jmp -310 +acc -5 +jmp -304 +acc +45 +nop -231 +jmp +1 +jmp +245 +nop -243 +jmp +187 +acc -6 +acc +7 +acc +17 +acc +6 +jmp -111 +acc +24 +acc -10 +acc +21 +jmp -97 +jmp +1 +acc -12 +acc +10 +jmp +127 +acc +0 +jmp -211 +acc -11 +acc +36 +acc +45 +acc -19 +jmp -182 +jmp -366 +acc +38 +acc -11 +acc +32 +jmp -260 +acc +6 +acc +31 +jmp +3 +acc +5 +jmp +101 +jmp -64 +acc +48 +acc +5 +nop +40 +acc -13 +jmp +95 +nop +76 +acc +44 +acc +43 +acc +43 +jmp +196 +acc +34 +jmp +161 +acc +5 +acc +45 +acc +7 +jmp +20 +acc +13 +jmp -127 +acc +5 +acc +18 +jmp -239 +jmp -76 +nop +214 +jmp -284 +acc +10 +acc -8 +jmp -81 +acc +48 +acc -3 +jmp -55 +nop -288 +acc +37 +acc +1 +acc -12 +jmp +1 +nop +91 +acc +20 +acc +18 +jmp +4 +acc -7 +acc -10 +jmp -229 +nop -230 +nop +45 +acc +37 +jmp +127 +jmp +69 +jmp -153 +acc -15 +acc -19 +acc +32 +jmp -33 +nop +164 +acc +32 +jmp -133 +acc +20 +acc -8 +jmp +8 +acc -11 +nop +82 +acc +7 +acc +40 +jmp +79 +acc +0 +jmp +159 +acc +4 +acc -8 +acc +20 +nop +143 +jmp -351 +acc -7 +jmp +78 +acc +0 +acc +4 +jmp +20 +jmp -3 +acc +2 +acc +23 +jmp -256 +acc +33 +jmp -473 +acc +29 +acc -13 +jmp +77 +jmp +158 +acc -16 +jmp -10 +jmp -181 +jmp -135 +nop -95 +acc +46 +acc +39 +acc -3 +jmp -94 +jmp -67 +acc +49 +nop -78 +nop -9 +jmp +107 +acc -19 +acc -1 +acc +0 +acc -4 +jmp -189 +acc +11 +jmp -106 +jmp -200 +jmp +122 +acc +8 +acc +48 +acc +15 +acc +0 +jmp -493 +acc +13 +jmp -8 +acc +36 +acc -10 +jmp +1 +acc +9 +jmp +7 +jmp +85 +acc +22 +acc -8 +nop -124 +jmp -517 +jmp -338 +acc +39 +nop -438 +acc -11 +jmp +69 +acc +8 +acc +34 +acc +34 +acc -9 +jmp -205 +nop -528 +jmp -495 +acc +47 +acc +40 +acc +30 +jmp -328 +acc -2 +acc +41 +jmp -475 +acc +42 +acc +48 +acc +2 +acc +7 +jmp -415 +nop -249 +acc -3 +jmp +65 +acc +23 +nop -4 +jmp -254 +acc -12 +acc +22 +acc +27 +jmp -176 +jmp -408 +acc -15 +acc +14 +acc +30 +acc +0 +jmp -363 +jmp -426 +acc +38 +nop -425 +jmp -440 +jmp +1 +acc +22 +jmp -63 +jmp -406 +nop -445 +acc -5 +acc +34 +nop -425 +jmp +65 +acc +33 +jmp -91 +acc -12 +jmp +1 +jmp -541 +nop -489 +jmp -490 +acc +20 +acc +20 +acc +38 +acc -18 +jmp -548 +acc +43 +acc -7 +jmp -351 +acc -9 +acc +50 +acc +1 +nop -587 +jmp -230 +jmp +1 +nop +43 +jmp -65 +acc +31 +acc +5 +acc +1 +jmp -105 +nop -477 +acc +21 +nop -92 +jmp -263 +acc +28 +jmp -265 +jmp -311 +acc +2 +acc +23 +acc +50 +jmp -4 +acc +42 +acc +42 +acc +31 +jmp -167 +acc +49 +acc +46 +jmp -73 +nop -135 +acc +43 +jmp -236 +acc -14 +acc -3 +jmp -406 +acc +2 +acc -3 +acc +47 +jmp -420 +acc -8 +acc +18 +jmp -604 +jmp -218 +acc +37 +acc -16 +nop -278 +acc -15 +jmp -214 +acc -6 +acc +18 +acc +7 +acc +0 +jmp -252 +acc +14 +jmp -266 +acc +27 +acc -16 +nop -533 +nop -534 +jmp +1 diff --git a/input9 b/input9 new file mode 100644 index 0000000..de58617 --- /dev/null +++ b/input9 @@ -0,0 +1,1000 @@ +19 +30 +13 +31 +42 +41 +44 +34 +39 +6 +47 +50 +36 +33 +32 +15 +43 +8 +26 +24 +48 +5 +3 +10 +1 +20 +4 +7 +9 +22 +11 +12 +16 +13 +14 +17 +6 +28 +57 +18 +19 +15 +21 +8 +23 +24 +25 +5 +26 +10 +27 +20 +29 +30 +33 +22 +43 +78 +31 +32 +41 +11 +13 +16 +56 +28 +37 +40 +15 +35 +18 +38 +21 +23 +24 +70 +34 +26 +45 +27 +102 +29 +33 +36 +108 +31 +32 +39 +41 +42 +46 +78 +50 +56 +44 +47 +48 +152 +104 +84 +64 +68 +53 +58 +136 +60 +61 +67 +106 +71 +63 +73 +80 +88 +108 +90 +97 +114 +148 +143 +118 +198 +133 +111 +121 +117 +113 +161 +124 +123 +131 +256 +130 +134 +136 +222 +153 +185 +178 +233 +203 +208 +232 +234 +245 +224 +237 +228 +274 +244 +230 +236 +276 +267 +253 +398 +264 +266 +356 +289 +397 +661 +436 +381 +411 +440 +609 +452 +458 +525 +889 +496 +464 +666 +466 +565 +500 +517 +520 +519 +530 +553 +702 +686 +893 +792 +894 +957 +1132 +851 +892 +1453 +982 +1478 +1409 +985 +930 +964 +1422 +966 +1017 +1019 +1036 +1221 +1818 +1232 +1239 +2053 +1537 +1643 +1684 +1912 +1743 +1781 +1815 +1822 +1894 +2249 +1947 +3065 +1896 +1930 +2036 +2460 +2779 +2923 +2471 +4513 +2453 +2769 +2882 +3020 +3590 +3427 +5018 +3728 +3524 +3558 +3596 +4924 +3966 +4699 +4720 +8223 +4918 +11951 +6043 +4496 +4913 +5232 +8147 +5222 +5335 +8471 +5651 +8054 +6447 +6951 +14918 +7082 +13398 +10145 +8462 +7562 +9414 +8665 +9195 +9638 +10150 +9409 +9718 +9728 +9831 +10567 +10454 +10557 +10873 +10986 +16033 +12098 +19142 +17200 +16024 +17860 +14644 +18916 +16227 +16757 +25864 +18074 +19549 +18833 +19047 +19559 +19127 +20285 +29483 +21430 +21011 +28855 +54719 +36318 +31647 +31014 +50789 +51299 +36987 +30668 +31401 +35060 +32984 +34301 +34831 +36907 +37121 +37880 +56713 +38174 +40989 +81803 +41296 +42441 +49866 +69527 +63048 +61682 +62415 +62661 +65499 +62069 +63652 +65702 +64385 +67285 +70105 +78417 +69132 +71738 +94593 +75001 +76054 +100243 +131793 +83430 +105681 +83737 +104123 +111548 +142286 +128117 +123751 +142069 +124730 +125721 +126454 +130087 +131670 +195489 +136417 +139237 +217287 +170647 +155168 +151055 +158431 +260168 +167167 +211547 +187553 +187860 +258124 +234210 +236278 +248481 +249472 +303584 +250451 +285255 +252175 +286838 +266504 +268087 +474698 +294848 +329078 +306223 +419342 +318222 +309486 +378714 +535706 +354720 +375413 +421763 +422070 +470488 +519465 +484759 +497953 +551759 +539013 +516955 +575990 +534591 +649568 +954704 +577573 +601071 +604334 +615709 +624445 +733434 +627708 +664206 +839479 +976484 +776483 +797176 +1090772 +892558 +1331767 +1144663 +982712 +1014908 +1215965 +1404191 +1334505 +1110581 +1380817 +1178644 +1181907 +2346675 +1803089 +1220043 +1573659 +1252153 +1291914 +2583920 +1615962 +1887064 +2192449 +2350142 +1689734 +2947752 +1875270 +2159571 +1997620 +3303030 +2125489 +2289225 +3291255 +4594944 +2292488 +3127423 +2360551 +4233739 +2825812 +4045855 +2511957 +6522964 +2544067 +2907876 +3305696 +4669556 +9825994 +3565004 +3687354 +3815223 +4290108 +3872890 +4123109 +4649776 +4414714 +4417977 +6635066 +4653039 +4872508 +10450289 +4904618 +5056024 +5337769 +5369879 +5451943 +5419833 +5849763 +6109071 +7197984 +7178586 +8621028 +11301695 +7252358 +8525929 +8995617 +8777508 +7995999 +8537823 +12070492 +8832691 +16617027 +9525547 +11831625 +10324451 +9960642 +22726098 +10393793 +14447560 +10789712 +10871776 +16502864 +11958834 +13361429 +15873386 +17576809 +16521928 +15248357 +15778287 +16533822 +17315331 +16773507 +16828690 +20664316 +18358238 +18793333 +19486189 +24772011 +20285093 +30609544 +20354435 +21183505 +21265569 +42568378 +27563219 +27207191 +29883357 +32021864 +28609786 +31026644 +31770285 +31782179 +32077047 +32312109 +33307329 +45955516 +39771282 +36314879 +40058902 +39147768 +51508053 +39840624 +60413337 +69775569 +41537940 +67757554 +42449074 +53577678 +62195466 +54770410 +55816977 +58493143 +59636430 +60380071 +62796929 +63552464 +72135949 +64389156 +88077739 +72455097 +82270395 +78763953 +97640911 +78988392 +158054248 +81378564 +82289698 +117966834 +83987014 +130554483 +141906825 +173003557 +108348088 +121290072 +185718650 +114310120 +118129573 +160213688 +255273952 +126349393 +164560093 +136525105 +136844253 +151219050 +154744795 +195688684 +157752345 +160366956 +161278090 +163668262 +196599818 +208639091 +192335102 +198297134 +226477661 +234697481 +222658208 +232439693 +416552042 +250835225 +387360330 +244478966 +262874498 +314887312 +263193646 +273369358 +321645046 +288063303 +567771092 +451731565 +402231311 +318119301 +324035218 +485851854 +356003364 +388934920 +406936225 +556342527 +420955342 +449135869 +510721511 +467137174 +495314191 +507353464 +764023181 +393911906 +532542269 +526068144 +578080958 +561432661 +591488659 +909584775 +676998223 +642154519 +674122665 +680038582 +739074643 +1036789655 +912345891 +805139233 +814867248 +919980050 +1446048194 +1404898966 +1684003231 +1355511840 +1068786125 +2760410806 +1036066425 +926454175 +1070910129 +1255079181 +1087500805 +2035550422 +1727213139 +2715589004 +1316277184 +1678220944 +1322193101 +1586468556 +2657378685 +1544213876 +1620006481 +1717485124 +2106976554 +1734847298 +1962520600 +2242731359 +2385063309 +3926734590 +3697367898 +2546460656 +1997364304 +2248647276 +2013954980 +2631714681 +2707507286 +2403777989 +2866406977 +3617370785 +3559008543 +2638470285 +2908661657 +3057040399 +4601254275 +3164220357 +7176379328 +3337491605 +3976475580 +3732211602 +3748802278 +3959884904 +5406951716 +4246011580 +5556372847 +4262602256 +4011319284 +4401142293 +6643033965 +4417732969 +5035492670 +5923447376 +5042248274 +6246153262 +5547131942 +11470579318 +5695510684 +5965702056 +6221260756 +7086293883 +6501711962 +7313967185 +9298094926 +8791050552 +16612062111 +9436634963 +9516257751 +8412461577 +8257330864 +8273921540 +8429052253 +14394754309 +8818875262 +9453225639 +9459981243 +10077740944 +25910157037 +10589380216 +11242642626 +11512833998 +13815679147 +11661212740 +19935134280 +16702973793 +13588005845 +15292762514 +18351662484 +21590574942 +16531252404 +17790179291 +27788297447 +24943713981 +16686383117 +17076206126 +17727147179 +35987897981 +18272100901 +18278856505 +27804888123 +25249218585 +20667121160 +27275763333 +21832022842 +22755476624 +34882914888 +28364186533 +29933313641 +46156550607 +30290979638 +31860106746 +31824014918 +33217635521 +33607458530 +34258399583 +54266754486 +33762589243 +34958484018 +44881094249 +55639949866 +40110879347 +36550957406 +38939222061 +41034333129 +61038352576 +42499144002 +43422597784 +89149669374 +68565942548 +65254620626 +84991973596 +58297500174 +60224293279 +75069363365 +62114994556 +69216883601 +97073478574 +90817711892 +70313546649 +68721073261 +101054216617 +71509441424 +95996836594 +115180242712 +75490179467 +76661836753 +77585290535 +79973555190 +112143671045 +85921741786 +101720097958 +162328099200 +118521793453 +170791267082 +120412494730 +122339287835 +127018573435 +146975383402 +137937956862 +131331878157 +139034619910 +140230514685 +173582127129 +141822988073 +169775289878 +211177079306 +146999620891 +152152016220 +154247127288 +153075470002 +239162244480 +157558845725 +307322597290 +187641839744 +204443535239 +233051976115 +238934288183 +253671165992 +259447114640 +329464827817 +284407348159 +518499676596 +270366498067 +406634103244 +509528742547 +279265134595 +293305984687 +288822608964 +327334135603 +476464448708 +299151637111 +300075090893 +305227486222 +552753099327 +310634315727 +443605779719 +390610821840 +392085374983 +509671021461 +437495511354 +526357960802 +492605454175 +513118280632 +529813612707 +569518135178 +610709406620 +575593984289 +549631632662 +568087743559 +604379123333 +671350509578 +598533470909 +587974246075 +1026096081370 +599226728004 +791757091286 +1079189156639 +996464498316 +754240095446 +748129827081 +782696196823 +828106333194 +829580886337 +930100965529 +987127144016 +1105407596996 +1022419066882 +1111651751541 +1079445245369 +1137605878737 +1117719376221 +1166621214468 +1148165103571 +1370670442898 +1186507716984 +1187200974079 +1584438744391 +1342214341521 +1347356555085 +1353466823450 +1545997186732 +1502369922527 +1530826023904 +2300771408427 +2243013475733 +1610802530017 +2495521658656 +1816708030353 +1917228109545 +2009546210898 +3827452220124 +2160024945619 +2581815167896 +2648545400125 +2255325254958 +2518835546469 +2314786318039 +2334672820555 +2373708691063 +2528722058505 +2529415315600 +2689570896606 +2700823378535 +3319077952880 +2899464010182 +3911573938444 +3033195946431 +3347534054257 +3427510560370 +3528030639562 +3620348740915 +3733936139898 +3926774320443 +4077253055164 +4169571156517 +4415350200577 +5015609696574 +4570111572997 +4833621864508 +8481685511441 +4649459138594 +6261447140998 +4708381511618 +7733085874690 +5932659956613 +5218986212206 +11171256408047 +5600287388717 +6427494649744 +11810338929854 +6380730000688 +6460706506801 +6775044614627 +7161446700268 +8496885893440 +8567558004406 +9723991208192 +8004027375607 +8246824211681 +9064809339171 +13315307375949 +9219570711591 +9278493084615 +9357840650212 +9927367723824 +9868445350800 +17925398654618 +10308668900335 +10819273600923 +13155774615315 +11599716212894 +11981017389405 +15021868826308 +16381017411859 +12841436507489 +20819286924485 +17466394923272 +13936491314895 +19002484292807 +25536207527789 +16250851587288 +20032660108527 +17068836714778 +17311633550852 +25136792004720 +18498063796206 +24245160215230 +19285208374036 +21338858039617 +23975048216238 +22418989813817 +23660710108412 +21127942501258 +22800290990328 +24755490828209 +28668552927672 +27002886215713 +26777927822384 +32631868999147 +29092288094777 +30187342902183 +39869127705106 +31005328029673 +49124948203304 diff --git a/nine.py b/nine.py new file mode 100755 index 0000000..3b4eff4 --- /dev/null +++ b/nine.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +from functools import reduce +import re, sys +import sys +import numpy as np + +def tpl(l): # get nice tuple from line + return int(l) + +def p(*args): + print(*args) + +def sum_of_2(l, n): + d={} + for i in l: + for j in l[1:]: + d[i+j] = True + try: + return d[n] + except: + return False + +def good(l): + return sum_of_2(l[:-1], l[-1]) + +def weak(l, n): + a = l[0] + s = a + for j, b in enumerate(l[1:]): + s += b + if s == n: + return min(l[:j+1]), max(l[:j+1]) + elif s > n: + break + +def weakness(l, n): + for i in range(len(l)): + w = weak(l[i:], n) + if w: + return w + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input9' +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + n = [tpl(l) for l in lines] + i=0 + while good(n[i:i+26]): + i += 1 + p(n[i+25]) + p(weakness(n, n[i+25])) + p(sum(weakness(n, n[i+25]))) diff --git a/nineteen.py b/nineteen.py new file mode 100755 index 0000000..68a2543 --- /dev/null +++ b/nineteen.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +import re, sys + +''' +{'0': [['4', '1', '5']], '1': [['2', '3'], ['3', '2']], '2': [['4', '4'], ['5', '5']], '3': [['4', '5'], ['5', '4']], '4': [['"a"']], '5': [['"b"']]} +''' + +def regex(rules, n, d=0): + #print(' '*d, n) + if d > 100: # approx length of strings, way overkill + return '' + if type(n) == str: + if not n[0] == '"': # 42 + ret = regex(rules, rules[n], d+1) + else: # "a" + ret = n[1] + elif type(n) == list: + if type(n[0]) == list: # [[x,y],[u,v]]; always OR + ret = '(' + '|'.join([regex(rules, r, d+1) for r in n]) + ')' + elif type(n[0]) == str: # [x,y]; always AND + ret = ''.join([regex(rules, r, d+1) for r in n]) + else: + ret = 'OMG? %s' % n + else: + ret = 'WTF? %s' % n + return ret + +def mkrule(l): + me, rest = l.split(': ') + rest = [[side for side in n.split(' ')] for n in rest.split(' | ')] + print(me,rest) + q = re.findall(r'(.*): | (.*)( \| |$)', l) + print(q) + return me, rest + +def mkthing(l): + return l + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 19 +with open(fn) as f: + + header, footer = f.read().split('\n\n') + rules = {a: b for a, b in (mkrule(l) for l in header.strip().split('\n'))} + zero = regex(rules, '0') + r = re.compile('^' + zero + '$') + + things = [mkthing(l) for l in footer.strip().split('\n')] + + #for t in things: + # print('GOOD' if r.match(t) else 'FAIL', t) + print(sum(1 for t in things if r.match(t))) + + _, rules['8'] = mkrule('8: 42 | 42 8') + _, rules['11'] = mkrule('11: 42 31 | 42 11 31') + zero = regex(rules, '0') + r = re.compile('^' + zero + '$') + print(sum(1 for t in things if r.match(t))) diff --git a/one.awk b/one.awk new file mode 100755 index 0000000..0b7fcb0 --- /dev/null +++ b/one.awk @@ -0,0 +1,16 @@ +#!/usr/bin/awk -f + +{ + a[NR] = $1 + for(i = 1; i < NR; i++) { + for(j = 1; j < NR; j++) { + for(u = 0;u <= a[j]; u += a[j]) { + #print "if("a[i]" + "u" + "$1" == 2020) {" + if(a[i] + u + $1 == 2020) { + s = a[i] * (u?u:1) * $1 + if(!t[s]++) print s + } + } + } + } +} diff --git a/one.py b/one.py new file mode 100755 index 0000000..8bde712 --- /dev/null +++ b/one.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +with open('input1') as f: + + l = f.readlines() + n = [int(x) for x in l] + a, b = next(filter(lambda x: sum(x) == 2020, ((a, b) for a in n for b in n))) + print(a * b) + + a, b, c = next(filter(lambda x: sum(x) == 2020, ((a, b, c) for a in n for b in n for c in n))) + print(a * b * c) diff --git a/second b/second new file mode 100755 index 0000000..538f09d --- /dev/null +++ b/second @@ -0,0 +1,11 @@ +#!/bin/bash + +if [[ $# = 1 ]]; then + day=$1 +else + day="$(date +%d | sed 's/^0//')" +fi + +read -r answer < <(tail -n 1) + +curl -D - "https://adventofcode.com/2020/day/$day/answer" -H "Cookie: session=$(cat cookie)" --data-raw "level=2&answer=$answer" | tee response${day}two | grep '
' diff --git a/seven.py b/seven.py new file mode 100755 index 0000000..6d26b09 --- /dev/null +++ b/seven.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 +from functools import reduce +import re, sys +import sys + +def single(b): + return ' '.join(b.split()[1:3]) + +def multiple(b): + name = ' '.join(b.split()[1:3]) + num = b.split()[0] + if num == 'no': + return 'empty', 0 + return name, int(num) + +def tpl(l): # get nice tuple from line + me, rest = l[:-1].split(' bags contain ') # space separated fields + return me, [single(r) for r in rest.split(', ')] + +def dic(l): # get nice dict from line + me, rest = l[:-1].split(' bags contain ') # space separated fields + return me, {k: v for k, v in (multiple(r) for r in rest.split(', '))} + +gold = 'shiny gold' + +def has_gold(dic, b): + acc = [] + for k in dic: + if b in dic[k]: + acc += [k,] + has_gold(dic, k) + return acc + +def gold_has(dic, b, lvl=0): + if(b == 'empty'): + return 0 + acc = 1 + for k in dic[b]: + acc += dic[b][k] * gold_has(dic, k, lvl=lvl+1) + print(' '*lvl + '%s * %s...' % (dic[b][k], k), acc) + return acc + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input7' +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + pic = {a: b for a, b in (tpl(l) for l in lines)} + print(len(set(has_gold(pic, gold)))) + duc = {a: b for a, b in (dic(l) for l in lines)} + print(duc) + print(gold_has(duc, gold) - 1) diff --git a/seventeen.py b/seventeen.py new file mode 100755 index 0000000..d3b1504 --- /dev/null +++ b/seventeen.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +import sys +import numpy as np + +def status(rubix): + orig = rubix[tuple(1 for i in rubix.shape)] + return rubix.sum() == 3 or rubix.sum() == 4 and orig + +def frob(image): + old, new = np.pad(image, 2), np.pad(image, 1) + for c, _ in np.ndenumerate(new): + new[c] = status(old[tuple(slice(i, i+3) for i in c)]) + return new + +def cycle(image, cycles=6): + for i in range(cycles): + image = frob(image) + return image + +with open(0) as f: + p = [[x == '#' for x in l] for l in f.read().split()] + h, w = len(p), len(p[0]) + for dim in 3, 4: + arr = np.asarray(p, dtype=int).reshape((*(1,)*(dim-2), h, w)) + print(cycle(arr).sum()) diff --git a/seventeen_nest.py b/seventeen_nest.py new file mode 100755 index 0000000..69b026f --- /dev/null +++ b/seventeen_nest.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +import numpy as np + +with open(0) as f: + p = [[x == '#' for x in l] for l in f.read().split()] + h, w = len(p), len(p[0]) + for dim in 3, 4: + arr = np.asarray(p, dtype=int).reshape((*(1,)*(dim-2), h, w)) + for i in range(6): + old, arr = np.pad(arr, 2), np.pad(arr, 1) + for c, orig in np.ndenumerate(arr): + rubix = old[tuple(slice(i, i+3) for i in c)].sum() + arr[c] = rubix == 3 or rubix == 4 and orig + print(arr.sum()) diff --git a/siix.py b/siix.py new file mode 100755 index 0000000..5c6bcf0 --- /dev/null +++ b/siix.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 +from functools import reduce +import re, sys +import sys + +def awl(p): + l = [set(x) for x in p.split()] + return len(set.intersection(*l)) + + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input6' +with open(fn) as f: + + pgphs = f.read().split('\n\n') + lines = [l.strip() for l in f.readlines()] + print(sum(len(set(re.sub('\n', '', p))) for p in pgphs)) + print(sum(awl(p) for p in pgphs)) diff --git a/sixteen.py b/sixteen.py new file mode 100755 index 0000000..79f8c38 --- /dev/null +++ b/sixteen.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +from functools import reduce +import re, sys +import math +import numpy as np + +def tpl(l): + #'departure location: 33-679 or 691-971' + #f = re.findall(r'(.*): ((\d*)-(\d*)( or )?)*', l) + #print(dir(f)) + #exit() + name, ranges = l.split(': ') + ranges = ranges.split(' or ') + rang = [r.split('-') for r in ranges] + return name, *[range(int(a), int(b) + 1) for a, b in rang] + +def gentable(three): + d = {} + for _, a, b in three: + for i in a: + d[i] = True + for i in b: + d[i] = True + return d + +def table(three): + d = {} + for j, a, b in three: + d[j] = {} + for i in a: + d[j][i] = True + for i in b: + d[j][i] = True + return d + +def good(t, d): + return all(n in d for n in t) + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 16 +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + pgphs = f.read().split('\n\n') + + rang = [tpl(l) for l in lines[:20]] + gend = gentable(rang) + tickets = [[int(i) for i in l.split(',')] for l in lines[25:]] + tot = 0 + gockets = [t for t in tickets if good(t, gend)] + print(len(gockets), '/', len(tickets)) + + d = table(rang) + cols = [] + for i, col in enumerate(zip(*gockets)): + cols += [[]] + for cat in d: + #print(d[cat]) + #print(col) + if(good(col, d[cat])): + cols[i] += [cat,] + for c in cols: + print(c) + + done = [False for c in cols] + while not all(done): + for i, _ in enumerate(cols): + if not done[i] and len(cols[i]) == 1: + done[i] = True + for j, cc in enumerate(cols): + if not done[j]: + cols[j] = set(cols[j]) - set(cols[i]) + break + + for c in cols: + print(c) + + me = [int(x) for x in lines[22].split(',')] + print(len(me), len(cols)) + print(reduce(lambda a,b:a*b, [me[i] for i, c in enumerate(cols) if \ + c.copy().pop()[:9] == 'departure'])) diff --git a/template.py b/template.py new file mode 100755 index 0000000..f7b500b --- /dev/null +++ b/template.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +from functools import reduce +import datetime +import re, sys +import math +import numpy as np + +def tpl(l): + me, rest = l.split() + return me, rest + +def uni(l): + return reduce(lambda a,b: a.union(b), l) + +def inter(l): + return reduce(lambda a,b: a.intersection(b), l) + +def dprint(*args): + sep = False + for arg in args: + if sep: + print('--------') + sep = True + for a, b in arg.items(): + print('%10s: %s' % (a, ','.join(b))) + print() + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % datetime.datetime.now().day +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + t = [tpl(l) for l in lines] + + pgphs = f.read().split('\n\n') + + header, footer = f.read().split('\n\n') + rules = {a: b for a, b in (mkrule(l) for l in header.strip().split('\n'))} + things = [mkthing(l) for l in footer.strip().split('\n')] + diff --git a/ten.py b/ten.py new file mode 100755 index 0000000..0101d7d --- /dev/null +++ b/ten.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +from functools import reduce +import re, sys +import sys +import numpy as np + +def tpl(l): # get nice tuple from line + return int(l) + +def p(*args): + print(*args) + +def threes(l): + return sum(x == 3 for x in l) + +def onez(l): + return sum(x == 1 for x in l) + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input10' +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + n = [0, ] + sorted([tpl(l) for l in lines]) + n += [n[-1] + 3] + d = [b - a for a, b in zip(n, n[1:])] + p(onez(d) * threes(d)) + ways = 1 + ones = 0 + for r in d: + if r == 3: + ways *= (1, 1, 2, 4, 7)[ones] + ones = 0 + elif r == 1: + ones += 1 + else: + p('not 1 not 3') + p(ways) diff --git a/ten.txt b/ten.txt new file mode 100644 index 0000000..c1a7223 --- /dev/null +++ b/ten.txt @@ -0,0 +1,2 @@ +# just part 1 + tmp; echo $(($(grep -c 1 tmp) * (1 + $(grep -c 3 tmp)))) diff --git a/thirteen.py b/thirteen.py new file mode 100755 index 0000000..8f7c676 --- /dev/null +++ b/thirteen.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +from functools import reduce +import re, sys +import math +import numpy as np + +def tpl(l): + me, rest = l.split() # e.g. + return me, rest + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 13 +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + start = int(lines[0]) + mehs = [int(x) for x in lines[1].split(',') if x != 'x'] + print(mehs) + mods = [x - (start % x) for x in mehs] + dups = sorted(zip(mods, mehs)) + print(np.prod(dups[0])) + + sched = enumerate(x for x in lines[1].split(',')) + sched = [(a, int(b)) for (a, b) in sched if b != 'x'] + print(sched) + i = 0 + j = 0 + inc = 1 + while True: + if (i + sched[j][0]) % sched[j][1] == 0: + inc *= sched[j][1] # prime + j += 1 + print(j, f'{i:_}') + if j == len(sched): # done! + print(i) + break + i += inc diff --git a/thirteen.txt b/thirteen.txt new file mode 100644 index 0000000..0ed5134 --- /dev/null +++ b/thirteen.txt @@ -0,0 +1,35 @@ +$ time tail -1 input13 |gawk -M 'function nxt(i,j,tgt,inc) {while((i+j)%tgt) i+=inc; return i} BEGIN {RS=",";i=0;inc=1} !/x/ {i=nxt(i,NR-1,$1,inc); inc*=$1; print i}' +0 +779 +481668 +7955927 +140192817 +655916688 +21112963571 +37989391978419 +840493039281088 + +real 0m0.004s +user 0m0.000s +sys 0m0.004s + +$ time { tr , \\n |gawk -M 'function n(i,j,t,c) {while((i+j)%t) i+=c; return i} !/x/ {i=n(i,NR-1,$1,c); c=$1*(c?c:1); print i}'; } <<<41,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,37,x,x,x,x,x,379,x,x,x,x,x,x,x,23,x,x,x,x,13,x,x,x,17,x,x,x,x,x,x,x,x,x,x,x,29,x,557,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,19 + +$ { tr , \\n |gawk -M 'function n(i,j,t,c) { + while((i+j)%t) i+=c; + return i +} +!/x/ { + i=n(i,NR-1,$1,c); + c=$1*(c?c:1); + print i +}'; } <<<41,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,37,x,x,x,x,x,379,x,x,x,x,x,x,x,23,x,x,x,x,13,x,x,x,17,x,x,x,x,x,x,x,x,x,x,x,29,x,557,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,19 + +779 +481668 +7955927 +140192817 +655916688 +21112963571 +37989391978419 +840493039281088 diff --git a/three.py b/three.py new file mode 100755 index 0000000..494e53b --- /dev/null +++ b/three.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 + +import sys +import numpy as np +from functools import reduce + +def hit(l, i): + return l[i] == '#' + +def trees(lines, x, bank, spd): + if not lines: + return 0 + return hit(lines[0], x) + trees(lines[spd:], + (x + bank) % len(lines[0]), + bank, spd) + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input3' +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + + ct = trees(lines, 0, 3, 1) + print(ct) + + ct = np.prod([trees(lines, 0, nx, ny) for nx, ny in ((1,1), (3,1), (5,1), (7,1), (1,2))]) + print(ct) diff --git a/twelve.py b/twelve.py new file mode 100755 index 0000000..0e2004f --- /dev/null +++ b/twelve.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +import sys +import numpy as np + +dirs = 'WSEN' + +def tpl(l): # get nice tuple from line + return l[0], int(l[1:]) + +def turn1(course, side, deg): + return dirs[(dirs.index(course) + (1 if side == 'L' else -1) * deg // 90 + 4) % 4] + +def turn(course, side, deg): # complex rotation + theta = (1j if side == 'L' else -1j) ** (deg // 90) + z = complex(*course) + newz = z * theta + return np.asarray((newz.real, newz.imag), dtype=int) + +def mturn(course, side, deg): # matrix rotation + rot = [np.asarray(m).reshape((2, 2)).T for m in + ((1, 0, 0, 1), # not used + (0, -1, 1, 0), + (-1, 0, 0, -1), + (0, 1, -1, 0))] + index = (360 - deg if side == 'R' else deg) // 90 + return(course.dot(rot[index])) + +def tot(course, l): + return sum(d for c, d in l if c == course) + +def shift(d, n): + return np.asarray(((-1, 0), (0, -1), (1, 0), (0, 1))[dirs.index(d)]) * n + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input12' +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + instr = [tpl(l) for l in lines] + + new = [] + course = 'E' + for a,b in instr: + if a in 'LR': + course = turn1(course, a, b) + elif a == 'F': # no one else probably did it this way + new += (course, b), # simply replace all Fx with [WSEN]x as appropriate + else: # (by "replace" i mean make a new instruction list) + new += (a, b), + dist = abs(tot('E', new) - tot('W', new)) + abs(tot('S', new) - tot('N', new)) + print(dist) + + waypoint = np.asarray((10, 1), dtype=int) + pos = np.asarray((0, 0), dtype=int) + for a,b in instr: + if a in 'LR': + waypoint = turn(waypoint, a, b) + elif a == 'F': + pos += waypoint * b + else: + waypoint += shift(a, b) + dist = sum(abs(x) for x in pos) + print(dist) diff --git a/twenty.py b/twenty.py new file mode 100755 index 0000000..081ab2b --- /dev/null +++ b/twenty.py @@ -0,0 +1,187 @@ +#!/usr/bin/env python3 +from functools import reduce +import re, sys +import math +import numpy as np + +dirs = 'north west south east'.split() # for printing + +monster = ''' + # +# ## ## ### + # # # # # # +''' +monster = monster.replace('\n', '') +monstermask = reduce(lambda a, b: a*2 + (b == '#'), (0, *list(monster))) +mw, mh = 20, 3 +monsterbegone = np.array([c == ' ' for c in monster], dtype=int).reshape((mh, mw)) + +def pic2bits(pic): + #p(pic) + pic = pic.reshape(-1) + return reduce(lambda a, b: a*2 + b, (0, *list(pic))) + + +def p(image): + for y in range(image.shape[0]): + for x in range(image.shape[1]): + sys.stdout.write('.#'[image[y][x]]) + print() + print() + +def tile(p): + ''' + pair: + ID + tile, as given to us + ''' + lines = p.strip().split('\n') + return (int(lines[0][5:-1]), + np.asarray([[x == '#' for x in l] for l in lines[1:]], dtype=int)) + +def edgeid(ar): + ''' + boolean 10-tuple -> int({0,1023}) + ''' + return reduce(lambda a, b: a*2 + b, (0, *ar)) + +def edges(ar): + ''' + the four 10-tuples making up the edge of a tile + in ANTICLOCKWISE (i.e. unique) order + ''' + return (ar[0], ar[:,0][::-1], ar[9][::-1], ar[:,9]) + +def flippededgeid(id): + #print(f'{id:b}'.zfill(19)) + #print(f'{id:b}'[::-1]) + #print(int(f'{id:b}'[::-1], base=2)) + return int(f'{id:b}'.zfill(10)[::-1], base=2) + +def addedge(d, e, t): + ''' + put tile id t + in dictionary d + under the heading of edge e + (do this for the flipped edge too) + ''' + d[edgeid(e)] += [t, ] + +def findpiece(cand, north=None, west=None, south=None, east=None): + if west: + cand = filter(lambda c: + c[2][1] == flippededgeid(west[2][3]) and + c[0] != west[0], + cand) + else: + cand = None + return list(cand) + +def findpieceat(cand, board, x, y): + N, W, S, E = board[y-1][x], board[y][x-1], board[y+1][x], board[y][x+1] + for i, d in enumerate((N, W, S, E)): + if d: + #print('d is %s of x=%s y=%s' % (dirs[i], x, y)) + #print('d`s %sern edge is %s so c needs %s %s' % (dirs[(i+2)%4], + # d[2][(i+2)%4], flippededgeid(d[2][(i+2)%4]), dirs[i])) + cand = list(filter(lambda c: + c[2][i] == flippededgeid(d[2][(i+2)%4]) and + c[0] != d[0], + cand)) # convert to list immediately, for some reason + return list(cand) + +def num_monsters(image): + tot = 0 + for y in range(image.shape[0] - mh + 1): + for x in range(image.shape[1] - mw + 1): + #print(pic2bits(image[y:y+mh,x:x+mw])) + if pic2bits(image[y:y+mh,x:x+mw]) & monstermask == monstermask: + #p(image[y:y+mh,x:x+mw]) + tot += 1 + return tot + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 20 +with open(fn) as f: + + pgphs = f.read().strip().split('\n\n') + w = round(math.sqrt(len(pgphs))) # lol genericism + tiles = {k: v for k, v in [tile(p) for p in pgphs]} + + part1dic = {k: [] for k in range(1024)} # {edge: tileid} + for id, t in tiles.items(): + for edge in [*edges(t), *edges(t[::-1])]: # reg, flipped + addedge(part1dic, edge, id) + + edge_by_id = {k: [] for k in range(10000)} # {tileid: edge (only one tile has edge)} + for k, v in filter(lambda a: len(a[1]) == 1, part1dic.items()): + iv = v[0] + edge_by_id[iv] += [k, ] + #print({k: v for k, v in filter(lambda a: len(a[1]) == 4, edge_by_id.items())}) + print(np.prod([k for k, v in filter(lambda a: len(a[1]) == 4, edge_by_id.items())])) + + # continued in part 2 + + # make huge list containing the following: + # [tid, image, edges (4 of them), flip=False, k=0] + # for all 8 combos + pile = [] + for id, t in tiles.items(): + for k in range(4): + toy = np.rot90(t, k) + pile += [(id, toy, [edgeid(e) for e in edges(toy)], False, k), ] + # when doing both, flip first + toy = t[::-1] + toy = np.rot90(toy, k) + pile += [(id, toy, [edgeid(e) for e in edges(toy)], False, k), ] + + print('pieces in pile:', len(pile)) + + # construct puzzle, store in grid similar to pile + + # begin with a corner + rootid = list(filter(lambda a: len(a[1]) == 4, edge_by_id.items()))[0][0] + toy = tiles[rootid] + puzzle = np.empty((12, 12), dtype=object) + # rotate so that N and W are unique + for k in range(4): + N = edges(toy)[0] + W = edges(toy)[1] + if len(part1dic[edgeid(N)]) == 1 and len(part1dic[edgeid(W)]) == 1: + puzzle[0][0] = (rootid, toy, [edgeid(e) for e in edges(toy)], False, k) + break + toy = np.rot90(toy) # anticlockwise, naturally + print(puzzle[0][0]) + puzzle = np.pad(puzzle, 1, mode='empty') + + # find next pieces + for y in range(1, w+1): + for x in range(1, w+1): + if y + x == 2: + sys.stdout.write(str(puzzle[y][x][0]) + ' ') + continue + match = findpieceat(pile, puzzle, x, y) + if len(match) != 1: + print('ACHTUNG: duplicate matches: %s' % len(match)) + puzzle[y][x] = match[0] + sys.stdout.write(str(puzzle[y][x][0]) + ' ') + print() + + # stitch together full map + image = np.zeros((8*w, 8*w), dtype=int) + for (y, x), chunk in np.ndenumerate(puzzle[1:1+w,1:1+w]): + image[y*8:(y+1)*8,x*8:(x+1)*8] = chunk[1][1:9,1:9] + image = np.rot90(image, 2) + for pic in image, image[::-1]: + for rot in range(4): + if num_monsters(np.rot90(pic, rot)) > 0: + image = np.rot90(pic, rot) + break + p(image) + + print(image.sum()) + for y in range(image.shape[0] - mh + 1): + for x in range(image.shape[1] - mw + 1): + #print(pic2bits(image[y:y+mh,x:x+mw])) + if pic2bits(image[y:y+mh,x:x+mw]) & monstermask == monstermask: + image[y:y+mh,x:x+mw] &= monsterbegone + print(image.sum()) diff --git a/twenty_anim.py b/twenty_anim.py new file mode 100755 index 0000000..5e39519 --- /dev/null +++ b/twenty_anim.py @@ -0,0 +1,186 @@ +#!/usr/bin/env python3 +from functools import reduce +import re, sys +import math +import numpy as np + +dirs = 'north west south east'.split() # for printing + +monster = ''' + # +# ## ## ### + # # # # # # +''' +monster = monster.replace('\n', '') +monstermask = reduce(lambda a, b: a*2 + (b == '#'), (0, *list(monster))) +mw, mh = 20, 3 +monsterbegone = np.array([c == ' ' for c in monster], dtype=int).reshape((mh, mw)) + +def pic2bits(pic): + #p(pic) + pic = pic.reshape(-1) + return reduce(lambda a, b: a*2 + b, (0, *list(pic))) + + +def p(image): + for y in range(image.shape[0]): + for x in range(image.shape[1]): + sys.stdout.write('.#'[image[y][x]]) + print() + print() + +def tile(p): + ''' + pair: + ID + tile, as given to us + ''' + lines = p.strip().split('\n') + return (int(lines[0][5:-1]), + np.asarray([[x == '#' for x in l] for l in lines[1:]], dtype=int)) + +def edgeid(ar): + ''' + boolean 10-tuple -> int({0,1023}) + ''' + return reduce(lambda a, b: a*2 + b, (0, *ar)) + +def edges(ar): + ''' + the four 10-tuples making up the edge of a tile + in ANTICLOCKWISE (i.e. unique) order + ''' + return (ar[0], ar[:,0][::-1], ar[9][::-1], ar[:,9]) + +def flippededgeid(id): + #print(f'{id:b}'.zfill(19)) + #print(f'{id:b}'[::-1]) + #print(int(f'{id:b}'[::-1], base=2)) + return int(f'{id:b}'.zfill(10)[::-1], base=2) + +def addedge(d, e, t): + ''' + put tile id t + in dictionary d + under the heading of edge e + (do this for the flipped edge too) + ''' + d[edgeid(e)] += [t, ] + +def findpiece(cand, north=None, west=None, south=None, east=None): + if west: + cand = filter(lambda c: + c[2][1] == flippededgeid(west[2][3]) and + c[0] != west[0], + cand) + else: + cand = None + return list(cand) + +def findpieceat(cand, board, x, y): + N, W, S, E = board[y-1][x], board[y][x-1], board[y+1][x], board[y][x+1] + for i, d in enumerate((N, W, S, E)): + if d: + #print('d is %s of x=%s y=%s' % (dirs[i], x, y)) + #print('d`s %sern edge is %s so c needs %s %s' % (dirs[(i+2)%4], + # d[2][(i+2)%4], flippededgeid(d[2][(i+2)%4]), dirs[i])) + cand = list(filter(lambda c: + c[2][i] == flippededgeid(d[2][(i+2)%4]) and + c[0] != d[0], + cand)) # convert to list immediately, for some reason + return list(cand) + +def num_monsters(image): + tot = 0 + for y in range(image.shape[0] - mh + 1): + for x in range(image.shape[1] - mw + 1): + #print(pic2bits(image[y:y+mh,x:x+mw])) + if pic2bits(image[y:y+mh,x:x+mw]) & monstermask == monstermask: + p(image[y:y+mh,x:x+mw]) + tot += 1 + return tot + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 20 +with open(fn) as f: + + pgphs = f.read().strip().split('\n\n') + w = round(math.sqrt(len(pgphs))) # lol genericism + tiles = {k: v for k, v in [tile(p) for p in pgphs]} + + part1dic = {k: [] for k in range(1024)} # {edge: tileid} + for id, t in tiles.items(): + for edge in [*edges(t), *edges(t[::-1])]: # reg, flipped + addedge(part1dic, edge, id) + + edge_by_id = {k: [] for k in range(10000)} # {tileid: edge (only one tile has edge)} + for k, v in filter(lambda a: len(a[1]) == 1, part1dic.items()): + iv = v[0] + edge_by_id[iv] += [k, ] + #print({k: v for k, v in filter(lambda a: len(a[1]) == 4, edge_by_id.items())}) + print(np.prod([k for k, v in filter(lambda a: len(a[1]) == 4, edge_by_id.items())])) + + # continued in part 2 + + # make huge list containing the following: + # [tid, image, edges (4 of them), flip=False, k=0] + # for all 8 combos + pile = [] + for id, t in tiles.items(): + for k in range(4): + toy = np.rot90(t, k) + pile += [(id, toy, [edgeid(e) for e in edges(toy)], False, k), ] + # when doing both, flip first + toy = t[::-1] + toy = np.rot90(toy, k) + pile += [(id, toy, [edgeid(e) for e in edges(toy)], False, k), ] + + print('pieces in pile:', len(pile)) + + # construct puzzle, store in grid similar to pile + + # begin with a corner + rootid = list(filter(lambda a: len(a[1]) == 4, edge_by_id.items()))[0][0] + toy = tiles[rootid] + puzzle = np.empty((12, 12), dtype=object) + # rotate so that N and W are unique + for k in range(4): + N = edges(toy)[0] + W = edges(toy)[1] + if len(part1dic[edgeid(N)]) == 1 and len(part1dic[edgeid(W)]) == 1: + puzzle[0][0] = (rootid, toy, [edgeid(e) for e in edges(toy)], False, k) + break + toy = np.rot90(toy) # anticlockwise, naturally + print(puzzle[0][0]) + puzzle = np.pad(puzzle, 1, mode='empty') + + # find next pieces + for y in range(1, w+1): + for x in range(1, w+1): + if y + x == 2: + sys.stdout.write(str(puzzle[y][x][0]) + ' ') + continue + match = findpieceat(pile, puzzle, x, y) + if len(match) != 1: + print('ACHTUNG: duplicate matches: %s' % len(match)) + puzzle[y][x] = match[0] + sys.stdout.write(str(puzzle[y][x][0]) + ' ') + print() + + # stitch together full map + image = np.zeros((8*w, 8*w), dtype=int) + for (y, x), chunk in np.ndenumerate(puzzle[1:1+w,1:1+w]): + image[y*8:(y+1)*8,x*8:(x+1)*8] = chunk[1][1:9,1:9] + image = np.rot90(image, 2) + p(image) + for pic in image, image[::-1]: + for rot in range(4): + if num_monsters(np.rot90(pic, rot)) > 0: + image = np.rot90(pic, rot) + + print(image.sum()) + for y in range(image.shape[0] - mh + 1): + for x in range(image.shape[1] - mw + 1): + #print(pic2bits(image[y:y+mh,x:x+mw])) + if pic2bits(image[y:y+mh,x:x+mw]) & monstermask == monstermask: + image[y:y+mh,x:x+mw] &= monsterbegone + print(image.sum()) diff --git a/twentyfive.py b/twentyfive.py new file mode 100755 index 0000000..08e57cb --- /dev/null +++ b/twentyfive.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +from functools import reduce +from itertools import count +import re, sys +import math +import numpy as np + +def tpl(l): + return int(l) + +def dprint(*args): + sep = False + for arg in args: + if sep: + print('--------') + sep = True + for a, b in arg.items(): + print('%10s: %s' % (a, ','.join(b))) + print() + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 25 +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + card, door = [tpl(l) for l in lines] + + cl, dl = 0, 0 + + lol = 20201227 + + sub = 1 + for loop in count(1): + sub = (sub * 7) % lol + if sub == card: + cl = loop + break + print(cl) + + sub = 1 + for loop in count(1): + sub = (sub * 7) % lol + if sub == door: + dl = loop + break + print(dl) + print() + + sub = 1 + for i in range(cl): + sub = (sub * door) % lol + print(sub) + + print() + sub = 1 + for i in range(dl): + sub = (sub * card) % lol + print(sub) diff --git a/twentyfour.py b/twentyfour.py new file mode 100755 index 0000000..74a807a --- /dev/null +++ b/twentyfour.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 +from functools import reduce +import datetime +import os, re, sys +import math +import curses +import numpy as np +from time import sleep + +choice = 'e ne nw w sw se'.split() + +def tpl(l): + anyew = re.compile(r'[ns]?[ew]') + return anyew.findall(l) + +def uniq(d): + north = d['ne'] + d['nw'] - d['se'] - d['sw'] + east = 2 * (d['e'] - d['w']) + d['ne'] + d['se'] - d['nw'] - d['sw'] + return '%d/%d' % (north, east) + +def path2dic(l): + return {k: sum(k == p for p in l) for k in choice} + +def flip(d, t): + if t in d: + d[t] = not d[t] + else: + d[t] = True + +def dprint(*args): + sep = False + for arg in args: + if sep: + print('--------') + sep = True + for a, b in arg.items(): + print('%10s: %s' % (a, b)) + print() + +def diccoord(x, y, w=80, h=24): + e = x - (w // 2) + n = (h // 2) - y + if n % 2 == 0: + e -= (e % 2) + else: + e -= ((e+1) % 2) + return '%d/%d' % (n, e) + +def mprint(d, lin, col): + print(curses.tigetstr('clear').decode()) + for y in range(lin): + for x in range(col): + c = '.' + try: + c = '#' if d[diccoord(x, y, w=col, h=lin)] else ' ' + except: pass + sys.stdout.write(c) + print() + +def surrounding(tile): + neigh = ((0, 2), + (1, 1), + (1, -1), + (0, -2), + (-1, -1), + (-1, 1)) + n, e = (int(x) for x in tile.split('/')) + return ['%d/%d' % (n+u, e+v) for u, v in neigh] + +def tick(d): + toflip = {} + are_black = list(filter(lambda x: d[x], d.keys())) + for t in are_black: + sur = surrounding(t) + """ + Any black tile with zero or more than 2 black tiles immediately + adjacent to it is flipped to white. + """ + tobe_white = sum(1 for s in sur if s in are_black) in (0, 3, 4, 5, 6) + if tobe_white: + toflip[t] = False # "white" + """ + Any white tile with exactly 2 black tiles immediately adjacent to it + is flipped to black. + """ + for s in sur: # must be one of these, ducy? + if s in are_black or s in toflip: # black, or already handled + continue + sursur = surrounding(s) + tobe_black = sum(1 for ss in sursur if ss in are_black) == 2 # >= 1 + if tobe_black: + toflip[s] = True + # Add remaining black tiles + for t in are_black: + if t not in toflip: + toflip[t] = True + return toflip + +curses.setupterm() +size = os.get_terminal_size() +w, h = size.columns, size.lines +w -= 2 # wtf? +h -= 2 # wtf? + +print(w, h) +sleep(1) + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 24 +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + t = [tpl(l) for l in lines] + + flipdic = {} + for p in t: + flip(flipdic, uniq(path2dic(p))) + #print(path2dic(p), uniq(path2dic(p)), '\n') + mprint(flipdic, h, w) + dprint(flipdic) + print(sum(flipdic.values())) # 24a + sleep(1) + + for i in range(100): + flipdic = tick(flipdic) + mprint(flipdic, h, w) + print('Day %d:' % i, sum(flipdic.values())) + sleep(1) + print(sum(flipdic.values())) # 24b diff --git a/twentyone.py b/twentyone.py new file mode 100755 index 0000000..194981b --- /dev/null +++ b/twentyone.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +from functools import reduce +from itertools import takewhile +import re, sys +import math +import numpy as np + +def tpl(l): + me, rest = l[:-1].split(' (contains ') + return me.split(' '), rest.split(', ') + +def uni(l): + return reduce(lambda a,b: a.union(b), l) + +def inter(l): + return reduce(lambda a,b: a.intersection(b), l) + +def dprint(*args): + sep = False + for arg in args: + if sep: + print('--------') + sep = True + for a, b in arg.items(): + print('%10s: %s' % (a, ','.join(b))) + print() + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 21 + +with open(fn) as f: + + lines = [l.strip() for l in f.readlines()] + t = [tpl(l) for l in lines] + + rec_per_al = {} + for rec, als in t: + for al in als: + if not al in rec_per_al: + rec_per_al[al] = [] + rec_per_al[al] += [set(rec),] + + ing_per_al = {a: inter(b) for a, b in rec_per_al.items()} + dprint(ing_per_al) + + unsafe = uni(ing_per_al.values()) + print(unsafe) + + alling = uni([set(ing) for ing, al in t]) + safe = alling - unsafe + + tot = 0 + for ing, _ in t: + tot += len([i for i in ing if i in safe]) + print(tot) + + bad, good = ing_per_al.copy(), {} + while bad: + for al, ing in filter(lambda x: len(x[1]) == 1, bad.items()): + good[al] = ing#.pop() + bad = {a: b - ing for a, b in bad.items() if a != al} + #dprint(good, bad) + print(','.join(good[i].pop() for i in sorted(good))) diff --git a/twentythree.py b/twentythree.py new file mode 100755 index 0000000..655f9bd --- /dev/null +++ b/twentythree.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python3 +from functools import reduce +from itertools import cycle +import re, sys +import math +import numpy as np + +def dprint(*args): + sep = False + for arg in args: + if sep: + print('--------') + sep = True + for a, b in arg.items(): + print('%10s: %s' % (a, ','.join(b))) + print() + +def cup(base, rest): + # find index of next cup to pick up + trial = chr(ord(base) - 1) if base > '1' else '9' + try: + return rest.index(trial) + except: # not there + return cup(trial, rest) + +def getoff(circle, offset): + # undo our offset + return (circle + circle)[9 - offset:18 - offset] + +def printoff(circle, offset): + print('%s (%d)' % (getoff(circle, offset), offset)) + +def printafterone(circle): + # lol we don't even need the offset + oneidx = circle.index('1') + print(circle[oneidx+1:] + circle[:oneidx]) + +def printnice(first, three, six, dest, i): + # ugh + print('-- move %d --' % i) + print('cups: (%s)%s' % (first, ''.join(' %s ' % c for c in three + six))) + print('pick up: %s' % ', '.join(three)) + print('destination: %s' % dest) + print() + +def move(circle, offset, i=1): + # don't keep track of the selected; just keep it at the left + # instead keep track of how far we've shifted the circle left + # (modulo 9, as if you care) + # ANYWAY, our selected cup is always in first position, so grab the three next + selected, pickup, remain = circle[0], circle[1:4], circle[4:] + dest = cup(selected, remain) + printnice(selected, pickup, remain, remain[dest], i) # jfc + # build the new circle + return (''.join( + [*remain[:dest], + remain[dest], + *pickup, + *remain[dest+1:], + selected, + ]), + (offset + 1 + dest) % 9) + +def subone(sel, three, size): + ret = sel - 1 + if ret == 0: + ret = size + if ret in three: + return subone(ret, three, size) + else: + return ret + +def messwith(l, r, sel, size=1000000): + #print('selected:', sel) + three = r[sel], r[r[sel]], r[r[r[sel]]] + #print('pick up:', three) + # DANGLING: r[sel], l[r[sel]] (change in opposite order of course), + # ... r[three[-1]], l[ibid], + # ALSO MODIFY: r[dest], l[r[dest]] (again change in opposite order) + dest = subone(sel, three, size) + #print('destination:', dest) + # i do not like python + #print('r[%s] = %s' % (sel, r[three[-1]])) + #print('l[%s] = %s' % (r[sel], dest)) + #print('r[%s] = %s' % (three[-1], r[dest])) + #print('l[%s] = %s' % (r[three[-1]], sel)) + #print('r[%s] = %s' % (dest, three[0])) + #print('l[%s] = %s' % (r[dest], three[-1])) + #print('set this to 1, please:', l[r[dest]], 'btw', r[dest]) + src_r_idx = sel + src_l_idx = r[three[-1]] + dst_r_idx = dest + dst_l_idx = r[dest] + three_r_idx = three[-1] + three_l_idx = three[0] # which indeed is r[sel], yes + r[src_r_idx] = src_l_idx + l[src_l_idx] = src_r_idx + r[dst_r_idx] = three_l_idx + l[dst_l_idx] = three_r_idx + r[three_r_idx] = dst_l_idx + l[three_l_idx] = dst_r_idx + #print() + #print('left:', l) + return r[sel] + +def rightof(r, i, rem): + if rem == 0: + return [] + return [r[i], ] + rightof(r, r[i], rem - 1) + +def printall(r, sel, size): + print('cups:', ''.join('%s%s%s' % ( + '(' if x == sel else ' ', + str(x), + ')' if x == sel else ' ') + for x in rightof(r, 1, size))) + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 23 +with open(fn) as f: + + offset, circle = 0, f.read().strip() + finito = reduce(lambda a, b: move(a[0], a[1], i=b+1), range(100), (circle, offset)) # lol + printoff(*finito) + printafterone(finito[0]) + + # well, we'll have to be more creative here + size = int(sys.argv[2] if len(sys.argv) > 2 else 1e6) + # first, redo part 1 + orbit = np.linspace(1, size, size, dtype=int) + for i, c in enumerate(circle): + orbit[i] = int(c) + print(orbit) + left = np.zeros(size + 1, dtype=int) # 1-indexed, so "pad" + right = np.zeros(size + 1, dtype=int) + for i, c in enumerate(orbit): + left[c] = orbit[(i+size-1)%size] + right[c] = orbit[(i+1)%size] + print(left[1:11], '<>', right[1:11]) + print() + + selidx = orbit[0] + rounds = int(sys.argv[3] if len(sys.argv) > 2 else 1e7) + for i in range(rounds): + #print('-- round %d --' % (i + 1)) + #printall(right, selidx, size) + selidx = messwith(left, right, selidx, size=size) + if not (i % math.ceil(rounds / 10)): + print(left[1:], '<>', right[1:]) + print('%d to go' % (rounds - i)) + print('-- final --') + print(left[1:], '<>', right[1:]) + #printall(right, selidx, size) + + # ok, now find cups on SIDE. + bill = right[1] + bob = right[bill] + print('%d * %d =\n%d' % (bill, bob, (bill * bob))) diff --git a/twentytwo.py b/twentytwo.py new file mode 100755 index 0000000..423c2fd --- /dev/null +++ b/twentytwo.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 +from functools import reduce +import datetime +import re, sys +import math +import numpy as np +from numba import jit + +def tpl(l): + return int(l) + +def dprint(*args): + sep = False + for arg in args: + if sep: + print('--------') + sep = True + for a, b in arg.items(): + print('%10s: %s' % (a, ','.join(str(x) for x in b))) + print() + +@jit +def rnd(carda, cardb, idx): + if idx == 0: + return [carda, cardb] if carda > cardb else [] + if idx == 1: + return [cardb, carda] if carda < cardb else [] + +@jit +def rnd2(carda, cardb, idx, winner): + if idx == 0: + return [carda, cardb] if idx == winner else [] + if idx == 1: + return [cardb, carda] if idx == winner else [] + +@jit +def hashish(fp, sp): + return (reduce(lambda a, b: a|(1<= a and len(pileb[1:]) >= b: + winner, _ = game(pilea[1:a+1], pileb[1:b+1], rec+1) + pilea = pilea[1:] + rnd2(a, b, 0, winner) + pileb = pileb[1:] + rnd2(a, b, 1, winner) + else: + pilea = pilea[1:] + rnd(a, b, 0) + pileb = pileb[1:] + rnd(a, b, 1) + rd += 1 + if len(pileb): + if rec > 1: + return 1, -1 + else: + return 1, finalcount(pileb) + else: + if rec > 1: + return 0, -1 + else: + return 0, finalcount(pilea) + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input%s' % 22 +with open(fn) as f: + + #pgphs = f.read().split('\n\n') + + header, footer = f.read().split('\n\n') + p1 = [tpl(l) for l in header.strip().split('\n')[1:]] + p2 = [tpl(l) for l in footer.strip().split('\n')[1:]] + + tot = len(p1) + len(p2) + while len(p1) not in (0, tot): + #dprint({'1': p1, '2':p2}) + a, b = p1[0], p2[0] + p1 = p1[1:] + rnd(a, b, 0) + p2 = p2[1:] + rnd(a, b, 1) + + final = sum(i * x for i, x in enumerate([0, *p1[::-1]])) + #print(final) + final += sum(i * x for i, x in enumerate([0, *p2[::-1]])) + print(final) + + p1 = [tpl(l) for l in header.strip().split('\n')[1:]] + p2 = [tpl(l) for l in footer.strip().split('\n')[1:]] + print(game(p1, p2)[1]) diff --git a/two.bash b/two.bash new file mode 100755 index 0000000..47798b6 --- /dev/null +++ b/two.bash @@ -0,0 +1,15 @@ +#!/bin/bash + +ct=0 dt=0 +while IFS=$'\n:- ' read lo hi char str; do + # part 1 + new=${str//$char/} + diff=$((${#str} - ${#new})) + ((lo <= diff && diff <= hi)) && ((ct++)) + # part 2 + chars=${str:lo-1:1}${str:hi-1:1} + xor=${chars//$char/} + ((${#xor} == 1)) && ((dt++)) +done + +printf %s\\n $ct $dt diff --git a/two.py b/two.py new file mode 100755 index 0000000..12d3fe8 --- /dev/null +++ b/two.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +import sys +import numpy as np + +def tpl(l): # get nice type correct tuple from line + ssf = l.split(' ') # space separated fields + lohi = ssf[0].split('-') + lo = int(lohi[0]) + hi = int(lohi[1]) + char = ssf[1][0] + strg = ssf[2] + return lo, hi, char, strg + +def good_string(lo, hi, char, strg): + try: + idx = strg.index(char) + # succeeded in finding char + if hi == 0: # too many chars + return False + return good_string(lo - 1, hi - 1, char, + strg[:idx] + strg[idx + 1:]) + except: + # failed at finding char + return lo <= 0 # enough chars + +def new_good_string(lo, hi, char, strg): + return (strg[lo - 1] == char) != (strg[hi - 1] == char) + +fn = sys.argv[1] if len(sys.argv) > 1 else 'input2' +with open(fn) as f: + lines = f.readlines() + + ct = sum(good_string(*tpl(l)) for l in lines) + print(ct) + + ct = sum(new_good_string(*tpl(l)) for l in lines) + print(ct)