commit e122452f9e03b2d4d59d1baace8ede47f75afa1f Author: Fedor Lyanguzov Date: Sun Dec 4 15:25:37 2022 +0300 1-4 diff --git a/02/02.py b/02/02.py new file mode 100644 index 0000000..a121c00 --- /dev/null +++ b/02/02.py @@ -0,0 +1,30 @@ + + + +with open("input.py") as file: + l = [x.split() for x in file.read().strip().split('\n')] + +d = { + ("A", "X"): 1+3, + ("A", "Y"): 2+6, + ("A", "Z"): 3+0, + ("B", "X"): 1+0, + ("B", "Y"): 2+3, + ("B", "Z"): 3+6, + ("C", "X"): 1+6, + ("C", "Y"): 2+0, + ("C", "Z"): 3+3, + } +d2 = { + ("A", "X"): 3+0, + ("A", "Y"): 1+3, + ("A", "Z"): 2+6, + ("B", "X"): 1+0, + ("B", "Y"): 2+3, + ("B", "Z"): 3+6, + ("C", "X"): 2+0, + ("C", "Y"): 3+3, + ("C", "Z"): 1+6, + } + +print(sum(map(lambda x: d2[tuple(x)], l))) diff --git a/02/input.py b/02/input.py new file mode 100644 index 0000000..6b75281 --- /dev/null +++ b/02/input.py @@ -0,0 +1,2500 @@ +A Y +A Z +A X +B X +A Y +B Y +B Y +A X +A Z +A X +A X +A X +B X +B X +B X +B X +C Z +B Z +B Y +B X +A X +A Y +B X +B X +B X +B Z +B X +B X +B X +B Z +B Z +A X +A X +C X +B X +B X +B X +A X +B X +B X +A Z +B X +B X +B X +B Z +B X +A X +B X +B Z +B X +B X +B Z +A Z +B X +B X +B X +A X +C Z +A X +A X +C Y +A X +B X +B X +B X +A X +B X +B X +A X +C X +B Y +A Z +A Y +B Z +B Z +C X +B Y +A X +B Y +A Y +B X +C X +B X +B X +C X +B X +A X +B X +B X +A Y +A X +B X +B Z +A Z +B Z +B Y +A Y +B Z +B X +B X +B X +A Z +B X +B X +A X +A Y +B X +B Z +B X +B X +B Y +B X +C X +B Z +C X +B Z +B X +A Y +B X +A Z +C Y +B Z +B Y +B X +A X +A Y +A X +B Z +B Z +A Z +B X +B Z +B X +A Y +B Z +B X +B Z +C X +B X +B X +B X +B Z +B Y +C Z +A X +B Y +B X +B X +B Z +B X +B Z +B X +A X +B Z +B Z +B Z +B Y +B X +C Z +B X +B Y +A X +B X +B Z +A X +B X +B X +B Z +B X +B Z +B Y +B Y +B Z +A X +B X +B Y +A Y +A Y +C X +B Z +B X +B X +A Y +C Y +B X +A Z +A Y +B Z +B X +B X +B Z +A Y +B X +B Z +A Y +B Z +B X +B X +A X +B Z +A X +B X +B Z +A X +B X +A X +A X +B X +A Y +B Z +B X +B Y +B X +B X +A Y +A X +C X +A Z +B Y +B Z +C X +B X +B Z +B Z +B Z +B X +B X +C X +C X +C Y +A Z +B X +A X +A Z +A X +B Y +A Z +B Z +B X +B Y +B X +C Z +A Y +B X +A X +B Z +B Z +A Z +A X +A X +B X +B Y +B Y +B Z +B X +B Z +A X +B X +B X +A X +A Y +A Z +B Z +B X +B Z +B X +A X +C Z +B X +A Z +B X +B X +B Z +B X +B Z +B X +B X +A Z +B Z +B X +C X +B X +A X +B X +C X +B X +B X +B X +B X +B X +A X +A Z +A X +B Z +C Z +B X +A Z +C Y +B Z +B Z +B X +A Z +B X +A Z +B Y +B X +A X +B X +B X +B X +A Z +B X +C X +B Y +C X +B Y +B X +B X +B Z +A X +B X +A Y +A Y +A Y +A Y +A Y +B X +A X +B X +A Z +A Z +B Y +A Z +A Y +A X +B X +A Z +A X +A X +B Z +B Z +A Z +B Z +B X +B X +A X +B X +B X +B X +A X +B X +C Z +A Z +A X +A X +B X +B X +B X +B X +A X +A X +A X +B Y +B Y +B X +A X +A Y +A Y +B X +A X +B X +A X +A Z +B Z +B X +B X +A Y +C X +C X +A Y +B X +B Z +B X +B X +A Z +C X +C X +B X +B X +C X +B X +B X +B X +B Y +B X +A Y +B X +A Y +B Z +B X +B X +B X +B X +A X +B X +B X +B X +B X +B Y +B Y +B Z +A Y +B X +B Z +A X +B X +A X +A Y +B Y +B X +B X +C Z +B X +A Z +C Y +B Z +C Z +A X +B X +A X +A Z +A X +A X +A Y +B X +B X +B Y +A X +B Z +B Z +B X +B Y +C X +B X +B X +B X +A X +C X +A Y +B Z +B X +B Z +B Y +C Y +A X +C Z +A X +B X +A Y +B Z +C X +B Z +B X +A X +A Z +B X +C Y +A X +B X +B X +B Z +B Z +B X +A X +A X +B X +B Z +A X +A Z +A Z +A Y +A Z +B X +C Z +A Y +B X +B Z +B X +B X +B X +B Z +A X +B X +A X +B Y +B Y +B X +C Z +A X +A X +A X +B X +B X +B X +B X +A Z +B X +B X +B Y +A X +B Z +C X +A Y +B X +A Y +A Y +B X +C X +C X +B Z +B Z +B Z +B X +B Y +A Y +B Z +B X +C Z +B Z +A Z +A X +A Z +A X +B X +B Z +B X +B X +A Z +B Z +C Y +B Z +B X +B X +A X +A X +C X +B X +C Z +B Z +B X +A Y +B Z +B X +B X +A Z +A X +B X +A X +A X +A X +A Z +C Y +B X +B X +A X +B X +B Y +B Y +B X +B X +B X +C Z +B X +B X +C Z +B Z +A X +C Y +A X +A X +A X +A X +B X +A X +C Y +B Z +A X +B X +B Y +C X +B Z +A X +B X +B Y +B X +C Y +A X +B Z +B Y +B X +B X +B Z +B X +B Y +B Z +B X +C X +B Y +B X +B Z +B Z +B Z +B X +B X +B X +B Y +A Y +B X +B X +B X +B Z +B Y +C X +C X +C Z +B X +A X +B X +B Z +B Z +B Z +A Z +A Y +B X +A X +A Z +B Y +A X +B X +A Y +A X +B X +B Z +A X +A X +A Z +B X +B X +A X +B Y +B X +B Z +A Y +B X +A X +B X +B X +B X +A Y +B X +B X +B Z +C X +C Y +B X +A X +B Y +B X +B X +B Y +B X +B Z +B Y +C X +B Y +B X +C Y +A Z +C X +B X +B Z +A X +B X +B X +B X +B X +A Y +C Z +B X +B X +B Z +A Y +B X +B Y +A X +C X +B X +A Y +A X +B X +B X +B X +B Y +A X +C X +B X +A X +B X +B Z +C Z +A X +A X +B X +A X +C X +A X +B Z +B X +B X +B X +A Y +A Z +B X +C X +B Y +B Z +A Z +A Y +B Y +A Y +B X +B X +C X +B X +A X +B X +B Z +A Y +B Z +A X +B X +A Y +B X +B X +B X +B Z +B X +B X +A X +B X +B X +B X +B X +C X +A Y +A Z +B Z +A X +A Z +A X +B Z +B Z +B X +B X +B X +A X +B X +B Y +A X +B X +C X +A Z +B X +B X +C Z +B X +B Z +A Y +A X +A Y +A X +B X +B Y +B Z +B X +B X +B X +B Z +B Z +A X +A X +B X +B Z +A X +A Y +A Y +A X +B X +A Z +B X +A Y +B Z +A X +C X +B X +B X +A X +B X +C X +B Z +B X +B X +C X +A Y +B X +B X +B Z +B X +A Y +B Z +C Z +B Y +B X +A Y +B X +B X +B X +B X +C X +A Y +B X +B Z +B X +B X +C Z +A X +B X +A Y +A X +B X +B X +A X +A Z +C X +A X +A Y +A Y +B Z +A X +B Z +B X +B Y +A Z +A X +A X +A Y +C Z +B X +A Y +B Z +B X +B X +B Z +B X +A Z +C Z +B Z +A Z +B X +A X +B Z +A X +B X +B Z +B X +A X +B Y +A Z +A Z +B X +B Z +A Y +B Z +A Y +B X +C X +A Y +B Z +A X +B X +B X +C X +B Y +B Z +B Z +B X +A X +A X +B X +A X +C Y +A Y +A X +A Z +A X +A X +B X +B X +B X +B Y +C Y +A X +B X +B X +B X +B X +B X +C Y +A Z +B X +A X +A X +A Z +A Y +C X +A Z +B X +B X +B X +A X +B Z +B X +C Z +A Y +B X +A Y +B Y +B X +A Y +B Z +B X +B Z +B X +A Y +B Y +B Y +A X +B X +C Z +B Z +B Z +B X +A Z +C X +B Z +C Y +B X +A Y +A X +B X +A X +B Z +A Y +B Y +B Y +B X +C X +C X +A Y +A Z +B X +B X +B X +B X +C X +B X +C X +B X +B Z +A X +A X +B X +A Y +B Z +B X +A X +B X +B X +A Z +C X +B Z +C X +A X +B Z +C X +B X +B Z +A X +C X +A Y +A X +A X +A Y +B Y +B X +B X +B X +B Y +B X +A Y +B X +A X +B X +C X +B X +B X +B X +B X +B X +A X +C X +C Z +B X +B X +B Z +B Z +A X +B Y +B X +B X +A Y +B X +B Z +A X +A X +C X +B X +B X +C X +B X +B X +B X +A X +A X +C X +B X +B X +B Z +B Z +A Z +B X +A X +A X +B X +B Y +A X +B X +B X +A X +B X +B X +B X +B X +A Y +A X +B X +A X +B X +A Z +A Y +B X +B X +A Z +B Z +B X +B X +B X +B X +A X +B X +B X +B X +A Y +C Y +A X +B Z +A X +B X +B X +B X +B Y +C X +A X +B Z +B X +C X +A X +A X +A Y +B Z +B X +B X +B Z +C Z +B X +B Z +B X +A X +A Y +A Y +B Z +B X +C Y +B X +B Z +A Y +B Z +A Y +B Y +B X +C Z +B X +A X +A Z +B Z +C X +A Y +C X +A Y +B Y +B X +C X +A X +A Y +A Y +B X +A Z +A Z +A Z +B X +A Z +B Z +A X +B X +A Y +A Z +A X +B X +A Y +B X +B X +B Z +A X +B X +B Y +C Y +B Y +B X +C Y +A X +C Y +A Z +A Y +B Z +B X +A X +C X +B X +C Z +C Y +B Z +B X +C X +B Z +B X +C X +B Z +B Z +C X +B X +B Z +A X +A Y +C Y +B X +A Y +A Y +A Z +B X +B Z +A Y +B Y +A Z +B X +B Y +A Y +B Y +A X +A Y +B Z +A Y +B Z +B Z +B X +B X +C Z +A Y +A Y +B Y +B Z +B Z +A X +B X +A Y +C Z +B X +B Z +B X +B Z +B X +C X +A X +B Z +A X +B Z +C X +B X +A X +A X +A Y +B X +B Z +B X +A X +B Z +B Z +B Y +B Z +C Y +B X +B X +B X +A X +B X +C Z +B X +C Z +A X +B Y +B X +C Y +C X +B X +B X +B Z +B Z +B X +B X +B Z +B X +B Y +A X +B X +A X +C Z +B X +B Z +B X +B X +B X +A X +A X +A Y +B Z +C X +B X +C Y +A Y +B Y +B Y +A X +B Z +B X +A Y +B Z +B Z +A X +B Z +B Y +C X +C X +B X +B X +B Y +B Y +B Y +A X +B X +B X +A Y +B Z +A X +A Z +A Y +A Z +B Z +B Z +A Y +A X +A X +B X +B Z +A Y +B X +A Y +B X +B X +A Y +B X +B X +B Z +C X +A Y +B X +B X +C Y +B Y +B X +B X +B X +A X +B X +A Z +B X +A Z +B Z +A Y +B X +C X +B X +A X +A Z +B Z +B Z +B X +B X +C X +B X +B Z +B X +B Z +B X +B X +A Y +B X +B Y +B X +B X +B Y +B X +B Z +B X +B Z +A X +A Y +B Y +A X +B X +A X +B X +A X +A Y +B Y +B Y +B X +B X +B Z +A X +B X +A X +A X +A Y +B X +A Y +A X +A Y +B Y +B Z +B X +A X +B X +B X +A Y +A Z +B X +A Z +B X +B X +C Z +B Z +B Z +B Y +A Z +B Z +A Z +B Y +B X +C Z +A Z +B Z +A X +B X +B X +B X +C Y +C Z +B Z +C Z +B X +B X +B X +B X +B X +A X +A Z +B X +A X +B X +C Z +B Z +B X +A Z +A X +B X +A X +B X +A Y +B X +A X +A Y +C X +B X +C X +A Z +C Z +B X +C X +B Z +A X +B X +B X +B Z +A Y +A Z +B Z +B X +A X +C Y +B Z +B Z +B X +B X +A X +B X +A Y +B X +B Y +A Z +B X +B X +A Z +A X +B Y +B Z +B X +B X +C X +B Z +A X +B X +A Z +B X +B X +B X +B X +B X +B X +B Z +A X +B X +B X +B X +B X +B Z +B Z +A Y +B X +C Y +B Z +B Z +A Z +B Z +C Y +B X +B Y +A X +A X +A Z +B X +B Y +C X +B Z +B X +B X +B X +B Z +B X +B X +C Y +C X +A X +B X +B Y +B X +B X +A Y +A X +B X +A X +B X +A Z +B X +C Y +C Y +A Y +B Z +C Y +C Y +C X +C Y +C Z +C X +B X +B X +B X +B Y +B X +A Y +C Y +B X +B X +A Z +B X +B X +B X +C Z +B Y +A Z +C Z +B X +B Z +A X +B X +B Z +B X +B X +B Z +A Y +B Z +A X +A X +B X +B X +B X +B X +A Y +A Z +B X +B Z +B Z +B Z +B X +B X +B Y +A Y +B X +C Y +B Z +B Y +B Z +B X +C Y +B Z +A X +B X +A X +B Z +B Y +B X +B Z +C Y +A Y +B X +C Y +C Y +A X +A X +A X +A X +B X +B X +A Y +A Z +B Y +B Z +B X +B X +B X +B Y +B Y +A X +B Y +B X +B Z +B X +B Z +B X +A X +B X +B X +B Y +B X +B Z +B Z +B X +B X +B X +B X +B Z +B X +B Z +A Z +B X +B X +B X +B Y +A X +B Z +A X +C Y +B Y +B Z +C X +C X +B Z +B Z +C X +A X +B X +A X +B X +B X +A Z +B X +A Y +A X +A X +B Y +A Y +A Y +C X +A X +B X +B Y +B Y +A Y +A X +C Y +A Y +B Z +B X +B Y +B Z +A Y +A Y +B Z +A X +C X +A Z +B X +B X +B X +B X +A X +A Y +B X +B X +B Z +A Y +A Y +C Z +B Z +B Y +A Y +A X +C X +A Y +B X +C X +A X +A Z +B X +A X +B X +B Z +C X +B X +A Y +B X +B Z +B X +B X +B X +C X +B X +C Y +B Z +B Z +B X +B X +B Z +C X +B X +B X +A Z +B X +A Y +B X +B Y +B Z +A X +A Z +A X +B X +B Z +B Z +B X +A Y +B Z +B X +C Y +A X +A Y +A Y +B Z +B X +A X +A Y +C X +A Y +A X +B X +B X +A X +C X +B Z +A X +B Y +B X +A X +C Z +C X +B Z +A X +B X +B Y +B X +B X +A Y +B Y +A X +A X +A Z +B X +A Z +A X +B X +A X +B Z +A X +A X +A X +B X +A Y +B X +B Z +C Z +B X +A X +B X +C Z +B X +B Z +A X +C X +B X +B X +A X +B X +B Z +A X +C X +B Z +B X +B X +B X +B X +B X +A Y +C Y +B Z +C Z +B X +A X +A X +A Y +B X +B X +C Y +B X +C Z +A X +B X +A Y +B X +B X +A X +C X +B X +C Y +B X +C Y +A X +B X +B Y +C Y +B Z +B X +A X +B X +B X +B Y +A X +B X +A Z +A Y +A X +A Z +B X +A Y +C Y +B Z +C Y +B X +B X +A Y +C X +C Z +B Z +B X +B X +A Y +B X +B Y +A X +A X +B X +B Z +A Y +A Y +A Y +B X +B X +C X +B Y +B X +A Y +A X +C X +B X +B Z +A Z +B Z +A Y +B Z +A X +B X +B X +B X +B Y +C Z +B Y +B X +A X +B X +A X +A Z +B Z +B X +B X +B X +C X +C Z +B Z +A X +B X +B X +A Y +B X +B Z +A X +B X +A X +A X +C Y +B Z +A X +A X +B Y +B X +A Y +B Y +C X +B Z +A X +A Z +B X +B X +A X +B X +A Y +A X +C X +B X +A X +C X +B Z +B X +A X +A Z +B X +B X +B Z +B X +B Z +C X +B Z +A X +A X +B X +B X +B Y +B X +B X +B Z +A Y +A X +C X +A X +B X +A Z +B X +A X +A X +B X +A X +B X +B X +A Y +A Y +A X +B X +B Z +C X +A X +B X +B X +B Z +B X +B X +A Z +B Z +B Z +B X +B Y +C X +B Z +A X +B X +B X +B Z +A Y +B X +B X +B X +B X +B X +C X +C Y +A Z +B X +C Y +A Y +C X +B X +B X +B Z +B X +B X +A X +A X +A Z +C Y +B X +B X +A Y +B Z +B Z +A X +A Z +C X +B X +B X +B X +B X +A X +C X +B Z +B X +A X +A X +A Y +B X +B X +A Z +C X +B X +A X +B Z +A X +B Y +B X +B X +A Y +C Y +B Z +A X +A Z +A Y +C Y +B X +C X +B X +B Y +B X +B Z +A X +C Y +A Y +B Z +B X +A X +C Z +B X +B Z +A X +C Y +B Y +B X +B X +A Y +B X +B Z +B X +B Z +B X +B Z +A Y +A X +B X +B X +A Y +C X +A X +C X +B X +B X +B X +A X +B Z +B Z +C Z +B Z +A X +A X +B Z +C X +A Z +A Y +B Y +B X +A X +A Y +A X +A Z +B X +B X +B Z +B Z +A Y +B X +B X +B Z +B X +A X +C X +B X +B X +B Y +A X +B X +B X +C Z +B X +B Z +B X +B Y +B X +B X +A X +A Y +A Y +B X +A X +A Z +B Z +B Z +B X +B X +B Z +B X +A Z +B X +A X +C X +B X +B X +B Z +B X +A X +B Z +B X +B Z +C Y +B X +B X +B X +B Z +C X +B X +B X +B Y +B Z +B X +C Y +A Y +C X +A X +B X +A X +B Z +B X +B X +A Y +C Z +A X +B Y +A X +B Z +B X +C Z +B X +C Z +A X +B X +A X +B X +A Y +B X +B Z +B X +B Z +C Z +B X +B X +A Z +A X +A X +B X +A X +B X +B X +B X +B X +A X +B Z +B X +A X +B Z +C Y +C Z +A X +B X +B X +B Z +B Z +A X +A Y +B X +A Y +B X +B X +C X +B Z +B Y +B Z +B Z +A Y +C X +B Y +B X +B X +A Z +B X +B Y +C X +B Y +C Y +B X +B X +C Y +A Z +C X +B X +C X +A Y +B X +C Z +B Z +B X +B Y +A Y +A X +B X +C Y +C X +A X +B X +B X +A X +B X +B X +C X +C Y +A Z +C X +A X +C X +B X +A Y +B X +A Y +C X +B X +C Z +C X +B Z +B X +B X +A X +A X +A Y +B Y +B Y +A Y +C Z +A Y +A X +B Z +B X +B X +C X +B X +C X +A Y +B Z +B X +A Y +A Y +C X +A Y +B Z +B Z +A X +B X +A Y +B Y +B X +A Z +B X +B X +B Z +C X +B X +C X +B X +B X +C X +A X +A Y +B X +A Y +C Z +C X +A Z +B X +B X +B X +A X +B X +B Y +B X +B Z +B X +A Y +B X +B X +B X +B X +B Y +B Y +B Z +C X +A Y +C X +B Y +B X +B Y +B X +A X +B Z +B Z +B X +A Z +C X +A X +B Z +B Y +A Y +B X +B X +B X +A X +B X +A Y +A X +B X +B Z +B X +A X +A Y +B X +B X +A X +B Z +A Z +A X +A Y +C X +A Z +B X +B X +A X +B Z +B Z +A X +A Y +B X +B Z +B X +A Y +B Y +A Y +B X +B X +A X +B X +A X +B X +C Z +A X +B X +C Z +A X +A X +B X +A X +A X +C Z +B Z +B X +B Z +A X +B Z +B X +B X +B X +A Z +B X +B X +B Z +A X +A Y +B X +A X +C X +A Y +A X +B X +B X +B Y +A Y +B X +A Y +A Z +B Z +B Z +B Z +B X +B X +A Y +A Z +B X +B X +B X +B X +B X +A Z +A Z +B X +B X +B X +B X +A X +B X +A X +B X +B Z +C X +A X +B X +C Z +B X +B X +B X +A X +A Z +B Z +C X +A X +B X +C X +B X +A X +C Z +A Z +A Y +B X +C X +B X +C X +B X +B Y +B Z +A X +B X +B X +A X +A Z +B Z diff --git a/03/03.py b/03/03.py new file mode 100644 index 0000000..e9b7675 --- /dev/null +++ b/03/03.py @@ -0,0 +1,14 @@ +with open("input.py") as file: + l = file.read().strip().split('\n') +from string import ascii_letters +d = {l:i for i, l in enumerate(ascii_letters, 1)} +def f(x): + l = len(x)//2 + a = set(x[:l]) + b = set(x[l:]) + return list(a.intersection(b))[0] +print(sum(d[x] for x in map(f, l))) +def f2(x): + a, b, c = x + return list(set(a).intersection(set(b)).intersection(set(c)))[0] +print(sum(d[x] for x in map(f2, zip(l[::3],l[1::3],l[2::3])))) diff --git a/03/input.py b/03/input.py new file mode 100644 index 0000000..6599ac3 --- /dev/null +++ b/03/input.py @@ -0,0 +1,300 @@ +CjhshBJCSrTTsLwqwqwb +GtmnFHlDfcpHbLZjtTTRLWwb +fDfNHHjVFNvvrvVBJJdS +PPWvWQjPhrPQwlMWJJdMDGbJTdCJ +rsqsStgNNggBNBZHSrJGdJdCFRRZCFbGbTdJ +qgBqqHzzggBpzSnBNqNSSSgcfhrVlVmwPljQVLVwVvQmmzVl +bBBGBfmGvBTnGtGJBtGpcJbZrrddjqrZhDldwdcqrjrjDr +HWPSQMsPHFsMWPVVMVSHCwDCDwwZZvwjwQZZwjdd +vVHPgHHFRLfpfJTLLtJL +LWLZhDBHhWWHjBwHwBjCTrBnnrQTQCJTJpTQBQ +vvdcqbRmvwSFmRqPFSqwdvtQnrpCQJpNNVnrptVCtCCP +wRSffqlFgvvdgdlzhLWWDzLljZhhGL +LNbTbPdTNgnShgSjmHcqtQGCtrctCPcQqc +vzWZDZZBlDwlzvDRZfFBRzVBtMMGHCcpjrqBGMtQQppqHtCq +DfRvFZjZRsRjlVWsjFlWVWvdSdbhsSmnSngTdTSTsJdSLm +nnZRbfZRTZfRsbZTFPRfpbRJdqqQNPwNqvvwvvvSwdQqdS +WjDzjMWMHpQwcSQWcJSS +hrHhHDgpphmjtMrGLDmGgmnbsflbfZCsnsClltsVsfRR +QFngsFnGdLGFGVRgLLqWPQPWvBrMDppCPrDB +NfcHZZzbHthSZtNtNfhHWhClDvCqlrqBvrCpWMWB +fSMSHjbTMVgVVngVgT +llnMffwbvCnffHvJJPJpPBNVVZDJDmmS +QssGGHhRgcqjRRTWGWRGDZcVFZBpNBmPFBDSmZNP +hzsRHWQshzgRjjsgQRTsbwzCtnrrlnrwzMCtvMff +HdddHHmtDMDTqHHSftmqdmfdssGzrsjVGtrllWlGZGsnlnnp +BQNPNPgPhBBhCJQhbCgCnrrnbZnlWznzpGssllVW +LFNZRvCPCFZmHmTLcwdwcq +zQRDChCnVhqRllpzQlzqCVVzPvNHTTFFHlNPsPNvTBPBHBFT +wcfdfDmfPHjdsHPs +cwGMwMMbwbmwJZfDSMmfwcpRVWzQqnnnzGVVnhqRVCph +CScCSPcPszFJWSMjGZHMpGMjvG +TTQfQvBTVBfrDVRDVqGMmjZqnpnGmMpnnpZZ +NDdbrQdVQDNNfvTVNdBfrDBJFcsLWcCJzWFCcFLbFcFJsc +WWdzhpHcHHrtzGBJMwmjJGmBtP +CqsgqNrVnlCBCvPjCBmPJm +LDDDLnVsqsgTQsgFcQzbQdprbWHzdb +nFpNPGLGrntlrFLpflfBTcJwSgwQvGwbgSvbvJvT +DHZWmMDZZDHPMHsDJQbbgSJcvbQgjwJM +CRdzzdDDVRHWWNlPfPzllnFLlL +ZJVqGSVCJCSgdSvtjtvcjcjbNl +pmDWFnDFMnDdFLDHffjcbjjtBNctBjBMbMcl +dLnfmdLLmrWsgZqCThgssgsq +CLsvLLQvrlrrpLpw +tmTHnNtgmzgWmpjlpjnwrrlRjw +WHgTdmNJmJTDDrtFWsVGQqBQqcCCbhdvCB +jwCHwmWRTWRWJwfcgVgflvPqPBPH +MpphdbZZpZMNZpsdpZLMgjBlBqDvLPjfLVPBgPfv +ZdrZsjQbnMCGwrRwzmTr +CMDsWppsfhjNNzzzcBrbPgnrrnVBQHBNrV +ZmGdTdvtStFDtTvtBHgPHnPHgnrnHVmH +ZtLZdwdGqtZqLTLtwvfjDWcRscqMCDsCfWjf +QQPPfPjLNLfSShfNRSRrrGHzvHrvlvnHRDJJ +WCMJJVBwbGCbnbCl +gBJmTBBMchsSjgfS +NvCQGNRQQrWRpWhhvQrNLgrJqTVzzLFZsJqJZFcJTqFMJJ +ttdBllbCSdcsJVVVzVMb +CnwfwwdlnPGQgpnPvv +WQmnmBBmWRCgDpndbD +SvjsqGGqTSTdbggS +lZbFJqLjvHZrcZNHcc +gcgQhclQlntnnvBMZlwffTBLwv +JqzNpqbmpJCbbzCfNFFqfWpZvDVTqBMTrTLvrTMTrvrZTT +NbJWCpRWSFWNWJCzmRNRdchcdHcchnfncnhntcdjng +JvDwhPWPzvzPDggWlvCQgPtHgtGnHtNqLqTnHTHHnnVg +jBsfcbpdQsRcsSpRcjZjHNGtnnVncVtqTVVNVNNT +prBbsjQdSbZdSFwMzrhPMWwzwlvC +SStQfWQmJQjjhphQ +sMVTwvLTswLwwqMPnnhglbHgglPh +RDrRVrVCsrssBFWffFCZthfNFN +ZnpgzcqgmhHtfwSDwplwVV +QCrBNLdLrrnSVSrl +LQQLLLjTBjGWnNBBGLFZbGgMcsMsZzbgbZZgsZ +ZnbzbhqPbMrnDGjtQGSRVVMGpf +gFdTlNJFGVGChJCt +HgswWLNdhwTTwWsNNvzPmbvbcZbrsbrmzP +SHpDqcJvBmJgJJHgDphHmvhTddWlLsZTTdFWMMsWtthZ +GPrRCPfRfjjwffjrrnPVPsTLZFwLWMzLdTsTFzzFWT +QPfZVNfbfQnRVjCRrPJBvSJgpDSDBHNgBJpB +mjpcZcHcrqjrNmNpNmptHNHWwvCwgwCgMmQgRQsRMgwMvnCg +DfSfFSVtDSTJVfdGJMwPnMRwnRCPQgMR +DDfzDVdbTbzVDDtrtqlHptqbjbql +lsBgqLqhqqgBBvGLBwQJJHRpJCJDHMwhwz +NCVfntPnVnfrZtfdbTntnnWDDMDwwRRJmJDWRWJmHRzpJD +ZrZbtbSZfdNVfbtCrbPTndsFvFLFSqcGLBFgvgjsgcqj +gwRCCDmlZtPDdtBBPM +VLrjccJVcJTfTtLjscVBHjHPjPQQSPpBHMjBhP +rfcJrzvvctrscvzRqGRCZvmqbmwqZw +nffqBWfRfRnpBfznpWTpTlWNNbcrDcbGbPhrGVwGlllPGN +MsJQsmQLjMMFsmjbPZNcNbrbmGVhZZ +LCJsFSsJFMFpfrTBWSvqpB +vSspfvprpTNTZNTj +LlFQCtnwMqqSmCMPmMSwClCJhBDJZZJZZjBTjQNjJbdjTT +PHtwMLPqCHsfVRGvSR +HjLDQMjtRvTmfTfmtf +BddChcvvhwhqgmqTfnSmdg +NBVVZJhZVhZsJJzhJZNHrRMPbQvHrjPvPDRvRN +GgwtwntLQmNjvRGJGv +wwzWzrzrqWjRlhJrNlrj +wBWSCMPMcdnHsTHPsn +MggMDDJzdbvsjCJvWJnJ +THBGGScfHwHqHGTGTBqfSWCsnWBCbvsbshjRnZWZCn +HwltftNGtmHHGqNlGmfPrVDDgzpVplpzDpVPbP +shMdsCMpQMCZMQsZQVDJnvvPpPLSvLSLLV +RmgzGTGRmClLNCvzVn +rCrRftmftWjbTttjcdFZBcjdsFqZQFjZ +qLwvNLtLvPGqSltLLqvNSpflMfQfMpMnBBggslMpfB +VDcVzzDRRVTDgMPBBgdfQD +VVWrcHbVzrzVjHPNqSmtqJJwjLGN +nBswlBBhntTttbFVnt +JNjTHZvLHDLVVLtCCFFPLz +THvNddgZWQNDNZgjZSfGwfsBrhmfGBhcWs +cCSbPmJqwqJjgJtTzJZT +BpBTFFTQZzQgNgZv +sFRVpsfrfrLfslwTcTccwcnCcTRC +DLjLwDPjVPnWWvVWVjcqzSCJTzSzMTtSrqRqJn +bdNGgmbGHdZdHbSRqrTJzrMtTR +dhGmFffGQsWjshcVpt +TrGzZpzWhCHcPPpF +sqsJqtlqDVDJVJttgNSbsQPfcjQcBQjhFFRSPQHFRc +VgqbtllbdvNtDdLZrHWGmwdrLM +DNrqBvvZZNDDHBFJmMNbLMRctztznRsbds +hlSlPPWfQCChPtWWfjTwLzbdRcbMsbMjnRLsgzsz +PCfWwlQpTTVmmtqmVGrvmt +lLrlLRbgrjRbRjFlRrnRRdgPdWdCwdWqmWPwqScdPc +tDZLNGHsNQZDNBGHTCVSddVCPwVqVtcdWV +BhGLBNvhHDTZDjfRvbfjljbbJf +McRctHfDctZGlZZWgpcW +TTQLQqLSLqTqhdLqPzLqLwrpsGpWVGFZGrlgWZGhFllV +QNdzbQgzSvqPzqNqvnnbtfbRfDntCfMRjn +bHQvFvffjpVvPSTvVm +RDLRRDLBnVbsDsqDSb +MtGGtJJnwnLltblMFCHfQcthjNfjHCQN +FQfFldFCSRRFQSQmLVfRGwGDDGZDhDGwmmhZtthZ +cTpscpCcNzNNvCBgbPPwvZGZggbghb +TNzznnccTjTspHWNzCTpNlRRQnlfdVFVfLLJFrFJQQ +LsMMLCQQQMTJnJMnsJlGlZJNvbNVGNNSDJ +fhcBqmfvmtRftcmfVVNNVbZSSDVGZmgG +BztFRjFjBchWzhvWTHWTMCdwTdTQnH +cpddMRdHTSNRtRztbG +mWvrQnQFhFNtsSNV +vrBnlLvWvlPCCnrrmBrnQQLmTMHwHHccMgggTNjdcDwjNgCw +hlRhqRnQQHcbBHGVVgRLVmrRgrLR +sCFMTMwtzFMzTwCsswWjCsdQJmJLGfrrgLfgPmPVVVmtLP +TMDjCFMTHShBQSDB +fcpssfGWpRDnvDRWvD +LMvQlPLtLQZbQjBqZBFnCRFZRFzR +jlQrvjlbjbLffpdpdrmGwr +hbRTjRRZthvSDvDn +LGrwPfrGfLjqvBsHzBrvstBv +mpCLCqqqLcwcwCLmLmwwdWgWgVVMTbbWbRdQVNjC +QLCqzhzQDqhHsCJjTcVdScccSVgs +NMPBBfwbmwmmGnfpTJJJcTrRjRJJddpr +mflmdfBBlnPBvBNGnwlGzhDqzHZzZtCLZqqltHtL +GGsFmSmFHHGZsqhSTQjlNQNzpptD +JfVJvvJfWMPPnVVJvhlNlltDldzpjpTzQn +LgLcwJffMMLcwPVvPMvsmRqTmbGGssgGssRRqG +ScnbPhwPHPTbwCGJBDtNZZPZDsttNB +FjfQlVVWrQgfQrrWfddnWfQlqJqJMNJBZJqsZtsJjJsvDjJq +lrVngVQpmmmrlnLGLLmTzchcwhHh +QZtDJqWZtWGmhJJjvVBP +crNMSpcdNNFcrdzlrsVGVnvhmnvHbjVjjrhV +NTszNMSpwTNFzcsTlsLRQLtWwZDDfQgZhggQ +mfmdLLLqsvZzjfPgPT +hppLhBNpHGrhHnQQhGMDhPbPbWzvZzbMzZFPbvbvgz +BNGGNLGcQpCcSstSRmct +mnjsJBjBRsmFsSRqqrGfrqqtrfrN +LZDHZZzdcdQzLbcgLwGtNVrlGrMVNfrllHrH +DPcZZzdQpZPzQQDpDdcpbcPgmBBBsnWfTBmnJmCsjjsPSTjJ +jwwHjCPvLVmhmRdJvr +gTBnbFGTTQMgnTbdbhHhrplhJdlV +DTScZTgSSnGTBFzjDwtLtDDHqwwL +RZWhWWRSgBRrdMRdCmtcdtLncHndqF +bssspTjbVDQGTVGTQsJpbvLtVmFLqqHgnLmCcFnmHC +DpfQJJQpDsGzzfDNhPBlPlMBNhghPZlW +VzJrJMBntJpMnBBJMDDGDQLLQwwDpQLGLG +WSFCWNWWWhQRzvNqLTRD +CbSlSlWHghChhWlcclgcWdHgfrmbmznnffMZMztrMbrJBBBJ +gtjBNTvDQNBPlBFlPFZPdP +mCmpfJCVmMzmfsHpCWdGPWCCWZGtSFtF +zJnhJnJzbbMMpnspmmfsJpLNgqtrjQvrTbTgLgtqgqLj +CLJnZZCJLJZJgZZZJMLSTgnRdFWpFdfFWBffpqDBfjFWQdRD +slNzNzzwwPQrfWmDmqBFWlDm +zwHhsVHwQcHJCgnngMZn +wLRLLddJLdZZZjHdRwgJsjqDVsDVSVGSscsVVmDq +tvMWfnhMvnvztzzVSVqqmcSSVsDGmW +TmhhpnnFlfMzMMRZRPTJRHwdPJZB +sLsQSLvcSrbQbFGlWlCD +BhgPBqBhPwmmpPlGhZMVCFFlbZGF +nCBBTPBHdHwmfCvTLStLJSctrJtt +vwNjwvBSSNndtdBJMJsLvZsJhZpPLM +TmCQDHGTVTLhPQhpZprq +CbCmmTzfVGfFGGCNbctwNPtcSnbjww +NWQQdHdTddhGrnJjqCRggvRmhzmm +wLLVHcFFFfwtFfJzqRvmRqzRVgVz +MlwFfflbLFfbwctDplwcwFMMNNWdWNTNSWDQQnsQNWWHsrQH +QlfbQrBjBQvfDBjhlpwpqbMzwWppGWqGwG +VJNcVCJgcntgRcsZWpPDPDqzPTqqnTpL +ZCRNRNmcJZCcNNVRmVdmHfjdrlfhSrvBDSfH +MzzPjGpjpGPPjdtHBfBNBQBrbtlclV +FqCnZcgcnFsWqmVHVHlgfBrbQVVb +STmCLFZWnTsWvdvSSdvPpGcP +lNjczlDNCSRMSmlR +VbhwhgwGQgwpvQpVDpSCbmfnCPfnMnmPmmBn +VhvGTdhwQwVVVsQQshjcDZdHdqzcDdJrjjzH +DhPffCSLCPCwfPPqqwqVjHFjzljppl +TBWBRWTMRBTTBTBdbQqztzQtWqzQFqbV +sgGTBGTGmNvrGfrz +hJgqGzqQmGQMQzgGmJGhJQSvZPfppjjPnZNTTTTpjWJvWp +lbwbRsRdbdmLdrllbbDcrHwwnjvjNfPWWZwWPjPjjZnTZZpf +dDDrdlDBHbDtVFSqmBShMMVF +ddvtMZJdJTtDvgtfZJfvtWZlHpGljLRcBcjplLwGRnnLGlGc +SNbFbrCNhQbrVQCQSCVzbLjBGRGRGwTBVwpnRGcHcw +bbhrTzrbrPrSQFrTTCmFQPCJmJqvJfZZWftZmZJqDvgfJv +vWLsTNNscttvNTLTLHRgcdqBnVSZVZVWVZqdSdJwwd +jDrFMhGPbGGFFPChDGpGBdngZMzVSSwZgJSqgMSV +bjjPQjphCPprhFrCCjFPDCTmcLgLtsTlmsNsQTtscQHt +PdhqLdNccGsrNLpScBnDznjnBnzppQwpHz +ftFtMbtfRMMWTvfRgRWbWMTjjzngzCzjzmDPjjwQDCDQmm +MRWVVfWfbFWWTbFWlvvRWPJGSLSLNJcPVsqJPcLSGr +fdRbPbHmnqvrvHDz +psTdcMgjjNpllVVgjJslMdpMhrttthznDttBWttBvWcnzBvh +gJjgVNFppjgCCVNsTTCsZbFwmmmmQGZSZLfwSZZd +csDFpcpJFbccqpFqpfggJJsljhvlTvQQtjwPTmjPPjRTtNvh +ZBGLddVCSVwNThhCQjPj +ZHLLLrSHGSBzWWzHWpgwcFbJsfcgJbsrgg +QJljRQLGJSNjMjQBLLJllFznzVCFpBnnzgwngpDCnD +mHWrTmWrdZHWvdrdWrdZttsFspFVcpzcwcggzpwzwVwDVp +vfzWvqTWWtPffWHqrWTZvTNSjRjQGGPPRbJbllQbMlJS +DFnFprBLpHcSlJHRBl +dbdMMCdsVWmMPlHSSVPVJfcf +sllvhgsdLThDnhQF +BSFTWCJWFJmBJdbcgDHgfDzHbncC +MjMPNjhlslPPLjPqPqVcDttzLBHcgDggDggDbB +MZhjMsBNNMhPrNjBrMhMPZWRmFmQFRRFFFQmWFQGFQ +NFgqSSrtlNbNffffffmFFZCf +WPvTBPPnBWmdJjCsPmVd +zBwhwwTRWwhvvzTvnhCTnCnSbbqlNStNbLltDRDHRHqtDR +NgggqJTHTJscdjggNVDVRcNHGLQWqpffZQGQGqpQWpWwQZfW +vvBPBhBFrzvnzSSrrSzPMtWZZcWGwmLnWQWpQlwGwpnl +rzbSCtrSttMctvvFMvrvPvgNJDRNHDsHNJsjTjsJJsVb +HbGVfpJbmbpHLBfHbdChRDDwDRhFlMlFVDFr +QzNQqcNgtqcNMjgqtntsgswRDDRQlFDSFQPDFRDwhCFR +ngscZtsqsznnnszqTnnqHfLWLWLWZmJpWMJGLBZb +cTNmqSbTBFhBQZjq +vswHWHWzHMMttvGGwgppttRfZFZjfBnQnfQZBhwQfhRB +lglsvMHHWHsWjHMtsvHvjWvTmJbCmcCcbCTcJlTmSmPSPT +JjSBbBLppbrvZGhhhvGwZNRtNMPCqCPqRgCFRNMgjP +lWlmDsdDnszRRwdCcNcdwd +TsDwwVTWsHTmTWVzQflQJbSGhZrZZQBhvBSrJZSr +JcrncrnrcZcGtJzfrrrzqbTWTlvW +SCRSDRPSLgRDCHdjjgmdDSHqQTzlmTNNVWbqfbvQzQlbfb +gpvpHHPPLdLRCSgjpLPtpZZMtnBMZJZBZBtMZs +lQSvJllvHBPPHPHWSPQQJtDtnhbwDDwwtwfhrrVw +MgLLdsMsgpRpTLLMgFrbFnfhNbbrhtwDwDDr +MqpTpqGRLpMgBzGPSvlhSBhW +NqpNNNPzhwzzshPwRPHWRmRFQWHDQPHD +VcbcnbjbbrrbbcnbZQDHmlRSVlvZWRFm +MttmjTtMrhqwhLhtdN +dMggwDwvMdqgqqtqwHnzVnmGmGtGRrFmsJrN +SlBClclffBPfZlssrGnJnZZzzznF +ljfTPplCpLcpBBPfTBfcCTbvbDMMFhqdvqWpMWHMDMpd +llTNZlhSvqMGlZMGhGgGlttrbVVwNjDbNFJbtjjDtN +fQWCBWQBBpBCsmzPmnmddQccwJtjdVbJDtDcrrjwjbFr +QzpQCRspPPPmzfppmmBBWLhgTZZTMRwSTgLlqvMqGG +HSfnNllsHThcchcJBjJhRL +FQQdzFCrFMbdFbrJBcqprcBrcBDqcB +mtmMFJJmnTfnsHvm +nddbfrBHdvbdBBhhhnWmtLsBGQCCtpmmMGPMQP +cwVVqVNggDgjZDFspptttQrsPgpttp +wDjczVZqSFDZVlSvrfhHlJHThh +CttLqSPLqLHhhCdGGTgdlZfclNlsfglbTg +nzFJpQJWVQjFmnmpjFWzVvBbMBTBNNTfTgZlTgFMNNZb +njDDWpVWQjQnzZzjJjnRRwCqPtLLrSqhSwCPCHqG +BFmNvfFNJRrdpMLLLVldWm +jPjGGwqsndHZqJqM +GtTSbjbtJjGQsQSSbPSGbzNgCRcCTCFhvfFgFFTBhfRc +rwBvGlDrBMSzMvGVSBwMSZgnJmmJqmcTTTmVCFJRcTgF +bbjpzLhHnFTLngLJ +zdHQdQQftWfNfNtsSvrsGBPGlswrlvDw +hdnMhghHZzFnZhDCCVTTTbtVmHmWbT +PQscSNcllJwzwbGmTmWVGm +sjprJpJjJNPpJBlpdFdgMzDDDhhvhd +SMwBWSBMPSfzqzPf +gJDlrFFQlgbFgvjDjTgrQQTGlhNNLdlqLGhNPqwPNPNfGf +jvwHQQjrjrJrppjvJpDFgDgHcsZZnnsVHsmMWCnsBsVVWZ +cblRJczlcBtBRCqNfGgHfpHCVHGp +WZWsLWmSPjMdWFGHTVNgLfvHqGDT +ZdmsFmZPmnZMsWWNsNjdmmmcQlrBQnBtQJtclBrtJwBzJz +wtMNCNwNqwtMMRnVcTlFtlcnFlsl +vrvrjzjZDDDwmwwVFT +jzrHjrrHjjLBPfQPjZBZzvpSMwCNRpRwSdRCNLqSShSR +BDgnhMDCDDpjDhBDJDfMSsLSZzCFTTLzTFLzTFZS +lrqrlmqbvtvWwVRtwlmrrqNvZlZSsLTTFTFZSPzZFzzTBFzz +HRRRbVmmwqhHHHhGJBcD +MvnmMvNjvvvmNnRcvzHgzMGtzhffHwHtwt +ZBBsFPPrTgCpSSBwHrLtwbHbLLtzLf +ZBZZssBdWRJgmgJdNn +TTLChzhDnjQLTDhTQJrzSbbJHsGrGrGFGb +BfvvpflfWVlVsFFvJHcFJFrJrt +ZwMBwwZPWMMpffflqlZMRnRNQLCNhPhDDNssnRQD diff --git a/04/04.py b/04/04.py new file mode 100644 index 0000000..6abdcb1 --- /dev/null +++ b/04/04.py @@ -0,0 +1,23 @@ + +with open("input.py") as file: + f = file.read().strip().split('\n') + +def convert(x): + a, b = x.split(',') + a1, a2 = a.split('-') + b1, b2 = b.split('-') + a1, a2, b1, b2 = map(int, [a1,a2,b1,b2]) + return ((a1, a2), (b1, b2)) +pairs = list(map(convert, f)) + +def contains(a, b): + a1, a2 = a + b1, b2 = b + return b1<=a1 and a2<=b2 +print(sum(1 for a, b in pairs if contains(a, b) or contains(b, a))) + +def overlap(a, b): + a1, a2 = a + b1, b2 = b + return b1<=a1<=b2 or b1<=a2<=b2 +print(sum(1 for a, b in pairs if overlap(a, b) or overlap(b, a))) diff --git a/04/input.py b/04/input.py new file mode 100644 index 0000000..3b72ab6 --- /dev/null +++ b/04/input.py @@ -0,0 +1,1000 @@ +22-65,22-66 +91-94,63-91 +6-88,5-31 +85-86,64-86 +40-65,40-65 +25-82,24-94 +68-69,68-92 +60-91,89-92 +3-72,3-73 +44-85,84-85 +15-72,14-72 +84-92,84-92 +10-84,3-10 +32-62,31-61 +14-98,98-99 +24-78,24-61 +2-5,5-89 +58-95,58-59 +39-93,92-93 +11-82,81-82 +12-37,13-58 +53-92,52-91 +1-19,3-18 +90-91,91-98 +20-72,19-71 +91-91,1-92 +71-90,71-93 +77-94,77-94 +48-76,48-76 +48-58,48-53 +3-42,2-14 +3-4,3-94 +4-9,7-8 +14-97,77-97 +66-66,17-65 +12-99,13-98 +29-74,30-74 +30-93,29-92 +43-44,42-46 +7-9,8-81 +21-77,1-89 +85-92,86-91 +56-72,73-73 +16-75,17-42 +2-85,1-85 +97-97,13-98 +3-94,3-33 +55-91,1-99 +14-21,14-15 +1-3,2-98 +43-57,43-56 +9-95,8-10 +18-80,81-92 +19-72,19-71 +17-94,62-86 +45-59,46-60 +73-88,46-87 +63-82,82-86 +63-88,87-98 +20-28,20-56 +76-76,70-75 +36-73,35-73 +85-91,85-90 +4-82,4-85 +2-2,1-98 +27-71,27-81 +13-79,13-14 +32-43,33-42 +53-97,98-99 +41-62,42-66 +23-78,23-77 +6-92,6-91 +1-86,1-85 +3-89,84-90 +5-79,78-80 +51-73,50-72 +48-81,49-82 +32-33,33-88 +4-97,4-97 +13-88,14-65 +33-74,32-75 +26-48,48-78 +1-46,16-33 +2-6,6-67 +5-93,5-93 +5-6,4-22 +68-83,38-84 +10-70,18-69 +10-77,70-76 +4-94,3-93 +22-95,21-99 +32-72,31-92 +30-75,29-74 +3-96,95-95 +96-96,61-81 +52-77,53-77 +1-2,1-94 +4-96,3-98 +29-58,30-56 +31-49,30-60 +33-79,27-80 +10-51,8-11 +8-36,8-36 +36-93,36-92 +9-60,10-15 +48-80,79-87 +39-41,40-49 +48-87,64-87 +30-34,2-57 +81-82,13-81 +3-15,15-99 +37-72,38-72 +10-85,5-84 +6-79,78-93 +75-80,76-84 +55-72,55-55 +8-66,9-9 +54-64,63-99 +6-77,7-48 +2-64,1-32 +31-91,90-90 +19-66,18-94 +58-75,26-76 +58-60,1-59 +90-90,87-91 +5-91,5-91 +67-67,3-66 +13-81,31-36 +31-61,23-60 +18-92,17-91 +85-86,15-86 +10-68,9-11 +52-85,12-84 +7-27,26-26 +43-50,21-50 +25-75,74-75 +7-7,6-24 +1-63,42-62 +11-12,11-66 +25-94,93-93 +13-48,31-47 +3-58,59-59 +1-54,1-1 +5-5,5-96 +59-70,7-71 +18-19,18-81 +9-96,10-84 +33-41,33-38 +1-99,1-98 +69-83,68-78 +19-82,8-81 +2-23,3-24 +57-90,57-98 +75-83,74-76 +68-68,16-69 +2-86,1-33 +5-92,6-14 +51-76,52-75 +25-72,24-46 +9-76,10-50 +5-51,23-52 +19-83,20-93 +33-69,44-70 +22-69,23-69 +55-61,40-62 +2-16,16-81 +66-98,66-96 +27-85,28-86 +43-93,88-94 +19-83,32-82 +2-92,26-52 +87-87,45-93 +40-81,97-99 +4-97,98-98 +19-95,6-20 +52-96,53-53 +2-34,2-97 +62-83,63-66 +9-74,8-81 +53-83,53-83 +35-73,11-72 +9-97,10-95 +9-51,10-50 +25-27,26-35 +45-60,45-46 +12-65,28-65 +40-92,40-91 +5-5,4-98 +72-91,90-91 +16-87,17-91 +97-97,18-96 +77-78,75-79 +22-48,32-47 +70-70,35-69 +45-98,99-99 +65-83,83-92 +2-95,4-88 +5-10,10-46 +4-84,50-85 +58-58,15-59 +11-80,3-22 +46-48,3-47 +29-80,30-30 +34-96,5-95 +65-97,32-96 +26-31,30-46 +12-12,12-77 +26-92,26-92 +29-92,29-90 +26-27,27-30 +4-30,3-29 +29-57,1-28 +99-99,42-97 +92-97,78-98 +3-90,46-91 +44-76,43-75 +24-28,10-25 +1-95,1-52 +3-3,3-61 +39-94,40-93 +41-86,75-94 +28-28,26-27 +21-94,21-97 +12-41,41-54 +4-49,3-5 +75-90,44-75 +4-83,78-82 +5-93,93-94 +33-90,89-90 +12-32,13-98 +41-99,98-99 +4-67,3-38 +95-95,11-95 +7-46,7-46 +11-18,18-24 +7-92,12-57 +60-91,90-91 +86-94,86-95 +11-58,57-57 +7-10,10-97 +1-46,3-46 +1-52,1-2 +16-94,74-93 +7-98,18-97 +8-76,8-74 +37-92,54-91 +63-86,88-96 +4-55,47-58 +70-92,91-95 +73-77,71-77 +3-99,5-99 +56-58,56-57 +53-73,13-74 +88-97,97-97 +52-63,51-60 +13-94,14-91 +2-93,3-99 +42-75,67-75 +38-39,38-88 +8-93,92-97 +13-32,17-31 +3-17,16-53 +1-1,3-95 +5-88,4-87 +76-89,47-77 +5-54,4-55 +45-95,90-96 +81-89,36-88 +31-36,32-60 +87-99,10-88 +17-89,47-88 +26-94,25-99 +43-90,42-43 +59-87,59-80 +34-43,37-41 +1-54,1-53 +2-91,2-3 +40-95,46-95 +8-14,14-55 +38-52,51-69 +16-62,15-63 +30-55,31-74 +46-59,10-74 +35-81,80-88 +10-86,10-98 +18-68,18-68 +5-50,5-92 +48-98,99-99 +6-71,4-72 +6-6,6-43 +27-39,26-36 +15-15,14-82 +91-98,29-92 +46-51,50-52 +5-99,5-98 +4-91,4-92 +82-83,81-85 +68-78,21-68 +32-70,69-93 +25-59,25-60 +40-52,40-40 +28-68,93-94 +13-99,50-98 +10-33,10-11 +11-46,8-11 +20-32,19-31 +9-63,3-62 +24-92,92-97 +57-68,68-69 +39-91,39-91 +57-97,49-83 +2-58,21-92 +14-99,15-98 +42-90,43-51 +51-51,20-51 +29-43,39-43 +8-91,7-99 +11-75,11-76 +33-98,34-97 +99-99,28-97 +35-82,11-35 +80-82,45-81 +52-56,53-55 +29-77,28-93 +6-95,1-94 +12-77,12-13 +28-90,27-29 +71-74,72-77 +4-97,4-97 +40-85,39-60 +36-38,25-38 +25-35,24-28 +20-57,51-54 +80-81,3-81 +18-98,97-98 +82-94,71-83 +5-95,6-87 +16-78,3-79 +3-74,4-75 +14-87,13-42 +93-93,8-94 +7-20,9-21 +6-76,6-7 +4-98,69-99 +67-95,94-94 +66-87,79-86 +45-94,45-46 +9-13,10-46 +71-84,8-83 +3-56,4-82 +35-89,36-61 +54-77,53-55 +46-95,46-94 +9-19,7-19 +18-19,19-42 +37-54,53-54 +14-91,14-90 +9-35,9-36 +20-20,20-45 +96-97,25-83 +11-55,10-10 +10-95,11-89 +30-34,30-86 +30-37,35-38 +70-71,53-71 +6-12,6-10 +4-34,34-95 +48-79,48-72 +5-99,6-6 +60-77,78-94 +64-64,13-63 +13-31,14-30 +7-23,8-24 +87-92,88-93 +34-81,35-74 +7-58,8-77 +3-98,3-99 +7-94,94-95 +3-12,2-88 +21-97,22-72 +13-77,95-97 +15-77,15-16 +67-82,68-83 +28-28,25-56 +51-52,33-52 +12-90,12-90 +24-72,25-99 +1-56,3-55 +40-84,39-84 +8-9,8-86 +31-71,31-72 +76-90,64-75 +19-90,91-91 +42-70,45-69 +51-93,80-92 +21-36,22-37 +96-99,97-97 +83-99,1-98 +40-43,34-61 +1-97,2-96 +1-92,1-91 +11-92,9-73 +57-57,56-66 +13-71,12-75 +70-89,70-71 +12-24,16-24 +10-35,56-63 +18-85,51-76 +20-46,1-45 +4-64,4-64 +48-52,48-50 +84-85,17-85 +48-64,63-64 +19-28,27-29 +4-16,3-17 +29-66,2-28 +8-88,55-70 +60-84,61-85 +8-69,8-69 +15-67,3-68 +42-95,96-99 +21-55,22-54 +64-70,19-71 +17-82,17-81 +4-80,3-81 +7-95,7-73 +12-34,4-33 +3-95,63-96 +1-96,93-94 +45-50,36-49 +63-89,45-64 +8-96,9-87 +93-93,1-92 +10-11,10-11 +2-6,6-99 +40-41,40-68 +4-91,3-90 +4-68,66-68 +37-84,36-85 +15-85,29-86 +77-79,53-78 +50-81,80-81 +51-66,50-72 +53-53,29-54 +42-78,5-77 +35-53,36-76 +17-17,18-18 +4-79,4-79 +23-38,23-38 +46-81,80-80 +26-93,25-37 +59-61,20-60 +82-96,82-94 +16-40,17-21 +5-95,5-98 +26-26,26-64 +32-40,32-75 +3-55,6-54 +28-86,28-86 +4-87,4-96 +4-88,24-99 +4-66,5-5 +9-61,8-89 +48-70,48-70 +36-37,14-37 +21-49,21-50 +57-62,14-35 +8-62,8-66 +14-96,11-97 +13-44,43-44 +12-87,11-86 +2-24,25-97 +3-83,2-98 +10-80,10-80 +4-94,2-4 +1-77,20-77 +28-79,17-79 +8-82,7-7 +6-87,77-82 +4-93,3-65 +94-94,38-95 +74-92,74-93 +13-68,12-69 +41-51,41-42 +22-93,21-23 +7-12,13-64 +58-87,51-88 +18-66,19-91 +1-70,71-71 +9-17,8-37 +3-32,4-97 +54-90,27-91 +1-94,3-93 +3-99,4-70 +16-92,16-91 +22-57,22-57 +4-78,31-53 +28-94,28-29 +19-48,16-18 +48-68,49-67 +23-39,22-24 +12-87,23-95 +36-47,37-46 +66-69,66-68 +35-94,36-93 +13-22,2-20 +41-53,52-54 +4-51,3-96 +52-52,5-53 +20-85,19-84 +4-78,3-79 +86-98,15-97 +68-85,68-87 +2-55,3-54 +27-63,11-64 +75-83,52-83 +18-75,19-74 +7-88,8-87 +1-86,1-92 +6-43,38-44 +71-71,70-71 +6-43,24-83 +15-53,15-63 +69-97,69-69 +9-99,12-13 +31-41,41-42 +11-53,10-57 +46-67,14-70 +24-35,25-36 +13-91,23-90 +62-67,68-70 +62-99,63-68 +10-84,51-85 +5-98,1-98 +16-97,81-98 +51-92,41-52 +15-88,14-93 +3-92,2-93 +44-74,44-74 +4-95,94-96 +51-62,25-63 +28-69,11-68 +3-82,3-78 +5-95,5-98 +25-96,25-99 +9-9,9-66 +17-18,1-18 +2-86,4-85 +4-9,9-92 +2-98,2-98 +61-96,60-98 +1-89,35-50 +89-89,25-90 +1-99,1-33 +53-73,52-74 +30-55,29-90 +97-98,70-91 +66-69,65-66 +31-83,82-83 +2-67,67-95 +77-78,77-96 +30-98,30-98 +94-94,28-95 +37-83,8-82 +14-46,28-30 +75-80,12-81 +19-68,18-19 +65-85,96-99 +62-63,3-63 +19-95,97-97 +54-79,55-78 +12-98,97-99 +83-98,41-84 +68-88,34-69 +25-25,20-25 +2-66,8-99 +84-85,21-85 +52-98,53-87 +32-55,31-54 +4-51,6-90 +46-86,47-47 +75-75,10-76 +30-38,29-49 +5-96,4-5 +49-49,49-93 +8-67,39-65 +6-51,5-70 +38-70,39-69 +2-98,2-3 +51-53,50-59 +56-92,57-91 +11-90,11-52 +19-99,20-98 +54-77,52-55 +6-93,1-6 +62-80,58-62 +27-82,26-97 +10-79,9-78 +18-99,18-99 +7-87,7-84 +44-44,45-86 +89-91,6-90 +15-98,15-95 +56-59,54-60 +61-89,2-82 +30-78,12-96 +10-84,1-10 +61-62,46-62 +5-74,5-6 +29-33,30-32 +81-95,95-99 +51-98,50-85 +6-79,49-78 +47-52,12-61 +4-58,3-89 +75-94,31-76 +43-49,42-44 +3-4,4-47 +44-98,98-98 +67-72,66-72 +2-38,3-38 +3-5,4-47 +5-95,5-95 +34-97,35-78 +66-68,67-98 +28-32,29-35 +44-68,31-44 +28-53,27-55 +16-73,17-67 +12-49,49-97 +34-76,75-75 +38-96,37-43 +15-20,20-79 +15-22,22-35 +3-25,4-55 +6-90,6-89 +17-74,18-75 +15-60,14-61 +6-29,29-81 +23-66,11-24 +37-90,90-90 +1-24,2-57 +42-78,41-79 +94-99,74-95 +95-97,2-30 +13-61,56-60 +23-82,24-83 +56-56,31-57 +58-91,57-99 +13-25,14-24 +46-54,47-77 +47-74,73-74 +23-48,22-82 +79-80,81-81 +16-33,6-76 +54-70,55-70 +44-67,45-66 +2-4,3-97 +24-94,19-94 +33-77,49-93 +13-35,35-73 +28-84,28-83 +6-89,7-90 +40-80,42-80 +39-84,65-83 +83-83,59-84 +20-46,30-46 +31-34,32-46 +12-13,13-67 +35-75,34-74 +20-20,20-89 +13-70,5-60 +25-25,24-24 +84-87,83-86 +26-58,26-58 +6-96,5-7 +4-78,5-79 +15-15,15-27 +7-79,3-80 +62-64,24-63 +68-69,32-71 +27-68,28-41 +43-43,11-44 +27-82,83-83 +54-70,26-69 +16-16,17-70 +27-34,33-35 +33-97,96-97 +4-5,4-39 +43-43,43-92 +27-33,1-28 +23-91,23-58 +9-51,8-10 +4-6,5-76 +5-34,33-95 +97-98,46-98 +20-53,52-65 +7-72,6-96 +32-79,93-95 +21-86,20-85 +47-82,46-84 +9-96,8-86 +10-93,11-75 +11-12,11-77 +7-56,6-55 +3-7,7-43 +54-84,55-55 +3-95,3-97 +18-55,37-56 +40-68,39-91 +56-87,56-85 +12-34,13-35 +7-62,8-63 +95-95,54-95 +7-94,6-94 +14-92,13-99 +18-42,42-53 +75-96,76-95 +5-78,4-6 +93-94,14-94 +25-91,25-92 +96-98,97-99 +82-84,82-85 +37-39,38-42 +11-48,7-49 +64-66,65-90 +10-46,9-45 +35-92,34-52 +6-94,9-93 +12-96,95-96 +16-86,63-67 +5-96,5-96 +54-59,19-60 +3-92,3-52 +26-54,27-53 +28-97,28-93 +98-98,83-97 +64-98,13-99 +79-84,80-86 +5-98,4-97 +2-23,22-35 +7-11,7-87 +31-94,32-59 +25-41,17-42 +28-94,76-95 +6-93,5-94 +73-94,74-93 +6-44,17-44 +2-99,22-46 +1-73,1-72 +25-71,25-72 +35-36,6-36 +6-66,5-66 +92-95,92-95 +53-75,52-75 +5-55,3-97 +12-76,43-75 +5-49,13-48 +32-32,8-37 +18-96,19-19 +17-59,17-60 +1-17,2-95 +37-82,83-83 +39-79,39-39 +25-81,25-86 +11-52,51-51 +91-91,30-91 +43-58,44-57 +1-98,2-98 +31-62,31-62 +6-13,6-13 +65-92,13-91 +3-6,5-95 +21-88,14-21 +48-75,47-74 +70-93,30-92 +37-58,58-89 +14-24,14-23 +31-60,58-83 +4-95,1-56 +47-79,98-98 +36-65,37-38 +6-18,19-75 +14-50,98-99 +44-94,45-93 +37-39,38-56 +39-57,38-40 +7-36,6-90 +81-83,28-82 +15-86,15-77 +70-86,2-44 +8-23,7-23 +28-31,29-78 +5-67,4-66 +31-31,14-32 +45-95,13-96 +11-39,40-40 +6-95,21-94 +35-35,35-66 +4-97,4-98 +2-97,96-97 +14-14,13-50 +3-62,2-54 +3-98,54-98 +24-87,23-86 +29-84,28-78 +42-45,41-55 +8-32,10-33 +35-39,35-77 +10-89,23-59 +10-82,6-98 +52-84,83-84 +65-73,60-72 +7-75,74-91 +50-77,76-93 +1-94,2-95 +98-98,21-97 +19-79,18-24 +3-87,86-88 +47-47,41-48 +28-95,29-96 +71-85,70-72 +60-98,61-75 +3-7,7-96 +22-23,22-50 +90-92,38-91 +83-89,57-88 +6-86,7-87 +3-98,28-99 +52-62,15-62 +23-98,24-24 +38-86,87-94 +10-43,16-42 +17-25,18-76 +60-62,16-63 +66-89,66-88 +42-80,21-79 +6-91,6-93 +8-41,41-41 +80-87,79-99 +88-88,14-89 +35-76,23-75 +8-51,7-88 +2-99,41-71 +6-8,7-99 +18-83,18-19 +69-91,50-68 +28-43,28-29 +57-76,9-58 +56-58,52-57 +13-64,14-81 +6-84,5-83 +95-97,61-77 +9-11,10-12 +46-65,46-66 +18-83,17-83 +86-88,57-87 +15-74,79-99 +5-99,98-99 +13-16,14-69 +23-92,22-98 +70-96,69-98 +9-12,9-13 +10-12,11-52 +21-70,20-87 +44-88,44-84 +84-86,10-85 +30-92,30-91 +10-26,25-79 +42-59,41-42 +39-72,33-99 +19-66,39-66 +21-23,2-80 +23-23,22-23 +73-99,72-97 +4-72,3-5 +22-75,21-76 +24-53,52-52 +40-56,55-64 +17-85,18-84 +15-18,14-85 +8-71,3-8 +1-99,3-95 +41-41,40-96 +60-67,37-68 +9-26,10-91 +30-92,73-92 +44-85,45-86 +13-75,42-75 +11-11,64-83 +7-98,7-99 +53-57,37-54 +71-72,8-71 +86-86,7-86 +14-32,15-54 +13-20,12-12 +68-93,72-94 +3-68,3-4 +4-98,17-97 +15-94,41-83 +23-72,23-72 +26-86,2-27 +36-81,37-55 +10-94,9-93 +32-84,31-83 +44-95,14-45 +3-62,3-62 +46-78,45-66 +96-98,3-97 +91-92,31-92 +50-57,20-58 +1-64,3-64 +48-80,35-48 +69-90,69-91 +62-68,40-67 +74-76,74-76 +42-81,43-82 +16-58,58-59 +88-89,1-89 +68-69,69-90 +57-73,57-68 +58-83,58-94 +2-60,88-94 +14-18,13-20 +68-82,81-83 +77-79,26-78 +20-36,19-99 +12-87,13-89 +54-88,64-87 +12-85,12-86 +1-88,87-89 +43-64,64-81 +38-97,37-48 +12-73,57-74 +25-52,26-53 +22-22,21-37 +75-97,74-76 +13-54,14-32 +16-47,16-48 +9-93,10-92 +50-50,49-88 +10-10,10-76 +94-94,2-95 +33-93,63-92 +46-46,16-47 +90-97,1-91 +24-63,26-63 +38-84,19-62 +28-96,95-98 +56-56,49-58 +6-83,19-82 +31-87,77-88 +4-97,3-99 +13-86,14-85 +90-90,23-90 +8-25,26-26 +17-60,18-89 +10-61,11-62 +13-59,50-59 +52-73,34-73 +94-97,33-95 +20-93,19-97 +6-6,6-94 +7-81,6-89 +4-95,4-95 +9-65,65-66 +37-72,71-75 +57-96,56-72 +23-77,76-76 +7-89,6-88 +1-86,85-86 +42-44,43-93 +18-59,27-58 +19-88,18-95 +1-74,3-73 +22-67,54-66 +23-28,23-27 +6-73,6-73 +4-85,3-5 +46-95,46-96 +5-92,4-86 +22-61,21-61 +70-84,56-95 +8-9,8-85 +18-42,41-41 +12-97,96-97 +67-73,40-74 +13-74,13-81 +3-36,4-98 +8-96,5-6 +9-89,9-84 +67-85,68-84 +68-69,45-69 +34-66,66-71 +50-83,13-82 +31-74,32-83 +1-3,3-83 +4-88,4-4 +12-93,9-94 +70-98,30-98 diff --git a/1.py b/1.py new file mode 100644 index 0000000..467eb3d --- /dev/null +++ b/1.py @@ -0,0 +1,2255 @@ +s ='''6471 +1935 +1793 +3843 +6059 +6736 +6101 +3133 +6861 +1330 +1962 +5538 +6760 + +5212 +2842 +3684 +6198 +6198 +3440 +2179 +1432 +5647 +5324 +6331 +4061 +1167 +1821 + +7746 +4911 +3446 +7292 +4851 +1207 +5124 +4014 +1551 +1020 +4794 + +22099 +26488 + +30132 +22150 + +10263 +14859 +11428 + +9009 +9270 +2093 +10969 +5537 +7775 +8872 + +12426 +3539 +9551 +6735 +6278 + +5917 +3832 +2915 +2811 +1226 +5943 +4468 +5149 +3310 +5746 +4377 +1675 +2142 +1941 +5302 + +19067 +18313 +24663 + +6058 +7858 +3688 +1721 +1411 +6915 +8768 +1548 +8241 +5126 + +12106 +10428 +1306 +10660 + +10535 +2982 +3422 +6807 +10700 +3652 +5462 +2470 + +13652 +1919 +13837 +12886 +13764 + +15307 +4147 +8261 +17870 + +4000 +3364 +10373 +9995 +10765 +10063 +7664 +2030 + +15167 +14432 +4744 +8430 + +66172 + +1154 +2516 +5397 +6264 +2016 +7226 +4587 +2159 +3172 +7128 +4135 +6439 + +3357 +12795 +6016 +5032 +3790 +9795 + +1089 +2773 +2807 +2511 +5675 +1428 +5500 +4416 +4818 +3657 +2100 +4201 +1853 +5809 +3324 + +3218 +7200 +4671 +2724 +5680 +5011 +5490 +5436 +5278 +3558 +6250 +5513 + +1348 +1056 +4111 +3222 +3115 +6740 +2236 +2225 +6159 +3296 +2399 + +7816 +2294 +8202 +5392 +1666 +3573 +2486 +4636 +8809 +5552 + +7229 +1472 +9485 +8303 +11235 +10014 + +26790 + +10461 +5235 +6951 +7253 +2321 +5300 +6209 + +11077 +7200 +12466 +12732 +9307 +5724 + +8966 +13389 +15748 +9321 +9519 + +26485 + +25628 +7409 + +5031 +4921 +2754 +8438 +5421 +1159 +6083 + +41921 + +54369 + +5527 +5691 +1654 +5048 +2448 +5184 +3147 +1207 +1097 +3917 +5745 +3438 +5631 +4766 +3575 + +9665 + +10627 +6218 +17749 +11375 + +1074 +5899 +2131 + +8079 +3466 + +18058 +18124 +16027 +5714 + +2205 +4821 +6996 +1270 +2367 +4112 +4910 +2438 +2047 +3233 + +7409 +5500 +7177 +5649 +6079 +1844 +6802 +1901 +1077 +6526 +6706 + +4289 +8988 +2234 +11040 +6845 +11720 +9113 + +10333 +9149 +4373 +1612 + +9601 +7695 +7429 +7743 +5943 +7787 +2752 +8527 +7298 + +2444 +1043 +5199 +6495 +2567 +3107 +3327 +2474 +4278 +1965 +4749 +3861 +5397 +1602 + +8175 +3142 +12119 +11175 + +17833 +25743 + +6121 +12210 +14696 +6184 +6843 + +1272 +4752 +5255 +3349 +3690 +5215 +2453 +6875 +6112 +3027 +6627 + +3830 +5336 +5785 +3486 +2799 +10751 +4064 +3339 + +4570 +2916 +5479 +5866 +3392 +5626 +4727 +4271 +1676 +5444 +5379 +5501 +1328 +2235 + +4132 +6119 +2873 +2854 +4070 +4666 +2133 +6679 +6386 +5247 +5487 +5537 + +13416 +4385 +16219 +13329 +15904 + +2974 +1444 +7025 +9208 +3831 +7734 +2756 +10329 + +5412 +7071 +3655 +2999 +4904 +3311 +8148 +3626 +1190 +3763 + +1148 +1601 +4701 +1830 +2882 +4464 +2741 +5725 +3895 +4846 +3769 +2064 +1823 +5142 +2646 + +5796 +6035 +3487 +2974 +3460 +5449 +2507 +4137 +1821 +4027 +1881 +3875 +1651 +4901 + +11663 +11662 +10262 +4073 +7514 +6856 + +39088 + +1699 +4231 +5340 +3283 +5848 +3062 +1529 +3004 +3272 +1585 +6474 +2494 +1921 + +3591 +5909 +3088 +1788 +4803 +6345 +5954 +3339 +4550 +5659 +3992 +4990 +5709 +6020 + +6655 +11308 +7030 +12198 + +48347 + +6769 +9293 +8880 +9403 +9009 +7231 +6623 +6926 +6564 + +7536 +1654 +1484 +2284 +8379 +3954 +5730 +3731 +3612 +7536 + +7306 +2192 +5481 +8474 +2748 +7296 +3260 +8949 +4845 + +4838 +5851 +1054 +5507 +4343 +2269 +4427 +1417 + +5364 +10209 +3452 +16275 + +6753 +1347 +5236 +5663 +2566 +1191 +4693 +1210 +6737 +6497 +4453 +5434 + +55141 + +1195 +3318 +2512 +2792 +6772 +5787 +6046 +7455 +1087 +4619 +6269 +5003 + +9386 +3775 +15577 +1053 + +8611 +2856 +1321 +8372 +2689 +2819 +6139 +7258 +2796 + +5330 +2866 +6566 +1771 +1865 +7183 +7054 +3040 +6506 +3613 +5963 +2289 + +5701 +1981 +3130 +2080 +6747 +1058 +5269 +6468 +7082 +4428 +3806 + +6894 +4614 +4225 +6120 +1148 +4855 +5894 +3212 +2052 +4392 +3974 +6120 + +2166 +2449 +1198 +2267 +1716 +4626 +4254 +5825 +3792 +3965 +3079 +4234 +3336 +5131 +5197 + +16171 +1998 +10613 +5011 +3798 + +11302 +9594 +5384 +13600 + +4001 +1367 +2866 +4570 +1869 +10598 +1138 + +22478 +7431 +1770 + +6736 +8759 +6369 +4174 +6390 +6182 +3477 +8482 +1027 +2259 + +6294 +3889 +4687 +2736 +4258 +2464 +2558 +3207 +3168 +1318 +2853 +5786 +6456 +1582 + +18966 +21701 +9542 + +11534 +9629 +15652 +11228 +13038 + +13542 +2809 +6969 + +7226 +4720 +8095 +2574 +8177 +1210 +4888 +6665 +6860 +8548 + +6032 +5037 +4123 +8957 +5387 +3862 +3047 +7662 +8200 + +4344 +6692 +4173 +3943 +6676 +4072 +4253 +5508 +5486 +2122 +6578 +4780 +6152 + +3600 +6564 +6743 +3559 +1901 +7641 +1587 +7955 +2664 + +1882 +12414 +5660 +10057 +15084 + +9317 +1192 +9042 +9935 +1735 +2402 + +18776 +18766 +19656 + +5993 +6732 +1029 +6777 +2099 +2303 +3346 +1154 +4818 +3001 +7335 +3900 + +5509 +4912 +4767 +3925 +1733 +5910 +4666 +5347 +2678 +3890 +1428 +3795 +4609 +1541 +3693 + +4311 +3122 +1883 +6898 +9278 +2755 +7351 +1068 +6640 + +7250 +13648 +9505 +4934 +16319 + +3976 +11270 +2623 +1603 +6716 +9705 +7600 + +10147 +1102 +3088 +3778 +4731 +6180 +6682 +9474 + +6981 +8854 +15319 +14545 +3506 + +5715 +9246 +5910 +4555 +5312 +6416 +7850 +6081 + +9342 +1705 +8303 +2914 +3687 +4681 +3930 +3983 +1319 + +7454 +6329 +5729 +3132 +3398 +1086 +4921 +1008 + +50219 + +2828 +2486 +1665 +3610 +3379 +2714 +1862 +4420 +5801 +1844 +6419 +4144 +1781 +2707 + +5458 +5874 +2300 +7794 +12266 +9759 + +6535 +5233 +3401 +2932 +7351 +3662 +8964 +3778 +4542 + +2390 +16477 +14300 +12561 + +51377 + +5729 +9244 +9257 +3335 +3686 +1734 + +4314 +2781 +2328 +6957 +3778 +8810 + +4601 +7441 +4593 +4624 +7001 +6392 +4539 +6892 +7368 +2343 + +1742 +5434 +1393 +7650 +2384 +4870 +4435 +5459 +2489 +1875 +2533 + +1221 +2932 +2616 +3645 +1963 +3987 +3510 +2063 +1388 +5179 +4189 +1005 +6061 +1703 +6073 + +6898 +5660 +7151 +8919 +5163 +7340 +2180 +9019 +2600 + +7455 +2778 +21986 + +1353 +5884 +1073 +4204 +1336 +3839 +2491 +6359 +4484 +3454 +3654 +1785 +4288 +1575 + +5518 +6734 +13730 +13016 + +5487 +5179 +5186 +1636 +5782 +2713 +7965 +4517 +2166 +7588 +5561 + +6341 +8423 +6666 +4274 +4991 +1549 +2993 +3222 +3849 +4645 + +10607 +3063 +6829 +10905 +13762 +1338 + +4363 +2323 +7395 +2354 +5682 +3783 +1712 +1993 +4115 +1159 +6349 +4009 + +10523 +11627 +13437 + +24821 +24505 +1631 + +12446 +9367 +9117 +11534 +4904 + +4406 +4139 +5864 +1375 +4482 +6034 +5040 +3018 +1167 +4467 +5764 +1953 +2106 +3005 + +3594 +6609 +9616 +5043 +3376 +7637 +7050 +2159 + +10077 +2789 +7027 +8543 +4002 +4236 +6946 +8727 + +2998 +3022 +5460 +4318 +5773 +6476 +2322 +2789 +5609 +7158 +5754 + +1519 +4833 +3654 +1556 +6353 +4905 +2547 +3520 +1293 +2681 +2888 +1893 + +6899 +10255 +8001 +14776 + +2127 +1159 +4476 +5880 +4286 +5558 +1419 +2255 +4175 +4864 +5758 +1410 +6298 +1452 + +9257 +4784 +3514 +9788 +6789 +1032 +2910 + +15487 +6781 + +6248 +4479 +7650 +2293 +3777 +4842 +4741 +6988 +2255 +7398 +7997 + +63711 + +28407 + +7699 +4506 +6397 +8616 +1976 +4431 +7923 +7606 +6258 + +4199 +8012 +3922 +9853 +1601 +8286 +3591 + +4992 +2933 +6363 +4424 +4473 +4228 +6835 +3844 +6737 +2749 +1189 +2485 +6334 + +1147 +1213 +6675 +5860 +2569 +5297 +4158 +3255 +4135 +5203 +4447 + +1896 +2683 +1889 +5998 +5185 +6293 +6282 +2383 +4381 +1205 +6562 +6062 +4987 + +6877 +7073 +6943 +2779 +4098 +7419 +5301 +5382 +6020 +6196 +3394 +2196 + +5969 +10872 +13093 +6698 +2443 +6201 + +3215 +3355 +6528 +3106 +2765 +1648 +4432 +3772 +5249 +1809 +3614 +2782 +1436 + +6726 +4915 +2094 +2244 +4877 +7429 +2600 +6887 +7626 + +30258 + +5419 +6983 +1458 +1995 +8534 +1344 +8977 +8540 + +4520 +5522 +3190 +5661 +4705 +3348 +1533 +3234 +5609 +2508 +2516 +5891 +4992 +5735 +4888 + +6881 +4632 +2352 +2790 +8795 +5615 +8486 +5811 +8624 +2562 + +2414 +3784 +3938 +1830 +2867 +1585 +1676 +4046 +4579 +4853 +3459 +3285 +1407 +1049 + +16971 +11806 +3436 +5511 + +6725 +5362 +7309 +2123 +6661 +2204 +3729 +1881 +4366 +6134 +4459 +5020 + +3645 +2004 +4363 +5073 +4785 +1695 +5964 +1526 +3166 +1163 +4752 +4803 +3869 +5508 +4753 + +3897 +7400 +7035 +5052 +4300 +2957 +1413 +6351 +4224 +4136 +6699 +2321 + +5805 +10432 +3709 +6485 +2460 +9451 +5596 +4519 + +10795 +5608 +2207 +8668 +11870 + +2523 +2746 +5520 +2189 +6879 +7694 +1539 + +8563 +3754 +6578 +6739 +7106 +7489 +6241 +3464 + +2338 +2889 +4542 +6272 +3155 +1688 +4989 +2240 +5768 +7029 +3038 +3577 + +2930 +5485 +5457 +2100 +3148 +4166 +5169 +1214 +6480 +3017 +2498 +2012 +3568 +3623 + +7095 +5106 +2915 +3886 +7090 +7959 +3378 +8352 +6090 + +1320 +11916 + +10656 +13478 +13485 +6218 +6178 +2203 + +19909 +9418 +17273 + +6504 +6269 +3367 +9037 +7752 +8057 +8476 + +8463 +13355 +4512 +15675 +14901 + +5833 +1649 +5960 +2611 +4916 +1377 +6120 +1908 +2881 +6329 +5078 +1203 +3751 + +21452 +6902 +20285 + +1981 +4842 +5032 +4593 +3831 +6105 +2784 +1721 +4013 +4975 +2047 +3350 +5940 +5025 +2897 + +5547 +5530 +3077 +2667 +6635 +2516 +5130 +4057 +6253 +5027 +3269 + +56467 + +2199 +12036 +11816 +13439 +2669 +6742 + +16686 +9126 +3899 +12258 + +4968 +5127 +6695 +9156 +10568 +11424 + +2113 +2073 +1515 +2481 +3776 +6924 +7509 +6538 +4903 +7817 +6449 + +4694 +2538 +3717 +2004 +3659 +5035 +6576 +6409 +6118 +3320 +2862 +4587 +4474 + +1315 +4654 +3185 +2084 +4314 +3462 +4106 +3731 +1307 +2097 +1377 +1409 +4452 +4003 +5062 + +11021 +10708 +6140 + +3474 +2398 +6221 +4302 +7882 +6993 +7859 +6741 +6879 +5658 + +2272 +2408 +2982 +3980 +2694 +6784 +2586 +2284 +5248 +5597 +5626 +5627 + +7595 +23171 +21703 + +7670 +12872 +2840 + +6806 +5093 +2478 +6701 +10487 +6450 +1418 +5820 + +8471 +6625 +3667 +2471 +4580 +8753 +4232 +5332 +7366 +4771 + +15580 +9188 +2311 +2491 +11136 + +6289 +13517 +18667 +15988 + +6422 +7763 +7819 +8000 +3256 +8081 +2616 +5682 +3561 +3303 +6639 + +6074 +12194 +11521 +20082 + +4452 +5087 +1404 +4855 +4351 +3828 +1845 +1364 +5703 +6114 +5019 +6621 +4801 + +5673 +8859 +7347 +7314 +6052 +13657 + +10820 +13224 +15323 +13981 +9124 + +9652 +5549 +8223 +4316 +3339 +7222 +3860 +6507 +2332 + +14294 +1064 +16114 +1225 +2805 + +9257 +3007 +15243 + +4500 +1977 +6911 +5741 +3283 +1293 +6773 +2327 +3949 +6549 +2081 +2084 +4609 + +13452 +3263 +5825 +2999 +6279 +10703 + +12556 +13409 +8085 +10946 +13299 +11478 + +5378 +5891 +3497 +6058 +5978 +2741 +5095 +1129 +5244 +6327 +3301 +2972 + +31231 + +5888 +4829 +3209 +5493 +2214 +4598 +3213 +2883 +6057 +5044 +5694 +5525 +1542 +1061 +2095 + +10010 +36255 + +8520 +4189 +3175 +4174 +2515 +8521 +1463 +1650 +2311 +2168 + +9208 +7297 +5854 +4000 +2440 +5123 +9122 +1954 +2001 + +5686 +6059 +3524 +3452 +5398 +3567 +4143 +3372 +5678 +2460 +3192 +3608 +4967 +5734 + +7771 +4546 +4914 +10115 +6064 +7812 +1024 +1449 + +19573 +18986 +5792 +12360 + +8322 +12444 +14319 +16102 +2355 + +4555 +9276 +8886 +9254 +8612 +6275 +6138 +2308 +4817 + +14640 +5002 +10299 +2642 +7894 + +4132 +1982 +2528 +6423 +7362 +3411 +2517 +2341 +6986 +2665 +2066 + +8485 +2525 +6260 +6158 +7326 +2357 +8293 +8645 +6110 + +4670 +10278 +3634 +9650 + +11712 +3711 +8557 +12500 +13416 +4576 + +7567 +12678 +1790 +10206 + +21958 +19045 +2715 + +4224 +5002 +6715 +6172 +4562 +2535 +4234 +5192 +7261 +6334 + +5051 +1138 +4174 +6259 +2795 +5019 +4324 +4285 +2835 +1747 +5013 +5597 +5131 +5326 + +7467 +4965 +5400 +7188 +4112 +11432 +8819 + +7980 +7920 +7873 +1707 +12912 +13223 + +2003 +4342 +6881 +4624 +4439 +2261 +3757 +1060 +6110 +3069 +6443 +5998 + +17474 +1294 +1644 + +3985 +1517 +2968 +5277 +4162 +2195 +2099 +2191 +3845 +4132 +3599 +1167 +6182 +6049 + +8339 +18527 +24201 + +2738 +11523 +8542 +10051 +5795 +10019 +6352 + +6440 +12793 +7863 +8842 +6460 +7960 + +12902 +13776 +1102 +2253 +13371 +7432 + +3699 +6806 +2939 +2898 +2882 +3372 +1588 +4139 +3725 +4050 +4902 +3399 +3510 + +51008 + +4810 +6932 +2937 +2360 +2970 +9391 +2328 +2858 +8592 + +5590 +8559 +3849 +5295 +10756 +6575 + +3167 +1611 +2242 +7874 +4965 + +18574 +9520 +13808 +10940 + +4419 +2530 +5628 +4242 +1776 +5088 +4832 +3058 +5351 +3563 +3263 +1440 +4755 +4809 +5239 + +4172 +6034 +2340 +3069 +6060 +6540 +4218 +4952 +3007 +5896 +5887 +4499 +3131 + +8307 +3848 +4630 +4805 +8518 +7851 +9487 +6024 +7817 + +26423 + +4060 +4075 +2861 +5826 +4376 +5709 +4999 +2350 +4640 +2766 +5448 +1977 +2375 +2294 +2983 + +1741 +6129 +2952 +6678 +2026 +1402 +3755 +6006 +3557 +2341 +6354 +6428 +3499 + +15962 +3104 +4558 +6847 +3306 + +6843 +6095 +6772 +4786 +3596 +3607 +3288 +7060 +4854 +6755 + +2006 +5398 +6750 +5303 +4130 +3840 +5869 +1938 +2848 +5352 +2988 +5588 +2832 + +1955 +1759 +5340 +5490 +1672 +5721 +3799 +2531 +1436 +4314 +4446 +4433 +1501 +3829 +2195 + +8497 +6965 +5564 +7284 +3034 +6949 +1597 +7135 + +4675 +2385 +2288 +1062 +4246 +2789 +3717 +2864 +3241 +3934 +3093 +5160 +4161 +2253 + +1577 +7007 +3733 +13201 +13749 + +41763 + +4131 +7878 +7007 +1906 +5265 +5518 +2540 +7967 +3581 +2276 +7376 + +1159 +2713 +2770 +5140 +2422 +1183 +1746 +3840 +1537 +2803 +3759 +2774 +1684 +5821 + +5488 +7625 +3390 +6026 +3282 +1661 +5021 +6326 +2661 +3857 +6895 + +5517 +6283 +6227 +1658 +8520 +9219 +7024 +1400 +5532 + +13386 +8057 +10577 + +1954 +4325 +1580 +5270 +1887 +2577 +2652 +4878 +5630 +5012 +4859 +4836 +2649 +1468 + +2661 +16077 +6030 +1807'''.split('\n\n') +print(max(sum(map(int, x.split('\n'))) for x in s)) +print(sum(sorted((sum(map(int, x.split('\n'))) for x in s), reverse=True)[:3]))