diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bee8a64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/README.md b/README.md index 75f9a22..d1f5e2e 100644 --- a/README.md +++ b/README.md @@ -10,4 +10,7 @@ - Day 8: 61:00 and 10:00 for leaderboard; I need template code for searching coordinate systems - Day 9: 58:00 and 7:32 for leaderboard; I need code for 2D stuff - Day 10: 25:20 and 12:17 for leaderboard; okay, okay -- Day 11: +- Day 11: 45:00 and 18:00 for leaderboard; arg, it was doable man +- Day 12: 39:45 and 9:46 for leaderboard; the people are ready for there searches :D +- Day 13: 44:00 and 12:56 for leaderboard; these people are just good, seriously +- Day 14: diff --git a/d11.py b/d11.py new file mode 100644 index 0000000..c21beae --- /dev/null +++ b/d11.py @@ -0,0 +1,143 @@ +import re +from string import ascii_lowercase, ascii_uppercase + +def extract_single_digit(line: str) -> int: + r = re.compile(r"\d+") + for m in r.findall(line): + return int(m) + raise Exception("No single digit sequence in '{line}'") + +def extract_digits_list(line: str) -> list[int]: + r = re.compile(r"\d+") + return list(map(int, r.findall(line))) + +EXAMPLE = """ +Monkey 0: + Starting items: 79, 98 + Operation: new = old * 19 + Test: divisible by 23 + If true: throw to monkey 2 + If false: throw to monkey 3 + +Monkey 1: + Starting items: 54, 65, 75, 74 + Operation: new = old + 6 + Test: divisible by 19 + If true: throw to monkey 2 + If false: throw to monkey 0 + +Monkey 2: + Starting items: 79, 60, 97 + Operation: new = old * old + Test: divisible by 13 + If true: throw to monkey 1 + If false: throw to monkey 3 + +Monkey 3: + Starting items: 74 + Operation: new = old + 3 + Test: divisible by 17 + If true: throw to monkey 0 + If false: throw to monkey 1 +""" + +def clean(text: str) -> list[str]: + return list(filter(lambda l: l.strip() != "", text.splitlines())) + +def get_monkesy(lines): + monkeys = [] + for i, line in enumerate(lines): + if line.startswith("Monkey"): + d = extract_single_digit(line) + monkeys.append([d]) + elif line.strip().startswith("Starting"): + d = extract_digits_list(line) + monkeys[-1].append(d) + elif line.strip().startswith("Operation"): + if "old * old" in line: + f = lambda y: y * y + monkeys[-1].append(f) + elif "*" in line: + d = extract_single_digit(line) + f = lambda x: (lambda y: x * y) + f = f(d) + monkeys[-1].append(f) + elif "+" in line: + d = extract_single_digit(line) + f = lambda x: (lambda y: x + y) + f = f(d) + monkeys[-1].append(f) + else: + raise Exception(line) + elif line.strip().startswith("Test"): + d = extract_single_digit(line) + monkeys[-1].append(d) + elif line.strip().startswith("If true"): + d = extract_single_digit(line) + monkeys[-1].append(d) + elif line.strip().startswith("If false"): + d = extract_single_digit(line) + monkeys[-1].append(d) + else: + print(line) + raise Exception("Unexpected line.") + for m in monkeys: + m.append(0) + return monkeys + +def solve(lines: list[str]): + monkeys = get_monkesy(lines) + for _ in range(20): + for monkey in monkeys: + id, items, op, test, if_true, if_false, count = monkey + while items: + item = items.pop() + monkey[6] += 1 + worry = item + worry = op(worry) + worry //= 3 + if worry % test == 0: + monkeys[if_true][1].append(worry) + else: + monkeys[if_false][1].append(worry) + monkeys[id][1] = monkeys[id][1][1:] + counts = sorted([m[6] for m in monkeys])[-2:] + return counts[0] * counts[1] + +def solve2(lines: list[str]): + monkeys = get_monkesy(lines) + mod = 1 + for m in monkeys: + mod *= m[3] + + for _ in range(10000): + for monkey in monkeys: + id, items, op, test, if_true, if_false, count = monkey + for item in list(items): + monkey[6] += 1 + worry = item + worry = op(worry) + worry %= mod + if worry % test == 0: + monkeys[if_true][1].append(worry) + else: + monkeys[if_false][1].append(worry) + monkeys[id][1] = monkeys[id][1][1:] + counts = sorted([m[6] for m in monkeys])[-2:] + return counts[0] * counts[1] + +def main(): + example = clean(EXAMPLE) + print("Example 1:", solve(example)) + + data = clean(open("i11.txt").read()) + print("Solution 1:", solve(data)) + + example = clean(EXAMPLE) + print("Example 2:", solve2(example)) + + data = clean(open("i11.txt").read()) + print("Solution 2:", solve2(data)) + +if __name__ == "__main__": + main() diff --git a/d12.py b/d12.py new file mode 100644 index 0000000..a1bfcb7 --- /dev/null +++ b/d12.py @@ -0,0 +1,120 @@ +import lib + +EXAMPLE = """ +Sabqponm +abcryxxl +accszExk +acctuvwj +abdefghi +""" + +def neighbors_4(row, col, rows, cols): + n = [] + for r, c in [(1, 0), (-1, 0), (0, 1), (0, -1)]: + new_row, new_col = row + r, col + c + if new_row >= 0 and new_row < rows and new_col >= 0 and new_col < cols: + n.append((new_row, new_col)) + return n + +def solve(lines: list[str]): + start = (0, 0) + end = (0, 0) + rows = len(lines) + cols = len(lines[0]) + heights = [] + dists = [] + for (row, line) in enumerate(lines): + heights.append([]) + dists.append([]) + for (col, c) in enumerate(line): + if c == 'S': + start = (row, col) + heights[row].append(0) + dists[row].append(0) + elif c == 'E': + end = (row, col) + heights[row].append(26) + dists[row].append(2**16) + else: + heights[row].append(ord(lines[row][col]) - ord('a')) + dists[row].append(2**16) + + active_fields = [start] + while active_fields: + row, col = active_fields.pop() + current_dist = dists[row][col] + current_height = heights[row][col] + for row, col in neighbors_4(row, col, rows, cols): + pot_height = heights[row][col] + if current_height < pot_height - 1: + continue + if current_dist + 1 < dists[row][col]: + dists[row][col] = current_dist + 1 + active_fields.append((row, col)) + + # for row in dists: + # print(row) + + # 34:00 + return dists[end[0]][end[1]] + +def solve2(lines: list[str]): + starts = [] + all_dists =[] + for (row, line) in enumerate(lines): + for (col, c) in enumerate(line): + if c == 'S' or c == 'a': + starts.append((row, col)) + + for start in starts: + end = (0, 0) + rows = len(lines) + cols = len(lines[0]) + heights = [] + dists = [] + for (row, line) in enumerate(lines): + heights.append([]) + dists.append([]) + for (col, c) in enumerate(line): + if row == start[0] and col == start[1]: + heights[row].append(0) + dists[row].append(0) + elif c == 'E': + end = (row, col) + heights[row].append(26) + dists[row].append(2**16) + else: + heights[row].append(ord(lines[row][col]) - ord('a')) + dists[row].append(2**16) + + active_fields = [start] + while active_fields: + row, col = active_fields.pop() + current_dist = dists[row][col] + current_height = heights[row][col] + for row, col in neighbors_4(row, col, rows, cols): + pot_height = heights[row][col] + if current_height < pot_height - 1: + continue + if current_dist + 1 < dists[row][col]: + dists[row][col] = current_dist + 1 + active_fields.append((row, col)) + all_dists.append(dists[end[0]][end[1]]) + # 39:45 + return min(all_dists) + +def main(): + lines = lib.str_to_lines_no_empty(EXAMPLE) + print("Example 1:", solve(lines)) + + lines = lib.str_to_lines_no_empty(open("i12.txt").read()) + print("Solution 1:", solve(lines)) + + lines = lib.str_to_lines_no_empty(EXAMPLE) + print("Example 2:", solve2(lines)) + + lines = lib.str_to_lines_no_empty(open("i12.txt").read()) + print("Solution 2:", solve2(lines)) + +if __name__ == "__main__": + main() diff --git a/d13.py b/d13.py new file mode 100644 index 0000000..35b03e7 --- /dev/null +++ b/d13.py @@ -0,0 +1,115 @@ +import lib + +EXAMPLE = """[1,1,3,1,1] +[1,1,5,1,1] + +[[1],[2,3,4]] +[[1],4] + +[9] +[[8,7,6]] + +[[4,4],4,4] +[[4,4],4,4,4] + +[7,7,7,7] +[7,7,7] + +[] +[3] + +[[[]]] +[[]] + +[1,[2,[3,[4,[5,6,7]]]],8,9] +[1,[2,[3,[4,[5,6,0]]]],8,9] +""" + +def right_order(a, b): + if not a and not b: + return None + elif not a: + return True + elif not b: + return False + + l, r = a[0], b[0] + if type(l) is int and type(r) is int: + if l < r: + return True + elif l > r: + return False + else: + return right_order(a[1:], b[1:]) + + if type(l) is int: + l = [l] + if type(r) is int: + r = [r] + + o = right_order(l, r) + if o is not None: + return o + return right_order(a[1:], b[1:]) + +def solve(lines: list[str]): + res = 0 + pairs = [[]] + for (i, line) in enumerate(lines): + if line.strip() == "": + pairs.append([]) + else: + pairs[-1].append(eval(line)) + for i, p in enumerate(pairs): + if not len(p) == 2: + continue + a, b = p[0], p[1] + o = right_order(a, b) + if o is True: + res += i + 1 + if o is None: + raise Exception("NO DECISION") + # 37:00 + return res + +def solve2(lines: list[str]): + res = 0 + + packets = list(map(eval, lines)) + p1 = [[2]] + packets.append(p1) + p2 = [[6]] + packets.append(p2) + + resorted = True + while resorted: + resorted = False + for i in range(len(packets) - 1): + if not right_order(packets[i], packets[i + 1]): + packets[i], packets[i + 1] = packets[i + 1], packets[i] + resorted = True + p1i, p2i = 0, 0 + for (i, p) in enumerate(packets): + if p == p1: + p1i = i + 1 + elif p == p2: + p2i = i + 1 + print(p1i, p2i) + # 44:00 + return p1i * p2i + +def main(): + lines = lib.str_to_lines(EXAMPLE) + print("Example 1:", solve(lines)) + + lines = lib.str_to_lines(open("i13.txt").read()) + print("Solution 1:", solve(lines)) + + lines = lib.str_to_lines_no_empty(EXAMPLE) + print("Example 2:", solve2(lines)) + + lines = lib.str_to_lines_no_empty(open("i13.txt").read()) + print("Solution 2:", solve2(lines)) + +if __name__ == "__main__": + main() diff --git a/dx.py b/dx.py index ed32b04..61e8a65 100644 --- a/dx.py +++ b/dx.py @@ -1,39 +1,37 @@ -import re -from string import ascii_lowercase, ascii_uppercase +import lib EXAMPLE = """ """ -def clean(text: str) -> list[str]: - return list(filter(lambda l: l.strip() != "", text.splitlines())) - def solve(lines: list[str]): res = 0 - for i, line in enumerate(lines): + for (i, line) in enumerate(lines): print(i, line) + # digits = lib.str_to_int_list(line) + # digit = lib.str_to_single_int(line) return res def solve2(lines: list[str]): res = 0 - for i, line in enumerate(lines): + for (i, line) in enumerate(lines): print(i, line) return res def main(): - example = clean(EXAMPLE) - print("Example 1:", solve(example)) + lines = lib.str_to_lines_no_empty(EXAMPLE) + print("Example 1:", solve(lines)) return - data = clean(open("i6.txt").read()) - print("Solution 1:", solve(data)) + lines = lib.str_to_lines_no_empty(open("ix.txt").read()) + print("Solution 1:", solve(lines)) return - example = clean(EXAMPLE) - print("Example 2:", solve2(example)) + lines = lib.str_to_lines_no_empty(EXAMPLE) + print("Example 2:", solve2(lines)) return - data = clean(open("i6.txt").read()) - print("Solution 2:", solve2(data)) + lines = lib.str_to_lines_no_empty(open("ix.txt").read()) + print("Solution 2:", solve2(lines)) if __name__ == "__main__": main() diff --git a/i11.txt b/i11.txt new file mode 100644 index 0000000..ef22f88 --- /dev/null +++ b/i11.txt @@ -0,0 +1,55 @@ +Monkey 0: + Starting items: 66, 79 + Operation: new = old * 11 + Test: divisible by 7 + If true: throw to monkey 6 + If false: throw to monkey 7 + +Monkey 1: + Starting items: 84, 94, 94, 81, 98, 75 + Operation: new = old * 17 + Test: divisible by 13 + If true: throw to monkey 5 + If false: throw to monkey 2 + +Monkey 2: + Starting items: 85, 79, 59, 64, 79, 95, 67 + Operation: new = old + 8 + Test: divisible by 5 + If true: throw to monkey 4 + If false: throw to monkey 5 + +Monkey 3: + Starting items: 70 + Operation: new = old + 3 + Test: divisible by 19 + If true: throw to monkey 6 + If false: throw to monkey 0 + +Monkey 4: + Starting items: 57, 69, 78, 78 + Operation: new = old + 4 + Test: divisible by 2 + If true: throw to monkey 0 + If false: throw to monkey 3 + +Monkey 5: + Starting items: 65, 92, 60, 74, 72 + Operation: new = old + 7 + Test: divisible by 11 + If true: throw to monkey 3 + If false: throw to monkey 4 + +Monkey 6: + Starting items: 77, 91, 91 + Operation: new = old * old + Test: divisible by 17 + If true: throw to monkey 1 + If false: throw to monkey 7 + +Monkey 7: + Starting items: 76, 58, 57, 55, 67, 77, 54, 99 + Operation: new = old + 6 + Test: divisible by 3 + If true: throw to monkey 2 + If false: throw to monkey 1 diff --git a/i12.txt b/i12.txt new file mode 100644 index 0000000..5dab450 --- /dev/null +++ b/i12.txt @@ -0,0 +1,41 @@ +abcccccccaaaaaaaaccccccccccaaaaaaccccccaccaaaaaaaccccccaacccccccccaaaaaaaaaaccccccccccccccccccccccccccccccccaaaaa +abcccccccaaaaaaaaacccccccccaaaaaacccccaaacaaaaaaaaaaaccaacccccccccccaaaaaaccccccccccccccccccccccccccccccccccaaaaa +abcccccccaaaaaaaaaaccccccccaaaaaacaaacaaaaaaaaaaaaaaaaaaccccccccccccaaaaaaccccccccccccccaaacccccccccccccccccaaaaa +abaaacccccccaaaaaaacccccccccaaacccaaaaaaaaaaaaaaaaaaaaaaaaacccccccccaaaaaaccccccccccccccaaacccccccccccccccccaaaaa +abaaaaccccccaaaccccccccccccccccccccaaaaaaaaacaaaacacaaaaaacccccccccaaaaaaaacccccccccccccaaaaccaaacccccccccccaccaa +abaaaaccccccaaccccaaccccccccccccccccaaaaaaacaaaaccccaaaaaccccccccccccccccacccccccccccccccaaaaaaaaacccccccccccccca +abaaaaccccccccccccaaaacccccccccaacaaaaaaaacccaaacccaaacaacccccccccccccccccccccccccccciiiiaaaaaaaacccccccccccccccc +abaaacccccccccccaaaaaacccccccccaaaaaaaaaaacccaaacccccccaacccccccccccaacccccccccccccciiiiiiijaaaaccccccccaaccccccc +abaaaccccccccccccaaaacccccccccaaaaaaaacaaacccaaaccccccccccccccccccccaaacaaacccccccciiiiiiiijjjacccccccccaaacccccc +abcccccaacaacccccaaaaaccccccccaaaaaacccccacaacccccccccccccccccccccccaaaaaaaccccccciiiinnnoijjjjjjjjkkkaaaaaaacccc +abcccccaaaaacccccaacaaccccccccccaaaacccaaaaaaccccccccccccccccccccccccaaaaaaccccccciiinnnnooojjjjjjjkkkkaaaaaacccc +abccccaaaaacccccccccccccccccccccaccccccaaaaaaaccccccccccccccccccccaaaaaaaaccccccchhinnnnnoooojjooopkkkkkaaaaccccc +abccccaaaaaaccccccccccccccccccccccccccccaaaaaaacccccccccccccccccccaaaaaaaaacccccchhhnnntttuooooooopppkkkaaaaccccc +abccccccaaaaccccccccccacccccccccccccccccaaaaaaacccaaccccccccccccccaaaaaaaaaaccccchhhnnttttuuoooooppppkkkaaaaccccc +abccccccaccccccccccccaaaacaaaccccccccccaaaaaacaaccaacccaaccccccccccccaaacaaacccchhhnnnttttuuuuuuuuupppkkccaaccccc +abccccccccccccccaaccccaaaaaaaccccccccccaaaaaacaaaaaacccaaaaaaccccccccaaacccccccchhhnnntttxxxuuuuuuupppkkccccccccc +abcccccccccccccaaaacccaaaaaaacccaccccccccccaaccaaaaaaacaaaaaaccccccccaacccaaccchhhhnnnttxxxxuuyyyuupppkkccccccccc +abcccccccccccccaaaaccaaaaaaaaacaaacccccccccccccaaaaaaaaaaaaaccccccccccccccaaachhhhmnnnttxxxxxxyyyuvppkkkccccccccc +abcccccccccccccaaaacaaaaaaaaaaaaaaccccccccccccaaaaaacaaaaaaaccccccccccccccaaaghhhmmmttttxxxxxyyyyvvpplllccccccccc +abccacccccccccccccccaaaaaaaaaaaaaaccccccccccccaaaaaacccaaaaaacccaacaacccaaaaagggmmmttttxxxxxyyyyvvppplllccccccccc +SbaaaccccccccccccccccccaaacaaaaaaaacccccccccccccccaacccaaccaacccaaaaacccaaaagggmmmsttxxxEzzzzyyvvvppplllccccccccc +abaaaccccccccccccccccccaaaaaaaaaaaaacaaccccccccccccccccaaccccccccaaaaaccccaagggmmmsssxxxxxyyyyyyvvvqqqlllcccccccc +abaaacccccccccccccccccccaaaaaaaaaaaaaaaaacccccccccccccccccccccccaaaaaaccccaagggmmmsssxxxwywyyyyyyvvvqqlllcccccccc +abaaaaacccccccccccccccccccaacaaaccaaaaaaacccccccccccccccccccccccaaaaccccccaagggmmmssswwwwwyyyyyyyvvvqqqllcccccccc +abaaaaaccccccccccccccccccccccaaaccccaaaacccccccccccccccccaaccaacccaaccccccccgggmmmmssssswwyywwvvvvvvqqqlllccccccc +abaaaaacccccccccccccaccacccccaaaccccaaaacccccccccccccccccaaaaaacccccccccccaaggggmllllsssswwywwwvvvvqqqqlllccccccc +abaaccccccccccccccccaaaaccccccccccccaccaccccccccccccccccccaaaaacccccccccccaaagggglllllssswwwwwrrqqqqqqmmllccccccc +abaaccccccccccccccccaaaaaccccccaaccaaccccccccccccccccccccaaaaaaccaacccccccaaaaggfffllllsswwwwrrrrqqqqqmmmcccccccc +abacaaaccccccccccccaaaaaaccccccaaaaaaccccccaacccccccccccaaaaaaaacaaacaaccccaaaaffffflllsrrwwwrrrmmmmmmmmmcccccccc +abaaaaaccccccccccccaaaaaaccccccaaaaaccccccaaaaccccccccccaaaaaaaacaaaaaaccccaaaaccfffflllrrrrrrkkmmmmmmmccccaccccc +abaaaacccccccccccccccaaccccccccaaaaaacccccaaaacccccccccccccaaccaaaaaaaccccccccccccffflllrrrrrkkkmmmmmccccccaccccc +abaaacccccccccccccccccccccccccaaaaaaaaccccaaaacccccccccccccaaccaaaaaaacccccccccccccfffllkrrrkkkkmddddcccccaaacccc +abaaacccccccccccccccccccccccccaaaaaaaacccccccccccccccccccccccccccaaaaaaccccccccccccfffllkkkkkkkdddddddcaaaaaacccc +abaaaacccccccccccccccccccccccccccaaccccccccccccccccccccccccccccccaacaaacccccccccccccfeekkkkkkkddddddcccaaaccccccc +abcaaacccccccccccaaaccccccccaacccaaccccaaaaaccccaaaccccccccccccccaaccccccccccccccccceeeeekkkkdddddccccccaaccccccc +abccccccccccccccaaaaaaccccccaaacaaccacaaaaaaaccaaaaccccccccccaccaaccccccccccccccccccceeeeeeeedddacccccccccccccccc +abccccccccccccccaaaaaacccccccaaaaacaaaaaccaaaaaaaacccccccccccaaaaacccccccccccccccccccceeeeeeedaaacccccccccccccaaa +abccccccaaacccccaaaaacccccccaaaaaacaaaaaaaaaaaaaaaccccccccccccaaaaaccccccccccccccccccccceeeeecaaacccccccccccccaaa +abccccccaaaccccccaaaaacccccaaaaaaaaccaaaaacaaaaaaccccccccccccaaaaaacccccccccccccccccccccaaaccccaccccccccccccccaaa +abccccaacaaaaacccaaaaacccccaaaaaaaacaaaaaaaaaaaaaaaccccaaaaccaaaacccccccccccccccccccccccaccccccccccccccccccaaaaaa +abccccaaaaaaaaccccccccccccccccaaccccaacaaaaaaaaaaaaaaccaaaaccccaaacccccccccccccccccccccccccccccccccccccccccaaaaaa diff --git a/i13.txt b/i13.txt new file mode 100644 index 0000000..81a9c5a --- /dev/null +++ b/i13.txt @@ -0,0 +1,450 @@ +[[],[[[]],9,[],1],[1,0]] +[[[10,8,0,[4,3],[1,4]],4,[7,5,[9,10,7,10],8]],[8,[[1,5,9,1],6,[10,5],5,[7,1]]],[[0,7,3],[[5],[8,3,0],4]],[4,2]] + +[[8,6,[[9,0,0],2,[6,3,2,0]],[],6],[10,[10,10,8,2],[[4,3,7],4,8],1,7]] +[[[],0,[[8,8,10,5,7],1,5,0],[]]] + +[[[],6]] +[[9,[],3,[9]],[],[[1],[10,9,4,[]],[2]],[]] + +[[10,3],[3,1,[3],8,5],[],[6,2,7,[10],[[0,8,9,10],5]]] +[[4],[0,1,[10]],[],[],[0,[[3],[7,7],8,[9,0,0],3],3,8]] + +[[9,[],[[7,8,10],1,[7,6,9],[7,5,0],8]],[[3,[],[4,8],[]]],[10,[9,0,7,9],[[0,8,8],[],[6],[4,6],[8,7,0,9]],[10,[],8,[],5]],[[[7,10],[5,10],[4,0,8,3,9],[]],[2]]] +[[[8,8,[]],10,[9,1],[[8,2],[],9,[9,2,7],10]],[[],6,6,[5,3,0,5],3],[[],10,2,[10,[3,1,5]]],[],[10,[],0]] + +[[6,2,[0,[5,7],[9],1],6],[0],[[5],4,[[10],[0,5,10],3,[]],[[6,4,9,0,3],[6,4,10]],6],[[1,[0,0,3,1]],[[9,0],3,3,9]],[[[4,5,3,2],[],[3,1,7,2,3],10]]] +[[[7],9,3,0,9],[8]] + +[[],[10,6,3,[[2,2],4,2,[7,5,10,5]],[9,3]],[[],[7,7,6,[10,6,2,0],[7,10,5,2,7]]]] +[[],[3,[10,[3,3,8,2,4],6,[10,3,10,10],3]]] + +[[],[],[9,10,6],[7,[[4,7,10,6,1],[7,3],7,1,[]],4]] +[[10,0],[10,[6,6,3,[9,5],[7,6]],[],[0,[10,8,10,10],[3,3,1,2,5]]],[[7,[9],8,[3,10,4,5,0],5],[3,2,3],[[9,2]]],[]] + +[[0,[[],1,9],[[7,4]],6],[6,[3,6]],[6,[[7,10],[8]],[]],[6,7,9,[7,[4,5,5,9],[],[8,2],7],3],[0,[7,5,6,0],4,[2,10,[4,8],0,1],[]]] +[[0,[],8,[[1,8]],7]] + +[[7,[8,5,9,[10,2],[0,1,6]],[10]],[[[2],[1,6],[1,10],[0,0,1]],[[6,2,7,7,0],10,[5,0],[],6]]] +[[1,[[4,7,4,8,6]],2,7,[0,[2],[7,8]]],[[]],[5,[]]] + +[[[[],3]],[[7,6,10,[4]],8,3],[4,[6,[2,4,0],[8,10,0,4,0]],0]] +[[[4,7,8],0,[[9,4,5,4]],7]] + +[[[[7],2,1],[10,[9],[2],[3,3,4,5],[9,7,10,7,6]],[[8,7],[5,6,8,8,1],[6,1,7,7],0,3],3],[0,[[9],1,[4,0,6],3],9,[[]],3],[[],7,[],[4,[10,2],[0,7],[]]],[[[5,1],9,2],[],[2,9]]] +[[[9,[1,5,6,4,1],[7,9,10],1,0],4,[3,9]],[]] + +[[],[[[4,1]],0,4,2],[[[3],[2,7,4]],0],[9,[[0,2],[9,2],10],6,[]],[]] +[[[5],8]] + +[[[4,8,[10,2],[4,0],[4,3]],3],[8,6,[[0,6,1,4],[6,5],2,[5,2,8,0,6],[6,1,0,5]],[[7,9],[6,8,10,8],[7,1]],[0,[0,3,5,5,5],[3,2,7],9,4]],[3,[0],2],[7,[[],5,9],4,[],[]],[[2,2,[2,6],[8]],2]] +[[10,[0,[0,5,5],[6,3],10],[2],0],[[[1],9,9,1],[[1,1,2,5,3],0,3,3]],[6],[]] + +[[7,7,7,8,2],[4,[]],[[3,[1,5,7,8],[7,4,10,4,0],8],[10,8,[5,4,2],5,[9,7,6,9]],[3],6,[5,[7,6,7]]]] +[[2,9],[]] + +[[10,10,[]],[[[7,7,0]],0,[[],7,[5,4,6],[0,10,2,1],[4,10]],8,[[2],[],[],[4,1],8]],[],[[],8,[3,5],[9],[[10,6,4]]]] +[[[[9],7],[],6,[8,[10]],[4,2,7,0,0]]] + +[[4,[[8,10,5,7,4],4,[7,6,1],[6,0,2,6],9],[],7,[]],[3,[[7,4,9],[8]],[6,[2,8],[4],8,7]],[[2,[7,1,3],[9,2,1],2,[2,7,6,9]],[[9],2,[10,1,3,10,8],[9,5,4,8,0]],[7,8,5,[]]],[[[2,5,4],[1,10,9],[],10,2],7],[7,[[8,2,7],[9,10,6],0],7]] +[[[[5,9,10,8],[],[],2],1,[[5,3],5],[],6],[[[6,2,8,6],4,2,[4,4]]],[[9],[2,5,[3,10],8,[]],6,[5,6,[9,9,6],10,[4,3,1,8]]],[]] + +[[8,1,4,2],[8,10,[9,7,[5,3,4],[4,7,9,1],7]],[2,[7,1,3],7,0]] +[[4,6,[1],[9,0,[8,5,6,4],[10,4,6],2],5]] + +[[[],3]] +[[0],[1,[0,2]],[0,[[10,9],10,[6],[6,8,0]],4],[],[[1,[7,6,5,2,7],[1,5,0,3,8]],[0,8,4],[],[0]]] + +[[4,10,6],[1,5,[[9,4,10,1,9],[5,10,7,2],[9,0,3,1]]]] +[[[[7,0,4,9],[3,9,2,0,8]],[10,[],3,6,[]],9,3,[[3,10,4],[6]]]] + +[[10,[[9,9,9,7],8,6,3,[7,10,9,6]]],[[[9,2,1,9],6,[],4,3],9,[0,1],3],[10,[[],4,[5]],[]]] +[[[1,[3,5,10],[10]],6],[[[4,8,9],6,[]],9,[3,[7,3,8],1],1]] + +[[[[7,6],[0,3,7,9,7]],8,4,5,[[4,5,6,7]]],[[8],[10,5,[2,9,10,7],[]]],[[[8,5,7]],6,8],[[1,0,4,4],0,0],[[9,7,1],[9,[2],[9]],[10,[9,8,2,1]]]] +[[3,7],[5,6,[0,[6,0,8,6]]]] + +[[],[[6,10,6,[5,5]],[[],[],[1,8,1,6,4],1]],[10,[9,[7],[0,9,0],5],[[6,9,0,3],3,[4,5,0],3,3],4,[[10,7],4,[6,1,0],[6],3]],[]] +[[10,[[3,1,8,8,7],[0],[7,8,9]],5],[2,[[]],2,4,[5,7]],[[[3,4,3,5,6]],4,1],[4,[[9,8,8],[8,5,0]],[]],[[2,5,2]]] + +[[4,[1,1,[3,5,5,1]],[5,[4,2,2,6],3,9,5],[[],1,[4,3],0],[[5,8,0]]],[[4,[],1,[0,8],8],3,6],[4,[[3,8,0,1,8],[2,10,7],6,[2,3]],4]] +[[[],2,[[],0],[]],[[6],[10,3,1,[0,6],[8,4,6,4]],[6,[9],[1,8,6],2],[[1],3,5,[]],9],[],[],[[[0,9],[6,4],[4],0,6]]] + +[[],[[8,0,[9,3,10]],[4,[6],7],6]] +[[[[10,5,4,3,5],[7,0,1,7]],[[10]],1,10,2],[[7,[1],[7,1,4],[]]],[1,[[8,1],[4,2,4],[1]]]] + +[[],[[[0]],7,[[9,9],[7,4]],5,6]] +[[10,[6,[],0],[1],1,[7,[1,4,7,2,9],10,4]],[[3],[[],4,9,[]],[[4,5,1,5],[5],[9,7],[8,3,2,8,8],3]],[4,7,[],10,[]],[0,7],[10,[[10,2],[8,5,3,1,10],[4,0],10,8],[4]]] + +[[5,[]],[[],[[7,9],4],[[0,3,9,0],[0,0,6,10],0,2,1],[[5,1],[3,1,4,4],[5,4,3,9],[8,10,7]],7]] +[[[5,[3]],[[10,10,9,3],3,10,10],[[5],10,[3,7,6,8,4]],7],[[],0,8,[5,[8,1,4,6]],[8,1,[9,7,1,1],[2,7,0,2,4],[10]]],[4],[9,10,9,[]]] + +[[[0,[9,7],6],[9,[],9]],[5,[[1,7,0],10]],[9,[5,10,8]],[1,[[9,5,0,3,10],1,7,[6],5]]] +[[],[],[],[[[7,4,2,1,6]],2],[[[10],4,[7,5,5,2],5],6,[8,[1],10],[],8]] + +[[1],[10,[2,9,5,7],6],[]] +[[2,[4,[1,10,4]],4,5],[[[3],[3]]],[[8,2,[6,3,3,2,3],0,7],[[4,2],[],[3,9,7,4]],0]] + +[[4],[7],[[[7]],[9,8,[9,5,2],[4]]]] +[[0],[],[2,1,0,10],[9,[[4,7],6],[1,0,3,4,[0,8]],[[],3,[],[5,7,3,9,2],4]],[7,[],[]]] + +[[[6,2,[3,10,0],[4,2]],8,[2,[0]],[[],7]],[7,[[7,10,1]],0],[5,1,3,[[10],2,[5,1]],9],[],[[9,[0],9,0,1],9,[[0,4],4,[6],[],[5]],4]] +[[0,[[8,10],7,5,7,[5]],7],[],[[5,[]],6,1,[4,[8,1,7,10],5,[7,10,6],[7,5,8,8]],[]],[1,10,2,[3,[2],2,0,9],[[2,8,3],[3,2,10,8],[9,2,6,9,8]]]] + +[[6,7],[[[8,10,10,7],[2,10,6],[9,2,8,8,5]],[[7],[5,2],[6,9,10],8,4],6,5,[]],[],[[[8,1]],[5,6,[4,9,8],5],[[2,8,7,2,3],[4,4,10,3],[10,2,8]],9,4]] +[[[10,[9,2],2],[]],[10,[[3,4,3],[4,4],[6,4,2,6],2,[6,7,7]]],[],[[[],[4],[9,10,2,1,6],1,[]],[5]]] + +[[6],[[9,10,2],[[3,4,6],5,9],[5,4]],[[3,3,8,[],1],[[2,2,6,10,3],6],[6,9,3,[8]],1,[[1,9,9,10],7,6,[5,0]]],[0,4,3,[[2,5,1,10,8],7,6,[],[7]]]] +[[9,10,3],[[],[[1,0,0],[10],[9],[2,5,0]],[],8],[10,[3,[2],10]],[[]]] + +[[],[[2,10,[]],[],1,[0,[9,6,1,4],6,[1,9,2,2,0]],[]],[[]]] +[[1],[2,[[],2,[7,3,5]],9,2],[[[5,1,8,0],[7],5,6],[5,1,6],5,[[6],[5],3,1],[3,[6,3],[],10]],[8,[]]] + +[[[[1],[0,7,6,3,8],1,[],8],[],3],[],[[]],[[[],[10,10,10]],6,8],[5,5]] +[[[9]],[[[1,9,4,3,3]]],[[[6,10,5,9],9,9,[9,10,5],[10,5,2]],[9,[9,9,3,1],[7,0,8,3],3],9,0,[[0]]],[6,3,[10,10,[5,1,0,2],5,4],9,9],[6,[[3,6,9,9,4],[6,7,7,0,9],[0,2,2,4,9]],[[10]]]] + +[[4,[2,[6,10,1,1]],[[7,5,1,1,9],9,0,[8,7,8],10],2],[[[4,10,8],[2]]],[[]]] +[[[[10,10,7]]]] + +[8,3,10,5,6] +[8,3,10,5] + +[[7,[6]]] +[[4],[[5,1,[8,8,6,9],[9,0,7,8],[2,5,10]],[],[8,[5,6]]],[8,1,10]] + +[[],[1,8,[9],[1,2,[9]]],[2,3,3],[5,[]],[[1],8]] +[[[[4,8],[],6],[7,2,[4,3,9,3],[10,5,10,9]],[10,[0],0],1,2],[[9,[5],[0],[2],[1,5,10,9]]],[[[2,9,4]],8,[5,[1,0,0,8]],10]] + +[[10,[],1],[[2,[6,1],[6]]],[9,[[10,6],[1,0,6,3],3,9],4,5,[[4,0,3,10],7,[4]]]] +[[[[],10],7,1]] + +[[2,10,4,9]] +[[4,5,[]]] + +[[7,[[]],4],[[9,1],[8,[10,8,3,4],[1],[0,2,1,5,3]],8,6],[[[1,7,7,5],5],3],[[2,5,3],8,[],2],[[0,9],7]] +[[4,4,[10,4],[[5,1,8,6,9],0]],[6],[[6,0,[8,7,4,0],0],8]] + +[[7,[6,[3,9,8],[6,4,8,1,4],[]],2,1],[[],[],2,3],[]] +[[9],[],[[[7,0,8,7,10],1,[4,4,10,9],8],[[6],10],[]]] + +[[0],[[9],10,6,0,[8,[5]]],[3,[[5,4],[2]],10,6],[[[3,1],3,[],[0],6],3,[9,0],[10,[]]],[0,10]] +[[6],[3,2,7,[[6,2,8,6],[4,9,10],[8,1,8,1],0],5],[9,[],3],[1,[[4,4],[],9,6,1],[[1],2],10]] + +[[[[4],1,7],5,[[7]]],[]] +[[],[2,[7,[0,3,6]],[[],[8,9,6,6,1],[]],[4]],[[3,[2,2,2,3],1,[5,6,8,3],9],2],[[2,6],8,[7,5,5,[1],[5]],4],[[[8,8,10]]]] + +[[[9,[],[],[6,3,4,0,6],5],5]] +[[3],[]] + +[[[2]],[0,[2,7,8,[6,8]],7,[3,[5,8,7,4,1],[8,2,4,3],4]]] +[[],[[0],[1,0,0,9,0],[[5,3,0,7,8],[8,9,3],4],0,[10,[7,7],9,8,[3,0]]],[7,3,3,[[],5,[7,1,5,4,10],3,1],[7,[10],9,[2,1,0,2,8]]]] + +[[[4,7,[2,0,7,7,4],3],3,3],[[],6,[5,[0,6],[7,2,5,0,8],[0,7],5],9,[8,[8,3,1,6,10],[7,8,3,0]]],[],[4,6,[5,7]]] +[[4,[[6,10,10],[3,1]],[[],[8,3,1],[5,1,5,9],[],9]],[[[],3],7,1,[10],[[9,0,5,6],6,[1,0,9,7,7]]],[7],[[[6,5,6],9,[8,5,5,2],7],2,9,[7,[9,7,1,3,9],6,6],0],[1,[[2,9],2],9,[2,3],[2]]] + +[[5,[2,[2,3,6,2],3],[10,[5,0,3],[2]],5],[[4,[7,7,0,0],[3,6,7,9,5],[4,0,8],[9]],[[2,10],[7],5,[0,0,8,1,7],2],[1,[9,8,6,4],6,[1,7],9]],[7,[[8],[],[4,1],10,3],5,2]] +[[0,[1,6,8,7],6,4],[[9,3,2,3,[7]]]] + +[[],[[7],5,4],[[[9,1,6,9,0]]],[4,[]],[1,[[3,0,3,9],1,[10,1,2,2]],10,[[6,10,0,1,3]]]] +[[],[1,1,[],[7,[3,0,6],4,[5],[3]],[7,10]]] + +[[[9,[10,6],5,[1,5,8,7,0],4]],[],[2,[10,8,[1,5,2,0],5],8,3]] +[[[10],9,1,[9,1]],[[],2,[[1,6,1,0],1,[],9,[9,2]]],[],[[10,2],[4,2,0,[8,0,9,9]],[5,10],[10,[5,10],2],[[3],[10,5,10,8,9]]]] + +[[8,[[4,4,7,0,10],4,[4,2,9],5,[1,0,3]],2,2,8],[]] +[[[[8,3,6],4,6],5,[0,[5,9,1,0],10],2],[[[],[6,0,4,7]]],[[6,2,[2,6,6,6],2],[],[1],8]] + +[[],[6],[4,5,0],[]] +[[[[10,9,6,1,3],[],[5]],2,[[3,2],4,[],[3,6,6,6,10],[0,0]],10]] + +[[[6,1,2,[9,0,6,1]]],[[1]],[[[2,9,4],3,10],[6,5],[8,[]],[7],[6,9,8,[]]]] +[[1,[[6],0,10],[8,5,10,10],[[9,10,5,0,8]],[10,[10,7],10,1,[0,7,5]]]] + +[[2,[[7,9,4],[8,1],8,[5,5,8,9],1]],[[4,8,[]],[],1,0],[7,1,9,[[1,0,3,0],[4,1,7,6,8],[7,6],[7,8],[1,9,5,5,7]],10],[[[1,3]],8,[[7]],3,[]],[10,9,[[7,3,8],9,0],[]]] +[[],[8,[8,[9],0,[0,7],3],[2,[3,2,5,10],4,4]],[],[[[0,10,3,7,8],0,10,5]]] + +[[1,[9],[7],[],[[0,8,10],[4,0,8,9,2],[3,4,7,8,0],[],4]]] +[[[3,[6,3,1]],9,[[9,6,8,10]],[[7,3]],3],[5,[4,[9,1],[5],[5,4,4,6,6],0],[[8,9]]],[8],[[[],2,[0]]]] + +[[[0,5,9,2,10],[9,1],[[],[0,3,0,0,4],6]],[9],[6],[10,0]] +[[[2,[6,2,9,6]],6,[[5]],0,[[3,5,4,6,10]]],[10,4],[[],[],[[10,7,3],2,0],[4],4]] + +[[],[],[],[[[9,9,6,9],[8,0,2,3,2],3],8],[[5,[2,7,6],3]]] +[[],[],[[4,[],[0,6,7,8,6]],9,1,9]] + +[[7,[],5,[7,[0,2,1,6],[7,9,0],10],[]],[9,6,6,9,[2,[6,0,1,6],[10],[10,6,8,3,0]]]] +[[[10,9,[3,10,5,0,0],10],[[0,9],[6,4,10,1,9],1,[5,8],4],8,[[7,10,10,1,3],[0],[7,9,3],9,4]]] + +[[7,4,[[],4]],[9,10,[7,7,3,4,[]],7],[3,2,10,9,[[8,6,5,1]]],[]] +[[7,1,[3,3,[2,9,9,4,1],[1,5,1,5,1]]],[[[],[],[8,5,1,3,3],10]],[2,7,[5,[1,10,6,7,2]]],[[[],[7,8,5,2,4],0,6,[4,5]],0,[[2,6,4,3]],[[4,5,0,2,1],2,9]]] + +[[[2,2,[2,8]],1,[],[],0],[],[5,[5,[],[9,7],[5,2,3,6,0],2],9,5,5],[[7,2,[9,3,7,4],[7,3,9,1,4],0],[]]] +[[[[7,3,5,2]],2,7,0,2]] + +[[[5,10,[5,1,0,10,6],6,[10,9,6]]],[6,[[3,1,7,8],7,4],6,6,9],[[3,0,10,5]],[9,[9,2,6],[3,[],[6,9,10],[9,6,1]],7]] +[[0,[[5]],[],[[0,8,10,5,5]],2]] + +[[[10,10,8,[7]],[6,8,[9,5,6,6,9]]],[7],[[3,[10,5,9,4],0,9,1],7,[[],[6,4,10,7,4],[],5,[]],[0,6,7],[0,[7,3,2,4],[5,10]]],[[[6,5,0]],[10,[9,3,5],[8,9,0,4,1],[7,2,7,0]],2,[]]] +[[8,7],[],[7,3,[8,[0]]],[10,6,6,[[],8,[]],9],[4,0,3,10,[]]] + +[[[[4,0,3,10]],[6]],[8,2,7,8],[]] +[[5,2,4],[6,[5,[8,8,4,10],5,0,[9,3,6,3]],[],[0,8,[7,7,6,0,0],9],[]],[10],[0,[[2]],[[9,8,10,5,6],[],7,4,1],5]] + +[[[],7,2,0],[5],[],[3,9,[[6,1],8],9,[7]]] +[[1,[[4],1],4,[],2],[4,[5]],[[1,[5,8],4,10],[[6,9,2,3],3,0],3],[6,[10,3,[1,9]]],[4,[8,[8,1,3,0,5]],0]] + +[[4,[10,[1,6,10,5],[],[4,10]],[[8,10,7],10,2,[10],[5,3,3,6]],[[],[8],10,9,9],10],[[[]],4],[0,[]]] +[] + +[[[[0,4,6,7,8]],[[2,4],[9,6,1,1]],[4,[2,3,3],[],6,1],10,[3,[1],7,[9]]],[6,[2,[0,9,10,6]],10,[]],[7,8,9],[[9,[10,2]]],[9,[8,9,1,10],[]]] +[[[5,[0,10,9,5,7],10,[8]],[1]]] + +[[0,5,[],[[4,4],[6],4,8],9],[[10,[5],6],10,[[0,7,5,8],[9,9,4]]],[[[9,8,2],8],[9,6,8,[5]],6],[6,[],9,5,4],[[0,7,5],3,[[2,9,3,0],4,[3,0,8,7,0],[2,2]],9]] +[[3],[],[7,[9],9,[[6,3]],[[2,10],[10,6,5,4],[1,10,8,8],3]]] + +[[],[[10],8],[[6,[],5],[[],[7,7]],0,[[5,9,6,8,4],1]],[],[[6],3,9,5]] +[[],[],[[[0,2,1,4,5],9,[3,6,9,8,4]]],[[],6,[[5,0],0,6,0],0,7],[[[8,8]],7,10,[]]] + +[[[[3],10,[1,0],4]],[[[1,2,9],5],[1,8],5],[[],6]] +[[[7,[5,5,10],6,8,[5,6,6,1,9]],6,[[]],[6]],[1,[]],[],[[10,[1,0,8],[10,6,1,2],[6,10]],[4],7,[[8],7,3,[4,8],6]],[[],9,[0,6,[1,8,7]]]] + +[[0,5,[[]],[10,1,[1],[],7]],[6,10,7,10]] +[[7],[4]] + +[[1],[[3,[1,0,8,5,9],3,[6,1,5,9],2],6,[4,5],[[7,10,9,9],8,[]],[[9],[9,4,8,0],[1,4,5,6,8],0]]] +[[[0,1],3],[0,10],[[5,4,1,[8,4,9,4,7],[4,9]],7,1,8]] + +[[[5],10,6],[[10],9,3],[]] +[[1,3,8,10],[[8,[10,0],[]],[[7,8]]],[[[],[0,4,6,6,6],[7,7,1,4],1],1,[],10,7],[3]] + +[[[3,[]],[],[1,2,2,[0,7,10],[9,6,3,3]],[[10,0],[9,4],7,6,8],[]]] +[[8],[5,[[8],7],[[1],[8,7],[8,2,4],[2,3]],5]] + +[[[3,10,[4,10,4,2],7,7],[[]],0,10,4],[[[5,4,3,0],2,[8],[5,7,2,1,2]],7,9],[1,[[0,9,9,6,1],[6,5,0,2,2],[2,10]],8,[10,4,[4,4]],8],[2,[10,[4,1,6,10],4,[1]]]] +[[8],[[4,1,0,[0,4,2,1]],[[4,0,10,3],10,1,[]],[[6],[8,1,4],0,[]]],[[4,[4,3],4],6,[1]]] + +[[6],[[8]],[1,7,8,[0,1,7,[]]]] +[[[[1,2],8,5,[0,9]],[0,10,10,10],4,6],[6,[4,[1,7]]],[8,8,6,[[8,10,6,2,5],[2,0,7,8,8],10,3],9],[[[],6],6,3,[[8,7],4],5]] + +[[[],[[5,8,1,3,5],2]],[4,[1],[[7,5],6,3]]] +[[[[7,2,1,1],[8,9,6,6,9],[2,8]],[[4,5,6],2],[0,[5,10,2,6,10],[3,1,6,7,2]]],[[[],2,[1,0,3],[8,8,6]],[6],6,[[],[4],[2,8],[1,8,9,4]],[[3,8,10],8,[0,8,9,7,6],2,8]]] + +[[[0,3,10,[0]],4],[7,[2],[[2],[3]],[0,[],[4,2,6,8],[5,4,3,1,9],6],[[9,8,7,3,4],10]],[]] +[[[[],7,[5]],[4,1,8,[2,2,7,7,5],[4,10]],7,1],[[[],[2,9]],[10,2,[9,4,8,9],[],10],4,[8,[0],[7,8,3,2]],7]] + +[[[1],10,[[1,0,4,7],[],[6,9,6,0,6],[4,0,1,9,1],[3]]]] +[[],[[5,[1,9,0]],3,3,1,[7,[9,6,0]]],[[[5],9]]] + +[[[8,2,[10,4,2,8,2]],1,[5,3,[4,1,1]]],[[[4]],[]]] +[[[10],3,1,0,8],[7,[[4,9,9,10],[1],[1,7],2]],[[[0,7,4],1,7],7],[2,[[],[2,8,0],[7,2,5,9,4]]],[0,9,[[5,5,9,2],1,[9,2,3,5,1]]]] + +[[[3],3,1,4,7],[[10,2,[9,9,3,9,0],3,9],[4],2],[[[],1],[],[]],[],[[0,1,[],10]]] +[[[[2,9],[6,10,0],8,[4,1,0,2]],8,9,3],[[[4],[3,2,5,4,3],4,5],[[0]]],[[7],[[8,1,8,0],4,2,[0,9],8],[[7],[7,0,10,9]]],[[0],8,[],[[1,2,9,7,0],9,[4]],9],[[[],4,3],[[],[4,10]],[8,[7,5],[]]]] + +[[[1,4],9,[[0],[],[8,3,1],[10],7]],[],[2,7,0],[[2,4,3,[5,7,7]],[10,[4,10,9],7,8]]] +[[9,9,8,[3,8]],[6,10],[8,[[4,7,8],[8,10,5,2],[10,5],[5,0,4,7],[4,4,10]],10,[]],[[9,7],5,[10],10]] + +[[7,9,7,10]] +[[6,[[0,10,5,6,6],[0,7,7],[5],[2,2,10,2,1],[2,3]]],[2,2,2,1,8],[4,5,3,7],[],[[1]]] + +[[],[[],8,[[],3,1,[0],[8]]],[4,[[10,2],[4,1,8,4,9]]]] +[[[[1],[6],10,[7,2,1,0]],[[]],4,[[8,2,9],[],0],7]] + +[[[]],[7,7,5,[[7,7,9,5,3]]],[5,[4,6]]] +[[[5,9]],[0,[9,5,2],[]]] + +[[[6,5,[5,10,10,4],5,8]]] +[[8,7,0],[],[10,[6,[9,1,3,9,8],[4,9,1],6],[[0,1,9,0,10]],[4,[7,6,2,1],[8]]],[],[1,[[8]],2,[[3],5,10,[4,9,1,6,1],4],5]] + +[[[7,4],1,[[],[4],[1],5,[4,10,1]],6,8]] +[[7,[[],5,[2,1,4,4],7],[8,[8,5,7,1,7]],[9],6],[4,[3],3,2]] + +[[[9],[5,8,2,[]],[[2,5,7,5]]],[7,[[9,10,5,2],[0,5,8,10]],2,10,0],[[1,5,[9,5,3],[3]],0,9],[[10,[8,8],[10],[3,3,5,10,1],0],[[2,9,5,9,3],7,[8,9,10,8,5],1,0],5],[[0,1],3,[[7,1],[3,10]],[]]] +[[7,[10,[],10,9],3],[],[9,4,0],[]] + +[[4,[[0],[1,9,4,2,0],0,6,10],6,[6,4,3,[3,10,2,10,4]],1]] +[[4],[],[[[]],[6,1],[],8,[2]]] + +[[7,9,[2,[0]]],[[7,0,[1],[]]]] +[[4]] + +[[4,6,1,[[9,5,0],4,[2,2],[5,5,5],[2]]],[9],[9,[7,5],[3,[],10,9]]] +[[],[6],[[10,[10,1,1,8,6],[]],0,[[5,10,2,0],4,0]],[8]] + +[[9],[[],9,9,[[8,4,4,2,8],8,7],[1,[10,10,1,9],[8],1,7]],[[1,0]],[[],8,2,[[10,4]]]] +[[9,[],[[3,3,6,4,2],[3,3,6,9,2],8]],[8,[[8,10,9,9],3,[],[1,6,7,7],2],5,7,[]],[]] + +[[[[0,1],0],4],[[6,6,1,5]],[0,[4]]] +[[9,[2,8,2,[9,2]],[[2],2,[9,0,5,10],[9,6]],[[]],[[]]],[],[10,0,[3,2,9,[8,8,9],[0,1,7]],[[2,9,4,6,2],9,[2],9,10],[[]]]] + +[[10],[2,[]]] +[[1,[9],[[1,10,10,7]],[6,[],10]]] + +[[],[[],[[2,0],2],8],[5,[[6,9,8,6],[9,6,3,1],[9,3,5,9,7],5,9]],[6]] +[[1,4,7]] + +[[5,10,[[8,9],8],[]],[[6]],[5],[6,[9,9,[3,4,9,3,3],[]]],[[[4,4,9]]]] +[[5],[0,[[],[7],[1],3],1],[],[1,[[6,4,7],[4],0],9,4,1],[[10,3,8,[],10],1,[]]] + +[[2,[5,[2,5,3,4,6],1,[4,10,7,7,0]]],[5,5,[[2,6,2]]],[],[[8,[6,1],10],8,[[5,10,4,2],[1,10],[5,7,5,6],[8],8]]] +[[3,[[2,6,3]]],[[],[[7,7,8,3],[9,1],9],[[],4,1,[]]],[8,5,[[2,0,3,10],9],5],[8],[7]] + +[[6,[[],[10,6,2,3],0,[9,6],[]]],[[[9,9,0,2,3],7,[7,0,2],9],10],[0,[],[3,[10,3]]]] +[[0,[]],[[1,[0,6,6]],9,[3,[9,6,0,4,6]],[[10,0],4,[7],3]]] + +[[2,[7,3,[2,6,4,4,7],1,9],[]],[[[3,2]]],[],[9,4,2,[7,[8]],[]]] +[[[[],8,4,[1,6,5]],5]] + +[[[[9,8,0,10,10]]],[[6,1,[]],[0,[]],[[10,9],2,[7,5,9,9,10]]],[[[2,7,9,3],[10,6,6,4,8],[],[],3],3],[[[3,7],9,4]],[[]]] +[[4,6,7],[]] + +[[],[[2,[],[],9],[[5,8,4,8,1]],[2,[1,4,6],0,3,6]]] +[[4,[[8],8,[6],[]],[[5]],[1,9,[0],10,[4,0]],1],[9,[[8],10,[6,0,5]]],[[1,[8,8,10,9,0]],[[1,6,1,3,6],6,[2,6]],[],[],9]] + +[[[],[]],[[],3],[[10,[10,4,6],1],[7,10]],[0,6,3],[]] +[[],[9,1,[[7],[10,4],[]]],[3,[[8,3,2,9],4],[]],[7,[9,[7]]],[[[2,1,9,8,8]]]] + +[[[7,4,5],2,[[],0,1,[],1]]] +[[[[2,5],[9],[0,10,8,3,6],[5,6,6,3,0],[4,0,6,9]],1,2],[8,3],[],[10,[[4,5],[2,3,1]],7]] + +[[[[5,2,10,2,2]],[[3,2,5,2,8],[10],[],[5]],8]] +[[[[3,4,10,5],[5,8]],9,[[3,2,6],10,2,10]],[[3,4,[1,10,10,6]],[],[[8,7],[6,5]]],[8,10,[[2],[8,8,9,1]]],[0,3,[3,[2,9,6]],[[0,3]]]] + +[[3,[[7,3,9,3],[6,3,7,4],8],7],[[],3],[10,[[2]]],[0,[[1,6,5,7],[],7],[[9,6,2,0,7],[6,10,0]]],[0,[10],2]] +[[5],[[[6,7,7],[],[1,10],9,[]]],[7,2,10,10,[9,[8,5,9,5],3,[8,10,4,3,4],9]]] + +[[[[6,0,8]],3],[],[],[[[2,0,10,0]],[[7,4,1,3,9],10],[[5,1]],[[],[2,5,4],[3,10,5,10,9],[4]],[3,9,8]],[[[5,7,0,7,6],[],[9,0],[3,10,0,9],5],[[6],[],[9,7,4,10,0],8],1,1,0]] +[[4,[[0,10,5,0]]],[[],[1,[0,3,2,5,5],[5]]],[7,6,8],[]] + +[[2,1,1],[7,4],[1,[8,7,[1,4],[2,7],[]],1,[1]],[[],[[5,3,0],[10,0,2,10],5,[5,5,7,4,1]],1],[]] +[[],[[9,7,[9,9],3],[[1,0],5,3],[],8,7],[2],[[4,4,[5,5,7,7],[7,3,6]]]] + +[[[[3,1,0],10,0,[2],0],6],[[[],[10],3,4],0],[2,[[7],[7,0],[5,1,6,10],[3]],10],[[9,[],[2,4]],[1,[6,10,8],7]]] +[[[9],[],[[4,1],[1,1,4,2],3,[4,5,1,4],[4,3]],10,4],[],[[],[8,[10],9,[7,2,10,3]],[3,7,9,[0,0,2,1],6]]] + +[[],[2],[5,[],[9],7,10],[[10,[0,5,5,0],[9,7,0,10,6],7,[1,7,2,4]],[1,[2],4,[2,2,6],[3,10]],[2,[],7,[5,4,8,6,8]],9],[3,8,[[7]]]] +[[[3]],[],[[[]],[[7,4,7,5],8],2,5,[]],[[2,[2,9,2,6,1],6,[5,8,4,6,1]],10,[7,[6,2,3,7]],[]],[]] + +[[[9,[8,2,3,0,5],1,7],5,3],[0,[3,[3,6]]]] +[[5,[[6,2,3,4,2]],[9,[1,5,10,1,10],[8,2]]],[[[],0,[],0,[9]],[[7,2,4],1,1,2]],[[0,[6,9,10,7],8],[10,[0],4],1],[[[8,4],[10,2,1],9],6],[10]] + +[[3,9,[[],10,10,[4,3],[]],7],[],[],[[[7,4,2]],[1,7],[],[[6,7,7,6,9]],1],[7,[1,[9,4],[2]]]] +[[],[]] + +[[7,0,9],[10,[[9,8],1]],[4,[0,[9,4],[3,1,3,3,0],2],[8,3,[2,4,6,0,4],0],9],[[[1,4,4],10],3]] +[[[],8,[[1],6,9,[5,4,4,8],10]],[],[6,4,[2,[3,3,0,10],[7,0,1,3]],7],[3,[],5,7,10]] + +[[2],[],[[0,5,[],[10,3,8,1,1],[]]],[4,[10,3,8,2],6,6,7],[7,0]] +[[[8,5,9],[4]],[1,[[7,8]],7]] + +[[1,7,0,7,[[1,1,8,1],9,[]]],[[[7],7,2,[],[4,4,0]],1,[[],[6,5,9],[],10],[[6,1,9,9,10],4,4,5],[[6,0,9,1,3],[2],10]],[3,2,9,[],0],[[[2],5,[],8,[1,8,8,2]],[9,[],1]]] +[[0],[[10,[6,9,1],4],3,[[2,9],[1,2,9],[7,5,4]],[[],2,5,[0,4],3]],[[9,8,[9,8,4,5]],[7]],[3,[4],[[4,4],10,[]],1,[0,[],8]]] + +[[8],[[[2],[1,4,10,7,1],[8,5,8,3,9],9],[9,3],[[2],[]]],[10]] +[[[[3,9],5]],[[[2],4,1,0],[8,6,9,[0]],0,[]],[7,[[8]],[[1,5,8,6],[10]]],[3,0],[[],0,[],5]] + +[[[[],5]],[],[],[0,2,[]],[[[6,9],4,2]]] +[[3],[5,4,[[8,4,8],[2,10,3,5,10],5,[3,7,5,10]],0],[]] + +[[[]],[2,[0,[3]],3,6,10],[],[5,[2,[]],[[5,4,2]]],[]] +[[[[6,5],8,[5,9,6,2],[9,3,0,9,7]],[]],[[[6,2,10,4],6,[4,0,5],10],[[9,2,2],[9,7]],[8,9],5],[0],[6,3,0,0]] + +[[7,1,[[10,4,8,5,10],[0,6,1,2,5],[10],3]],[[],8,[8,5,[7],[]],[3,[4,5,10,0,2],[2,10],[],[8,10,6,5]]],[],[[9,2,[2]],[2,[3,8,8,4,7],[8,7,6]],4],[[7,3,6],[[10],[0],[],[10,9]]]] +[[],[8,6,2],[[],3],[],[3,9,5,0,[1]]] + +[[5],[5,[6,[3,0,8,2,6],4,2]],[10,[8,[9,10],[8],6]]] +[[[[5,3],5,[],7],9,[[],8,2],7,[[9,2,4]]],[8,[5],[8,4,[10,7,5,1]]],[2,1],[0,0,[4],[[0],0],[7,[9,7]]],[5,[8,[10,1,5,0,1],0,2],[8,[1,8,5,10],3],[[7],[8,4,4]],10]] + +[[1,4,7,[[10,2,8,3],7]]] +[[],[],[3,5,1,[8,7,9,5]],[[2],2]] + +[[[[6,1],[7],6,[4,1,5,8]],[],0],[[7,[1,1,10,8],[8,7,10,2],[9,4,2,7,2]],[[],[5,1,2,6]],3,9],[8,[[8,7,8,4,6],[2,0,10,8,9],1,[0,3,9],9],0,[[3,7],1,[7]]],[2],[[[9,2]],[],0,[[9,10,1,9]]]] +[[4,0,4,1,2]] + +[7,1,9,0] +[7,1,9,0,9] + +[[2,9],[9,3,6],[],[2,5,[1,7,[3,2,5,2],10],[[2,10],[4,7,3],0]],[7,[3],[4,0,[10,0],9],5]] +[[6,[[],[9,0,6,3],8],[6,[7,2,7,9,10],[7,5,3,5],7]],[[3,[5,2,3,4]],3],[[4,[2,4,1],4,[1,8],[3,3,3,7]],9,[]],[],[[8,7,4,1],3,[[8],[9],5],5,9]] + +[[[],2,8],[[9,[8,10,6,9,8],0,[10,7,9,5],[]],2,3,4,6]] +[[[[4,0,3,3]]],[10],[6,5,[10,[0,0,10,7],[9],0],6]] + +[[],[[8,[10,1]],2,7,[[7],7,3],[4,3,9]],[[4,[0]],[6,[4,7],3,[10,2],[6,5]],10,[[5,1,10,1,1],[0,2,9,3,9],7,10,3]],[3,[[],[7,8,3],[7]],[]]] +[[],[[1]],[]] + +[[[2],7,[1,8,0,[10,7,8,1]]],[[],[[0,2,8,0],[1,1,9]],6],[[9,0,[0,4,5,9,1],5],7,[0],[7,4,9],7],[]] +[[[2,[8,3,7,2],6,[1,2,10,3]],[2,8,8],[[5],[10,8,2,4,10],[0,1,4],3,0],0,8],[],[6,[],[[1,0,2,3,3],10],7,1]] + +[[8,[6,[10,8,8],10,5],2]] +[[5,5,2],[[5,9,4,3]],[[[1,0,4],[2,7,9,0,4]],[],5,[[10,5,5,7,7],[10,7,8,1],[8,8,4],[0,3,0],[1,8,10,8]]]] + +[[[[6],[0,10,8,10],[4],[4]],10,10,7,8],[[],[],1,[],[[3,2,5],[9,10,6]]],[],[],[]] +[[[[3],1,3],[[6,7],10,[3],[4]],7]] + +[[[[],10,[]],8],[[5,[4,3,9],[7,3,1,10,1],10,5],[[1,7],[8,1],2,[9,4,1,0,3],0]],[9,5,5,9,10],[6,1,0],[10,[10]]] +[[[[3],7,4,0],6,7,[9,2]],[],[[0,1]],[[4,1,3,10,5]]] + +[[[6,3,8],[0,[8,10],1],10,3]] +[[]] + +[[[[8,9,9,0],4,[3,7,0,1],5,10],4,[2,[4,4,3,4,4],9,3,5],4,[[],7,[9,8,2,0],10,4]],[],[6,6,0,[]]] +[[[6,8,9],1,[6,1,5],[6,5,10]],[2,4,[[10,1],8,[7,6,2],[],0]],[[0,9,[],[1,3]]],[[]],[0]] + +[[[],7,[],[[],10,3,2],[[0,1,9,1,8]]],[6,[[2,1,1],1,3]]] +[[[3,9,2,8],[],0,[[10],[10,6,9,3],7,2,[10,2,10,10,0]],8]] + +[[5]] +[[10,[]]] + +[[[[4,4,7,2],0,2],4,[[4,6,7],5,8,5,[7,7,8,2,0]]]] +[[],[1,[[1,3,4,2],[6,10]]],[3,[]]] + +[[4,3,1],[8,[],[[8,2,9,9,4],[6,5,9,6]],2],[],[[[3,7],2,[10],9,5],4]] +[[1]] + +[[10,[[4,6,5,6],[8,7,8,7,2],1],0,[[4,6,7,9],[]],0],[[2,1,[6,1,3,6,10]],[[3,8],0,[1,10],0,[2]],8],[5,[10,[],[5,10],6,4]],[[],9,[[2,10,2,3,5],[0,10],[1,10],1,[5,4]],8,0]] +[[[1,[5,6,6],9,[10,4,9,6]]],[],[[8,3,[6,10],1],[]],[[10,[6,4,2,7],5],7,4,[6,4,4,[6]],4],[0,[4,[8,7,6],[],[]],[[4,3,8,10],8]]] + +[[3,2,[[],6,1],0,[[9,3,2]]],[[0]],[[3,2,9,[9]]],[10,[2,6,2,[5,7,8]],[5,4,[5,6,7,6]],6],[]] +[[3,4,[[1,8,6,1,8],9,3]],[[4,0,7,[6,1,2,6]]]] + +[[10,5,1,2],[[],9,[9,[8,4],7],[5,1,10,[9]],[[3,0],2,[6,9],6]],[[[],4,[5,6,7]],[[6,10],2]],[],[[2,10,[],4],[[],2,5],1,[3,[2,1,6]],3]] +[[[[3],[6,3,1,8],[8,10,4,10,4]]],[9,[8,[10,3]],10,[[],10]],[[[3,8]],4,2,5,10]] + +[[[4,8],2,[3],[0],[[3,4],[9,4,5,9,0],[10,6,3,3],[8,10,6,4]]]] +[[[[],2,3]],[[0,[8,7,10,9]],[10,[8],[10,5,1,1],[],[]],[[1,10,3,10],7,[],[1,8,4],3],[[3,1,8,2]]]] + +[[[1,2,1,6,[8,8]],[7],[[],9,[2,0],[7,7]],[1,[8]],[]],[[1,[9],2,[0,4],[4,6,10,4,6]],[],5],[[10,7,[7,5,6,4,9],[4,6],[]]],[8,3]] +[[4,[],5,[[],[5,1],[1,8,6],[],4]],[6,[4]],[]] + +[[[]],[],[10,1,0,4]] +[[[9,2,[5,9,7,3,1]],1],[0]] + +[[9,[],[0,2,[3,10,5]]],[10,[[0,9,7,7,5],2,[10,4,8,4],5],[6,6]],[[10,[],9,[0,5,6,7,0],[9,6,3,2]],6,[],7],[[[3],2,1],9,[8]],[9,6,[8,[5],10]]] +[[[0],[6,[7,9,5,0],0],[]],[[[9,0,1,3,8]],8]] + +[[[[1,2,9],[6,7],9,3,[]]],[[5,0],[[1,4,5,1,0],1,[0,2,8,8],[7,10,2,2]],0,10],[[7,9,[0,9,5,2],[7,3,0,6,4],10],7,[],0,1],[0]] +[[],[[3,8,[],5,8]]] + +[[[4,3,8],[9]]] +[[2,[[7,0],[1,3]],10],[]] + +[[[[4,8,9,7,1],3],[10],8],[3,5,[]],[5,2,3],[1,5,8],[[[],9,[6,0,3,6],1,[8]],[1],4]] +[[[[2]],[[3],7],[[2,7],7,[1,6,8,0],7,1],10,3]] + +[[2,9,[3,[7,1,5,10],[9]],[8],5],[[[8,10,8],[],[0,9,7,0],3,[9,6,5]]],[8,[],10,6],[[]],[[5,[10,5,6,10,2]],5,0,5,[[4,10,1,8,3],2,6,[8,5,8],[9,10,2]]]] +[[],[4,1,[]],[[6,8,[3,5,4],[1,1,4],[7]],[[6,3],1,5]],[2,3,[5,[8,2,0],[],[0,0],[1,6]],[4,[0,2,7],1,[1]],3]] + +[[],[8,2,[2]],[],[[7,10]]] +[[[[6,10,10,5],4,10,9,[8,7,2,9,1]]],[]] + +[[7,[[1,7,4,9],1,[7,4,10,3]],[[],[2],[2,4,7],2,6],[]]] +[[[7,4,[9],[2,10,8]],[7,[3,2,6,8,9],8,[2]]],[[2,[10],7,[7,0,2,9]],[[],[4,2,4,4,10],[0,2,3],[]],0,[[9,6,0,8,9],5],[9,[],[2,2,3,10],[8,0,3,6]]],[2]] + +[[],[[],10],[3,1,[[]],[[9],[],2,[3]],[0,[4,10,9,0,6],[7,7,10,2,2]]]] +[[7,6,4,8,[]],[[],[[10,0,10,1,9],7,7],[[0,1,5,6]]],[2],[6,[5,5],1,9,[]]] + +[[[]],[[10,10],5,[],10],[7],[1,[[],4,[],2],9],[3,0]] +[[[7],2],[5,[5,[10,7,6,1,10],[10,0,3]],[[5,4],4,[10,8,8,4,9],3],[[4,5,5],[6,6,6]]],[4,[],5]] + diff --git a/lib.py b/lib.py new file mode 100644 index 0000000..6e4715b --- /dev/null +++ b/lib.py @@ -0,0 +1,18 @@ +import re + +def str_to_single_int(line: str) -> int: + line = line.replace(" ", "") + r = re.compile(r"\d+") + for m in r.findall(line): + return int(m) + raise Exception("No single digit sequence in '{line}'") + +def str_to_int_list(line: str) -> list[int]: + r = re.compile(r"\d+") + return list(map(int, r.findall(line))) + +def str_to_lines_no_empty(text: str) -> list[str]: + return list(filter(lambda l: l.strip() != "", text.splitlines())) + +def str_to_lines(text: str) -> list[str]: + return list(text.splitlines())