diff --git a/AdventOfCode/AdventOfCode.Test/Day1Test.cs b/AdventOfCode/AdventOfCode.Test/Day1Test.cs new file mode 100644 index 0000000..cf065b4 --- /dev/null +++ b/AdventOfCode/AdventOfCode.Test/Day1Test.cs @@ -0,0 +1,22 @@ +namespace AdventOfCode.Test; + +public sealed class Day1Test +{ + private string _input = "3 4\n4 3\n2 5\n1 3\n3 9\n3 3"; + + [Fact] + public void Part1() + { + var day1 = new Day1(); + var result = day1.Part1(_input); + Assert.Equal(11, result); + } + + [Fact] + public void Part2() + { + var day1 = new Day1(); + var result = day1.Part2(_input); + Assert.Equal(31, result); + } +} diff --git a/AdventOfCode/AdventOfCode.Test/Day2Test.cs b/AdventOfCode/AdventOfCode.Test/Day2Test.cs new file mode 100644 index 0000000..d558ca0 --- /dev/null +++ b/AdventOfCode/AdventOfCode.Test/Day2Test.cs @@ -0,0 +1,22 @@ +namespace AdventOfCode.Test; + +public sealed class Day2Test +{ + private string _input = "7 6 4 2 1\n1 2 7 8 9\n9 7 6 2 1\n1 3 2 4 5\n8 6 4 4 1\n1 3 6 7 9"; + + [Fact] + public void Part1() + { + var day2 = new Day2(); + var result = day2.Part1(_input); + Assert.Equal(2, result); + } + + [Fact] + public void Part2() + { + var day2 = new Day2(); + var result = day2.Part2(_input); + Assert.Equal(4, result); + } +} diff --git a/AdventOfCode/AdventOfCode.Test/Day3Test.cs b/AdventOfCode/AdventOfCode.Test/Day3Test.cs new file mode 100644 index 0000000..203ba09 --- /dev/null +++ b/AdventOfCode/AdventOfCode.Test/Day3Test.cs @@ -0,0 +1,28 @@ +namespace AdventOfCode.Test; + +public sealed class Day3Test +{ + [Fact] + public void Part1() + { + const string Input = "xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))"; + const int Expected = 161; + var day3 = new Day3(); + + var result = day3.Part1(Input); + + Assert.Equal(Expected, result); + } + + [Fact] + public void Part2() + { + const string Input = "xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))"; + const int Expected = 48; + var day3 = new Day3(); + + var result = day3.Part2(Input); + + Assert.Equal(Expected, result); + } +} diff --git a/AdventOfCode/AdventOfCode.Test/Day4Test.cs b/AdventOfCode/AdventOfCode.Test/Day4Test.cs new file mode 100644 index 0000000..912e3b6 --- /dev/null +++ b/AdventOfCode/AdventOfCode.Test/Day4Test.cs @@ -0,0 +1,28 @@ +namespace AdventOfCode.Test; + +public sealed class Day4Test +{ + [Fact] + public void Part1() + { + const string Input = "MMMSXXMASM\nMSAMXMSMSA\nAMXSXMAAMM\nMSAMASMSMX\nXMASAMXAMM\nXXAMMXXAMA\nSMSMSASXSS\nSAXAMASAAA\nMAMMMXMMMM\nMXMXAXMASX"; + const int Expected = 18; + var day4 = new Day4(); + + var result = day4.Part1(Input); + + Assert.Equal(Expected, result); + } + + [Fact] + public void Part2() + { + const string Input = ".M.S......\n..A..MSMS.\n.M.S.MAA..\n..A.ASMSM.\n.M.S.M....\n..........\nS.S.S.S.S.\n.A.A.A.A..\nM.M.M.M.M.\n.........."; + const int Expected = 9; + var day4 = new Day4(); + + var result = day4.Part2(Input); + + Assert.Equal(Expected, result); + } +} diff --git a/AdventOfCode/AdventOfCode.Test/Day5Test.cs b/AdventOfCode/AdventOfCode.Test/Day5Test.cs new file mode 100644 index 0000000..abd8148 --- /dev/null +++ b/AdventOfCode/AdventOfCode.Test/Day5Test.cs @@ -0,0 +1,29 @@ +namespace AdventOfCode.Test; + +public sealed class Day5Test +{ + private string input + = "47|53\r\n97|13\r\n97|61\r\n97|47\r\n75|29\r\n61|13\r\n75|53\r\n29|13\r\n97|29\r\n53|29\r\n61|53\r\n97|53\r\n61|29\r\n47|13\r\n75|47\r\n97|75\r\n47|61\r\n75|61\r\n47|29\r\n75|13\r\n53|13\r\n\r\n75,47,61,53,29\r\n97,61,53,29,13\r\n75,29,13\r\n75,97,47,61,53\r\n61,13,29\r\n97,13,75,29,47"; + + [Fact] + public void Part1() + { + const int Expected = 143; + var day5 = new Day5(); + + var result = day5.Part1(input); + + Assert.Equal(Expected, result); + } + + [Fact] + public void Part2() + { + const int Expected = 123; + var day5 = new Day5(); + + var result = day5.Part2(input); + + Assert.Equal(Expected, result); + } +} diff --git a/AdventOfCode/AdventOfCode.Test/Day6Test.cs b/AdventOfCode/AdventOfCode.Test/Day6Test.cs new file mode 100644 index 0000000..946db59 --- /dev/null +++ b/AdventOfCode/AdventOfCode.Test/Day6Test.cs @@ -0,0 +1,28 @@ +namespace AdventOfCode.Test; + +public sealed class Day6Test +{ + private const string Input = "....#.....\r\n.........#\r\n..........\r\n..#.......\r\n.......#..\r\n..........\r\n.#..^.....\r\n........#.\r\n#.........\r\n......#..."; + + [Fact] + public void Part1() + { + const int Expected = 41; + var day = new Day6(); + + var result = day.Part1(Input); + + Assert.Equal(Expected, result); + } + + [Fact] + public void Part2() + { + const int Expected = 6; + var day = new Day6(); + + var result = day.Part2(Input); + + Assert.Equal(Expected, result); + } +} diff --git a/AdventOfCode/AdventOfCode.Test/Day7Test.cs b/AdventOfCode/AdventOfCode.Test/Day7Test.cs new file mode 100644 index 0000000..d931e48 --- /dev/null +++ b/AdventOfCode/AdventOfCode.Test/Day7Test.cs @@ -0,0 +1,24 @@ +namespace AdventOfCode.Test; + +public sealed class Day7Test +{ + private string input = "190: 10 19\r\n3267: 81 40 27\r\n83: 17 5\r\n156: 15 6\r\n7290: 6 8 6 15\r\n161011: 16 10 13\r\n192: 17 8 14\r\n21037: 9 7 18 13\r\r\n292: 11 6 16 20"; + + [Fact] + public void TestPart1() + { + const int Expected = 3749; + + var day = new Day7(); + Assert.Equal(Expected, day.Part1(input)); + } + + [Fact] + public void TestPart2() + { + const int Expected = 11387; + + var day = new Day7(); + Assert.Equal(Expected, day.Part2(input)); + } +} diff --git a/AdventOfCode/AdventOfCode/Day1.cs b/AdventOfCode/AdventOfCode/Day1.cs new file mode 100644 index 0000000..3c4a956 --- /dev/null +++ b/AdventOfCode/AdventOfCode/Day1.cs @@ -0,0 +1,83 @@ +namespace AdventOfCode; + +public sealed class Day1 : IDay +{ + public long Part1(string input) + { + var data = ParseInput(input); + var leftList = data[0]; + var rightList = data[1]; + + Array.Sort(leftList); + Array.Sort(rightList); + + int totalDistance = 0; + for (int i = 0; i < Math.Min(leftList.Length, rightList.Length); i++) + { + totalDistance += Math.Abs(leftList[i] - rightList[i]); + } + + return totalDistance; + } + + public long Part2(string input) + { + var data = ParseInput(input); + var leftList = data[0]; + var rightList = data[1]; + + var uniqueNumbers = new FlexArrayInt(); + var counts = new FlexArrayInt(); + + foreach (var num in rightList) + { + if (uniqueNumbers.Contains(num)) + { + for (int i = 0; i < uniqueNumbers.Count; i++) + { + if (uniqueNumbers[i] == num) + { + counts[i] += 1; + break; + } + } + } + else + { + uniqueNumbers.Add(num); + counts.Add(1); + } + } + + int similarityScore = 0; + foreach (var num in leftList) + { + for (int i = 0; i < uniqueNumbers.Count; i++) + { + if (uniqueNumbers[i] == num) + { + similarityScore += num * counts[i]; + break; + } + } + } + + return similarityScore; + } + + private int[][] ParseInput(string input) + { + var lines = input.Split('\n', StringSplitOptions.RemoveEmptyEntries); + var leftList = new int[lines.Length]; + var rightList = new int[lines.Length]; + + for (int i = 0; i < lines.Length; i++) + { + var numbers = lines[i].Split(' ', StringSplitOptions.RemoveEmptyEntries); + leftList[i] = int.Parse(numbers[0]); + rightList[i] = int.Parse(numbers[1]); + } + + return [leftList, rightList]; + } +} diff --git a/AdventOfCode/AdventOfCode/Day2.cs b/AdventOfCode/AdventOfCode/Day2.cs new file mode 100644 index 0000000..1fe65bd --- /dev/null +++ b/AdventOfCode/AdventOfCode/Day2.cs @@ -0,0 +1,126 @@ +namespace AdventOfCode; + +public sealed class Day2 : IDay +{ + public long Part1(string input) + { + var data = ParseInput(input); + int safeCount = 0; + + foreach (var levels in data) + { + if (IsSafe(levels)) + { + safeCount++; + } + } + + return safeCount; + } + + public long Part2(string input) + { + var data = ParseInput(input); + int safeCount = 0; + + foreach (var levels in data) + { + if (IsSafeWithDampener(levels)) + { + safeCount++; + } + } + + return safeCount; + } + + private int[][] ParseInput(string input) + { + var lines = input.Split('\n'); + var result = new int[lines.Length][]; + + for (int i = 0; i < lines.Length; i++) + { + var parts = lines[i].Split(' '); + var numbers = new int[parts.Length]; + + for (int j = 0; j < parts.Length; j++) + { + numbers[j] = int.Parse(parts[j]); + } + + result[i] = numbers; + } + + return result; + } + + private bool IsSafe(int[] levels) + { + int[] diffs = new int[levels.Length - 1]; + + for (int i = 0; i < levels.Length - 1; i++) + { + diffs[i] = levels[i + 1] - levels[i]; + } + + bool increasing = true; + for (int i = 0; i < diffs.Length; i++) + { + if (diffs[i] < 1 || diffs[i] > 3) + { + increasing = false; + break; + } + } + + if (increasing) + { + return true; + } + + bool decreasing = true; + for (int i = 0; i < diffs.Length; i++) + { + if (diffs[i] < -3 || diffs[i] > -1) + { + decreasing = false; + break; + } + } + + if (decreasing) + { + return true; + } + + return false; + } + private bool IsSafeWithDampener(int[] levels) + { + if (IsSafe(levels)) + { + return true; + } + + for (int i = 0; i < levels.Length; i++) + { + int[] tempLevels = new int[levels.Length - 1]; + int index = 0; + for (int j = 0; j < levels.Length; j++) + { + if (j != i) + { + tempLevels[index++] = levels[j]; + } + } + + if (IsSafe(tempLevels)) + { + return true; + } + } + + return false; + } +} diff --git a/AdventOfCode/AdventOfCode/Day3.cs b/AdventOfCode/AdventOfCode/Day3.cs new file mode 100644 index 0000000..434bda1 --- /dev/null +++ b/AdventOfCode/AdventOfCode/Day3.cs @@ -0,0 +1,65 @@ +using System.Text.RegularExpressions; + +namespace AdventOfCode; + +public sealed class Day3 : IDay +{ + public long Part1(string input) + { + var data = ParseInput(input); + int total = 0; + + for (int i = 0; i < data.Count; i += 2) + { + int x = data[i]; + int y = data[i + 1]; + total += x * y; + } + + return total; + } + + public long Part2(string input) + { + var tokens = Regex.Matches(input, @"do\(\)|don't\(\)|mul\(\d+,\d+\)"); + bool enabled = true; + int total = 0; + + foreach (Match token in tokens) + { + var instruction = token.Value; + + if (instruction == "do()") + { + enabled = true; + } + else if (instruction == "don't()") + { + enabled = false; + } + else if (instruction.StartsWith("mul(") && enabled) + { + var numbers = Regex.Matches(instruction, @"\d+"); + int x = int.Parse(numbers[0].Value); + int y = int.Parse(numbers[1].Value); + total += x * y; + } + } + + return total; + } + + private FlexArrayInt ParseInput(string input) + { + var matches = Regex.Matches(input, @"mul\((\d+),(\d+)\)"); + var data = new FlexArrayInt(); + + foreach (Match match in matches) + { + data.Add(int.Parse(match.Groups[1].Value)); // x + data.Add(int.Parse(match.Groups[2].Value)); // y + } + + return data; + } +} diff --git a/AdventOfCode/AdventOfCode/Day4.cs b/AdventOfCode/AdventOfCode/Day4.cs new file mode 100644 index 0000000..891b85c --- /dev/null +++ b/AdventOfCode/AdventOfCode/Day4.cs @@ -0,0 +1,155 @@ +namespace AdventOfCode; + +public sealed class Day4 : IDay +{ + public long Part1(string input) + { + var grid = ParseInput(input); + string word = "XMAS"; + int wordLen = word.Length; + + (int dx, int dy)[] directions = + [ + (0, 1), // right + (1, 0), // down + (1, 1), // down-right + (1, -1), // down-left + (0, -1), // left + (-1, 0), // up + (-1, -1), // up-left + (-1, 1) // up-right + ]; + + bool IsValid(int x, int y) + { + return x >= 0 && x < grid.Length && y >= 0 && y < grid[0].Length; + } + + bool SearchFrom(int x, int y, int dx, int dy) + { + for (int i = 0; i < wordLen; i++) + { + int nx = x + i * dx; + int ny = y + i * dy; + + if (!IsValid(nx, ny) || grid[nx][ny] != word[i]) + { + return false; + } + } + return true; + } + + int count = 0; + + for (int i = 0; i < grid.Length; i++) + { + for (int j = 0; j < grid[0].Length; j++) + { + foreach (var (dx, dy) in directions) + { + if (SearchFrom(i, j, dx, dy)) + { + count++; + } + } + } + } + + return count; + } + + public long Part2(string input) + { + var grid = ParseInput(input); + int count = 0; + int rows = grid.Length; + int cols = grid[0].Length; + + for (int x = 0; x < rows; x++) + { + for (int y = 0; y < cols; y++) + { + if (grid[x][y] == 'A') + { + count += CountXMasAt(grid, x, y); + } + } + } + + return count / 2; + } + + private char[][] ParseInput(string input) + { + var lines = input.Split('\n'); + var result = new char[lines.Length][]; + + for (int i = 0; i < lines.Length; i++) + { + var line = lines[i]; + int start = 0; + int end = line.Length - 1; + + // Trim start + while (start <= end && char.IsWhiteSpace(line[start])) + { + start++; + } + + // Trim end + while (end >= start && char.IsWhiteSpace(line[end])) + { + end--; + } + + var trimmedLine = new char[end - start + 1]; + for (int j = start, k = 0; j <= end; j++, k++) + { + trimmedLine[k] = line[j]; + } + + result[i] = trimmedLine; + } + + return result; + } + + private int CountXMasAt(char[][] grid, int x, int y) + { + int count = 0; + int rows = grid.Length; + int cols = grid[0].Length; + + (int dx, int dy)[][] diagonals = new[] + { + new[] { (-1, -1), (1, 1) }, // Top-left to bottom-right + new[] { (-1, 1), (1, -1) } // Top-right to bottom-left + }; + + foreach (var diag in diagonals) + { + var positions = new (int, int)[diag.Length]; + for (int i = 0; i < diag.Length; i++) + { + positions[i] = (x + diag[i].dx, y + diag[i].dy); + } + + // Check if all positions are valid + if (positions.All(pos => pos.Item1 >= 0 && pos.Item1 < rows && + pos.Item2 >= 0 && pos.Item2 < cols)) + { + char c1 = grid[positions[0].Item1][positions[0].Item2]; + char c2 = grid[positions[1].Item1][positions[1].Item2]; + + // Check for 'M-A-S' or 'S-A-M' + if ((c1 == 'M' && c2 == 'S') || (c1 == 'S' && c2 == 'M')) + { + count++; + } + } + } + + return count; + } +} diff --git a/AdventOfCode/AdventOfCode/Day5.cs b/AdventOfCode/AdventOfCode/Day5.cs new file mode 100644 index 0000000..dbc2838 --- /dev/null +++ b/AdventOfCode/AdventOfCode/Day5.cs @@ -0,0 +1,167 @@ +namespace AdventOfCode; + +public sealed class Day5 : IDay +{ + public long Part1(string input) + { + ParseInput(input, out var rulesX, out var rulesY, out var updates); + int total = 0; + + foreach (var update in updates) + { + if (IsCorrectOrder(rulesX, rulesY, update)) + { + int middleIndex = update.Count / 2; + total += update[middleIndex]; + } + } + + return total; + } + + public long Part2(string input) + { + ParseInput(input, out var rulesX, out var rulesY, out var updates); + int total = 0; + + foreach (var update in updates) + { + if (!IsCorrectOrder(rulesX, rulesY, update)) + { + var correctOrder = OrderUpdate(rulesX, rulesY, update); + int middleIndex = correctOrder.Count / 2; + total += correctOrder[middleIndex]; + } + } + + return total; + } + + private void ParseInput(string input, out FlexArrayInt rulesX, out FlexArrayInt rulesY, out FlexArrayInt[] updates) + { + var sections = input.Split($"{Environment.NewLine}{Environment.NewLine}"); + var rulesSection = sections[0].Split('\n'); + var updatesSection = sections[1].Split('\n'); + + rulesX = new FlexArrayInt(); + rulesY = new FlexArrayInt(); + + // Parse rules + foreach (var line in rulesSection) + { + var parts = line.Split('|'); + rulesX.Add(int.Parse(parts[0])); + rulesY.Add(int.Parse(parts[1])); + } + + // Parse updates + updates = new FlexArrayInt[updatesSection.Length]; + for (int i = 0; i < updatesSection.Length; i++) + { + var parts = updatesSection[i].Split(','); + var pages = new int[parts.Length]; + for (int j = 0; j < parts.Length; j++) + { + pages[j] = int.Parse(parts[j]); + } + var updateArray = new FlexArrayInt(); + foreach (var page in pages) + { + updateArray.Add(page); + } + updates[i] = updateArray; + } + } + + private bool IsCorrectOrder(FlexArrayInt rulesX, FlexArrayInt rulesY, FlexArrayInt update) + { + var position = new int[10000]; + for (int i = 0; i < position.Length; i++) + { + position[i] = -1; + } + + for (int i = 0; i < update.Count; i++) + { + position[update[i]] = i; + } + + for (int i = 0; i < rulesX.Count; i++) + { + int x = rulesX[i]; + int y = rulesY[i]; + + if (position[x] != -1 && position[y] != -1) + { + if (position[x] > position[y]) + { + return false; + } + } + } + + return true; + } + + private FlexArrayInt OrderUpdate(FlexArrayInt rulesX, FlexArrayInt rulesY, FlexArrayInt update) + { + var pagesSet = new HashSet(); + for (int i = 0; i < update.Count; i++) + { + pagesSet.Add(update[i]); + } + + var graph = new Dictionary(); + var inDegree = new Dictionary(); + + foreach (var page in pagesSet) + { + graph[page] = new FlexArrayInt(); + inDegree[page] = 0; + } + + for (int i = 0; i < rulesX.Count; i++) + { + int x = rulesX[i]; + int y = rulesY[i]; + if (pagesSet.Contains(x) && pagesSet.Contains(y)) + { + graph[x].Add(y); + inDegree[y]++; + } + } + + var queue = new Queue(); + foreach (var page in pagesSet) + { + if (inDegree[page] == 0) + { + queue.Enqueue(page); + } + } + + var orderedPages = new FlexArrayInt(); + while (queue.Count > 0) + { + int page = queue.Dequeue(); + orderedPages.Add(page); + + for (int i = 0; i < graph[page].Count; i++) + { + int neighbor = graph[page][i]; + inDegree[neighbor]--; + if (inDegree[neighbor] == 0) + { + queue.Enqueue(neighbor); + } + } + } + + if (orderedPages.Count != pagesSet.Count) + { + return new FlexArrayInt(); + } + + return orderedPages; + } +} diff --git a/AdventOfCode/AdventOfCode/Day6.cs b/AdventOfCode/AdventOfCode/Day6.cs new file mode 100644 index 0000000..2eac4ce --- /dev/null +++ b/AdventOfCode/AdventOfCode/Day6.cs @@ -0,0 +1,198 @@ +namespace AdventOfCode; + +public sealed class Day6 : IDay +{ + public long Part1(string input) + { + var mapData = ParseInput(input); + int height = mapData.GetLength(0); + int width = mapData.GetLength(1); + + // '^', '>', 'v', '<' + int[] dx = { 0, 1, 0, -1 }; + int[] dy = { -1, 0, 1, 0 }; + + int guardX = -1, guardY = -1, direction = -1; + char[] directions = { '^', '>', 'v', '<' }; + + for (int y = 0; y < height; y++) + { + for (int x = 0; x < width; x++) + { + for (int d = 0; d < directions.Length; d++) + { + if (mapData[y, x] == directions[d]) + { + guardX = x; + guardY = y; + direction = d; + break; + } + } + + if (direction != -1) break; + } + + if (direction != -1) break; + } + + // Track with bool array + var visited = new bool[height, width]; + visited[guardY, guardX] = true; + + while (true) + { + int nextX = guardX + dx[direction]; + int nextY = guardY + dy[direction]; + + if (nextX >= 0 && nextX < width && nextY >= 0 && nextY < height) + { + char cell = mapData[nextY, nextX]; + + if (cell == '#') // Turn right if wall + { + direction = (direction + 1) % 4; + } + else + { + guardX = nextX; + guardY = nextY; + visited[guardY, guardX] = true; + } + } + else + { + break; // Out of bounds + } + } + + // Count visited cells + int visitedCount = 0; + for (int y = 0; y < height; y++) + { + for (int x = 0; x < width; x++) + { + if (visited[y, x]) visitedCount++; + } + } + + return visitedCount; + } + + public long Part2(string input) + { + var mapData = ParseInput(input); + + int height = mapData.GetLength(0); + int width = mapData.GetLength(1); + + // '^', '>', 'v', '<' + int[] dx = { 0, 1, 0, -1 }; + int[] dy = { -1, 0, 1, 0 }; + char[] directions = { '^', '>', 'v', '<' }; + + // Find initial position and direction + int guardStartX = -1, guardStartY = -1, startDirection = -1; + for (int y = 0; y < height; y++) + { + for (int x = 0; x < width; x++) + { + for (int d = 0; d < directions.Length; d++) + { + if (mapData[y, x] == directions[d]) + { + guardStartX = x; + guardStartY = y; + startDirection = d; + break; + } + } + + if (startDirection != -1) break; + } + + if (startDirection != -1) break; + } + + var possiblePositions = new List<(int, int)>(); + + for (int y = 0; y < height; y++) + { + for (int x = 0; x < width; x++) + { + if (mapData[y, x] == '.' && (x != guardStartX || y != guardStartY)) + { + // Copy the map and add an obstruction at (x, y) + var newMap = new char[height, width]; + Array.Copy(mapData, newMap, mapData.Length); + newMap[y, x] = '#'; + + int guardX = guardStartX; + int guardY = guardStartY; + int direction = startDirection; + var visitedStates = new HashSet<(int, int, int)>(); + + bool loopDetected = false; + int maxSteps = height * width * 4; // Arbitrary step limit + + for (int step = 0; step < maxSteps; step++) + { + var state = (guardX, guardY, direction); + if (visitedStates.Contains(state)) + { + loopDetected = true; + break; + } + visitedStates.Add(state); + + int nextX = guardX + dx[direction]; + int nextY = guardY + dy[direction]; + + if (nextX >= 0 && nextX < width && nextY >= 0 && nextY < height) + { + char cell = newMap[nextY, nextX]; + if (cell == '#') + { + direction = (direction + 1) % 4; // Turn right + } + else + { + guardX = nextX; + guardY = nextY; + } + } + else + { + break; // Guard leaves the map + } + } + + if (loopDetected) + { + possiblePositions.Add((x, y)); + } + } + } + } + + return possiblePositions.Count; + } + + private char[,] ParseInput(string input) + { + var lines = input.Split($"{Environment.NewLine}", StringSplitOptions.RemoveEmptyEntries); + int height = lines.Length; + int width = lines[0].Length; + + var map = new char[height, width]; + for (int y = 0; y < height; y++) + { + for (int x = 0; x < width; x++) + { + map[y, x] = lines[y][x]; + } + } + + return map; + } +} diff --git a/AdventOfCode/AdventOfCode/Day7.cs b/AdventOfCode/AdventOfCode/Day7.cs new file mode 100644 index 0000000..ad483d4 --- /dev/null +++ b/AdventOfCode/AdventOfCode/Day7.cs @@ -0,0 +1,165 @@ +namespace AdventOfCode; + +public sealed class Day7 : IDay +{ + public long Part1(string input) + { + string[] lines = input.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries); + long totalCalibrationResult = 0; + + foreach (var line in lines) + { + string[] parts = line.Split(':'); + long testValue = long.Parse(TrimWhitespace(parts[0])); + long[] numbers = ParseNumbers(TrimWhitespace(parts[1])); + long n = numbers.Length; + long numOperators = n - 1; + + if (TryMatchTestValue(numbers, testValue, numOperators)) + { + totalCalibrationResult += (long)testValue; + } + } + + return totalCalibrationResult; + } + + public long Part2(string input) + { + string[] lines = input.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries); + long totalCalibrationResult = 0; + + foreach (var line in lines) + { + string[] parts = line.Split(':'); + long testValue = long.Parse(TrimWhitespace(parts[0])); + long[] numbers = ParseNumbers(TrimWhitespace(parts[1])); + long n = numbers.Length; + long numOperators = n - 1; + + if (TryMatchTestValueWithConcatenation(numbers, testValue, numOperators)) + { + totalCalibrationResult += testValue; + } + } + + return totalCalibrationResult; + } + + private bool TryMatchTestValueWithConcatenation(long[] numbers, long testValue, long numOperators) + { + long combinations = (long)Math.Pow(3, numOperators); + + // test all combinations of '+', '*', '||' + for (int combination = 0; combination < combinations; combination++) + { + long result = numbers[0]; + long opSelector = combination; + + for (int i = 0; i < numOperators; i++) + { + char op = GetOperator(opSelector % 3); + opSelector /= 3; + + if (op == '+') + { + result += numbers[i + 1]; + } + else if (op == '*') + { + result *= numbers[i + 1]; + } + else if (op == 'C') // '||' concatenation + { + result = long.Parse(result + numbers[i + 1].ToString()); + } + } + + if (result == testValue) + { + return true; + } + } + + return false; + } + + private char GetOperator(long opIndex) + { + return opIndex switch + { + 0 => '+', + 1 => '*', + 2 => 'C', + _ => ' ' + }; + } + + private long[] ParseNumbers(string numbersStr) + { + string[] numberStrings = numbersStr.Split(' ', StringSplitOptions.RemoveEmptyEntries); + long[] numbers = new long[numberStrings.Length]; + for (int i = 0; i < numberStrings.Length; i++) + { + numbers[i] = long.Parse(numberStrings[i]); + } + return numbers; + } + + private bool TryMatchTestValue(long[] numbers, long testValue, long numOperators) + { + long combinations = (long)Math.Pow(2, numOperators); + + // Test all combinations of '+' and '*' + for (long combination = 0; combination < combinations; combination++) + { + long result = numbers[0]; + long opSelector = combination; + + for (int i = 0; i < numOperators; i++) + { + char op = (opSelector & 1) == 0 ? '+' : '*'; + opSelector >>= 1; + + if (op == '+') + { + result += numbers[i + 1]; + } + else + { + result *= numbers[i + 1]; + } + } + + if (result == testValue) + { + return true; + } + } + + return false; + } + + private string TrimWhitespace(string input) + { + int start = 0; + int end = input.Length - 1; + + while (start <= end && char.IsWhiteSpace(input[start])) + { + start++; + } + while (end >= start && char.IsWhiteSpace(input[end])) + { + end--; + } + + var trimmedChars = new char[end - start + 1]; + for (int i = start, j = 0; i <= end; i++, j++) + { + trimmedChars[j] = input[i]; + } + + return new string(trimmedChars); + } +} diff --git a/AdventOfCode/AdventOfCode/FlexArrayInt.cs b/AdventOfCode/AdventOfCode/FlexArrayInt.cs new file mode 100644 index 0000000..8dfabeb --- /dev/null +++ b/AdventOfCode/AdventOfCode/FlexArrayInt.cs @@ -0,0 +1,119 @@ +namespace AdventOfCode; + +public sealed class FlexArrayInt +{ + public const int DefaultStartSize = 4; + private int[] _data; + + public int Count { get; private set; } + public int Capacity => _data.Length; + + public int this[int index] + { + get + { + if (index < 0 || index > Count) + { + return -1; + } + + return _data[index]; + } + set + { + if (index < 0 || index > Count) + { + return; + } + + _data[index] = value; + } + } + + public bool Remove(int value, bool firstOnly) + { + var removedAny = false; + for (var i = 0; i < Count; i++) + { + if (value != _data[i]) + { + continue; + } + + RemoveAt(i--); + removedAny = true; + if (firstOnly) + { + break; + } + } + + return removedAny; + } + + public bool RemoveAt(int index) + { + if (index < 0 || index >= Count) + { + return false; + } + + if (index != Count - 1) + { + ShiftLeft(index); + + } + + Count--; + + return true; + } + + private void ShiftLeft(int fromIndex) + { + for (var i = fromIndex; i < Count; i++) + { + _data[i] = _data[i + 1]; + } + } + public FlexArrayInt(int? initialSize = null) + { + var size = Math.Max(0, initialSize ?? DefaultStartSize); + _data = new int[size]; + } + + public void Add(int value) + { + if (Capacity == Count) + { + Grow(); + } + + _data[Count++] = value; + } + + public bool Contains(int value) + { + if (Count == 0) + { + return false; + } + + for (var i = 0; i < Count; i++) + { + if (_data[i] == value) + { + return true; + } + } + + return false; + } + private void Grow() + { + var newData = new int[Capacity * 2]; + Array.Copy(_data, newData, Count); + _data = newData; + + } +} \ No newline at end of file diff --git a/AdventOfCode/AdventOfCode/IDay.cs b/AdventOfCode/AdventOfCode/IDay.cs new file mode 100644 index 0000000..4ccf5a4 --- /dev/null +++ b/AdventOfCode/AdventOfCode/IDay.cs @@ -0,0 +1,7 @@ +namespace AdventOfCode; + +public interface IDay +{ + long Part1(string input); + long Part2(string input); +} diff --git a/AdventOfCode/AdventOfCode/Program.cs b/AdventOfCode/AdventOfCode/Program.cs index 2ce7df0..e58e8a7 100644 --- a/AdventOfCode/AdventOfCode/Program.cs +++ b/AdventOfCode/AdventOfCode/Program.cs @@ -1,5 +1,35 @@ using System.Text; +using AdventOfCode; Console.OutputEncoding = Encoding.UTF8; -Console.WriteLine("*** AdventOfCode ***"); \ No newline at end of file +Console.WriteLine("*** AdventOfCode ***"); +const string DataLocation = "../../../../../data"; // a very nice path +const string DataFileName = "/Day"; + +for (int i = 0; i < 7; i++) +{ + Console.WriteLine($"Day {i+1}:"); + var data = File.ReadAllText($"{DataLocation}{DataFileName}{i+1}"); + var day = GetDay(i + 1); + + Console.WriteLine("\tPart 1: " + day.Part1(data)); + Console.WriteLine("\tPart 2: " + day.Part2(data)); + Console.WriteLine(); +} +// using interface, because I am too lazy to write a gigantic switch in the for loop +// I hope you are ok if it's done this way :) +IDay GetDay(int day) +{ + return day switch + { + 1 => new Day1(), + 2 => new Day2(), + 3 => new Day3(), + 4 => new Day4(), + 5 => new Day5(), + 6 => new Day6(), + 7 => new Day7(), + _ => new Day7() + }; +} \ No newline at end of file diff --git a/data/Day1 b/data/Day1 new file mode 100644 index 0000000..6192278 --- /dev/null +++ b/data/Day1 @@ -0,0 +1,1000 @@ +28186 35627 +51854 34597 +19211 51032 +79370 53096 +68126 40302 +43284 25771 +80565 99650 +83151 70796 +91092 74579 +70740 98650 +45166 53096 +24309 45165 +62950 26641 +23291 91017 +56683 53851 +22308 81625 +83150 34155 +87443 91017 +56834 91784 +35159 67595 +10722 83450 +92257 23419 +15995 96671 +89901 39216 +25104 76669 +37075 56652 +15874 66083 +33493 35627 +87420 31838 +11269 91386 +92604 83450 +34888 99650 +49759 40926 +38211 27379 +93866 22096 +88205 66217 +55772 60776 +83556 78255 +22292 50829 +22487 78358 +27260 79702 +74570 90319 +27532 14353 +40720 67595 +99885 65688 +25733 53752 +12466 14411 +88402 40165 +63328 13804 +45165 62461 +24913 94225 +32251 76669 +91004 40165 +48939 45165 +98082 34561 +74569 42932 +99641 54600 +42748 22021 +23376 54490 +38706 69865 +64985 87783 +14431 78715 +37671 94814 +27425 60776 +21801 76669 +96975 33493 +56680 31838 +41265 71129 +99081 32487 +53077 82615 +54490 55624 +22649 60776 +82601 25943 +93133 96412 +77182 78358 +67827 76838 +45976 89107 +20352 89034 +28891 23800 +87739 76669 +47802 99650 +18060 28437 +65882 93980 +53343 13764 +84301 93604 +62547 93479 +79067 45165 +70139 54490 +28158 76669 +71631 39775 +36521 57540 +78928 37888 +75943 39076 +28462 60107 +95828 94225 +49768 73181 +40545 97945 +18963 74260 +17934 63046 +73054 13454 +43170 60924 +90257 28180 +99765 33493 +41380 50296 +24225 62945 +66579 73961 +73361 54622 +26339 91017 +84080 62041 +89322 54600 +84610 18344 +58420 87051 +12253 83450 +25631 91017 +71764 63533 +52908 40165 +56578 46636 +99876 61946 +43934 64469 +78242 11111 +97629 28916 +21477 91017 +97639 64456 +90978 53077 +94412 73836 +49249 96113 +92750 14411 +12961 13764 +84319 22230 +83435 78146 +48951 86109 +40258 13764 +54600 65577 +51432 53096 +11527 20394 +68196 94225 +14939 91017 +13158 39216 +62120 93587 +20939 71764 +58436 28038 +37198 31838 +59152 17554 +52958 44145 +64236 18285 +63763 56578 +40304 99650 +86564 78910 +45684 52760 +43139 61946 +99974 76669 +44698 86004 +19940 22021 +29106 78358 +60431 91386 +50880 76451 +96595 42193 +40966 73961 +64515 61946 +31081 39834 +87614 70892 +82663 54622 +73537 62994 +14125 56652 +51361 35627 +26084 35817 +82915 20069 +72409 22021 +22834 20071 +93476 83787 +63719 53096 +41505 48056 +56055 20404 +37255 99650 +33468 60776 +70472 22598 +66290 53077 +91071 67595 +30888 33173 +60826 29871 +12334 78358 +62744 69424 +85449 79500 +22333 16295 +67621 18455 +12605 90059 +32490 25835 +96639 75870 +82412 39747 +76964 60153 +60776 60776 +68837 39216 +35635 67595 +85239 14964 +15278 83450 +63581 35178 +77006 18285 +88570 80424 +61499 81689 +57466 47392 +78524 84304 +11821 53989 +62425 28916 +36264 50872 +38567 13061 +16357 45165 +17202 94451 +64290 31838 +76075 55071 +87325 40165 +93961 99650 +49866 65601 +91725 14411 +44721 18285 +44065 33493 +22521 56578 +28070 54600 +45621 54600 +54677 26913 +79647 24298 +89613 31415 +86493 13764 +16243 64218 +12832 21187 +43847 35189 +75859 54600 +69276 75826 +43251 14411 +96012 41446 +35482 35817 +45380 82383 +66801 31838 +79199 92341 +33087 70511 +40619 28916 +67655 80670 +22431 60776 +62731 54622 +29873 25771 +99354 63481 +36415 61946 +29742 94919 +64872 53077 +93028 55635 +32784 18285 +87488 68734 +56652 18285 +49968 80712 +82653 53096 +30377 24784 +40120 45165 +88404 70120 +69179 45165 +99645 67595 +44883 45165 +76320 43595 +29057 90019 +28502 61946 +73459 84304 +96354 54622 +77589 14301 +51381 54490 +40490 95808 +36023 27135 +13434 63807 +27250 35627 +13764 32845 +28229 34954 +56430 76669 +98593 63811 +11192 60776 +81601 72265 +86908 77116 +25484 82383 +31115 42206 +75124 70148 +96785 53096 +59814 85995 +17024 57255 +81701 41971 +43938 33493 +91646 33599 +96616 81828 +73270 87775 +75876 35817 +53007 83450 +39527 33975 +35936 17039 +95194 23302 +96876 80147 +68136 91386 +31253 19760 +98767 61208 +98353 86604 +13239 36264 +43374 13764 +36658 22965 +58030 84304 +42686 78358 +99419 49423 +43976 20759 +33361 47852 +23794 61946 +26896 83450 +12213 37740 +53827 49270 +71874 61946 +19394 77889 +63728 81025 +63780 72467 +34161 21317 +81832 56652 +20986 99650 +36631 48302 +60232 63009 +37744 84304 +46964 39391 +19771 14411 +75783 69365 +71727 71252 +60541 69095 +68594 30949 +51619 88697 +26797 50216 +86654 61946 +98872 53347 +20079 18807 +60408 41952 +37203 47862 +92078 43717 +94853 53096 +91937 65490 +39800 79198 +14179 50429 +21846 72768 +19081 14411 +60170 39838 +14482 36264 +61946 64811 +88464 10899 +93401 44867 +42260 53495 +92730 76838 +17708 31838 +68523 99650 +44540 95629 +12785 54490 +34598 13764 +20161 28916 +15318 67595 +67423 47864 +13951 95495 +63011 67595 +73505 61946 +22300 73685 +35181 78358 +70531 60776 +95954 57049 +65463 67851 +67270 53593 +62726 13782 +66690 72865 +99591 33493 +89300 13764 +82383 51267 +55326 56578 +66315 54622 +51554 91145 +21778 67595 +38569 71437 +25915 80353 +92411 88336 +76148 83204 +68688 61443 +78063 34003 +27804 14411 +79316 59050 +14222 22021 +83018 18197 +36304 33795 +46381 78358 +23167 99650 +73696 11314 +83569 71391 +93902 76551 +33606 35906 +30257 54600 +24956 80860 +64619 14411 +17640 56652 +22908 83696 +18954 74347 +89497 83450 +70303 76669 +37979 69814 +22661 53077 +96573 83961 +13055 85059 +73265 67595 +31927 45165 +61607 54490 +62232 53096 +68738 79113 +50586 95006 +55731 39122 +33386 31838 +20118 97657 +98794 76669 +62869 57813 +45508 91386 +29960 56652 +20228 95663 +75424 74090 +75421 30158 +82307 11086 +26488 64910 +48430 41174 +81439 63107 +68896 56652 +67511 33375 +40446 66170 +13668 68369 +83234 16181 +16929 84304 +42735 85915 +93954 22403 +98252 33493 +39418 54622 +14183 89745 +67167 68002 +88731 22021 +42317 54490 +29404 83450 +80844 31838 +43255 34866 +61762 32538 +32255 78358 +93152 25771 +42141 56578 +83740 22021 +40030 47353 +34668 14411 +46752 21905 +26196 48915 +45243 67595 +26757 56652 +13969 82383 +13148 84304 +39362 29711 +92819 31171 +12210 14411 +58671 91017 +87279 62713 +97755 92124 +77086 62944 +87094 40099 +83398 35817 +36525 64734 +27346 36264 +50274 17587 +74438 92593 +86182 13764 +63946 56578 +99269 25771 +46815 67595 +44645 93146 +82027 25771 +46981 39216 +52039 31814 +25930 54600 +48743 31838 +80123 72281 +21790 84579 +91556 78358 +63961 14411 +11280 97891 +67372 60776 +35817 34731 +80767 53877 +32458 90108 +53471 13557 +76699 92723 +33967 31838 +83166 23325 +48974 44826 +28408 16412 +18980 61946 +76595 21581 +54278 82835 +57836 67595 +16791 84304 +52746 99650 +23543 83450 +28819 95078 +21590 84304 +90588 91017 +62879 43669 +35788 81389 +67595 91386 +43342 73961 +34072 73961 +41533 54487 +77769 71151 +95215 74006 +37630 44436 +85291 18292 +82845 99650 +56633 60776 +95645 54490 +59689 14411 +77873 23174 +47892 94225 +71442 77808 +52932 56578 +68699 56652 +70296 54600 +34780 50848 +14008 63408 +65865 73961 +64689 84695 +70986 45490 +20034 54600 +21194 73961 +42510 37716 +80906 32357 +38289 19304 +44371 53386 +45873 95639 +72359 53096 +26200 40165 +81093 32591 +75520 99689 +70526 92020 +38000 90543 +42109 40526 +65858 64811 +77533 83450 +84191 63489 +59480 46311 +20750 32879 +81791 76258 +49948 56739 +44960 22021 +49084 12978 +46948 25438 +22467 39216 +32066 41311 +47715 13764 +40689 56652 +81797 82792 +48102 91114 +13286 64910 +24324 81079 +14772 91386 +10721 20481 +26990 54622 +67169 22021 +42848 25771 +24672 13764 +86122 25771 +56904 13764 +81436 53096 +94624 33493 +91853 56652 +23675 14088 +26625 68877 +22777 53096 +44833 33493 +47549 96449 +79529 27951 +78188 99650 +16287 51001 +64231 25771 +84131 55907 +15378 41016 +69506 78358 +80392 64811 +68681 57430 +95565 40165 +27128 40839 +11911 38020 +32463 95974 +64051 39216 +59409 25771 +85311 99650 +15025 76669 +31085 83450 +57046 43589 +31356 25944 +53445 32566 +65374 24456 +94347 17250 +51998 76838 +38930 76838 +13223 22328 +23412 33493 +33498 39216 +66922 97888 +19340 13764 +30800 33625 +63834 53077 +26329 76669 +36202 52321 +99460 87180 +10752 22155 +83677 54586 +83136 94225 +43505 94775 +49792 51024 +18430 87697 +48959 62169 +27559 86092 +42055 71266 +47346 27875 +95130 15327 +67175 50520 +80717 48669 +98758 93010 +69621 73606 +25596 22021 +37015 83450 +14944 93706 +70867 84304 +14464 80652 +11365 25771 +78435 46797 +45002 58808 +57900 83487 +99650 55843 +80681 38011 +64811 86071 +97586 33898 +42094 41087 +76669 54622 +74600 28060 +18109 25771 +95834 40165 +76583 32274 +23271 54600 +73123 81744 +81442 70437 +97274 25771 +99106 91717 +19847 39216 +41705 54622 +97824 64338 +34982 39216 +47246 58999 +94716 78358 +52266 60776 +39216 95154 +49351 94864 +64910 39559 +43455 84248 +71500 27152 +30651 49103 +63267 44712 +17567 18998 +63046 48579 +51483 63529 +35182 14411 +73961 60776 +39993 30182 +26258 96243 +52698 77762 +21525 22021 +47513 20331 +13140 22021 +43778 40165 +22788 94225 +84367 31838 +54265 64910 +55305 42377 +78923 54586 +40429 39216 +12422 63046 +24878 94225 +64356 57593 +34812 40889 +54661 60776 +31004 55132 +38061 63046 +85827 35627 +72862 33704 +51636 98691 +15448 54159 +90048 67595 +53851 18285 +48530 74924 +20386 81637 +87273 53096 +83022 56018 +98251 65250 +89295 60776 +98142 15765 +31571 42354 +92874 70979 +44965 58401 +51688 78358 +93890 12104 +65530 53096 +55006 91017 +49672 55977 +31815 37826 +13567 58321 +60844 53077 +63845 26325 +98712 79314 +99601 63236 +14173 60776 +11249 86708 +37023 48603 +25248 14411 +25444 63817 +92822 10083 +43060 41903 +98283 89972 +10004 77190 +69379 56652 +30459 45165 +81481 18285 +47130 24016 +57377 56872 +24043 63046 +78319 33493 +96058 33493 +42928 32466 +76838 35627 +43659 76669 +36827 39216 +41007 60776 +79655 14411 +26608 44836 +85420 68185 +81174 96069 +79223 59880 +54106 52192 +71917 83450 +19775 73961 +45391 66102 +26838 33493 +53437 76669 +71922 91017 +67552 40770 +23842 12889 +75398 90858 +20264 96094 +38278 39216 +62780 68287 +92766 45165 +25677 23355 +55791 83450 +63556 93703 +97511 61946 +74712 18285 +34605 15067 +57436 56652 +91202 91017 +11656 54622 +31838 22156 +94443 25771 +84090 60590 +63298 91386 +60339 56419 +25780 53096 +55284 76669 +83080 71920 +53843 36881 +83616 42743 +89091 68085 +71899 31838 +57786 67595 +34559 96506 +77211 94225 +67812 61946 +26511 63739 +51963 97847 +81350 23053 +37978 57093 +93413 89804 +38133 60776 +73234 84629 +60624 31957 +13937 34269 +35804 44626 +36210 53096 +34190 33493 +30736 83057 +80091 23762 +60917 82383 +30227 53096 +94439 56652 +78308 67595 +51009 67595 +64010 53077 +20563 61946 +43967 17312 +86436 75180 +80389 42825 +94453 83450 +41805 91918 +21462 99650 +71157 10537 +35046 73961 +96103 74733 +83069 35732 +18285 82383 +26446 76669 +70874 18579 +10539 11666 +57999 83450 +25966 91017 +37570 93089 +46126 18897 +65025 78341 +48404 61946 +26116 91017 +84857 33493 +84369 96112 +79609 76561 +24415 76669 +55288 37007 +85869 10010 +15152 76669 +10609 52954 +56293 59754 +35563 99650 +15144 32125 +27560 33493 +10484 99261 +73264 74795 +44774 17094 +41294 53851 +14411 83990 +17065 25771 +25771 60026 +58907 16393 +93527 90760 +25715 68223 +61620 23456 +36485 15169 +70191 39216 +40165 94225 +54006 99650 +75597 53096 +49678 25771 +51574 96842 +57852 18285 +60104 61946 +78607 35627 +54889 14411 +47241 10303 +71456 94225 +81425 49149 +59061 28602 +24633 31838 +14420 93613 +54622 53077 +17040 78745 +70622 88133 +56992 72730 +97895 33493 +94648 44310 +59138 13764 +97350 69918 +32734 83579 +55320 66823 +96915 55216 +95293 38588 +13774 12822 +70053 58437 +22021 18724 +41216 43315 +28987 31838 +70488 89770 +48277 53914 +79376 76669 +94225 53077 +60803 12578 +21144 16837 +23645 33714 +28916 83751 +50535 31838 +62178 64811 +63126 71848 +33569 46461 +99826 53077 +74714 33856 +67967 26838 +83610 54622 +15872 36009 +34302 31838 +24069 56292 +90147 38554 +95987 79195 +62656 40165 +83153 26094 +68726 85767 +63172 74949 +35390 94225 +29379 63046 +13571 56578 +16169 64811 +68905 35817 +71763 53096 +48781 28841 +95966 15028 +87862 67072 +87176 60776 +11203 13761 +50294 11171 +21503 25547 +96570 78358 +25213 84422 +61744 85120 +62795 72393 +84907 33493 +82935 84304 +24224 36264 +91386 99650 +76217 98074 +73872 60776 +41777 19177 +95695 39216 +88779 15111 +93458 67595 +74732 67770 +23754 39216 +90662 35817 +24013 99650 +66779 83450 +54586 27524 +88285 69874 +47809 22021 +25662 71764 +31583 56652 +58156 60776 +22656 56578 +22315 76174 +70195 54622 +27027 33351 +32409 75991 +91017 72493 +53096 13301 +92656 41863 +84304 85568 +45081 73961 +21844 78358 +83024 61946 +93888 45113 +69174 53096 +98465 56543 +46208 56652 +63289 99650 +96607 76329 +62648 55561 +38090 62481 +87491 90246 +45019 81753 +88050 73961 +18142 26270 +36682 22021 +15933 94225 +17393 38533 +33633 67595 +55662 73961 +63567 74739 +69557 83450 +36169 25771 +40716 35837 +11665 14704 +94437 36515 +43859 18285 +98937 54490 +73932 94209 +99289 50655 +12403 22021 +80283 64811 +68700 43336 +36887 69617 +53551 83450 +76290 18285 +49743 25771 +35627 76669 +59070 13231 +40419 24169 +48544 82383 +68680 84304 +31610 58761 +31170 67595 +27004 41596 +62727 98757 +24189 76875 +42807 97581 +85552 71764 +52402 40046 +78358 41164 +83450 76669 +62947 25771 +55820 53096 diff --git a/data/Day2 b/data/Day2 new file mode 100644 index 0000000..d45bc25 --- /dev/null +++ b/data/Day2 @@ -0,0 +1,1000 @@ +67 69 71 72 75 78 76 +4 6 7 9 11 12 12 +20 22 25 27 28 29 33 +35 37 39 42 43 46 48 53 +46 49 48 51 53 +31 33 31 34 31 +83 86 85 88 89 91 91 +74 75 78 81 80 83 86 90 +72 73 72 74 75 80 +19 21 22 25 25 28 +4 6 6 7 10 9 +49 51 52 55 55 58 58 +40 41 43 44 44 48 +53 56 56 57 62 +26 29 33 34 36 38 +35 38 41 45 44 +28 31 33 35 39 39 +75 77 81 82 86 +85 86 88 89 93 98 +78 80 85 88 90 +36 39 42 43 44 47 53 50 +74 77 80 85 86 87 90 90 +51 53 54 57 59 64 68 +15 17 23 25 32 +46 45 47 49 51 +25 23 26 27 30 27 +51 50 51 52 53 53 +51 50 52 55 56 59 63 +40 38 40 42 43 48 +23 21 22 19 22 25 +22 20 22 25 24 27 30 28 +95 92 94 95 93 93 +78 75 77 76 80 +31 30 31 33 31 32 37 +12 10 12 15 15 18 +67 66 68 68 67 +67 64 64 66 66 +71 70 72 72 74 75 78 82 +15 14 14 16 19 20 25 +50 47 48 50 52 56 58 59 +5 4 5 8 12 15 14 +37 34 36 40 42 45 45 +5 2 4 5 9 10 11 15 +11 8 12 13 15 20 +25 22 25 32 34 37 38 41 +6 4 7 10 16 13 +95 92 97 99 99 +17 16 23 24 28 +78 75 80 81 86 +11 11 14 16 17 +40 40 43 45 48 50 47 +37 37 40 41 42 43 46 46 +90 90 92 94 98 +35 35 36 38 43 +74 74 77 76 79 82 84 87 +23 23 25 27 26 23 +94 94 95 98 95 96 97 97 +70 70 68 70 74 +2 2 1 2 8 +46 46 48 48 51 +69 69 72 74 77 79 79 77 +49 49 52 54 57 57 57 +28 28 29 29 33 +51 51 53 56 56 59 61 67 +27 27 29 33 36 39 42 +29 29 30 34 37 38 41 39 +34 34 35 36 40 42 42 +22 22 26 28 32 +7 7 10 14 20 +35 35 38 39 46 48 +23 23 24 26 29 36 35 +27 27 29 35 35 +61 61 66 69 70 74 +26 26 32 34 36 43 +41 45 46 48 49 51 +5 9 11 13 14 16 17 15 +72 76 79 81 83 86 87 87 +64 68 69 72 75 76 79 83 +27 31 33 36 37 40 46 +85 89 92 93 94 91 92 +65 69 66 67 68 70 72 71 +84 88 91 94 93 93 +78 82 79 82 83 84 86 90 +15 19 20 19 24 +41 45 48 50 53 53 56 59 +27 31 32 32 31 +84 88 88 90 90 +8 12 12 13 17 +84 88 89 89 95 +58 62 64 68 69 71 +1 5 9 12 15 14 +57 61 62 65 68 69 73 73 +1 5 9 10 14 +46 50 53 57 63 +63 67 68 69 74 75 77 +55 59 66 68 70 68 +6 10 11 17 17 +76 80 82 88 89 90 94 +73 77 82 85 90 +12 18 19 22 24 +47 54 55 58 60 62 59 +4 9 11 14 14 +64 70 71 72 73 77 +80 86 88 90 95 +61 68 71 68 71 74 76 +79 85 87 84 85 88 86 +51 56 57 55 58 58 +37 42 41 44 45 48 50 54 +74 79 76 78 80 82 88 +61 66 66 67 70 +37 43 46 49 49 48 +77 82 85 86 88 91 91 91 +26 33 33 35 36 37 39 43 +42 49 49 52 58 +39 44 47 50 52 56 58 +36 41 43 44 47 48 52 51 +42 49 50 54 54 +63 70 73 75 77 81 85 +74 80 84 87 93 +75 80 83 86 93 94 +4 10 13 14 19 21 20 +65 72 75 80 83 86 89 89 +64 70 73 74 80 81 82 86 +20 25 30 33 38 +57 56 54 51 48 49 +88 87 86 83 83 +55 52 49 48 45 42 40 36 +59 56 54 53 50 49 44 +28 26 25 22 21 20 21 19 +10 9 7 5 7 10 +44 42 40 43 43 +50 47 50 48 47 44 43 39 +79 76 78 77 74 69 +32 29 29 27 25 +30 29 26 23 20 20 22 +61 58 58 56 55 54 51 51 +80 77 76 76 72 +56 54 51 51 44 +64 61 58 56 55 51 50 47 +28 26 25 21 20 18 16 19 +94 93 91 89 86 82 82 +76 74 73 70 69 65 64 60 +76 75 71 70 63 +66 63 62 57 56 +55 53 50 44 47 +53 52 49 46 44 42 37 37 +66 64 63 57 53 +41 39 37 36 33 28 26 21 +21 24 21 19 17 14 +67 70 68 65 64 62 61 62 +52 53 52 49 49 +85 86 85 84 83 81 77 +30 32 29 27 25 20 +77 80 81 80 77 76 +96 99 98 95 92 94 96 +87 88 91 90 90 +63 65 64 63 66 65 61 +76 78 77 75 76 70 +50 51 48 48 47 46 45 44 +73 76 75 75 78 +56 57 56 56 55 54 52 52 +53 56 54 54 51 49 47 43 +64 67 67 66 60 +56 58 55 53 52 48 45 +44 45 44 41 37 40 +15 17 16 12 12 +58 60 58 57 54 50 47 43 +52 55 51 48 41 +83 86 81 78 77 75 +46 47 45 44 43 37 40 +59 60 53 51 50 48 48 +23 26 25 24 23 17 13 +54 55 48 46 45 43 41 34 +14 14 11 10 7 5 +80 80 78 75 74 72 69 71 +63 63 62 60 58 58 +65 65 64 63 59 +98 98 95 94 92 89 87 81 +97 97 98 97 96 +95 95 97 96 97 +45 45 44 42 40 38 41 41 +6 6 7 5 1 +22 22 23 22 17 +47 47 46 44 44 43 +23 23 21 21 20 19 21 +30 30 27 27 24 24 +82 82 82 81 77 +51 51 49 49 48 46 41 +16 16 13 9 7 5 4 1 +82 82 78 77 75 73 76 +89 89 87 83 80 80 +64 64 61 57 55 51 +59 59 55 54 52 50 44 +36 36 30 28 25 +33 33 30 29 23 20 23 +13 13 7 6 6 +51 51 48 47 41 39 35 +92 92 86 84 82 81 78 72 +97 93 92 89 88 85 83 +58 54 52 50 49 47 49 +42 38 36 34 31 31 +86 82 80 79 76 75 71 +92 88 87 86 84 77 +55 51 48 47 45 48 46 45 +40 36 37 35 36 +20 16 15 12 15 12 12 +51 47 48 45 42 38 +83 79 77 78 76 75 69 +27 23 21 18 15 15 13 11 +80 76 74 71 70 70 73 +78 74 72 72 71 69 68 68 +29 25 24 24 21 17 +67 63 61 61 55 +98 94 90 87 85 83 82 +98 94 90 87 86 87 +44 40 36 33 33 +96 92 90 86 82 +49 45 42 38 31 +70 66 65 58 56 53 +49 45 42 41 39 32 33 +37 33 32 27 26 25 25 +34 30 29 27 25 24 18 14 +26 22 19 18 13 12 5 +59 53 51 49 46 43 +28 21 18 16 14 11 9 12 +21 16 15 12 11 11 +28 22 21 20 17 14 10 +49 43 40 37 31 +14 7 6 8 5 2 1 +42 36 34 32 35 37 +49 42 41 43 40 39 38 38 +61 54 57 54 53 50 47 43 +97 90 92 91 89 86 85 79 +36 29 27 25 25 24 21 +28 23 23 20 18 16 17 +33 27 26 26 23 20 20 +90 83 83 80 76 +34 28 28 25 22 17 +61 54 50 47 46 44 43 42 +22 16 13 10 7 3 5 +73 68 64 63 63 +44 37 36 32 30 29 25 +85 79 78 75 71 65 +64 57 52 51 50 +54 47 42 39 40 +88 82 80 77 71 71 +61 55 54 49 45 +94 89 88 82 76 +43 40 37 34 31 28 27 30 +21 25 28 32 34 35 33 +54 57 59 58 57 55 +27 31 33 35 39 +10 14 16 16 17 18 22 +66 69 70 69 72 74 +21 27 29 31 34 41 45 +44 45 51 53 56 59 60 64 +73 74 71 65 62 61 62 +54 51 49 46 42 39 34 +81 83 82 75 72 70 66 +58 57 60 63 63 65 63 +72 71 68 64 64 +89 83 77 74 74 +42 45 48 52 51 +16 16 18 18 22 +62 69 72 75 76 76 77 80 +10 10 13 13 18 +53 59 62 64 64 65 67 71 +73 70 68 66 67 65 61 +95 92 89 87 85 80 79 78 +2 2 3 9 9 +77 76 71 70 66 +46 42 41 41 39 36 32 +57 58 57 53 50 50 +82 78 77 75 73 67 68 +71 69 73 76 77 75 +58 64 65 67 66 68 71 +95 91 88 86 82 83 +38 38 35 32 32 +39 42 45 48 50 54 56 61 +82 88 91 92 90 +51 47 45 42 41 39 37 38 +86 88 88 86 84 83 83 +62 62 58 56 54 54 +65 58 55 54 53 49 +90 86 85 82 79 +34 37 35 33 32 31 24 24 +93 89 86 89 91 +29 36 37 44 47 44 +32 35 33 32 29 26 25 22 +47 43 42 38 38 +80 82 83 82 82 +8 8 9 10 11 14 16 18 +16 14 17 19 20 21 28 25 +27 30 29 26 22 +65 64 61 60 57 53 51 +13 20 22 26 26 +47 42 41 39 37 35 33 33 +45 47 53 54 55 60 +66 62 60 58 55 56 54 50 +63 67 69 73 75 78 79 79 +4 6 7 10 12 9 10 14 +32 27 24 20 17 15 10 +39 39 38 36 35 37 33 +63 65 67 64 67 +24 24 22 23 22 +13 20 21 22 26 +27 27 24 22 21 21 18 20 +26 29 31 32 34 33 +76 76 75 74 71 68 64 62 +10 10 12 10 9 10 +47 40 37 36 34 37 +48 48 46 45 42 42 37 +58 58 57 51 48 42 +23 19 17 14 7 4 +64 57 55 50 47 46 49 +59 62 60 57 55 52 50 52 +55 50 50 47 45 39 +69 65 63 65 64 63 62 +55 56 54 50 48 47 50 +20 20 15 12 10 9 +38 37 37 40 41 44 46 46 +65 68 70 67 68 68 +5 7 13 16 19 +72 71 76 79 85 +86 81 78 75 73 76 73 67 +80 74 73 70 72 73 +71 67 60 59 58 55 52 52 +56 60 62 61 64 66 67 71 +79 74 71 67 65 64 +41 37 33 32 25 +96 90 88 86 80 78 76 72 +47 44 46 49 48 50 53 +12 19 23 24 27 28 +95 97 95 92 89 83 +47 44 46 49 50 57 58 58 +63 67 70 70 68 +34 30 27 26 19 +19 23 28 31 29 +46 53 54 58 61 66 +14 17 14 11 11 7 +77 77 75 74 73 71 68 +61 61 63 67 72 +59 55 53 50 47 45 45 +93 91 92 89 88 +55 48 46 47 45 43 40 40 +52 46 45 42 38 34 +76 73 72 69 65 63 64 +45 45 43 41 42 +69 69 66 63 59 56 52 +34 40 41 44 47 50 50 +42 42 45 52 55 57 64 +64 68 70 73 79 +66 60 59 56 53 53 50 46 +51 50 52 54 56 57 61 +52 59 62 62 63 66 64 +84 84 85 88 91 94 97 97 +57 57 60 59 58 58 +25 22 19 20 21 22 26 +67 65 63 61 58 57 56 50 +61 61 62 66 68 71 +86 79 77 75 76 73 69 +2 3 6 6 8 10 7 +17 22 24 27 32 +17 17 10 9 6 5 7 +73 69 72 71 65 +21 17 15 13 15 12 11 11 +28 31 34 38 42 +57 57 56 53 50 48 48 44 +71 69 70 71 72 73 74 81 +2 6 6 7 9 +7 11 12 15 16 16 18 18 +24 20 19 18 16 11 9 5 +85 81 79 77 75 73 69 +23 24 27 29 30 32 32 32 +36 29 26 26 24 21 +6 5 8 11 12 12 15 17 +14 9 7 6 6 6 +28 25 22 22 21 +74 75 73 71 73 71 67 +46 50 51 56 58 61 62 64 +16 23 25 29 32 34 35 39 +37 37 43 45 42 +26 26 32 34 38 +11 11 13 14 15 18 18 19 +75 77 74 70 67 63 +68 74 71 73 76 79 82 87 +69 69 71 70 67 61 +77 80 81 81 85 +36 39 36 33 33 32 29 30 +18 20 23 23 25 26 +80 86 88 85 89 +22 21 18 16 13 13 +64 64 63 61 56 +25 23 24 24 27 33 +16 16 17 19 18 19 +62 58 58 57 55 54 +20 25 27 32 32 +38 33 32 31 28 26 20 +77 76 75 73 70 63 63 +44 49 50 56 57 58 60 +48 53 56 58 60 60 63 63 +65 60 59 58 58 57 59 +35 36 38 39 42 49 +17 13 11 11 8 8 +67 71 75 78 84 +81 81 82 85 87 90 91 95 +69 69 72 74 77 80 86 +59 58 57 57 59 +57 60 61 64 67 66 71 +59 58 61 64 65 67 64 +51 51 53 56 53 53 +24 26 27 31 33 34 +26 27 30 32 35 35 +82 85 83 82 79 76 76 69 +60 56 54 52 51 45 42 35 +20 13 14 11 10 +73 71 68 67 64 61 57 +28 29 28 24 18 +54 47 45 39 38 35 +41 43 46 50 53 53 +32 36 38 44 47 54 +17 16 16 15 11 +50 51 48 48 46 +54 52 53 51 56 +21 25 27 30 32 30 36 +79 77 79 80 80 84 +18 19 18 17 14 13 13 +8 15 16 18 20 20 26 +42 42 44 48 49 49 +44 37 34 31 30 26 25 25 +76 80 81 82 88 92 +27 27 22 21 18 15 15 +26 26 25 19 17 13 +35 32 34 32 31 25 +37 41 43 50 50 +19 18 16 11 8 6 8 +18 21 19 13 6 +57 58 56 53 51 47 46 +58 57 54 51 52 52 +73 72 75 81 84 88 +14 13 18 20 21 24 +65 65 62 61 59 59 59 +76 80 80 83 85 88 91 97 +89 85 81 80 77 +23 23 23 26 27 25 +71 69 70 69 66 +29 31 36 37 40 43 45 45 +77 74 71 71 71 +44 47 44 41 44 39 +69 74 77 79 78 75 +55 55 57 60 63 62 66 +74 73 71 69 69 66 59 +25 21 20 17 16 13 13 14 +26 30 31 29 31 33 33 +37 41 44 45 48 52 53 +67 67 68 65 72 +76 76 79 77 79 80 83 82 +28 30 33 35 33 31 +48 54 56 57 61 62 59 +31 26 25 24 22 20 +10 11 13 13 20 +3 3 7 10 12 14 18 +75 79 76 79 80 81 +16 21 27 29 31 33 35 40 +24 20 19 18 18 17 10 +90 93 90 83 82 80 79 +37 35 33 30 29 27 26 24 +20 17 15 13 11 10 9 +1 2 5 6 9 11 13 15 +42 44 46 48 50 52 54 57 +40 38 36 34 31 28 +24 23 20 17 16 15 13 12 +78 77 75 72 71 68 67 +65 66 69 71 74 77 79 82 +65 64 62 59 58 +70 67 66 64 62 +23 21 20 19 16 +26 29 30 33 35 36 +50 48 47 45 44 41 38 +9 12 13 15 17 18 20 21 +43 41 40 38 37 34 32 +24 23 21 19 16 13 10 9 +93 91 88 86 83 80 +37 34 33 30 29 +36 33 30 29 28 26 23 21 +84 87 90 91 94 95 96 +57 55 52 51 50 49 47 +83 86 87 88 89 92 94 96 +56 58 59 62 63 64 67 70 +62 65 66 68 69 72 74 +52 54 57 59 60 63 +46 43 40 39 37 +70 69 68 65 63 60 +72 73 76 78 79 81 +23 24 25 26 29 +69 66 65 62 59 +49 50 53 54 56 58 +39 40 43 44 46 49 +50 48 47 45 42 41 +21 18 15 14 13 11 8 7 +66 68 69 70 72 75 +64 61 59 57 55 54 53 +22 25 26 29 30 33 36 +35 38 41 43 46 +22 21 19 17 14 12 10 7 +35 33 30 28 25 24 +81 79 76 75 73 +48 45 42 41 38 37 +24 25 27 29 31 32 +18 21 22 24 26 28 31 32 +21 24 25 26 29 30 32 +87 85 83 81 80 77 74 71 +35 32 29 27 24 22 19 16 +89 91 92 93 96 97 +37 35 34 33 32 31 29 +84 81 80 77 74 71 69 +38 35 32 29 26 25 +93 90 89 87 84 82 80 78 +88 85 83 81 79 78 76 73 +2 3 5 6 9 11 14 17 +31 30 27 25 23 20 +95 92 91 89 87 85 82 +6 7 9 12 13 15 17 20 +48 45 42 41 40 39 36 35 +76 73 72 69 66 64 +82 80 77 75 73 72 +67 69 71 72 75 76 78 81 +1 2 4 6 9 12 13 +21 20 19 16 13 11 9 8 +42 39 38 37 34 32 +21 22 25 27 30 33 36 +57 56 55 54 53 51 48 47 +37 35 33 30 27 25 23 +14 17 18 21 23 26 27 29 +43 45 48 50 51 52 53 55 +15 14 13 10 8 +17 18 21 22 25 26 +13 10 9 8 6 5 4 +84 86 88 91 93 +91 90 87 84 83 +35 32 30 29 28 26 +56 59 61 62 65 +20 22 24 27 28 +32 33 35 36 39 +48 49 50 51 53 54 56 58 +60 62 64 67 69 71 +25 22 19 17 14 12 11 +25 28 30 31 33 35 37 38 +56 54 51 50 47 46 43 +31 32 33 35 38 +59 58 56 54 52 50 47 46 +86 89 90 93 94 95 96 99 +95 93 92 91 88 85 +65 64 63 60 58 57 54 +74 76 77 80 82 +76 78 79 81 82 +12 11 10 7 6 4 2 +90 87 86 83 82 +16 13 12 11 9 8 7 +41 38 36 35 32 31 28 26 +43 45 46 48 51 52 54 55 +94 91 88 85 82 81 +77 74 72 69 68 66 65 63 +30 32 35 36 37 40 42 +82 83 85 87 88 90 +67 64 62 60 59 57 54 +92 90 89 88 87 84 83 82 +21 22 25 27 30 +63 65 68 69 71 +6 9 11 12 13 16 +92 89 88 86 83 80 +92 91 89 87 86 85 84 82 +18 16 13 11 9 +52 50 47 44 41 39 38 +10 11 13 15 18 +46 44 41 39 38 37 34 +27 30 31 33 36 +65 67 69 72 73 75 76 77 +40 43 46 47 50 +88 85 82 79 77 76 74 +87 89 91 94 95 +88 86 83 80 79 76 73 70 +41 43 45 48 51 52 55 +87 90 91 93 95 +79 82 85 88 89 91 92 +7 10 11 14 16 17 19 +46 47 48 50 51 52 +95 93 90 88 86 84 83 82 +68 70 71 73 76 +80 79 76 73 71 69 +80 83 84 87 89 90 +94 93 92 91 88 87 +85 82 80 77 74 71 68 +32 29 28 25 24 22 20 +45 42 40 37 35 33 +51 48 47 44 41 39 +33 36 38 41 42 45 +84 82 81 78 76 75 72 69 +24 25 28 29 30 32 33 36 +75 77 79 81 82 85 88 +2 5 6 9 10 +73 75 77 80 82 84 86 +69 68 65 62 59 +82 81 78 77 75 74 +69 71 72 73 76 77 79 80 +78 80 82 85 87 +95 94 91 90 88 85 84 81 +65 68 70 71 72 75 77 +80 81 83 85 86 87 +42 39 36 34 31 29 +82 85 87 88 90 91 92 93 +44 41 40 37 36 35 32 +71 69 67 65 62 60 58 56 +92 89 87 84 81 80 77 +31 30 28 26 23 22 19 17 +14 16 19 22 23 26 +84 86 88 90 91 +37 34 33 32 29 +75 76 79 82 85 86 87 90 +63 66 69 70 73 75 +26 27 28 31 33 34 37 39 +46 43 40 37 34 32 +28 26 25 23 21 19 +67 65 63 60 57 55 52 +33 35 36 39 42 43 45 46 +58 55 52 49 46 45 +99 98 97 95 92 90 88 +27 30 32 35 36 39 41 43 +59 58 57 56 54 53 50 47 +31 29 27 25 24 22 21 18 +35 33 32 29 28 25 23 20 +66 65 62 60 58 56 53 50 +50 51 54 55 58 61 +71 68 65 63 62 +47 48 51 53 55 58 59 61 +10 12 14 16 19 21 +33 35 37 38 39 41 44 45 +94 92 91 90 89 +10 12 15 17 19 22 +83 86 87 89 91 93 95 98 +27 24 22 21 18 15 13 +97 95 92 89 88 87 +20 21 24 25 28 29 31 +72 71 70 69 67 65 64 +65 62 59 56 55 52 51 48 +79 77 75 72 71 69 +70 67 65 63 61 59 56 +9 10 12 14 16 17 18 21 +9 10 13 15 17 19 +49 50 53 56 57 +51 54 56 57 58 61 63 66 +86 88 90 92 93 +37 38 40 42 43 +32 33 35 37 38 39 +77 75 72 69 68 65 63 60 +10 13 15 17 19 +29 31 34 35 36 38 +61 63 64 67 69 71 74 +86 84 82 81 79 76 74 +51 48 47 45 44 42 39 37 +37 39 42 45 46 49 50 +54 57 59 60 62 63 65 66 +43 45 48 49 51 52 +57 56 55 54 52 50 47 +13 15 18 19 20 23 26 +4 7 9 12 13 14 +24 23 20 19 16 15 +53 52 50 49 47 44 43 +11 13 15 17 20 22 24 +27 26 24 23 22 20 +4 5 6 9 11 +26 23 21 19 17 14 13 10 +34 35 37 39 41 44 46 +59 61 63 65 68 71 +50 47 46 44 42 41 39 36 +23 20 17 15 13 +28 25 23 20 17 14 12 +2 5 7 10 13 16 +16 18 19 20 23 25 +5 6 7 8 11 14 +44 47 48 50 53 54 +43 42 40 39 36 35 34 31 +57 59 61 62 65 66 67 +37 36 35 33 30 29 28 26 +80 79 78 76 73 70 +93 92 90 87 86 84 +54 52 49 47 46 44 43 41 +27 25 22 19 18 15 +76 78 80 81 83 85 +79 77 74 71 69 67 66 +29 28 25 24 21 18 16 +2 3 6 9 10 +12 9 6 3 2 +55 58 60 61 62 63 64 66 +16 17 18 20 21 22 25 28 +62 63 64 66 68 71 74 +17 20 21 23 26 27 29 +22 19 18 17 16 +44 47 48 51 52 54 56 +36 38 41 42 44 46 48 50 +28 27 24 23 20 19 17 +20 17 15 13 11 +65 64 61 60 58 55 +49 46 44 43 42 39 37 34 +75 73 72 71 68 +50 51 53 54 56 57 +73 72 69 68 66 63 61 +44 45 48 51 52 53 +66 65 63 60 59 57 +48 49 50 51 54 57 58 59 +71 74 77 79 82 84 86 87 +60 58 55 53 51 49 +12 14 15 16 19 +35 36 37 38 40 43 46 +20 19 18 17 15 13 12 9 +92 89 88 85 83 81 +14 15 17 20 21 22 24 27 +74 76 78 79 80 82 83 86 +61 58 55 52 50 49 46 +48 49 50 51 54 57 58 60 +86 87 88 90 93 95 +49 47 44 41 39 37 +10 9 8 7 5 +78 80 81 82 83 85 88 91 +51 50 48 45 44 41 40 +52 50 48 46 44 +88 89 90 91 94 95 96 +91 89 87 86 84 +26 24 23 21 20 18 17 +61 60 59 58 57 54 51 50 +20 23 25 28 30 +39 42 45 46 48 51 +49 51 53 55 58 61 +20 22 23 24 25 28 30 33 +50 52 54 56 59 +83 82 81 80 78 +66 63 62 60 57 +60 58 57 54 51 48 46 45 +86 87 90 92 93 95 97 98 +14 16 17 19 21 +42 41 40 38 35 +63 66 68 69 71 +78 79 81 84 85 86 87 89 +18 17 16 13 11 8 +66 68 71 74 77 79 +79 81 84 87 88 91 +45 46 47 48 50 51 +25 26 29 30 31 32 35 36 +59 60 63 64 66 +89 86 85 83 80 77 75 +31 29 27 26 23 21 +29 31 34 37 38 +78 79 80 82 84 86 89 90 +66 64 63 61 58 +53 56 58 59 62 64 67 68 +14 11 8 7 4 +57 59 61 63 65 +30 29 27 25 24 +29 27 26 23 21 19 16 +38 37 36 33 30 28 +19 21 24 27 29 32 33 35 +69 68 65 64 63 61 59 +84 83 82 81 80 79 +10 12 14 16 18 21 24 +40 41 42 44 47 50 52 +30 29 28 27 24 23 +62 60 59 57 54 +53 52 50 49 48 45 44 41 +28 26 25 22 20 +64 61 58 55 54 53 51 +63 65 66 69 70 +52 50 49 47 44 43 40 39 +25 27 28 30 31 33 36 37 +87 89 92 93 94 96 99 +94 91 88 87 85 82 79 76 +66 64 63 61 58 57 +60 58 57 55 52 49 48 +2 3 6 8 11 12 15 +34 33 31 30 29 26 24 +70 71 73 74 76 78 79 +19 22 23 26 29 31 32 +68 69 70 72 74 77 +73 71 69 68 65 +23 24 27 29 32 33 +57 56 55 52 51 50 48 46 +20 22 24 26 27 29 +78 81 84 87 89 91 94 +74 75 78 79 81 84 87 +48 47 45 44 41 38 35 +33 34 37 40 43 45 +74 76 79 80 82 84 +15 17 20 21 22 25 28 29 +7 10 12 14 15 16 19 20 +51 48 45 42 39 38 37 +1 4 7 9 12 14 +82 81 80 78 75 74 73 72 +39 37 36 34 32 29 +9 11 14 16 18 20 +8 9 10 11 13 15 17 20 +20 22 23 25 28 29 30 +87 84 83 80 79 77 74 72 +50 52 55 57 60 62 64 67 +75 72 71 69 66 65 62 +35 33 31 29 27 24 22 +78 79 82 84 86 87 90 +16 15 14 11 9 8 6 5 +56 58 59 61 64 66 69 +37 35 33 31 30 +14 16 18 19 22 +14 15 18 21 22 25 +83 84 86 87 90 92 95 +78 80 81 83 85 86 +3 4 5 8 9 +68 70 73 75 76 77 +65 63 62 59 56 +18 19 20 21 24 27 29 31 +45 47 49 50 53 55 58 +45 43 41 38 35 32 30 +53 54 55 57 58 +90 88 86 85 84 81 78 +6 8 10 11 14 15 +18 21 23 26 29 31 34 +51 50 47 46 43 41 39 37 +82 81 78 75 72 71 68 +98 95 94 93 90 88 85 +20 19 16 14 12 +11 14 16 18 19 22 24 27 +29 27 24 23 22 +19 18 16 13 10 7 5 4 +44 41 38 36 34 +45 44 42 40 39 37 +38 36 35 32 30 29 26 +27 28 29 30 33 36 +68 69 70 72 73 74 +89 90 93 94 96 +44 42 41 39 38 35 +85 82 81 80 77 +32 34 35 36 37 39 41 +44 43 42 40 37 36 +84 82 80 79 78 75 74 72 +40 42 45 48 49 51 52 +77 78 80 81 82 84 87 90 +37 40 42 43 46 +92 90 88 87 84 +37 39 40 41 44 45 46 +72 75 78 81 83 86 88 91 +66 67 69 70 73 +40 41 42 44 45 +92 90 87 86 83 82 79 +33 34 37 38 41 +75 77 78 81 83 84 87 90 +66 65 63 60 59 +69 68 66 65 62 +68 71 73 75 76 +79 82 85 87 90 +61 58 56 55 54 52 +6 7 9 12 13 14 +25 24 22 20 18 17 14 13 +48 51 52 53 56 59 +50 48 47 46 43 41 39 +3 5 6 9 10 +44 42 40 39 38 +47 46 43 40 39 +24 26 29 31 34 37 40 41 +13 15 18 21 22 23 25 28 +52 51 50 49 47 46 45 43 +48 47 44 42 39 36 34 +60 58 56 53 50 49 +26 23 20 17 16 15 +77 74 72 71 68 67 65 62 +9 10 12 13 16 17 19 21 +51 54 56 57 58 59 60 +54 57 59 61 64 65 +35 38 40 42 44 +37 38 40 43 45 48 +37 38 40 43 45 47 48 +80 81 83 84 87 +35 37 40 41 43 +80 78 75 74 71 68 66 +46 48 49 52 53 55 56 +53 54 57 58 59 61 64 67 +51 54 56 59 62 65 66 67 +21 24 26 27 28 30 +27 26 24 22 20 19 16 +19 21 23 25 28 29 31 32 +10 9 8 7 5 4 +32 35 36 39 40 42 44 46 +51 49 48 46 45 42 +51 48 46 45 43 +52 55 56 59 61 63 66 +19 17 15 12 10 9 6 5 +5 6 7 10 13 +46 44 43 40 38 36 33 +24 22 21 18 15 14 12 +50 53 54 57 59 +78 80 82 83 85 +14 15 16 17 18 21 +37 34 33 32 31 28 26 +55 57 59 62 65 66 69 +87 90 93 95 96 99 +37 39 42 44 45 +1 4 5 6 8 +24 21 20 19 16 15 13 +75 73 72 71 69 67 +77 79 82 85 87 90 +45 42 39 38 35 33 31 +34 31 30 27 25 23 +40 39 36 33 30 +77 80 82 85 87 90 91 +76 74 72 70 67 +58 60 63 66 69 +43 41 40 39 38 +46 44 42 40 39 +96 94 93 91 88 +90 89 88 86 83 80 77 +68 67 66 64 62 60 58 +87 90 93 94 95 96 99 +30 32 33 35 37 +41 44 45 46 47 +44 43 41 40 37 +16 14 11 9 6 +97 95 93 91 89 87 +23 21 19 16 15 +63 60 57 55 53 51 50 47 +60 62 65 67 70 73 +6 8 10 11 12 15 16 +79 78 77 74 71 70 +56 57 59 62 63 66 +46 43 42 40 38 37 35 32 +87 85 83 81 79 77 76 75 +74 72 70 69 66 +17 14 13 12 9 +74 76 77 78 79 81 +18 21 23 25 27 29 32 +34 31 29 27 25 23 20 +86 84 83 82 80 78 75 +41 42 44 45 48 51 54 57 +36 34 32 31 30 27 24 +42 39 37 36 35 32 30 28 +84 82 79 78 76 74 +42 40 37 36 35 34 31 +57 56 54 52 50 48 46 +20 21 24 26 27 +37 40 41 44 46 48 50 51 +28 29 30 31 34 +12 14 16 18 21 +69 70 73 75 76 77 +40 39 36 34 32 30 29 26 +57 59 61 64 66 69 70 +35 36 37 39 42 +56 55 54 53 50 49 48 +60 59 58 57 55 +33 30 29 27 26 24 22 +85 82 81 80 78 76 75 +67 64 61 60 57 54 52 +86 85 84 81 78 +47 45 43 42 41 +25 24 23 20 19 18 17 15 +58 57 54 53 50 49 +88 90 91 92 93 96 99 +46 43 41 38 35 +20 18 15 13 12 9 7 +81 79 77 74 73 72 69 67 +61 58 57 54 52 49 48 +93 91 90 87 85 84 81 79 +9 10 12 13 15 18 19 21 +66 69 72 75 77 79 82 83 +73 74 76 79 80 81 84 +61 59 57 56 55 +18 15 12 10 9 8 5 +85 82 79 76 74 +40 38 36 34 33 +69 72 74 77 80 82 83 85 +70 71 73 75 77 80 82 +78 77 75 73 71 70 69 68 +3 6 8 9 10 11 14 +5 6 9 12 14 +60 58 55 54 52 49 48 +8 11 14 15 16 +65 66 69 70 72 73 74 77 +79 82 84 87 88 +61 59 58 55 52 51 +44 41 40 39 37 34 32 +23 25 28 29 31 32 35 +33 36 37 39 41 42 44 46 +51 48 45 42 41 +62 59 58 56 55 52 49 +28 30 32 33 34 35 37 40 +52 54 55 57 58 59 62 +20 19 16 14 13 10 8 5 +60 61 64 67 69 +71 69 67 66 63 +98 96 95 92 90 +6 9 12 13 15 18 19 21 +35 36 38 41 43 45 48 50 +91 88 85 84 81 78 76 +83 85 87 90 91 94 97 98 +64 66 69 70 71 72 75 76 +57 55 52 51 49 +15 17 20 23 25 \ No newline at end of file diff --git a/data/Day3 b/data/Day3 new file mode 100644 index 0000000..bf042da --- /dev/null +++ b/data/Day3 @@ -0,0 +1,6 @@ +~-mul(858,892)?@#mul(380,985)what()[^what()%mul(340,11)~*}don't())/~-mul(849,387)%-why()when():how()>-,what()mul(605,504)what()~:]what();how()who()];mul(771,783)?^ who()}~?>mul(111,830))@ ~mul(329,797)%'why()why()mul(125,409)-*/where()()@&!why()mul(390,37)when(974,538)#/when()){/don't()/mul(20,990)}?%{(who()mul(627,567)(how()'<(#%how()mul(387,315){;%who()%#from()mul(868,680)}^$mul(862,19)mul(847,689)>((#@when()}mul(339,156)+/{}@{^%[why(231,704)mul(236,754)]'^where(978,690)mul(460,872)#'*mul(518,944)>mul(301,886))mul(477,933)^mul(685,909)who())]what(288,791)mul(170,434){ &where()~(@where()mul(191,104)mul(637,600)&select()why())~select()mul(534,617)?mul(763,508){from()when(22,266)+who() when()mul(204,352)when()mul(426,122)-<*where()'$ why()mul(192,980)[(#[!$-}mul(798,208)''[!where()what()select()mul(295,727))#)}($,$%where(539,126)what()when()select()'@mul(311,541),?don't()#select()!}!(}&?mul(100,142)),-}%mul(222,856)~$;>!from()where()mul(758,901)mul(757,796)mul(976,686);@'~+-{#who()mul(26,971);mul(404,362)^~who(417,106)what()#mul(186,691)from() %#+{/mul(67,433)-who()!-+!mul(184,469)*when()[&when(458,221)<$mul(163,556)^)]?,'}&+who()mul(514,239)~)(mul(143,441)'how(741,776)~who(766,575)when();>*^mul(281,143)+!>;+:mul(767,44)# when()why()don't()how()from()[from()from(){mul(436,519)what() *who();@{,>do()%'mul(19,540)when()mul(643,539)~when(812,543)mul(527,639)-!mul(409,379)where()/(mul(168,491)#$>]mul(432,333)@%>>&who()(mul(113,494)%where()why()when()mul(659,592)#(/'mul(72,670)when()^^mul(369,596)mul(631,168)-why()()[*}mul(330,968) $why()where()mul(230,139)don't()@)@where())%}where()&,}mul(875,661)~don't()':why(){mul(793*:mul(399,702)!://select()@when()why()do()@mul(488,581{?{&how()&select()!<'mul(912,311)why()! })@+}mul(128*mul(626,752)%mul(49,60)[,who()what()select())@@]*]why(937,788)from():mul(945,658)<]don't()where()how(515,644)@+'select()how()mul(369,665)/],mul(263,185)where()^why()why()@what()mul(82,407)mul(464,537)[mul(871,333)^mul(560,227)-why()mul(966,203)$what()+where()#mul(101,21)}%how(),)^who()>,select()mul(667,565)('what(),%select()(@mul(500,204:''<~'why(477,559))[where()mul(698,648);how(){&?what()^@[%mul(280,395)>~, mul-#/%:where()>where():mul(170,746)don't()}($:@mul(998,876)*~<[mul(121,366)-?#;how()>from() ::mul(804,883)^-[ (:mul(100,354who(544,766)+,]>!['/;mul(949,115) +[^!})from()&mul(617,518)*how()(:@who()what()/mul(591,163):what()?{'do()!/when()!$mul(394,797)]how(620,741)!:!mul&%mul(523,862) ~}where()why()}from()! @do()mul(270,205)from()[&^mul(577,474)?{*/why()*what()mul(656,30)where()+#,@mul(295,616)why()/mul(8,267))-^when()who(610,661)'mul(182,139)select()}select()!when();;mul(492,992)?how()~($who(716,562)%/mul(702,654))*>mul(126,386)[mul(351,400)select()%$[!}{+mul(98,266)mul(924,5)*'(^:[}!?mul(112,163)+!?where()mul(987,791)mul(943,488)how()mul(698,312)&:@from(442,439)~%~:mul(235,520)%mul(248,221&>/;select()what()) ~@from()mul(546,261)'mul(956,953why(458,937)when()~!where();mul(442,916)%;)&(mul(410,237)where()~why()[+?[mul(169,337)what()who()&what()mul(901/mul* don't()mul(999,662)*]&/'#<+,^}'mul(365,260){{?,,}from(520,861)where()what()mul(325,208): when()+>{!;mul(335,726)#',:>@?mul(48,443![mul(130,626)!{^don't()*?-*[%>mul(934,995),how()@from()'#mul(433,843)why()<}$}how()-mul(754,464)when()why()mul(992,113);]/{%mul(87,293^]how()why()~&when()*#mul(589,979)@-&select()/%mul(218,248);mul(536,581)when()mul(215,212)/%when(66,857)@what()+mul(958,271) '%#who()&{mul(239,197)}what()$>{*'select()mul(365,443)>why()how()what()%mul(885,496how()when()}{@/ mul(589,42)^:;who()where()why() !how()(mul(574,947)*;where():&where()%]<{mul(572,4)$mul(232,716)when()when()mul(928,697)^(where()mul(301,501)-mul(100,436)#~?mul(708,770): @:@)!*mul(89,177)><@+ {when()+mul(926,998);>,)?,$)mul(813,382)}from(728,403)^mul(497,820)where()(?why(454,153)!select()}*!don't()what()from()}&}?how()mul(432,895)$!+mul(743,149)$!why(704,998)when()mul(229,683)((when()from()#&{mul(217,869)^)?)?what() select()}mul(765,209)who():}%{mul(448,553)[:-,don't()what()<,}from()where())mul(543,719)from(415,153)why()!'?^~mul(666,540)mul(922,877)mul(416,636)+#;$select()'mul(971,485)from(964,539)where()^ *who()/mul(35,594)<:mul(207,585)~*}'[]#mul(815,776){?%&*@?mul(385,133)['!:who() )mul(439,846)&)mul(529;?>;#mul(677,906)^& ()mul(75])how())mul(481,206)who()why()$^ from();what()'why()do()(%^&)mul(277,454)>where()where()$-#select()+/don't()what()select()]mul(295,126)why();from()mul(203,301){#mul(572,420){%(-*mul(929,786)do()mul(107,813)mul(921,668)'^+++!:[;mul(587,921)mul(242,920)mul(933,463)why()mul(340,196)'--']-mul(623,675)select()what()mul(656,927)<$)from()where(473,933)]~mul(408,566)!>$mul(373,541)}%*^)mul(346,14)>&how()@^-(&;mul(993,735)select()*{mul(990,221)*from():[ mul(940,96)/how()^>#;select()/#?mul(624,249)>mul(160,974)]^mul(589,900)&$[?[<-!select()mul(512,717)^/&mul(226,478)* ';'+from()?@~mul(224,929)!when()^what()where()'@'>~mul(451,87) +when()%how()where()how()what() mul(59,36)how()where() )>mul(270,950)--mul(864,193)$!!from()[+when()do()?&]from(){?who()mul(576,443)}>*what()mul(60,617)]where(){*}what(16,936)*:mul(613,575) @$%%'mul(930,241)!~when()<+what()&{mul(189,41)don't()how()%who()how()mul(79,681){']{({ mul(615,354)~#&{mul(863,397)@?(mul(469,991)!mul(97,649)'%{where()/{+*}when()mul(429,913)[ >where()>](when(654,639)),mul(763,148):!~do()%+*',mul(646,831)~*$!?>mul(632 @?from()[mul(165,564)#mul(464,289)from(),mul(197,442)~[&mul(739,935)how()where()!],mul(583,831){mul(4,501)mul(912,584):select()(when()>&& &what()mul(836,498)where(987,400)*${mul(983,648)+~]don't()&,how()'^[*({mul(180,898)mul(982,907): select()($what()mul(294,259)do()where();>mul(130,154)mul(566,682)how()-:from()/ )^mul(50,250)~@select()(->mul(65,434)mul(865,288)+$don't()#+-mul(875,123)@@>?mul(606,377);do();!where(){mul(267,543):]','# #*why()mul(31,575)#;who() *<$mul(797,419)'what()}when():what()/mul(627,73)'how(218,429)who()]*$,$from()mul(221,471)$ ;what()mul(38,106)?-&!~&from()mul(117,669):how()mul(422,348)(:/]mul(568,980)when(){~where(490,375)<(& mul'*)'where();##:}mul(34,144)mul(352,352) select()-when()/where(365,161)mul(571,634)mul(373,66)}how()don't()where()@>$$(!&mul(532,260))!mul(304,873)select(676,286)?#<,why(),^~do()%@~where()mul(56&+select()>select()what()mul(670,288)< $:+[$~what(){@!%mul(422,126)(who()?from()}*}mul(459,923)mul(38,243)^)!who()::#from()/mul(845,589)^/when()'#when()~,'select()mul(454,166)who()~>when()^when()?'@where()mul(237,855)~from()from()why()mul(233,606)]@mul(947,750)!@*}who()(@%mul(252,951)[from(995,363))}),when()who()+where()mul(368,442)>from()where()select()from()what()^?mul(190,689)mul(337#who()*when()/*mul(652,631);,*why()+select()>}where()%mul(839,296)>&%,@}$mul(723,530)who(685,511) %~where(782,449)mul(36,917);]]{mul@where()!&*%why()mul(191,759):why()what()$mul(900,773):$who() *{mul(426,740) why(396,306)/from()why()*%}'+do()@!'how()%^/mul(970,462)when()who()!-mul(535,35)}from(377,342)when()/(how()who()-}:mul-what()/how()?*^how()mul(217,447)/]?%!mul(495,690)}#<{?,do()+-why()mul(3,559)who()+what()mul(942,139)})when()who()<-]'what()what()mul(218,316)how()mul(669,389),<+mul(861,165)why(){^}[mul(594,386what()who(){mul(801,662)mul(852,2)-mul(458,479)//mul{don't()mul(826,480)>mul(954,968)$;mul(871,184)from()select()**<]!mul(503,290)#select()where()?do()mul(154%[&how()?mul(279,673)-[don't()$]why()-what(754,13)mul(841,495)where()}{mul<-'##!/usr/bin/perl@~mul?what()<^-@/>from()!mul(573,383)where()-{#mul(420,579)when(977,697)when() &@##from()+}mul(314,487) +who()+from()where()mul(878,982)]~mul(812,80)?select()don't()how()];mul(986,548)/how(311,658)/select()(don't()(select()select(533,328)<^+from()what()why()@mul(786,152)*<[ }},)mul(30,285)mul(721,12)#(-{what()mul(70,496)^when()-/how(420,87)select()what()]$mul(645,406);-~where()>do()~&^(,}$#$mul(993,357)?/select()}do()+from()~@mul(661,590))what()*!?]*!'mul(19,345)-why())select(){%(% don't():*#when()~select()mul(910,416)}mul(550,400)when()]~mul(515,93)&where()mul(412,99);(;+mul(611,500%what()%,from()when()mul(822,769),-*(([$(mul(153,856)why(){mul(476,25)do()-mul?from()<<[why()&mul(859,60)what()]+ :how()what(434,726):^from()do()}*?}?mul(432,641)>%?!mul(93,484)++}?mulwho()#>who()select(): why()mul(889,212)>]?where()&mul(808,71)<*/'-+select()mul(523,619)+#where()mul(324,306)why()';why()}mul(337,315)~:what():^?-$from()mul(924,137)mul(444,59)why()[from()how()who()mul/how()>mul(304,707)'select() select()mul(224,915)mul(991,306)[>$! &how()>/mul(719,679)how()select()mul(65,620)from()#'~:]+-from()]mul(971,857)how()#[~~]?%mul(230,961)from()from())# } where()mul(330,14)>mul(411,981)}}<)mul(304,453)how()from()$who()mul(573,848)% ;:from()(~select()!mul(542,790)}'#mul(530,502)%$(-#$mul(358,540)mul(10,361)when()where()<}&where()mul(429+!*$~)mul(446,812)%when()don't()>~>^what()select()why()from()where()mul(330,214) -[mul(731,164)/mul(776,235)mul(240,20)who()^what()']@!-who()%don't()(( )'!how()why();>mul(941,911)'?where()from()how()/mul(489,746(select(725,995)-from()?;when()%]%mul(555,315),how()#%!>?mul(664,596how()+'-who()from(51,408)mul(605,672)?!%from()) #}don't():}mul(579where()mul(243,699)mul(321,902)*!/mul(465,704)*when()[*how()mul-!mul(15,80)}#}mul(413,156)(;mul(71,288)/$;'don't(),how()+[;$who()%$when()mul(516,863)mul(268,600)(mul(602,939)who())>)<&'!mul(323,967)?mul(673,398)):&#}>>{!mul(501,484)<;who(969,453)-who(624,921)-)<-mul(72{-//!mul(576,751)mul(318,331)mul(707,186)+how()mul(660#how()!+#?where()mul(547,453) +[what()?->+[mul(266,969)what()from()%^!how()?mul(236,335) )'<>,&!-where()mul(563-select()(mul(405,969)when()[%;why():$]mul(266,763)what()~#-{+don't()~+-mul(68,150)#{{?%:mul(422,966)select()mul(143,33);mul(917,142))]'>mul(23,457);'what()why()-where()}/>mul(66,911)&&':(>why()>mul(413,27)mul(772,64)mul(266,512)%$*[why():where(),@%^',mul(750,295)*]:mul(17,60)!!}*from(975,930)mul(763,134)mul(463,381)when()(select()where()+{?what()mul(755,843)!why()+>mul(24,584){mul(105,734)$why()@where()!+what()%what()mul(5,111)#^;?{^/?^~mul(24@>when()what()where()#from(284,9)when(437,59)mul(978,337))+:(select()mul(996,373)(what(188,513)@ ]from()}mul(370,765)~$mul(490,904))]/%who()why()/mul(123,978how()why()[who()~%how(180,982)@:mul(343,157)![/*^mul(157,976)who()from() select()]+?+do();)&)mul(734,420)$%(select()>'mul(143]mul(4,351)mul(279,828)'}^mul(108,132) #how()why()}mul(573,602)}@mul(747,126)where()'@mul(247>why())when()+::^&from()mul(843,212)^mul(612,743)[mul(204,899)$mul(174,265)%]mul(864,804)-from()how()%%mul(674,431)^^#[(@:&*mul(619,935)select()//~^mul(70,941)why()select(405,825)why()who()@mul(112,658)'+(@!$who(){select()do()from()from()@how(846,925)mul(417,888)~{: who()&-;mul(285,186)-+what(){/+-mul(24,944''mul(935,370)why()?~ +mul(468,38)'why()(/mul(704,512)%mul(946,591,<);from()select(290,495)*{:['%mul(554,965)(~mul(308,534)mul(6,373)^how()@%&how()~mul(669,386)when() 'mul(33,652)mul(950,268)::mul(98,181)]^how()'!mul(982,613)how()&where()]what()how()do()[from()#[? mul(929,452)<$$ mul(506,408)-mul(670,674)how()mul(645,104)do()(>[%from()@'who()&%mul(45,884)mul(895,714)mul(871,6)},?&;!select()#where(779,295)^mul(113,370)why())%[select()[,^' mul(976,960)][%mul(828,993){}}mul(135,443)>what()mul(344,20)>where()/) :@mul(564,715){([,]'mul(675,478)#*@who()>]$*+mul(94,992}from()mul(288,445)mul(72,57)*/})how()[how()!mul(543**%who():what()mul(345,778){mul(462,244)from()[@*who(),+mul(591,870)#select()%mul(779,654)$+%%@ mul(920,934)?-select()-}mul(247,709)@$why()mul(179,824)(when(989,252)?mul(422,816)$[from()#who()@,when(),mul(922,47)@mulwhy()-mul(890,397)-^/+'select()[&!who()mul(547,6)-]>:^;mul(870,938),~?[%mul(8,689!>*@!]mul(311,244)->how()$when()'}mul(213,766)$:!+ mul(620,644)%where()mul(430,127)%{[mul(682,585)mul(245,26)don't()mul(510,688)where()]-mul(844,443)/@+who()?who()when()mul(453,182)mul(928,131)?&'{[+@?,mul(55,18)mul(795,739):}what())@$]'mul(377,34)&,~*why()/@who()mul(467,127))&how(28,925)mul(955,519)}where(830,382)$when()[-why()/+mul(310,139)mul(217,931)!mul(574,122)!mul(227,82)where()mul(940,851) {mul(545,758):from()%~/mul(937,897)mul(665,919)^&/ &what()mul(23,37),select()%*mul(98,952);mul(171,967)who()$+]when()%$mul(426,870)<<;;why()[do()@mul(28,286)-what()([+select()why()do()<^+what()^?~-mul(246,992)/mul(938,936)'$>when()mul(18,736)%?how()-what()from() when()select()mul(37,387)}<[}?+how()#&?mul(779,369)select()mul(750,510)%[,'from()>who()mul(13,97)what(547,477)why(859,962)?,where()mul(806,879)mul(577,179)#from()+>where(705,292)what(712,121))when(227,970)*mul(942,336)& who())!*mul(992,750):from()<:+-mul(938,672)mul(55,872)mul(354,183)>+(+mul(520,932)#from():}{who()$mul(675,973)@^@%mul(58,468)/select()what()->]mul(343,375)^ ,%mul(480,300)where()(/*$mul(695,676)how()where(),-!:from()mul(363,212)~(!where()-[what()don't()mul(614,594))mul(569,802)'mul(995,471)~&$:^:how()how()-^mul(853,428)-;-%what()(from()+do()'where()() !{^?#mul(376,780)select())where()select()&{-,{,mul(894,646)select()*< @}*[}}mul(332,665)[ \ No newline at end of file diff --git a/data/Day4 b/data/Day4 new file mode 100644 index 0000000..dec2125 --- /dev/null +++ b/data/Day4 @@ -0,0 +1,140 @@ +MAMAMASXXXSAMXSSSSSXMXMAMMSXMASAMXMXSSXMXXXXMSMSSMXXSAXMMSSSMSXMMXSMMMMSSMMMAMMMMSMMSXMAXMASMMSXASXSAMXXAAMXMXMAMXMAAXMASXSMXSSSSSSSSXMXSAMX +MSMMMMSXAAAMSMMAAMMMMAMASXMASAMMSXAXXMAMSMMMMXAMAMXAMMXSAAAAASASMASXAAMXAAXSAMAMMAAXXAMXMMSMMXMAMSAMXMMMSMMAXXXMXSMSMSMASMSMAMAAAAAAXXSASAAX +XAAXMAMMSMMMSAMMMMXAMAMXAAXAMXSAMAMXMSXMAASASMSMAMMXXAAMXMSMMSAMMAMXMXSXSMMMASMXSSMMMAMAAMAAASXSAMXMAXSAAAMSSSMMAAAASAMXXAMMAMAMMMMMMMMASMMS +SSXMMAXAAXMASMMXSXSMSSSSSXMSSMMXSAMXXAAXSMSASAMAMXXMMMXXAMXXXMXMMSXMSAXMAMXSXMXAAMXSASMMSXXMMAAXMXXSAXMMMSAAAXAASMMMSXSSMSMSASXSMXAXASMMMMAX +XXASMSSSMMMMSAMAMAXMAAMAMXMAAXAAMMMMMSSMAAMMMMMSSSSXSAASMSAXSAMXXXAAMAMSAMXSXAMMMMASAMAXMMMSAMXMSAMASXAAAMMMMMAMMAXXXAAAAMASASXAMSMSMSXXAMXM +MSXMAAAAXMSAMAMXSAMAMSMSMMXSMMMXSAXAAAXXMMMXMXMAAXAAMMXSAAMSMAMSAMMMMAMSASAMMSMSAMXSASXMSAAAAXSXMASAAXSMXMMASMMSSSMXMMMSSMAMAMMMMSAAXMAMSXSA +ASMMMMAMAXMASMMMMASMXAXAMXAAAXMASXSMSXSSXSAMXAMMSMMMMSMMXMMMXAMXXSAMSSMXAMMSMXASMSASAMXXMMSSSMMXSXMASMXMSMSASAAXMASXXXAAXMAXAASXMMSMSMXSAAAS +AXAXAMAXMMSXMASXSXMXSXSXXMXSAMXMSMMAXMAMASXASXSXAMAAAAASXMSXSXSASAAXAMMMSXXAMMMMAMASXMXMSXMAAAXASASAXXMASAMXSMMMMMMMSMMSSSMMSMMXXAXMXMSAMXMM +AMXSMSMXSAMAMSAAMMMMSMMXXAAXAXMAMAMAMMAMXMAXXMAXSSSMSSSMAAMXMMMMMMSMSMSAAMSSSXSSSMMMMMXMMAMXMMMAXAMASAMXMMMMMMSMSMAAAAMAMAMXXAMSMXXSAMXMAAXS +XAMMAMAAMMMAMAMXXAAAXAAMMMMXMMMMSSMSXMASASMSAMMMMAAAXXXXMMMAAAXASXMAXAMMMMAAXAXMASXAAXAMSMMASMSXMAMXSMMAXAAMXAAXAMMSSSMXSAMASAMAAASMMMAXMMMA +SSSMAMMMSASMSSXSSSSSSMXSXAAASAXMAMAMXMMXAXAXMASAXXSMMMMASASMMXXASAMSMAMAASXMMSMSAMMSMSMXAAXMSAAXSXMXMAXAMSSSMSSSSSMMAAMAMAMASAMMMMXAASMMSAAM +AAAMXSXXMASXAXXXAAAXAMAMMMMXMASMSMSMMSAMSMMMSXSXSAMAAAAMSAAAASMMMAMAAAMSMSAXAXAMMSMAMAMSSSMXMMMXMAAASXMSXAAXAXMAMSXMMAMASAMASMMXAMMMMSXASMSX +MSMMMSXSMSMMMMMMSMMMAMASASMSMXMXMAXAAMAMXAMASXSAMMSSMSMXMMXMASAXMAMXXAXMXSMMMSSXMAMAMAMMAXXAXAXASMMMSAAMMMMMSMMAMSXXMASASASXMXMMAXASAMMXMMMM +XMAAAMMMSAAAASXAXMSSXSASAXAAXMSMMMMMMSMMSXMAXAMAMXAAXMXSXMASXSAMXXMMSSXMASAMXAXXSSXSSSSMAMMSXSXMMSSXMMSMAXMXMAXASXAASXMMSXMASASXSSMSAAXMXMAS +XMSMXSAXMSSMXMMXSAXAAMASAMSMMMSAAXAAXAAMXMMXSASMMMSSMMASASXSAMMMXMAAAAAMAMAMMXMMMAAMAMMMASXXAXXAAAXXXAXXSMXMASMXSMMMSXAMSASMMASXXAXSAMXXXMAS +SMXSASAMMAMXAXAAXMMMXMXMMMXAXASMMSSSSSSMSXAMSAMMAXMAMMASXSAMXMAAASMMXSMMAXASMSXAMMMMAXMXXSAMAMSMMSSMMMSMMMXSAMMMMMXAXMXMMAMAMXMMXXMSASXMSAMX +AAAMMSASMMSSSSXMMXAXXMMAXXXMMMSAMXAXMAXAMMSXMAMMXSSXMMAXMXMMMMMSXSAAAXMXSSMSASXSMSXXMMMMMMAMAMXMAAAAAXAAAAMMXMASAAMXSMMSSSSSMMXMSMASAMXAMSMM +SMMSMMXMAAAAAAAAASXMMSAMXMSXMXSMSMSMMMMSMAMMXXMSMMMMAMXSAMMAAAXXASMMMSAAAAAMAMSMAMAMSASAAMAXAMAMMSSSSXSSMSXXMASMMXSAAAAAAMAXSAAMAAXMAMMXMASX +MAMMXMASMMMXMXMMMMSAAAMXSMMAXMMAAAAMAAAMMXSAMSXSMAMASXMAXAMSMSSMMMAAAXMMSMXMAMAMAMAMSASMSSSSSSXSMAAAAAMXMMMAXXXXXAMXSMMMSMSMSSMMASMSSMSAMXMM +MAMXASMSASMMSAMXMAMMMMXASXSAMSMSMSMMSSMMXMMASMAMSAMSAMXSMSAMAMXMASXMXMXMXXASASMSSSSXMMMAXAXAASASMMXMMXMAMXAMMMMMSAMXXAMXXXXAMMMMAXAXAASXMAMX +SSSSMSXXXAAAMXSAMSMSXXMASMMAAMMXMXMAMAMSMMMSAMXMMXXAMMXXAXXMMMASASAMXMAAASASASXSAMXAASMMMXMSMMXMAXMMXXXAMXSXAAAXAMMMXSAMXAMSMASMAMXMMMMMSXSA +SAAAAXAMMXMMMASMMXAMAAXMMXMMMMXAMMSXMAASAXXXXMSSSMSSXSXMMMMMXSXMAXXMAMXSMSXMMMXMMMSSMMAASMMAMXMMMMMSAMSASXMSSSSSSSSSMXAMMMMAMAMMXMXAXXMAASAM +MMSMMMAXSMSAMMSXAMAMMMMMMAXXAMSMSAAXMSMSSMMMXSAAAAXMAMASASAMXMAMMMSSSSXMAXMXSXASXMAXASMMSASMSAAAMXXAAMSSMMMAMAAAAAAAMSMMAXAMMASMMMMSSSMMMSXA +MAMXXXMASAMAMSSMMXAMAAAAMSXMAXAMMMXMMAMXMMAMSMMSMXMMAMASMSSSMSMMMXAAAMAMMMMMMSMMAAAXMSAASXMAXXSMSASMSMXMMMXMMMMMSMSXMAAXMMSXMAXAAXAAAAASASMS +MSSMMXSAMAMXSAMAMSXSSXMXXAASXMMSASAMMMSMXSMSAXMAMMXSXSXSASMMMAMAMXMSMMAMXAAAMMMSAMXSXSMMMAMXMMMMAMXAXMAXAAASXMAXXXXMMXSMAAMXMSSSMMMSSSMMASAX +XXAAXAMASAMXMASAMSMMAMSSMMMMXAXSASMMAAAAMSXMASXSXSMXMSXMXMAAMAXSSSMAXSXSXSSXSAAXAMAMXXMAXXMXMAXMXAMXMMSSMMMMAAXMMMMAAAXAMMSMMMAXMXAAMXXMMMAM +MSSMMMSAMAMASAMXXSAMXMAAAMMMSMMMXMASMSMSMXASMMMMAAXAAMSXXSSMSSSXAASAMSMSAAAAMMMSAMASXMSSMSXXSSSMSSSSXAAMASMSSMSXAMAMMXSAMAXAASMSMSMSSXXXAMXM +AXAXAXMMSASASXXMASAMXMXSMMAMXMASAMMMXAXXXMMMAAAMAMSMMAMMMMXMAMMMSMMMSXAMMMMXMSASXSAXAAAXASMASASAAXAAMMMSAMXAAMAMMMXASASAMXSXMMXAAAAMXMASXSSM +XXMXSXMASXSAMXMAMXSMASAMXSAXAXXSXSXMSSMMAAXSSMMXAXAXSSXXAAXMASXAAAASXMMMXAMXAXAMAMASXSSMAMAXXAMMMMXMAAAMXSMXMMMSSSMAMAMAMXSASXSMSMXMAMMMAAAS +SXMAXAMXSXMAXMASMMMMAMMSXSAMSMMMMSAMXXAMXSXXAAMSMSAXXMMSMSSSSSXSSSMSXAXMSMMMMSAMXMMMMAMXMAMAMSMMSMXSMMXMXSMMMXXXAAMXMXMSSMSAMAXAAXASMSAXMSMM +AASASAMAXASAMAXXSAAMXSAMXMAMXASMASMMAMSMAMMMMXMAMMXMAXXAMAAMMMMXXXAXXMAAXAAAXSAXXSXMMMMAXXSAMXAAAAAMAXMMAXMASMSMSMMMMMMMAAMMMSMSMSXSASASXMXA +SMMASMMMSMMMXMSASXXSAMXSMMSMSAMAXSAMMMXMSXMAMAMXSMSSMMSASMMMAAMMAMAMMSMMSSMMMSXMASAXAASMSXAXAXMMMMSSSMAMSSSMSAAAXMAXXAASXMMSAAXAAXAMAMAMAXSA +MXMMMMAAXMASAAMXMAMMXSXMASAXMMMXMSXMMMSAXASASXSXMAAMAASMMXMSSSSMXMAXMAAXMASMMMASAMXMMMMSAMSMMSSSXAXAMXMAMXMAMXMMMSMSSSMSMAAMSMSMSMMMMMSMXMAS +SXXAASMXMSASMMMSXSXMAMAMSSMSMXMAXMMSAAMXMASASAXMMMMSMMSSXAMXAAAASXMMAXMMXAXMMSAMASMSXSSSMMAAAAAXMXMSMXXXMMMXSSSSXXAAAMASMMMXMMXXXXAXASXMASXM +MXSMXXMSMMXSAAMSAXSMASMMAXXAXAAXXMASMMMMMXMAMMMSXXXXMASMSMSMMMMMMASXMSSMMXXAMMMMXMAAASAMXSSSMMSMMMXMAMSMMAMXAAAMAMMMSMASAMXASXMASMSSMSASXMAS +XMAMXSAAMMSSXMXMAMXSMSXMMSSSSMSSXMMSMSMSMSMXXAASMMMXMXMAAMAMASXXMAMAAAMMAMXMMAXMXXXMSMASAMXAAAMAMAAMAMAASASXMMMMXMAXXMAMMMMMSASXXAASXSXMASAM +SMSAMMXMMSXMASAMSMAMMMAAAMXAMAAMXMAXAAAMASMMMMAMMAAAMAMSMSASMSAMMSSMMMXMMSAXSXMMMMXXXAXMAMSSMMSAMSXSASMXSAXXXAXAASXSXMASXMXXMAMMMMMMMSASXMXS +XAMXMASMXSAMASXSAMXSASMMSSMMMMMSSSMXSMSMAMAMAMXSMMSXSAMMXSXSXXXMAAAASXXMAMMMMXXAAAXMSMMMXMXAMXMAMXASMSXMMXMAMASXXSMAMAXAMASMXSXSAXMAASASXAMM +MXMSMASAASAMMSXSAXMXASAMMAMXMXMAMAAMMMMMXSMMAXAXAMXXSXXSAMXMASMAMMSMMSMMSXXAMXSSMSSXMASXSXMAMAXXMMMMAMXMAMMAMMMMAMAMMSSMMAMSAMAMSSSMXSAMMSSM +ASMXMAXMMSXMAMMXMMSMMMMXXXMAXXSMSSMMAAMMMMASAMSMAMMASAXMASXMMMASMMMMAMXAAASXSAXAAAAMAMXAMAMSSSXSASAXMSMMAMSASXXMAMMXAAAXMASMMMAMAMAMAMAMMMAM +XMASMSXSASAMASXXSASASXMSSXSXXXAXAXMSXSMMASMMMAMSMMXAMMMSMMXMMXSAMAMMSSMXSMAAMMSMMMSMMXMMMMMAAAAMASMSAAAMAMSAMXXSASMMMSSMMXSASMSMMSAMXSSMASMM +XSXMAXAMXXAMXMMAMASXMAAXSAXAMAMMXSXSMAXSMXXAMAXASXMXMXMAMXASAMMAMXMAMAMAAXMXMAMAASAMMASXSXSMMMXMXMMXMSSMMXXAXMMSASXXAAMASXMAASAAXSASXSXSAMXM +MXXSAMAMSSSMAMMSMAMASMMMMSMMMMMMXSAMXSASAMSXMSSMMSMAMMMSMSXMAMMAMXMXSAMXMMSMMMSMMSAMSAMXAAMXSXAXMAMAAMAAMAXMASAMAMXMMSXSAXMMMXMSMSAMMMMMSMMM +SAMXMXAXMAMAASAMSASAXASXMAMMAXASAMXMAMXMAMSAXMAXAAMASMAMXMASAMASMSMAMXSXMAXXAMXMAMAMMXMSMMMAASMXMAMMSMSMMAXSAMXMAMASMXXXMXXXXXXXAMXMAXAAAXAA +MMSMMMMMMAMMMMAMSMMMSAMXXMMSASMSAMSMXSSMMMMAMSMMSMSASMAMASAMXSMAAXMAMAXAMASXSMSAXXMMMSMMXAXXXXMASASXAAXXMAMMMMASASAXMMMMXXMSMMMMSMASASMSXMXM +XMAMSASXMXMMASXMXSAAMAMMXMASAXXXXMAMAMXASMSMAMXMAXMXXMAMXMAXXSMMXMMSSMMMMXSAMSMMSAMXXAAXSSMMSMSASASMMMMAXXAMAXXSAMXXAAAMAXMAMAXAAMXMAXAAMSMS +MSAXSASASMASASASAMMSMSAMXMAMMMXSAXAASMSXMAAXSXAXMMSXSMXSAMSMMSASAAXXAMMAMAMXMAMXMXASMMSMXAASAMMXMXMXMMSMMMXSSXXMMMMASMSSMMSSSXMMMXSMMMMMSAAA +AMXMMXMAMXXMASMMMSXXMAMXXSSSSSXAMSXMXAMXMMMMMSMSMAAMMASMMMAAXSAMMMMSAMSXMMMASXMAXASXMAXAMSMMASXSMASMMAAAAAMAMXSMSAXXMAXAMAAXAMSMSAXASXMXSMSX +MSMMXMASMXMXXXAXAMAXXXXSAAAAXSAMXMAMSMMMSXMXXAMAMMSAMMMAXSSMMMMMASXMAMXMMXMAXAXSSXMAXAMSMMXSSMAMSAMAMSSSMSMMMXMASMSMMXSAMMMMMMMAAXXMMAXXXMAM +AAAXSAAASXMSMSMMSMAMXSAMMMMMMMSXASAMAAAASAMXMSSXXXAXSSMXMMXMAAAXMSASASMSMAMSMSXMAMSSMSSXAXXSAMXMASXSMMXXAXMXSAMAMMAXAAMASXMAAAMAMMSSSXMASMMM +SSSMAMSSSMASAMXAAXMASMAXXXSXAMASAMAXSMMXXAMAAXMASMMMMAXSXXASMSMSAXASASAAMSMMAMXMXMXAAXAMMMMMMMAAXXXMASMMSMMXSASASMMMMXMAMAMSSMSAXXXAAXMAXXAM +XMMMMAMAMXAMMMMSSXMSXXMMSMAMSXMSMSSMXXXSMSSXSXSAAXAAXMMSMSXMAAMMMMXMMMXMMAAMXMAMXMSMMMMMAXAAAMSMMSSMMMXAAAXXSMMMAAXSAAMSSSMAXMSMSSMMMMMAMSAX +MASXXAMAMMXSXSMMXXXAMASAMASXMAXSAAXASMMXAXSAAAXASXSSSXAXAMMMMSMSMSMAMASXSMMSASASAMMAXAXSXMSXSXXAMASAMSMSSSXAXAAMSAMSMMSMAAMAMAXMXXAAMAXAMMSA +MAMASXSASXMMAMAAXSMASAMAXSAAMAMSMMMSMSAMXMMMMXMXMAAAAMSSXMASAMMAAAMAMMSAAXXSASXXASXMSSXMSMXAXAMXMASXMAMMAXMMMSXXMXMXXXXMXMMAAXMSMSSMSMMMXAMX +MASXMASXSASMSSMMSMAMMASXMMMSMAAXAXXXAMMXAAAMMXSAMXMXMAMAXSXMASMMSMSSSMMMMMAMMMMSXMMMAXAAXMMMMMMSMMSXSASAMASXMMSMMASMMSMMSSSMMAAAAXXMAXAMMAMX +SASXSASXSAMAAMAMAAXMSMMXMAAAMXSMSMSMAMAXSSMSSXMASXXSXSSMXMAMMMXAMAAAXMAXXXAMAAXMAXAMSSMMMXSXSAAXAASXSASAAAXMAAXMSASAAXAAAXAMMSSMSMSSSSXMAAMX +MAMAMAXMMAMMMSSSSSMXXXMASMSXSXXAMAAMAMMXMAXAXASAMXXSAAAXSSSMMSMMMSMMMMSSXMASMMSAMMSMMAAMAMXAMXSSMMSAMASXMSSSMMMXMASMMXMMSSXMMAAXMAXAAXMASASA +MSMSMAMSSSMXAAXAAAMXMAMXMAXXSAMAMSMSSSMASMMMSMMAXSAMXMMMXAAMAMAMXAXXAXMAXSXMXAMAMAMXMSXMSSMMMAMAMAMAMAMXMAXAAXXXMMSXSXAAXXMASXMMMXMXMASXXAAX +MXXMAXMMAXXMMMMMMMAAMAMXMSSMMAMAMMAAAAAXMXMAAMSSMMMSXXXSMMMMMSSMSMSSMSMAMMSMMMSAMXMAXAXSAAASMMXAMXXAMASXMASXMSMAXXMAMXMXMAAXAAAAMAMMSAMXMSMS +MSASMMSMMMMAXXAXAXSMASXSAAAXAMXSMMMMSMMMSXMSXXAMASAMMXAXAMXMMAAXXXAASXMASASXMXSXXAMAMXXMMMMMAMXMSXSASAMXAAMXAXMAMMMAMMSSSXSAAMSSSMSAMASMMAXA +ASAMXXXAAXASMMSSMXAMXMAMMSSMSAMXMSXMAMMAXMAXMMSSMMASAXMSSMASMSMMXMMMMXSXMASAXXMMXSMMASMSMSSMSMASAMXMMASXMASMXMAMMXSASAAXAAXXXXAMMASMSAMAMAXM +XMXMASXSMMXAXSAMXAAXAMXMAAAXMAMAMXAASXMSSMSSXAMAXSSMMMASXMASAXAXMMSMMAMXMAMMMAAMAMASXMAAASXAASXMAMMMSASAMXXMASAMMMSAMMMMMMMMMMMSXMXAMMSAMSMX +SMSSXXMMASMXSMMXSSSMSSSMSSSMXMSMXXSMMXMAXAXSMMSMMXXAAMMMAMSMAMXMMAAAMASAXMAMMXXMASAMXMXMSMMMMMSAMXSAMAMMXMXSASAMSAMXXSMAAXAXAAAMAXMMMMAMXAAM +SAAXXMASAMXXMASAAXXXAAXAMXXXAAAXMMXAMXSAMMMMXASMSMMSMSXSAMAMMMSSMSMXMXSXSSMSMSMMXMMMMMSMXXAASXSMSMMASXSSSMASAMXMMAMSAMXSAMMSSMSSXMAXSSMSSMSA +MMMSMSMMMMXMSAMXSMSMMSMXMXSSMSASXSXAMAMXXSASMMXAAMAAXMMSAXAMXAXXAMASMMXAAXMAMAASXXMAAXAXASXMMAXXAASAMMMAAMASXMASMMMSAAAMMSMAXMAAAMMMXAXXAAAX +SMXMASAAMMMXMAMMXAXXMAMAMXMAAMXXAMSMMAXMASASXSMSMMSASXAXSSSSMXSMMMAAASMMMXSMSMSMMMSSXSMSAMXAMAMSSXMMSAMSMMASASXSASASXMXMAAMMSMMASXSSSMMSMMMS +AMAMXSSMSASASMSSMXMAXAMASAMMXMXMAMAXXMXSAMAMAMAMAAXXMASMMMAAMAXAAMSSSMAXSAMXXXXAMAAMMSXMXMXXMAAXXXAXSMXASMAXXMASAMASMAXMSSSXXXXAMAAASXAMXMAX +SXXSXMXMXMSASAAAMASASXSMSASAXAASASMSXAASXMAMXMAMMMSMXAXMAASAMXSSMMAXAXSMMMMAMMSMMMXSASMSASXSSSSSMSMMXMXXMMMMMMXMXMAMXMXXMAXMASMMSMMMMMSMAMSM +MSMMAAMMSXMAMMXMXASASMAASAMASXMSAMAXMMMSASMSMMSSMAAXMASXMMMAMXMAXXXMSMXAXAMAXXAXMAMMMSAXASAMAMAAXXMMXXMAXASASASMXMAMMMSSMAMMAMXAAXAAXAAMAMAA +MAXSMMMASAMXMSASMASAXAMAMAXAMXXMXMSMMSASXMMAAAXAMXSSSXMXSXXMASMSMSXAXXXXSXSAMXXMXSXAXMXMAMAMXMXSMSASMAXMSXSASASAMXSMAAAXMASMXSXSXSSXSSMSSSMS +SXXMXSMMSAAMXXAXMXMAMSXSSSMSMXXSSMMAMSASAMXSMMSXMXXAXAXAMMSSMMAAAMMSMMSMMMMAMSAMXMXMSAMXXSXMXSXAAMAAMSAMXMMAMAMAMAXSMMSMSAMMAMAMXAXXAMXAXAXX +XSAXAMAXXAMXMMSMSXMAMMAAXAAXMMSAAMMAMMAMMMAXAMXXMXMASXMXAAXASMXMAMMXAAAASAMAMXAMASAMAXXSMAAXAMSMSMSMAXAMASMMMXMXMSMXMAMXMASAMMAMXAMXMMMMMSMS +SAMXASMMSMMAAAMAMMMAXMXMXMMMXMASMMSMMSAMXMASAMMMMSMAMXAXMMSMMXXXSASMMSSSMSMSXXAMAMASASMAMSXMAMMXMAAAMSXSASAMSAMXMAAAMASXMASAXSAMXASAASXSXAAX +SMSMXAMAAASMSSMAMAMSXSAMMSAMXMAMXXSAAAASXMXSAMMAXAAASMSMMAAAASMAMAMAXAMXMXMAAMSMMSAMAXXAMXAMXMAASMSSMAASXSAMXSMAMMXSSXMAMASAMMMSAAMASMAMSMMM +XXXMSXMXXMMMAMMAMXMXAXMMAMXSXMAXXSMMMSXMASAMAMSSSXSMAXXAMSXSAMMAMAMSMASASAMMSMMAXMAMASXSSMSMAXSMXXAAMMMMMMMMXMXAMXAXAMSXMAMAAAAXMXMSMMSMAXAA +SAMXMSSMSMMMASXMMAXMAMSSSSXMXSASMXXXAXASAMXMSAMXMMMMXMMMMAAAXSSMSSSXXMMASMSAMAMXMSAMXMAXAAAMXMXXXSSMMSAXXAAAAMSSSMXSAMXXMXSMSMSSXXXAAXMSXMAS +MXSAMXSAAAXSMSASMXMMSMAAXAAMXXMAMSXMSMMMXSAAXMMMXAMMSMASMMMMXAAXAMXAMMMXMXMAXXMAAMXMAMMMMSMSSSMMMMAAXSAASMSSMXAMAAAMAMXMXXAAXAAXAASMSMMASXXM +SMSASAMXMMMMAMAMXAXAXMMSMSMMASMSAMMMXASXMAAXXMAMMMXAMXAXMSMXMSMMSSSMSASMSMSSMSSSSSSMMSXAXXMAMAAAASXMMMXMMXAAXMASMMMSMMSAMMSMMMMMMMXAAAMAMMMM +AAXXMMSMSSSMAMXMSXMASXSAAAAXXSAAAXSMSAMAMXMMMSMSSSMSSMSSMAXSAXAAAAAASXMAAAXMAMAAAAAAASMMMXMASXSMMXASXSXXXMAMMMMMMAXSXAXXMAAAAXMASMSMXSMMSAAX +MSMAMAMMAAMSAMXAMASASMMMSSMMXMMMSMMAMXSAMASAAAXAAAXMAXMAMASMSSMMMSMMMAMSMSMMAMMMMSMMMXASXMSAMAAMAMXSXMASXSSXSSMMSMSXMMSMSSSXMMSMSAAAXMXMAXSX +AXMXMAMMMSMMMSMASXMASAXXAMASMSAAAAMXMASASAMMSSSMSMMSSMMAMXXAMXMMAMAAXSXXAXASXSASXMASXSMMAAMASMMMSXMMAMAMXAMXXAXMAXSMMSAMAAMASMMMMMMSMMAMSAXX +MMMXMAMAXAMXAAMXMXMAMMMMASMMASMMSSXAMMSXMASAMXAMAXXMMSMMSSSMMASMMSSMMXAMAMMXAXMMXMAMMAMSMMMAMAAXMAXSAMASXXMASMMMMSMAXSASMMSAMAAMMXMXAMAMXAMM +SAMAXAMMSMSMSSSXMXMXSXMSXMXMXMXMMXXXXMXAXMAMXMSSXSMMAMXSMMAASAMAXAMXXMAMAMXMSMMSAMAMSAMXSASXSMMMSMMSXSXXXXSXSMAMSAMSMSAMXMMAMSMMXAMMSMMXMXMA +SSMMSXSAAXSAMXAMMAMMMAMXAMXSAMMSXAMMXMXMMMAMAMAMXMMMXSMMAASXMASXMASMMMMSMMSAXAAXMMMMXAXAMXSMXXMAAXXXMAMMSXSASXAXXAMMMMMMASMSMMSSSMMAAXXSMMSS +MMSMAAMMMMSSSXMASASXSMMSMMASAXAXMAMAAMXSASASXMASXMAXMAMSAMMXSASASMMAASXAASMAMMAXXAMXMSSSMMSAMSMMSXXASAAMAAMAMMMXSAMAMAASMMAAAMAMAAMSSMMXSAAM +XAAMMMMAXXXAXMAXSAXAAAXAMXAMXMMSASMXSXASAXASXSASXMAXSAMXASMMMAMAMAMSMSMMXMMXMMSASASAAXAAXAMXMAMXMXSXMASMMXMAMAMMAXSXSSXSMMSMMMAMMMMAAAXAMMSM +MSSMXAMSXSMMMMSMMMMSMMSMSMMSASMAMXMAXMMMXMXMXMAXASMASXMSAMXAMAMAMMMMMSXSMMXXXAMMXAXMXMSMMMSASASASMSASAMXSXSMSSMSAMXAXMASXAAAASXXSAMXSMMXSXMM +MMAAMSMXAMXMAMAAMXAAAMXAAASAAMSMXSMASAXMXMSAMXAXAMMAXAMMAMXMSXSMMSAAXMASAMSAMMSSMMSXSXXXMASMSXSAXASAMMXAMASAAAAAXAMXMMMXMAXSMXSAXAMXXAXXSMMM +SSMSMXAMMMAMAXSMMMXXXMSMSMSMMMXXSXMASMSSMSASXMASMXMXMMMSMMSMAAAAASMSAMAMAAMSXSAXAXAASAMASAMXMAMXMXXMASXMMAXMMMMSXSXMXSMMMSMMAXMSMSASXSMAXAAX +AXXMAMAMASAMSXMAXAMSSMSAXAMXSXMSSXAMMAMAMXAXXSXAXAXAAXMXSAAMMSMMMMXXAMXXXMSAMAXSMMMMMAMASMSSSXSAXSAMASXXMMMXAXAMAMMSAMAXAAAMSMAMXXSXMXSSXSMS +MXMMMMMMAMASMASAMXAMAAMAMXMAXAMAMMSXMAMAMMXMXMASMMSMSMMAMMSSXMAXMMSSMMSMSXMASMAXAAXASXMASXAMAAMAXSAMASXSASAMMMSMMMAMASAMSSXMXMSAMXMXXAAXXXAM +XAAASAAMSSMAMAMASMSSMMMMMMMMXAMMSAXXSSSSMSASAMXAMXAAAAMXSAMXXSXSXAXAXAAXXASAMXAMSMSASAMXSMXSMXMXMXAMMSASAXMAXAAAAMXSAMMMAAMSXMXXMAXAMXSSMMAM +SXXXXMXXMAMMMMSAMAXAXMSMAMXSAMMXMXMMAAXAASASMSSSMSMSSSXAMMSXMAASMSSMMSSSSMMASMSXXASASMMMMAMAASMXMSMMXMXMMMXMSMSXMXAMXAXMMSMXAMAMXASXSAMAXAAS +SMMSSMSXXAMXMASASMSAMXAMMMAXMASXMASXMMMMMMXMAMMMMXAXAXMASAMMAMXMAAAAMMMAAXASMMXAMXMXMMSMMAXAXAXXAAXXAXASAMAAXMMASMMSASMSXXMSSMASAMMAMASXMXSS +XASAAAAMSMMXXMMASAMXASMSSMMSXASXMASAXXAAXMXSXMASXMMMASMMMASXSSSMSMMMMAMMMMXMAXSSMSMSMAXSSSSSMSAMSMSSMSASASXMSASAMXSAMMAXAXAAXMAMMXSXSXMAASAX +XSMSMMMAAASMSSMAMMSMMMSAMXXSMXMAMASXMSSSXMMMASAMMAXSAMAAMAMAAAAAXXMSSMMMXSXSXMAAAXAAMAMXSAAXAMXXAAXAXMAMAMAAMXMXMXMMXMXMXMMMSMSSXASMMAXXSXSX +SXAAMASXSSMAAAMSSMAAAMMMSXMXXXSAMMSMMXMAXSASAMMMXXXMASMMMSMMMMMAXAXAAAXSAMMMSMSMMMXMASMMMMMXXXXSMSMSMMAMXMMMMMMSMAXMASMSMMAAAXAAMXSASMSXXAMS +AMMMSASMXAMMMXSAAXSXMMAASASMMXAXSASXXAMXMSAXASXSAXMSXMASAXXXSXXMMMMSSMMMASAAAXAXMXMXMMAAXASXMSMXMAAAMXXXXXSMAAAMMASMMSAAAMMXSSMXMASAMASAMAMS +MSXXMASAXXMSMXMMMMMXSMMMSAMXAAMMMASASXSSMMSMAXAAMXMAXSAMSAMXMXMMSAAXMMMSAMMSSSMSSMMAMAMMMMSAMAAAXXSMSMSASAAMSMSSMMSASMXMMXSMMXXAMXMAMMMMMSMX +XAMMMMMXMXMXXXAMSMAASAMAMXMMSMXAMAMMMXAAXAXMSMSMXSXAXMXXMXMASASASMMMAMXMASAMXXMAAXSXSASMXAMAMSSXSXMXSAAAMMXMXSAMXMSMMAMXSAXAXASXXMXMAMXXXAMX +SMAXXAAAXAMAMMMAAMMMSAMXXAMAASASMSSMSMMMSASAAAAAMAMXSSMMXASASAMASASMXMASAMXMSMMSSMMASASXMMSAMAAASXSAMXMXMASMMAMSAMXAXXMAXMSMMMXMXSAMASMSSMSS +AXSXSMSXSASAXAMMMSAAMAMXMMMSMSXMAAMASAXMXAMMMSMSMSMMAAASMXSAMXMXMAMAMSASAXAXAAAAAAMAMXMXAASAMMMMMAMSSSXMSAAAXMXSASMMMSMMMMAXXMASAAAMXSAASMAX +SMMASAMXMASMSXSAXSMSXSMSXMAMMSAMMMSASAMAMSMMXMAMAAMMMSMMAAMMMXMXMXMAMMASXMXSMSMSSMMXSAMMSMSXMAMAMXMAMAAXMMSAMXMSMMXXAAASASMSASXMASMMXMMMMMSS +XAMXMXMASXMAAAMAMMAXAAAXASASASXMAMMXSAXMAXAMXMAMSSXSXMXAMXMAMASASASXXMAMXAXMMMXMAXSASAXAAXXMSSSMSSMSSSMMXMXMMMMXXSMMSSSMAMASMAMXXAAXMAMAAMAS +SMMSMASASAMMMSMSXMAMMMMMXMAMAMASXSMASAMMMMMMAMXMAMAXASXSMMSASXSASASMSMXMXXMSXMASMXMASAMSMSXMAMAXAAXAAMAAAMXMASMSXSAAXMAMXMAMSSSMSMXMXAMSMSAS +SMAAMXMASAMASAMMAMSXXAXMAMXMXMMAMAAMXXXAAAAXMSSMAXMSAMXAAXSASAMXMAMAAMMSMMXSASAMMASAMMMXAMXMASAMSSMMSMSSXSAXXAAMASXMMMMMSMSXMXAAXXAASMMMAMXS +MMSSSMSASAMXMAMSAMXMSMSMSXXXSSSMSSMMMMSMSSXSASXMSMXXAXXSMMMMMXMAMAMMAXMAMXASAMASXMSAMXAMAMASMMMAMXAXAAAAAMMSXMAMMMMXMAAMAAMMASMMMMMXASAMXMMM +SMMMAAMASAMASMMSASAAAAMAXXMASAXXXXAXXAAXMAXMMMAAMSMMMAXMSAMXXAXASXMSASMASMASASASAASXMMSSXSAMXSXMXMASXSMMMMASASAMSAMXSMSSMSMAAMMAAXSMMSXMMSAM +MAAMMMMAMAMAXAAMASXSMSMAMAMMMMMMMSXMMSMSXMMXSSMMXAXAXMXMAXSXSMSASAXMAMXAMMXSAMASXMMMXAAXAMMXMMAMSAXXXAXXMMASXMASXMMMSAAXAXMMMXXMSXMAXMAMMXAS +SSMMMAMXSXXXMMMMAMMMAMMXXAMAAXAAXXAXXMASMAAAMXMXSMXSAASXSMSAAMMAMMMMMMMSXMXMXMXMAMMXMMSXMMSAXSAMXSMASXMASMXMMSXMMAAAMXMMMMXASMSXXAMMMSAMSSMM +XAAXSSSMMMMMAAAXXXXMMMMSSMSSSMSSSSMMAMMMAMMXXAXAMXAXMASAAAXMMMMSMXAAXAAMASAXMMXSMMSAMXXXAASMMMSXSAMAXXXXXSAAXMAMSSMSSXXAASMMSAMASXMSAXXXAAMX +SMMAAAAXAAMSSSSSSSMMAAMXAXMAMAAAMASAMXXASMSASMMXMMSSXAMMMMXXAXMAASXSSMMXAXASAXAXMASASAMMMMSXSAXXSAMASMXMASMXMXAMXAXXXXSMXSASMAMXMASAAMSMSAMX +XAMMSSMMSSMMAAAMXMAMSSMMAMXAMMMMMAMMMSAMXAMAMSAMXAMAMSSXSMSSSSXSXMMMMXSMMSMMAMMSMMMXMMSMMASAMAMASXMASAXMAXMSSSMXAMXMSMMSASXMMAMAXXMMSSXAMXMA +XXXAAAAXAMAMXMMMMXSMAAXSMMMMSXAMMXSAAXAMMSMAMAXAMXXAMXMASAXMASAXMAXAAAXXAAAXSASAMXSMAAAAXASXMXMXMASAXMXMSSXAAAASXSAAXAAAMSXSSSSSMAXXXMAXMAXS +MMMMSSMMASXMSXMASAXMMMMAAAXMAMXMAAMMMSMMMMAASMXSXSAMXMMAMMMSAMXMMXMMMSMMSMXMMMSAMXASMSSSMMSAAXMASMMXSAAXAMMMSMMAXSMSSMMMXMAMAXAAXAMXMASASMMM +SAAAMAMXAXAMXASASAMXAAXSSMSSMSSMMSSMXXMAAXSMSXMMASMXAXMAXMAXAMSSMMSXMAAXAXSAMASAMMMMMAXXAXSMMMSASAAASXMSASXAXAXMXSAMXAAAAMMMSMSMSMSMXAMMMAAX +SASMSASMXSAMSXMASAASMMXMXMXAAAXAXMAMMMSMSMMMXMAMXMAXMSMMSMXSAMAAAAXAMMSMASMAMMMXSAXAMMXSSMSASAMMXMMXSAMXXMMMMMMXAMAMSSMSXSXAXAMAAAAAMSSSSMMM +MAMXMASAASMMXXMASMXSMSAMXMSMMMSMMSXMXAMMXAMXAAMXMSSMAAASAXAXAMSSMMXSMSAMMMXAMXMAXXSSMSAXMASAMSSMSMSMMAMXXMXSASMMXSAMMMMXAXMASMMSMSMSMMAMAAXX +MAMXMMMMMSAXMAXXMMMSASMSAAMASXAMAXXMSSMASXMSAMSAMAAXXSXMAMMSSMAMAAAMXSASAAXXSAMMSMMXAMXSMAMMMXSAAXAASAMXXMASMSXMAMAXAMSMSAMXSMMXXMMXXMSMSMSA +MAXXMXAXXXMMSASXXSSMMMXSAMXMMSMMSSMXAAMAMMXSAMSAMXSAMXXMAMXAXMASMMMSAMAMMMSMMASAAAMMSMSXMASASAMSMMXXMAXMXMAXMSAMXSSXXMAAMAMXMAXXAXASAXMAAAMA +SSSMMSXSMSMMXAAXASXSMXXXAXMAASXAAAXMXSMSXSAMAMMXSAMMXMAXSAMXSSMSXMMMXMXMXAAAXSMXMMMAXXMASAXXMAXXXMSSSSMAMMXSASXSAAAASXMMMMMASXMMMMMMAMMMMXMM +MMAXAXAXMASXMMMMXMAXXASMSMSMASMMSSMSMMMXAMAXXMAAMASMASXMXMASXAXMASAAMMSMMSXSXXAXMMMMSXXAMXMSSSMSAXAXAAXXMAAMXMASMMMAMAXASASAXMMAAXAAXMASMSSM +MMAMMSMAMAXMASAMMMSMAXAAAXAMMSAMXMAAMAXMMMSMAMMMSASXMXASAMXMSSMSASMMSAAAAXAMAMMMMAAXAXMXSASAAAAXMMSSMMSSMMSMMAMXXASAMXMXMAMXSSMSXSMSSXXAXAAS +SMSXMAXXMSMSAMAMSAASMSMSMSXSAXXAMMSMSMXAAAAMXMAAMAMXSMMMMXXXAMAMAMXAMXSMMSMMAMAASMSMMMAAXMAMSMMMXAXAAXAAAAAXMSMMSXMAMSXSMSMMXMAXAMAAXMMXMSMM +XAAASXSXAAAMMMSMMMMSXAXMASAMASXMAMMMAMMSMSSSSMMSSXMASAXSXSMMSMSMSSSXSAXMMMASXSMXMXAMXASXSXMXMMSAMMSSMMMSMAMAXMAMXSMAXMASAXXAAMAMAMMXSXMAXAMX +SMSXMASMXMXMXAMAMXSMMMMMMMSMAMMXSASMMSAXAXAAAXAAMAMASAMXAAAMAAAAMAAAMASMAXMMMXMAXSAMXXXAAMXXAAMAMXAMXSXMXXXMXSXMASXMAMAMMMASXMXXXMXAMASXSASM +XAXMMXMAMXMMMMSAMXAASXAXMAXMAXMXXAMAAAXMMMMMMMMXMAMXSXAMSMSSMSMXMMMMMMXXSSMAMSMMMSAXXXMMMMASXMSAMMASASAMXSSMAAAMXMASXMAXAMAMXMSXSSMMSAMXXXMA +MXMASAXXAMAXAXAMXMMMMASXMXSSMXSMMAMMMMMAXAXAXAMMSSSXXMSAMAXAAMXAMXAXXMMXMAXSMSASASXSMSMXAMASXAMASMSMMSAMAXAMMSSMMSAMMXSMSAMXASAMXAAAMASXMSSS +XAXSMMXXSXSXSSSXSAMXMXMASMXMMASASXMXXAASMMSMSXSAAMAMXAXXMXSMMMSXSAASAMAMSMMMASAMMMASAAASXMASMXMASXXAXSAMASMXMAMAXMSXSAMMMMSXMMMSSSMMSAAAAAXM +SMSMMASXMAMSAAMAMMXXXAMXXMASMASAMXAASMSMAXSXSAMMSSMMXSXASAMXSXSAXMXMAXSAAXAMXMAMXAAMMMMSAMXXXAMAXASMMSXSAMXSMXSSMMAXMASASASXXAAXAMXMMMSMMMSS +MXMAAAMAMAMMMMMAMMAMSASAMXXMMXSAXMMMMMAMSMMAMXMAMMMSXAXXMASAXMXMMXASAMXSXMASXMASAMXSXXXSAMXXSXSSSMMAXMAXAMAXMXXMAMXSMAMXMAMMSMSMSMASXMMAMAAX +SASMMXSXMAMMXMMXSMAXSAMMMMSXMASMSMSMMSAMXAMAMAMMXAASMMAMMXMAMMASMXXXXXMASMAMXXAXXXAXXXAXXAXMMAAMAMXXMASMSMXMAMXSAMMXMAMXMAMAAAAXXSASAMMAMMSS +SASMSAAMAXXMAXXSAMXMMMMASAMAMASXAAAAAMAXSAMXXXSASMMSASMSSSMMASASMASMXXMAXMAMAMMSMMSSSSMMSSXMMSMMXMASAAXAMASAMMXSASAASASASMSSMSMXAMXXMMXASXMA +MAMAMMSAAMMSASXAASXSAXSASXSAMMXXMSMSMSAMSAMMSMSASAAMXMAAXXAXAXAMXAAMAMMMMSAMSMMAAXAAXXAAAXASAMAMAMXSMMMAMAMMXSXSAMMXXMXASAAMXMASXSXMASXXSMSS +MAMXMXAXXAXAAAMSAMXSAMMASASMMSXXXAXXXMAMSXMAAAMASMMSSMMMMSSMSSSXMAMSASASXSAAAAMSMMMXMMMMSSXMASMMAXMXAXSXMASXSMAMAXMSXMSAMMMSSMAXMAMSASMASAMX +SMSSXXXMMSXMSMAMASMXXAMXMXMAASMSSMSXMAXXMMMSSSMAMXAXAXXMXAXXAAAXXXMSXSASXSMMXSMAXXSMSAMXAMAMAMMMSSSMMMXAMASXAASMSMAMAMMAMXAAAMASMSMMASMSMMXA +MMAMAMAMAMAAXXXSXMAMMSAMXAMMMMAXXAAMASXSMAMMAMMMMMMMXMXSMMXMMXMXMMMMAMMMXXXMAXMMMXSASASMASAMXXSAXXAASXSSMAXXASMAXMXMAMSAMMMMSMMXAXAMAMXXASMS +SMXSASAMSSMMSSMMMMAMSXMASMSMSMSMMMMMMMAASMMMXMASMMMSXSAMAXSASAXMAAASXSSSMSMMMSAMSAMMMAMXMXMASAMMSSSMMMMMMSSMSAMXMMXSSXSMSXSAAXMMSMMMSSMSMMAA +AAASMSASAXAAAXAAXSASXAXMASAXMAMAAAXAAMSMMXASAMMSAASAAMASAMSAMXMASXMSAAASAMXAASAMMAAXMXMASAMXMAAXMAMAAAAAMMAMXAAAAXAAXAMAMAMSSMXXMASAAAMMAMSM +MMMSAMXMXSXMSSMMMSXSMSMAXSSMMXMSSSSMSMMXXSSSMSXSMMMXSSMMMMMAMMMMXSMMMMMMSMSMMSMMSAMXAXSXSMXXASXXMASXSSSSSSXMSSMASMSSMMMMMXMAXMSMSSMMSSMSAMXX \ No newline at end of file diff --git a/data/Day5 b/data/Day5 new file mode 100644 index 0000000..7d581d7 --- /dev/null +++ b/data/Day5 @@ -0,0 +1,1367 @@ +88|12 +44|33 +44|26 +29|91 +29|23 +29|84 +19|17 +19|84 +19|53 +19|79 +23|48 +23|31 +23|12 +23|72 +23|98 +18|44 +18|88 +18|94 +18|41 +18|83 +18|31 +26|48 +26|43 +26|86 +26|87 +26|15 +26|24 +26|27 +86|55 +86|91 +86|74 +86|98 +86|13 +86|48 +86|36 +86|67 +13|43 +13|49 +13|53 +13|94 +13|88 +13|24 +13|19 +13|16 +13|72 +42|21 +42|23 +42|75 +42|67 +42|54 +42|36 +42|62 +42|58 +42|84 +42|29 +72|53 +72|16 +72|17 +72|79 +72|52 +72|38 +72|29 +72|94 +72|45 +72|83 +72|19 +94|61 +94|35 +94|12 +94|16 +94|75 +94|31 +94|17 +94|78 +94|44 +94|29 +94|33 +94|52 +58|67 +58|37 +58|18 +58|49 +58|72 +58|23 +58|13 +58|74 +58|43 +58|95 +58|91 +58|48 +58|55 +67|52 +67|55 +67|27 +67|33 +67|94 +67|43 +67|23 +67|31 +67|41 +67|19 +67|72 +67|45 +67|18 +67|21 +35|55 +35|37 +35|95 +35|74 +35|87 +35|21 +35|89 +35|86 +35|43 +35|26 +35|67 +35|15 +35|13 +35|58 +35|18 +98|78 +98|75 +98|17 +98|94 +98|44 +98|62 +98|12 +98|33 +98|61 +98|29 +98|79 +98|42 +98|38 +98|53 +98|31 +98|45 +84|49 +84|13 +84|72 +84|67 +84|48 +84|23 +84|89 +84|94 +84|24 +84|15 +84|95 +84|91 +84|74 +84|86 +84|55 +84|27 +84|21 +53|58 +53|86 +53|35 +53|91 +53|17 +53|79 +53|16 +53|87 +53|37 +53|62 +53|36 +53|15 +53|12 +53|78 +53|26 +53|67 +53|75 +53|89 +79|95 +79|86 +79|89 +79|58 +79|27 +79|67 +79|18 +79|36 +79|87 +79|26 +79|84 +79|43 +79|35 +79|21 +79|23 +79|13 +79|48 +79|74 +79|49 +55|31 +55|18 +55|42 +55|45 +55|49 +55|72 +55|24 +55|12 +55|98 +55|41 +55|13 +55|44 +55|94 +55|52 +55|43 +55|17 +55|38 +55|61 +55|19 +55|88 +38|26 +38|29 +38|84 +38|42 +38|54 +38|79 +38|53 +38|52 +38|75 +38|33 +38|17 +38|45 +38|41 +38|88 +38|19 +38|58 +38|61 +38|83 +38|78 +38|62 +38|16 +24|38 +24|16 +24|78 +24|83 +24|98 +24|88 +24|19 +24|12 +24|53 +24|44 +24|94 +24|62 +24|35 +24|41 +24|52 +24|79 +24|54 +24|33 +24|29 +24|31 +24|45 +24|17 +21|13 +21|18 +21|41 +21|45 +21|53 +21|38 +21|55 +21|94 +21|24 +21|48 +21|98 +21|43 +21|49 +21|19 +21|52 +21|61 +21|23 +21|88 +21|44 +21|31 +21|83 +21|33 +21|72 +15|88 +15|41 +15|55 +15|18 +15|89 +15|23 +15|48 +15|31 +15|72 +15|43 +15|44 +15|27 +15|21 +15|38 +15|19 +15|98 +15|13 +15|74 +15|94 +15|52 +15|49 +15|83 +15|24 +15|67 +33|16 +33|89 +33|54 +33|84 +33|91 +33|53 +33|86 +33|26 +33|75 +33|37 +33|12 +33|74 +33|58 +33|87 +33|35 +33|36 +33|15 +33|95 +33|17 +33|29 +33|78 +33|79 +33|62 +33|42 +74|49 +74|83 +74|31 +74|72 +74|98 +74|67 +74|52 +74|61 +74|43 +74|94 +74|24 +74|18 +74|19 +74|23 +74|55 +74|13 +74|27 +74|44 +74|88 +74|21 +74|45 +74|38 +74|48 +74|41 +36|15 +36|94 +36|44 +36|24 +36|48 +36|21 +36|18 +36|13 +36|55 +36|49 +36|98 +36|27 +36|41 +36|38 +36|23 +36|67 +36|95 +36|89 +36|88 +36|43 +36|31 +36|72 +36|52 +36|74 +27|52 +27|94 +27|61 +27|38 +27|41 +27|24 +27|18 +27|19 +27|44 +27|49 +27|43 +27|33 +27|83 +27|45 +27|12 +27|16 +27|48 +27|13 +27|72 +27|98 +27|53 +27|55 +27|88 +27|31 +87|21 +87|27 +87|94 +87|48 +87|43 +87|49 +87|58 +87|67 +87|13 +87|72 +87|15 +87|36 +87|91 +87|24 +87|86 +87|18 +87|95 +87|37 +87|55 +87|89 +87|44 +87|98 +87|74 +87|23 +45|16 +45|36 +45|75 +45|62 +45|95 +45|54 +45|35 +45|84 +45|87 +45|86 +45|58 +45|79 +45|17 +45|12 +45|29 +45|15 +45|33 +45|26 +45|53 +45|37 +45|61 +45|78 +45|91 +45|42 +43|62 +43|16 +43|45 +43|94 +43|41 +43|98 +43|53 +43|61 +43|52 +43|24 +43|54 +43|19 +43|17 +43|78 +43|33 +43|42 +43|29 +43|88 +43|12 +43|38 +43|72 +43|83 +43|44 +43|31 +37|95 +37|48 +37|43 +37|41 +37|23 +37|67 +37|31 +37|55 +37|13 +37|74 +37|98 +37|18 +37|36 +37|44 +37|38 +37|89 +37|15 +37|49 +37|21 +37|24 +37|27 +37|72 +37|94 +37|91 +49|94 +49|83 +49|24 +49|16 +49|72 +49|61 +49|44 +49|17 +49|41 +49|54 +49|78 +49|98 +49|62 +49|42 +49|19 +49|33 +49|12 +49|38 +49|53 +49|45 +49|31 +49|88 +49|43 +49|52 +52|88 +52|16 +52|33 +52|26 +52|42 +52|17 +52|35 +52|62 +52|84 +52|54 +52|87 +52|37 +52|19 +52|75 +52|83 +52|53 +52|12 +52|78 +52|86 +52|45 +52|61 +52|58 +52|79 +52|29 +16|67 +16|23 +16|42 +16|91 +16|17 +16|79 +16|37 +16|95 +16|29 +16|89 +16|36 +16|62 +16|26 +16|87 +16|78 +16|75 +16|21 +16|15 +16|35 +16|86 +16|54 +16|84 +16|74 +16|58 +83|17 +83|45 +83|79 +83|37 +83|35 +83|16 +83|91 +83|36 +83|19 +83|78 +83|54 +83|84 +83|42 +83|75 +83|29 +83|26 +83|87 +83|33 +83|61 +83|62 +83|86 +83|53 +83|58 +83|12 +62|29 +62|58 +62|21 +62|74 +62|35 +62|55 +62|79 +62|23 +62|27 +62|86 +62|95 +62|36 +62|26 +62|84 +62|18 +62|75 +62|67 +62|89 +62|91 +62|87 +62|15 +62|48 +62|13 +62|37 +61|87 +61|79 +61|86 +61|26 +61|29 +61|12 +61|53 +61|75 +61|36 +61|84 +61|62 +61|35 +61|16 +61|37 +61|17 +61|54 +61|15 +61|58 +61|42 +61|95 +61|78 +61|91 +61|33 +61|89 +75|95 +75|74 +75|67 +75|13 +75|37 +75|49 +75|58 +75|87 +75|23 +75|89 +75|26 +75|27 +75|15 +75|21 +75|72 +75|55 +75|48 +75|84 +75|91 +75|18 +75|43 +75|24 +75|36 +75|86 +48|52 +48|83 +48|45 +48|31 +48|44 +48|53 +48|88 +48|98 +48|61 +48|55 +48|43 +48|33 +48|18 +48|72 +48|16 +48|13 +48|42 +48|24 +48|41 +48|94 +48|38 +48|19 +48|12 +48|49 +17|62 +17|91 +17|75 +17|37 +17|26 +17|35 +17|29 +17|23 +17|84 +17|36 +17|58 +17|15 +17|78 +17|67 +17|48 +17|89 +17|54 +17|95 +17|86 +17|79 +17|27 +17|74 +17|21 +17|87 +31|88 +31|29 +31|16 +31|45 +31|75 +31|79 +31|84 +31|87 +31|78 +31|38 +31|19 +31|52 +31|35 +31|26 +31|61 +31|41 +31|33 +31|53 +31|42 +31|17 +31|83 +31|62 +31|54 +31|12 +78|84 +78|74 +78|48 +78|89 +78|55 +78|29 +78|62 +78|37 +78|54 +78|87 +78|67 +78|79 +78|91 +78|35 +78|26 +78|36 +78|58 +78|15 +78|27 +78|95 +78|75 +78|21 +78|86 +78|23 +12|86 +12|15 +12|21 +12|58 +12|67 +12|89 +12|95 +12|26 +12|75 +12|36 +12|37 +12|29 +12|84 +12|91 +12|74 +12|35 +12|42 +12|62 +12|79 +12|54 +12|17 +12|78 +12|87 +12|16 +41|45 +41|52 +41|78 +41|42 +41|88 +41|87 +41|26 +41|35 +41|58 +41|29 +41|75 +41|84 +41|17 +41|86 +41|54 +41|33 +41|53 +41|79 +41|61 +41|16 +41|19 +41|83 +41|12 +41|62 +54|67 +54|26 +54|27 +54|86 +54|75 +54|89 +54|79 +54|23 +54|48 +54|29 +54|37 +54|18 +54|62 +54|95 +54|58 +54|36 +54|21 +54|87 +54|84 +54|35 +54|74 +54|15 +54|91 +54|55 +91|41 +91|23 +91|67 +91|36 +91|24 +91|27 +91|38 +91|55 +91|98 +91|49 +91|18 +91|13 +91|72 +91|43 +91|44 +91|31 +91|48 +91|21 +91|15 +91|95 +91|74 +91|52 +91|94 +91|89 +89|98 +89|23 +89|49 +89|38 +89|31 +89|72 +89|74 +89|55 +89|43 +89|67 +89|45 +89|88 +89|83 +89|41 +89|48 +89|27 +89|52 +89|13 +89|24 +89|44 +89|94 +89|18 +89|19 +89|21 +95|67 +95|94 +95|44 +95|83 +95|88 +95|27 +95|23 +95|43 +95|89 +95|48 +95|72 +95|24 +95|55 +95|18 +95|74 +95|13 +95|21 +95|38 +95|41 +95|52 +95|15 +95|98 +95|31 +95|49 +88|84 +88|29 +88|33 +88|35 +88|78 +88|19 +88|86 +88|16 +88|37 +88|53 +88|83 +88|75 +88|45 +88|91 +88|42 +88|79 +88|54 +88|62 +88|26 +88|87 +88|17 +88|61 +88|58 +44|35 +44|42 +44|17 +44|16 +44|29 +44|83 +44|41 +44|54 +44|88 +44|62 +44|31 +44|84 +44|19 +44|75 +44|78 +44|45 +44|38 +44|12 +44|52 +44|61 +44|53 +44|79 +29|75 +29|58 +29|89 +29|13 +29|35 +29|15 +29|26 +29|95 +29|86 +29|74 +29|21 +29|55 +29|67 +29|37 +29|79 +29|87 +29|49 +29|48 +29|36 +29|27 +29|18 +19|61 +19|35 +19|33 +19|12 +19|45 +19|42 +19|95 +19|86 +19|16 +19|37 +19|26 +19|36 +19|91 +19|58 +19|54 +19|87 +19|78 +19|62 +19|29 +19|75 +23|44 +23|19 +23|43 +23|38 +23|83 +23|13 +23|61 +23|18 +23|24 +23|27 +23|49 +23|55 +23|45 +23|52 +23|53 +23|88 +23|94 +23|33 +23|41 +18|24 +18|33 +18|53 +18|19 +18|13 +18|43 +18|12 +18|78 +18|72 +18|52 +18|61 +18|45 +18|42 +18|98 +18|17 +18|49 +18|38 +18|16 +26|89 +26|49 +26|98 +26|55 +26|74 +26|13 +26|21 +26|91 +26|67 +26|36 +26|84 +26|23 +26|37 +26|58 +26|72 +26|18 +26|95 +86|94 +86|18 +86|43 +86|89 +86|37 +86|49 +86|23 +86|21 +86|72 +86|38 +86|31 +86|27 +86|15 +86|24 +86|44 +86|95 +13|83 +13|41 +13|52 +13|61 +13|44 +13|98 +13|78 +13|33 +13|17 +13|12 +13|31 +13|38 +13|42 +13|45 +13|54 +42|27 +42|35 +42|17 +42|37 +42|15 +42|91 +42|78 +42|89 +42|87 +42|86 +42|95 +42|26 +42|74 +42|79 +72|62 +72|98 +72|33 +72|24 +72|12 +72|31 +72|78 +72|44 +72|54 +72|41 +72|88 +72|42 +72|61 +94|42 +94|79 +94|26 +94|54 +94|62 +94|38 +94|83 +94|19 +94|45 +94|53 +94|41 +94|88 +58|21 +58|94 +58|36 +58|89 +58|31 +58|44 +58|98 +58|15 +58|27 +58|24 +58|86 +67|38 +67|48 +67|44 +67|61 +67|98 +67|13 +67|24 +67|49 +67|83 +67|88 +35|23 +35|91 +35|48 +35|49 +35|27 +35|75 +35|84 +35|72 +35|36 +98|35 +98|52 +98|88 +98|19 +98|41 +98|16 +98|83 +98|54 +84|58 +84|43 +84|36 +84|37 +84|18 +84|87 +84|98 +53|29 +53|54 +53|84 +53|42 +53|74 +53|95 +79|75 +79|37 +79|15 +79|55 +79|91 +55|16 +55|53 +55|83 +55|33 +38|87 +38|12 +38|35 +24|61 +24|42 +21|27 + +87,86,37,91,36,95,89,67,21,23,27,48,55,18,13,49,43,72,24,98,94 +79,16,83,58,33,35,29,52,45,61,17,54,41,12,26 +74,49,31,72,95,27,44,23,91,89,98,67,94,18,48 +74,44,15,48,24,18,55,49,36,38,13,89,67,52,41,31,23,43,95,98,21 +67,94,49,55,15,98,58,95,74,87,18,21,72 +17,89,95,36,42,91,62,75,79,74,87,23,26,86,78,29,35,54,84,58,21 +53,79,37,74,62,58,95,89,42,12,16,17,75,86,26,36,35 +13,84,36,23,58,48,95,89,26,55,24,49,15,87,37,21,43 +91,74,55,18,98,94,41 +48,21,13,67,23,98,49,18,84 +87,74,48,18,13,24,94 +91,36,95,89,74,21,23,27,18,13,43,72,24,98,94,44,31,38,41 +58,43,89,95,23,49,72 +38,41,52,83,45,33,12,42,17,78,29,35,87 +44,23,49,37,98,31,38,95,89,74,13,67,27 +45,74,18,19,38,23,43,67,24,48,21,98,52,94,41,49,31,83,44,72,13 +26,87,86,91,36,95,74,21,23,27,48,18,13,49,43,72,24 +35,26,84,87,58,86,37,91,36,15,89,74,67,21,23,27,55,18,13,49,43 +55,18,13,49,43,72,24,98,94,44,38,41,52,88,83,19,45,61,33,53,12,16,42 +91,62,79,16,42,45,26,19,36,86,53,17,54,35,37 +13,52,45,19,16,12,72,24,78 +83,19,45,12,62,29,79,84,37 +44,83,33,16,42 +27,48,55,13,49,94,31,41,52,19,61,33,53 +45,17,31,84,42,78,19,52,26,61,83,29,88,12,62 +98,94,44,31,41,88,83,45,61,53,12,16,42,17,54,62,29,79,35 +13,49,43,72,94,31,41,52,88,83,19,45,61,33,12,16,78 +54,62,29,79,35,75,26,84,87,58,37,91,36,95,15,89,74,67,21,23,27,48,55 +33,87,88,75,16,58,42,37,78,79,62 +61,48,41,43,94,31,55,21,98,72,88,49,45,27,24 +74,67,21,27,48,13,43,72,24,44,41,52,88,19,45 +17,78,54,29,79,35,26,58,37,91,15,74,67,21,27 +53,12,42,17,62,35,75,58,37,15,74 +74,94,52,21,72,48,49,98,23,36,31,55,24,89,15,41,18,38,43,13,67,95,44 +33,45,24,88,13,12,18,48,94,55,49,72,53,41,83,52,38 +91,15,38,94,44,98,21,48,55,24,72,27,74,49,36,23,41 +61,33,12,17,78,62,35,75,37,36,15 +42,61,83,12,78,33,17,26,79,84,29,87,53,58,35,41,54,45,19 +75,26,84,87,58,37,36,95,15,89,74,67,21,23,27,48,55,13,49,43,72 +84,62,95,91,12,54,79,36,87 +33,79,26,19,17,45,52,75,12,53,31,88,42,78,84,62,29,16,54,61,41 +88,83,19,45,61,33,16,42,17,78,62,79,35,26,87,86,37 +31,41,38,23,15,83,72,27,55,98,49,13,21,48,24,94,67,74,89 +15,74,27,18,49,72,24,31,83 +12,16,42,17,78,54,62,29,79,35,75,26,84,58,86,37,91,36,95,15,89,74,67 +26,19,37,42,78,35,45,16,87,54,84,53,86,83,29,33,88,58,62,79,75,17,61 +17,78,54,62,29,79,35,75,26,84,87,58,86,37,91,36,95,15,89,74,67,23,27 +18,13,49,72,24,98,44,31,38,41,52,83,45,61,33,53,17 +18,49,43,72,98,44,88,42,17 +83,88,53,31,18,17,41,42,49,12,98,19,44,33,94 +61,54,31,44,42 +26,84,58,86,37,91,95,15,74,13,24 +26,86,37,91,36,95,55,18,13,49,24 +86,37,91,36,23,18,13,49,43,98,31 +16,87,45,83,78,12,17,88,54,79,75,29,84,35,19 +72,24,44,31,38,41,52,19,61,12,16,17,78,54,62 +75,26,84,87,86,37,91,36,95,15,89,67,21,23,18,49,43 +48,55,43,44,88,61,16 +78,67,87,74,36,29,75,17,95,89,15,79,58 +61,35,86,12,33 +94,24,27,74,87,67,48,91,18,37,36,49,23,21,55,89,15,95,13,98,86,43,58 +26,29,95,55,48,54,74,21,86,84,62,27,67 +41,83,16,17,29 +74,67,23,27,55,18,13,43,72,24,98,31,38,41,52,88,83,19,45 +79,15,42,74,78,35,36,12,17 +27,23,15,52,49,89,38,72,48,13,44,74,18,31,24,95,88,21,55,43,98,41,94 +31,55,43,72,49,12,53,88,52,44,41,27,33 +35,75,26,84,87,58,86,37,91,36,95,15,74,67,21,23,27,48,55,18,13,49,43 +89,74,67,23,27,48,18,49,72,98,44,38,41,52,19 +23,62,54,78,74 +91,36,15,67,48,38,41 +79,35,75,26,84,87,58,86,37,91,36,95,15,74,67,21,23,27,48,55,18,13,49 +86,27,55,13,49,24,98 +38,17,41,78,19,43,12,83,54,88,49,24,98 +79,35,75,26,84,87,58,86,37,91,95,15,89,74,67,21,23,27,48,55,18,13,49 +89,74,67,21,23,27,48,55,18,13,49,43,72,24,98,94,44,31,38,41,52,88,19 +78,16,54,62,58,26,45,33,87,84,61,19,12,37,29,36,79,53,42,17,86 +54,29,79,35,26,84,87,58,37,91,36,95,15,89,74,67,21,23,27,48,55 +61,36,17,45,16,33,79,54,86,37,53,91,12,29,78 +88,19,61,12,17,78,62,29,79,35,26,58,37 +17,78,54,62,29,35,75,26,84,87,86,37,95,15,89,23,27 +52,24,98,17,83,31,78,33,62,53,44,88,43 +86,36,15,27,48,98,31 +18,55,52,24,48,13,45,38,67,61,88,41,19 +49,52,27,23,41,48,18,43,21,98,72,74,36,13,95,67,89 +42,37,62,16,26,89,54,91,21,58,78,79,74,87,35,86,75,84,15 +16,17,62,29,54,75,12,79,91,53,36,78,33,86,42,84,58 +72,24,94,44,41,52,45,61,33,16,54,62,29 +45,61,53,12,16,42,17,78,54,29,79,75,26,84,87,37,91,36,95 +67,19,38,43,49,89,31,88,21,48,24 +72,21,67,23,18,55,58,49,86,98,94,15,89,87,24 +19,79,86,83,87,12,35,52,78,62,42,88,54 +42,78,35,75,84,87,37,21,23 +23,91,84,37,74,75,86,67,13,89,15,21,26,87,36,27,18,48,58,95,55,29,79 +88,42,16,31,49,45,61,55,43 +75,42,37,86,26,95,17,36,35,16,33,29,61,15,87,58,12,62,53,84,91 +37,91,86,58,75,84,89,13,55,18,48,35,67,43,27,26,74,95,15 +33,12,16,17,79,26,84,87,58,15,89 +98,44,31,38,52,19,45,61,33,53,12,16,42,17,78,62,29,79,35 +36,17,42,79,67,95,26,16,12,37,35 +38,53,12,16,62,29,35,84,87 +41,52,83,45,53,12,16,42,78,62,29,79,75,26,84,87,58 +62,29,79,35,75,26,84,87,58,37,36,95,89,74,67,21,23,27,48,55,18 +54,67,17,62,95,12,36,91,84,16,15,26,86,78,79,58,29,42,75,89,87 +94,48,24,55,15,58,23,98,91,86,72,44,36,67,95,37,43,18,13,74,27,21,89 +18,13,49,43,44,31,38,45,61,42,17 +95,78,29,86,15,58,42,87,37,79,17,67,26,54,74,75,12,89,84,16,62 +35,75,26,84,87,58,86,37,91,36,95,15,89,74,67,21,27,48,55,18,49 +37,26,58,74,48,72,75,36,84 +12,17,33,13,42,78,53 +44,52,62,31,79,53,24,88,45 +13,18,31,67,72,52,27,88,45,24,74 +86,84,17,16,29,62,87 +83,19,45,61,33,53,12,16,42,78,54,62,29,79,35,75,26,84,87,58,86,37,91 +75,13,26,43,89,67,74,18,91,49,35 +27,55,43,72,24,98,94,38,41,52,45,61,33,53,12 +17,78,29,79,35,26,58,86,91,95,15,74,21,23,27 +74,43,86,98,89,21,13,67,23,72,91,15,36 +94,54,29,88,17,12,42,41,62,33,98 +18,19,55,53,31,44,41,42,43 +94,33,62,38,12,31,83,17,53,41,42,54,88,45,16,61,29,78,79 +98,42,38,12,35,61,52,29,94,45,62,54,78,31,17 +42,17,78,54,62,29,79,84,58,86,37,91,36,15,89,74,67,21,23 +37,91,74,23,13,49,43,44,38 +61,33,42,17,78,54,62,29,26,84,87,58,91 +89,74,67,21,23,48,55,49,72,24,98,31,88,83,19 +35,26,87,58,86,37,91,36,15,89,21,27,48,55,18,13,43 +36,21,18,43,72,41,52 +37,74,21,44,18,49,27,43,89,48,23,24,15,86,31,98,13 +37,26,75,27,79,21,87,48,84,91,15,95,23,67,58,89,35,74,86,54,78 +43,72,98,44,31,41,83,61,33,12,16,17,62 +67,27,15,52,13,55,49,24,83,72,38,18,88,23,44,89,98,41,74 +83,98,12,31,41,44,33,16,53,42,78,43,52,54,38,72,17,19,45,61,94,62,24 +21,23,27,38,98,13,15,83,48,89,67 +33,44,83,35,45,78,19,75,42,61,31,88,12,52,54,79,26,17,62,41,53 +13,43,98,94,38,41,83,19,45,53,12,16,78 +98,49,94,83,61,41,48,55,19,23,31,27,88,24,44,67,45,72,52,38,21,43,13 +88,61,42,35,44,29,75 +67,49,44,43,95,48,27,36,21,55,58,89,98,24,13 +48,84,58,67,15,23,26,36,37,87,18,89,86,21,74,27,91,75,72,13,55,95,43 +24,87,55,89,72,86,91,49,95,37,13,15,18 +31,98,23,55,48,45,44,72,94,67,88,38,83,49,61,13,43 +88,31,53,38,42,52,55,19,61,43,24,49,44,45,12,72,18,41,94 +62,29,35,75,84,87,58,37,89,23,27,55,18 +98,18,38,23,31,48,55,13,19,45,61,41,83,53,27 +12,45,52,88,33,38,27,43,61,94,72,83,44,18,19,31,48,53,24,41,98 +19,41,35,84,42,54,79,52,33,62,31,88,45 +21,23,27,48,55,18,49,72,24,98,94,44,31,38,41,83,19,61,33 +79,35,75,26,84,86,37,95,15,89,74,21,23,18,49 +72,18,74,13,87,75,58 +15,89,21,27,13,72,24,41,83 +94,62,16,31,19,88,33,75,29,38,61,41,83,35,53,45,42 +87,91,21,29,23,35,78,86,48,67,84 +79,75,36,29,67,35,78,89,58,17,86,15,95,12,74 +16,86,53,62,35,36,89,95,15,87,42,75,74,58,29,17,37,91,26 +83,27,52,55,94,88,74,49,89,48,98,18,13,19,24,41,31 +38,29,26,41,17,45,62,84,87,33,61 +31,94,43,13,41,44,83,33,72,49,18,55,19 +49,43,31,52,88,19,61,33,12,42,54 +87,58,86,37,91,36,95,15,89,67,23,48,55,18,13,49,24,98,94 +54,88,17,94,33,19,38,78,42 +52,88,83,19,45,33,53,12,16,42,17,78,54,62,29,35,75,26,84,87,58 +83,19,61,53,42,17,78,54,62,29,79,35,75,84,87,58,86,37,91 +19,83,23,31,45,18,61,88,33,52,43,94,24,72,98,55,53,49,48 +61,38,12,48,44,55,18,33,19,13,98,53,43,52,31 +12,16,42,78,62,79,35,58,37,95,15,74,67 +91,24,84,74,89,37,23,86,36,21,58 +88,19,45,61,33,53,12,16,42,17,78,54,62,29,79,35,75,26,84,87,58,86,37 +23,49,43,13,24,67,74,27,89,55,98,41,94,52,72,31,48,19,21,18,44,88,38 +78,79,35,37,36 +31,88,83,19,45,61,33,53,12,16,17,78,54,62,79,35,75,26,84 +27,98,55,31,38,23,18,43,95,67,88,15,74,52,13,41,49,72,21,94,48,44,24 +58,86,37,91,95,15,89,67,21,27,43,24,98,94,44 +29,35,45,38,19,17,16,79,33,62,83,42,94,31,78,41,12,54,98,53,44 +36,89,67,18,43,44,31 +83,98,42,12,35,31,45,53,41,33,44 +24,38,21,41,45,88,49,31,67,43,61,19,52,98,44,23,83 +67,35,62,91,15,26,18,89,75 +29,79,35,84,58,86,37,91,36,95,15,89,74,67,21,23,27,48,55,18,13 +79,75,84,37,91,15,67,21,23,55,13 +83,19,53,12,42,78,54,62,29,79,35,75,26,84,58,37,91 +43,72,94,44,31,38,19,12,42,17,78,54,62 +33,53,12,42,17,62,79,35,75,26,84,87,58,86,37,91,36,95,89 +13,24,49,48,74,86,87,37,43,95,98,27,21,55,72,18,89 +58,86,37,91,36,95,15,89,74,67,21,23,27,48,55,18,13,49,43,72,98,94,44 +61,35,16,91,37,26,53,12,86,17,75,83,87,33,78,42,58 +54,62,29,79,35,75,26,58,86,91,95,89,74,21,23,27,48 +86,37,91,89,67,21,23,27,48,18,49,43,72,24,98,94,31 +18,24,31,98,27,44,52,61,19,43,72,67,41,94,55 +26,27,62,87,18,75,86 \ No newline at end of file diff --git a/data/Day6 b/data/Day6 new file mode 100644 index 0000000..829ae38 --- /dev/null +++ b/data/Day6 @@ -0,0 +1,130 @@ +..........#....#..........#......#.......................#...#..........................................#......................... +...................#.........#......#.....#.......................#......................#...#.................................... +...........#..#....................................................#..........................#................#......#........... +.....#.#...........................................................................#..........#................#.................. +...#..........................................#...........................#....................#..#.........#..................... +...........#.#...#..........#...............#..................#.............#...................................#............#... +......................................................................................................................#..#......#. +....................#..........#.........#.....#.......#....#........................................#..#..........#...........#.. +....................#......#...................................................#............................................#..... +..................................................#.........................#...........................#...............#......... +#....#....#..................#.........#..#...................#.........#....#.....#.#........................................#... +...........................................#..............................................................#....................... +#...............................................................................................#...............#...........##.... +...#......#.............#...............#.....#........................................#.#........#...........#...#............... +#........#......#............................#.......................#............#...........................#................... +............#................................................#....................................................#............... +.......#.................#......................#.....................#..........#................................................ +.......................................................................................#.....#......#............................. +...........................#..#....#.......................#.............................................#...#......#............. +........#........##...#.....................................................#...........................................#.#....... +...............................#.........#......................#...........#..........#.....#...........#.#.................#.... +..#.#.............#................................................................................#..................#........... +.....................#.................#............................................#...................#...................#.#.#. +........#...........................................................................................#............##............... +........................................................#........................................................##............... +..#........#.................#...............#......#..........................................#................#................. +..................#......#.............................#.............................#.....................#...#........#........# +....................................#.#.........#..#...............#...............#.............................................. +...##..................................................................#....#..............#.#...............................#.... +...........#....#...#........#..............................................#.......#............................................. +.................................#.............................#...................................................#.............. +..........#.............................#.....#...............#..........................................##...............#....... +...........................................#......##...............#..............#.............................#...#............# +.#.#.....................#........#........................................................#..........#.........#................. +.............#.......................................##..........#.#..........................................................#... +.............#.................................................................................................................... +..................##.....#......#........................#......................#........#........................................ +.........................................................................................#.....#............#....................# +.#...........#....................................#.#.....................................................#......#...#............ +#.#...#....................................................................................#............................##.......# +...#...............#................#...#...#.......................#................................#.#....#..................... +................................#........................................#...................#.................................... +...#..#.........#......#......................#..#.....................#.......................................................... +.................................................................#.......#........................................#............... +..................................##.......................##........................................#............................ +....#....#.............#........................................................#....#.......#....................#..............# +.........##.............................................................#..#.#.....#...........##................................. +....#.........................................#......#.......................#....#..............................#...........#.... +.##.....#...........................#........#...................................................#....#........................... +...........................................................#.....#.#...................#......................#......#............ +....#............#......................................................#.......#............................................#.... +#.......................#..........#.#............................#........#..................................................#... +#....................#.....#......................................................#....................................#.....#.... +...#.....#.....#.................#...........#...............................................#.................................... +...........................#..........................#............#............#...........................................#..... +.......#.....#..........#........#...................................................................................#........#... +#.....................................#......................................#.............................#......#............... +#.....#....................#.........................................................#................#........................... +.........................................................#....#............#..##.....................#............................ +...#..............#.................................#.......#...................................................................#. +............................#........#...........#.......................#.......................#..........#..........#.......... +....#..............#.............................................................................#.........#.....#...........#.... +..........#................#.........................................#.#..#......................................#...#............ +............#...............................................................................................#.#.......#......#..#. +.#................................#...............#.........................#............................................#........ +....................................................#.......................#........#........................#.................#. +..###...............#...............#..........................................#.............#...............#..#.#............... +..#...#.......................................#...................................................................#...#........... +..........#..........#..#......#.............................................#......#..................#...................#.....# +.......#.....#.......#.......#.....................................................................................#..........#.#. +#........................#..#......................................................#......#...........#................##......... +....#.....................#...........................................................................#........................... +.......................#..........................#.............................................................................#. +.........#..............#...................#................#.........................#..........#............................... +.........#...........................................................#................................................#......#.... +.................#.....#................#.............................................................#...................#......# +....................#.....................................................#...................................................#... +............##.................#...................#................#.......................................................#..... +.........................#............#.#..........................................................................#........#..... +............#.........#........................#..............................................##....#.......................#..... +......#...................................................#..##................^......#...#....................................... +............#.....................................................#..............#.##.....#...............................##...... +....................#...................#......#......#......................................................#.....#...#.......... +..........................................................................#....#..........#........#.............................. +.#.................................................#.............................................................................. +.......................#.............................................................#.....#..................#.................#. +...#...............#.#................................#..............................#.....#..#.....#..........#...............#.. +...........................................#.............#................................................................#....... +#..............#................................................................................................................#. +..................................#.#................##..............#......#..................#......................#........... +..........#...................................#..................................................#................#............#.. +....#.....................#......................#.....#.........#........#................#....#................................. +................................................#......................#.....#.................................................... +......#.....#.........................#..........................................................................................# +............................................#..............#.................................#......................#............. +...#......#................................#...............#................................................#.....#............... +#...............#.........................#.#..........................................................#......................#... +..#........#......................#.........#............#...###.........#....................................................#... +............#.....................#........................................#..............#.........#........#.................... +...#....#...........................................#.................#...............#.........................#................. +......#........................#.................................................................................................. +...#..........................................#....................................................#...........#....##.#.........# +....................#..........................#....#..#...........................................................#.............. +.....#...........#.........................#...............#..........................................#..#.#.....................# +................#.......#......#.............................................................#...#................................ +...........#....#........##.....................#.....#.....#.....#.........................................................#..... +.#.#.........................#...#......#................................#.......##......#..........#...#..........##............. +...................#...................#......#............................................#...........#.......................#.. +..............#.#.................................#.....................................................................#......... +......#............#...................................##....................................#...................#.#.............. +......................#.............................#....................................................#...............#........ +..........................#.......................................................................#.......##...#.................. +...................................................#..............#...#.............#.................#..........#.#....#......... +...#......#....................#..................................................................#...............#......#........ +....#......#.#.........#..#..#......#.....................................................#.................#.....#............... +......#..........#............#..............#.......#..................................#......................................... +.##.#.........................#..#.............#..........#.........................................................#............. +.....#..#......................##...........#........................#..#.............................................#........... +.....#...............................#................#........................................................................... +.##....#...................#............#....................................#..............##.............#................##.... +....................#......##..............................#...#.................#...............##...#............#.............. +.................#...........................#.....................................#.#........#...........#.........#....##....... +......#.............................##....................#......................................................................# +...........#........##...#......#...........#................#.....................................................#.............. +......#.#.................................#...........................................................#...#......#........#.#....# +...........#......#....#...............#.......#................#.....................#........................................... +....#......#............................##.#...............##.#..........#.........#........#.................................#... +.#............................#................................#.#..............................................#.....#........#.. +.#.#.......#.......#.....................................................................#..............#.................##...... +.....#.......................................#.......#........#..............#.........#................#...#...#................. \ No newline at end of file diff --git a/data/Day7 b/data/Day7 new file mode 100644 index 0000000..12ec193 --- /dev/null +++ b/data/Day7 @@ -0,0 +1,850 @@ +82042417: 7 5 192 12 8 82 8 1 6 9 1 +2580: 252 9 212 98 2 +3554112: 2 515 8 4 856 +127435: 7 72 6 51 1 5 222 7 6 7 7 +600421542065: 241 56 478 116 52 30 +18582: 5 588 3 3 826 26 3 3 6 +2907: 4 726 3 +1334594: 8 834 492 5 94 +11464362: 5 84 98 87 57 5 78 9 +6165: 6 55 20 6 38 1 +743449725: 8 9 2 269 246 17 3 3 75 +265518: 1 99 3 6 149 +215288: 5 3 4 4 2 4 8 +7272: 717 8 1 4 9 +79460193082650: 9 98 89 9 930 82 650 +18337280: 616 3 37 152 2 32 +869638795708: 57 4 852 31 466 38 +418327253: 806 6 2 634 3 963 47 5 +2408091537: 70 344 91 535 1 +71186: 943 8 4 882 378 8 722 +509646: 5 7 7 7 89 3 94 7 3 3 36 6 +65366: 9 7 9 4 54 7 879 +2229016465: 6 89 237 99 25 6 465 +155: 14 2 13 +2116248444: 3 933 2 7 14 6 9 6 +393021858: 74 8 793 663 99 +27222056614: 33 197 63 82 1 4 +3327312: 8 93 613 16 1 5 42 9 14 +113110367: 770 254 73 7 89 17 +8780457: 235 642 949 7 960 +1509: 21 48 49 12 93 +34641: 337 8 75 1 65 +11744767: 22 58 4 9 52 619 +22531: 48 1 4 9 8 4 7 77 727 6 7 +5252: 8 3 178 4 12 2 +1522: 33 7 4 717 2 +337392518: 58 7 831 6 518 +116800: 32 4 18 8 20 +2233246681792: 77 3 8 57 1 2 80 96 7 86 +6584995387: 6 13 392 802 84 17 +111052288: 9 25 3 660 2 642 4 6 6 6 +53874653: 42 9 8 4 7 3 43 8 4 4 82 +2749437: 3 475 2 51 79 +1003: 35 7 9 95 421 436 +11931540: 5 6 93 153 8 +1651: 44 5 761 417 28 +1926656: 71 9 3 57 908 6 +3218061121: 42 5 8 108 433 737 +69028: 590 295 7 693 14 7 +7988724: 83 7 5 2 3 8 9 3 81 929 9 +5533444: 5 6 306 35 6 98 83 +51450028: 8 4 9 4 9 2 13 9 3 3 7 4 +17146971648: 81 9 4 36 3 27 4 8 752 +83507688: 9 2 5 421 645 588 291 +1737402116: 435 33 931 5 633 26 8 +12421568663642: 77 70 845 68 6 636 42 +21760: 661 8 11 8 4 +39002586: 525 64 7 106 98 +1668692704: 36 83 626 4 8 5 399 56 +335560368: 12 3 3 97 366 13 8 682 +4244333: 42 2 689 4 35 93 +4311422208: 364 685 5 818 4 8 9 4 3 +286270: 7 47 221 5 4 1 7 5 1 6 7 3 +44451241073: 51 31 89 470 281 3 +5015508: 18 5 218 94 7 564 +74778098: 22 55 1 618 98 +487307415: 73 9 1 7 212 7 287 565 +276695: 49 968 62 4 8 8 465 6 +7449846: 6 2 737 5 192 824 62 +1378920140201: 5 3 321 325 9 891 9 9 +1407403: 33 4 76 1 343 763 +1845694633: 1 5 677 3 1 77 18 9 6 3 4 +707459260: 1 28 1 8 4 21 31 8 2 6 3 +547220811: 912 60 24 115 5 685 8 +137301177675: 32 7 828 55 507 675 +7451982902: 7 6 789 413 1 9 7 8 6 97 +1646069845: 4 81 4 5 7 50 6 98 42 3 +423103729: 8 47 5 1 4 9 43 38 3 29 +501413058: 9 260 25 42 7 54 +6766589: 254 74 90 4 29 +1407127249: 5 873 8 5 2 3 8 724 6 3 +22767125: 1 9 25 3 851 7 125 +586463195: 8 42 6 6 3 8 385 71 85 +2160452: 94 30 766 4 328 +14083090: 80 33 865 41 98 +187721659: 131 56 720 83 82 9 +1027: 11 2 79 +32: 4 3 2 10 8 +263256283575: 99 954 25 62 8 3 57 5 +37170: 1 582 3 5 63 +377341867: 3 8 30 783 9 2 26 218 +4188173044: 81 116 782 57 6 +979: 6 7 877 54 6 +13232: 77 7 23 835 +4264: 13 371 8 369 44 +16377515: 394 815 9 7 51 89 +4680761405: 5 71 2 60 7 61 3 29 77 +32046982: 92 8 1 8 3 6 57 9 5 74 4 +357612: 723 284 355 47 68 5 7 +1979: 878 580 4 275 242 +4041171478: 8 7 1 2 7 2 1 76 36 9 3 23 +1071675: 74 965 35 3 5 +59261728680: 54 7 4 1 1 7 22 785 4 81 +84516446: 60 368 87 2 14 +794869179: 60 81 9 95 5 9 7 29 1 +3385720: 8 266 64 571 8 +946846: 879 6 61 783 64 +10066: 61 6 633 7 5 +9229111592: 922 7 2 110 9 6 1 1 7 5 +21742576: 7 6 5 1 4 4 833 76 1 2 4 4 +1880: 8 8 314 723 4 707 3 65 +4974334113837: 491 1 63 3 341 1 383 7 +1980: 79 6 1 607 89 810 +914511: 13 9 6 451 3 70 9 2 9 4 3 +12037223: 2 2 7 249 5 224 4 7 5 2 3 +14566483: 75 816 876 1 8 4 82 3 +858: 6 5 1 1 1 78 +931135319105: 57 957 3 49 17 5 945 5 +3895507111: 8 507 768 42 711 4 +204523320: 8 964 35 66 5 7 6 4 1 +4416: 88 96 8 3 +67034: 66 964 6 5 54 5 +700206: 67 9 85 358 929 5 78 +745422: 94 44 428 3 439 +47440: 472 6 1 1 4 1 9 8 7 3 5 9 +100915823046: 2 3 9 8 4 77 794 6 3 41 6 +6064691: 6 95 6 4 691 +76052: 1 77 975 2 +65482: 6 535 13 2 +6975: 1 700 621 39 34 5 +18156255: 437 4 2 674 258 +4268960: 9 415 9 7 44 41 8 4 +92110132224: 6 52 2 5 4 6 16 97 969 8 +549947: 196 28 4 5 5 81 5 717 +854444814: 3 4 6 1 295 7 8 16 13 +5281757: 286 3 15 1 6 29 6 3 7 7 +252349405: 6 8 15 1 8 899 73 9 385 +19673804880: 65 558 54 4 45 51 59 +383488: 2 1 98 9 651 56 2 4 +13621: 76 51 3 1 34 985 974 +38967484: 8 1 5 8 59 2 24 39 482 2 +27342247: 256 3 751 3 6 247 +15734: 4 4 978 6 80 +1571395: 17 3 46 2 7 8 7 95 +83562: 62 1 5 6 4 1 16 649 4 1 6 +61624782824: 96 95 529 908 7 500 +1107112: 2 601 1 51 36 4 +16778202: 8 2 1 5 7 9 2 6 165 5 6 1 +138664: 9 8 3 3 906 46 +844009: 7 68 6 2 6 203 602 2 5 +9368306308: 9 3 33 35 21 9 6 30 6 +43332149: 3 4 78 2 5 8 69 55 94 +854701: 11 14 11 74 2 21 1 +26847296: 433 62 776 4 516 +279235: 6 93 42 5 5 +3486120720: 7 661 3 5 65 7 8 8 5 8 64 +5054: 49 1 54 +84392160: 586 6 340 3 8 +354455198890: 385 277 390 1 92 +156146585: 78 2 137 9 579 6 +16431072: 3 648 1 5 6 8 5 29 3 9 1 7 +68684: 93 8 68 4 +7385614: 246 3 55 70 42 +66220840: 91 81 385 708 132 +441696: 6 4 594 191 9 8 16 248 +1698162977: 82 5 82 3 415 78 2 2 4 1 +1035271918: 2 8 667 1 6 2 97 4 3 18 8 +6240240: 3 7 8 1 39 8 21 9 3 216 6 +23215498: 8 9 2 8 9 9 984 9 23 4 8 7 +2722917882: 228 71 7 74 64 170 +132544765: 556 3 76 76 765 +254959068: 55 1 68 9 96 91 83 +19458: 1 66 139 1 94 +26352: 376 4 142 2 8 8 8 +2071416: 5 8 5 7 4 6 159 7 6 1 80 9 +10006390: 7 801 4 9 344 115 3 +1206452203650: 2 14 696 71 65 810 +142568786242: 1 584 9 872 6 62 37 5 1 +25986: 17 2 572 96 37 567 +5636751122: 4 52 3 6 74 4 41 670 9 +9265906: 4 8 6 8 9 45 348 21 4 58 +654: 4 5 90 5 2 6 9 2 1 3 199 6 +1169: 8 4 5 9 1 78 3 7 61 6 45 1 +13776086: 3 6 8 1 79 565 5 1 46 5 6 +36373363267: 41 82 906 96 70 +2851304: 75 6 44 800 104 +1591645: 83 599 421 6 785 43 5 +15591: 1 864 2 1 3 6 +280828: 1 3 27 118 7 +47926943: 52 37 223 3 68 753 +2240: 208 2 6 6 975 +808084: 545 6 7 5 900 1 90 1 7 +965453818: 473 9 6 1 1 7 9 892 2 34 +47700: 443 34 2 10 5 +60081595: 594 6 80 6 35 72 888 +51765424906: 96 5 4 493 3 5 7 4 906 +9732: 67 74 7 3 80 7 5 6 +252517230191: 835 8 3 3 2 378 174 17 +84474639541600: 4 90 4 28 483 800 769 +1189017437355: 4 2 323 95 5 37 887 99 +587144716: 53 17 4 7 682 2 1 831 4 +27031122: 4 2 5 1 79 66 4 36 4 1 6 3 +102799: 3 922 973 21 4 +346500171: 2 88 55 70 170 +5132997233: 56 3 7 1 58 2 901 230 3 +44065984: 57 76 99 63 72 66 30 4 +105159: 659 607 1 83 81 +10108602: 52 7 1 6 10 3 1 9 511 +184443: 41 1 143 4 46 +44700: 39 54 4 5 6 2 +1316022593: 6 61 782 912 1 6 592 +24538370210: 24 518 15 5 370 207 +3324805704: 3 4 484 8 6 7 8 6 81 99 +904128000: 45 5 30 4 272 554 +11628152: 6 4 88 9 6 97 3 8 6 84 76 +782106380: 790 99 63 18 62 +2208104: 69 70 6 74 76 +1187200644: 6 2 2 54 7 1 1 96 2 2 641 +51106677924: 35 2 73 667 79 10 14 +171010225: 3 1 73 5 89 1 2 10 225 +7008750: 252 3 590 2 6 15 25 +758394873: 758 394 863 4 7 +1170182: 4 975 60 3 +6427825250: 79 620 74 7 350 5 71 +105568282766: 897 294 4 810 827 66 +441936099: 7 4 5 5 620 288 1 9 99 +10286: 238 4 186 4 6 +6646548: 70 63 941 257 8 +342551514: 2 9 457 3 3 7 9 31 6 9 1 4 +794584: 30 975 4 3 31 196 +32321: 1 95 339 42 74 +264538971216: 3 79 1 127 458 2 536 6 +47079978: 4 4 461 987 78 +39123068781: 705 68 1 1 2 77 4 5 8 2 9 +7983435214: 924 9 4 3 3 39 8 1 7 1 8 2 +6820: 6 62 1 8 2 +801941971: 43 2 736 9 890 964 3 7 +16464: 2 33 97 5 98 +2056737: 3 39 2 3 9 9 37 9 9 3 90 2 +63530: 6 17 824 75 5 +861664: 169 5 5 66 5 108 5 7 3 4 +3076568831166: 9 7 8 9 11 28 4 1 66 6 6 +552769: 895 1 44 5 83 7 2 3 14 7 +521743: 5 77 3 53 61 9 +367950978896: 919 2 1 7 5 45 3 9 2 896 +5856046: 946 29 6 6 7 7 1 88 9 6 6 +271166253: 5 7 291 832 32 804 9 +4183386: 7 90 39 7 67 7 5 +99538988: 192 749 41 3 860 7 1 +922179: 922 151 9 19 +389862: 332 35 86 77 31 3 11 +35131284: 9 74 829 897 84 78 6 +3268318: 728 89 4 254 64 +97544442: 6 2 1 93 8 437 5 +2195535: 6 3 3 701 58 +4851: 86 1 60 9 8 251 3 7 371 +18853063359: 822 46 6 831 4 2 1 1 98 +75389016612: 37 71 949 9 8 1 25 7 3 2 +37529: 3 8 3 519 161 +12511908: 4 524 138 375 69 36 +110080572017: 72 91 41 5 6 28 17 +869149: 6 79 92 99 46 +1858869754: 7 4 3 419 4 20 9 9 8 5 3 1 +502936: 319 4 7 56 7 +45611: 152 3 10 +43680: 4 16 40 4 182 +599510566: 6 427 22 424 6 +1866641985: 802 6 663 485 585 +278576: 73 945 659 1 4 +1099308900: 843 93 123 7 2 8 3 9 61 +114456696: 19 95 456 6 98 +7193495: 5 862 3 4 40 52 8 2 7 8 6 +443284986: 92 35 2 227 83 2 3 46 6 +582: 1 93 488 +11761: 12 4 234 84 2 88 3 1 3 4 +4845605: 48 3 34 57 2 73 331 1 +1690: 99 87 909 54 24 517 +55019728696: 9 33 9 7 9 8 41 3 8 2 695 +10962253824: 96 90 9 81 93 8 8 218 1 +15494491: 5 11 333 9 94 +1563280482: 287 366 34 5 585 2 8 2 +731484438: 36 4 10 3 282 521 437 +1121: 7 12 32 504 9 +232722: 6 91 214 21 46 7 +137003592: 22 663 50 8 98 4 +51876: 259 8 9 6 5 69 24 2 4 6 +3863340: 5 46 11 509 8 2 3 +563742422208: 60 4 649 98 96 249 +90736: 906 8 5 1 31 20 +4528: 60 7 2 35 902 6 40 4 60 +99699: 9 6 3 69 6 +1214: 9 29 4 88 1 875 210 +330644788: 71 87 93 46 8 +5010: 7 2 69 21 21 1 +14340: 17 50 4 449 20 +1445594511764: 108 38 74 326 476 4 +109588: 5 3 7 7 44 9 7 2 8 7 5 747 +3209365: 323 23 48 3 3 3 10 +1844721: 9 1 6 91 6 9 6 2 161 8 2 1 +126894624: 9 30 2 4 7 6 2 4 2 567 21 +7030625: 8 64 20 83 70 14 875 5 +306035: 163 1 7 3 6 32 +1187: 320 51 3 1 73 +18151127284: 358 76 8 66 28 9 792 4 +26862096682: 9 730 1 121 32 3 681 1 +131688: 20 619 6 204 100 8 +584180: 78 3 9 7 1 100 2 54 1 6 8 +510077: 75 68 6 1 7 +6295698: 503 116 9 96 698 +3708373817: 9 8 9 31 3 5 33 1 521 1 7 +1780365283548: 8 9 5 5 4 566 8 3 51 5 30 +1100018: 664 1 6 4 4 2 275 8 8 2 1 +3789: 8 467 50 1 3 +474966: 59 358 13 8 +109552579: 4 978 1 55 4 3 9 509 +16318811991: 3 23 4 841 3 3 6 11 9 9 1 +43842584: 913 1 6 3 2 4 7 2 5 1 23 8 +70010209766: 80 9 5 5 3 9 3 3 2 6 221 8 +56690634117: 776 58 3 9 7 1 2 47 73 +70605: 250 4 3 3 702 7 4 19 1 +24992234: 4 89 702 29 6 935 67 +59286529134: 21 8 408 8 84 378 3 +114794780: 7 3 2 4 3 46 8 8 9 8 7 78 +34225880: 718 7 37 130 52 +372240: 5 72 88 3 1 1 752 +92561: 3 4 7 8 908 7 8 9 97 6 8 9 +1788: 40 946 802 +10280: 233 2 987 603 5 +1022892576: 11 1 7 44 95 6 2 6 4 6 4 +18581414: 37 93 2 27 17 +42933785: 6 423 32 925 860 +586: 1 6 82 94 +6399: 8 8 8 7 9 +678687802: 2 4 8 7 87 859 7 8 40 8 4 +8668343520061: 3 7 6 23 8 15 5 12 48 61 +1838: 4 6 56 8 31 10 1 8 780 +21041178: 612 18 6 23 2 83 3 4 6 1 +19897605: 91 5 694 65 7 9 +8775425450: 835 740 5 74 2 5 2 3 7 8 +3871: 4 6 55 3 7 +558008: 9 8 175 7 7 53 9 6 44 1 +2919622388: 811 1 6 3 1 1 1 9 1 2 5 1 +1059118768: 4 17 8 9 507 1 5 5 9 9 3 9 +263727849491: 1 9 27 337 54 6 127 9 +14381413: 1 7 4 573 9 273 796 1 3 +82052628903: 5 721 8 8 5 5 448 65 9 7 +333340: 3 11 24 9 3 6 4 +1074564: 65 5 146 3 228 +21086456116: 2 8 7 1 2 7 5 40 94 50 66 +58793: 8 342 56 1 7 +3461525: 41 55 15 830 425 +19055232: 2 7 536 4 2 9 7 8 1 68 +1383999: 2 7 40 368 1 748 10 99 +14162750262: 9 7 73 5 1 3 5 755 6 8 4 8 +21591892257: 790 91 178 7 17 39 +152259: 3 49 99 8 126 2 49 +60458946: 6 23 2 195 88 8 1 5 60 +130368: 9 7 64 21 1 +42810084: 1 791 72 6 35 6 9 +10299: 19 71 34 7 386 225 7 +630740: 9 621 366 374 1 +607: 56 4 1 7 +1413736709100: 918 55 596 8 6 7 5 9 2 8 +898415963432: 326 84 83 2 2 58 571 +1438948288006: 69 73 737 7 2 400 6 +1152: 213 5 8 3 67 8 1 +5714: 33 55 4 6 68 1 3 29 +170131421784: 6 2 686 5 4 27 66 4 59 8 +4060: 1 3 23 5 30 10 +7706289: 13 4 53 838 9 943 93 +336: 6 54 6 2 4 +283524329545: 6 4 4 88 9 319 6 5 9 5 4 5 +56777: 86 3 793 54 23 +9525: 3 731 973 9 3 +120152808: 8 406 9 6 2 37 76 54 +271057945: 9 45 211 589 5 +881144: 41 87 4 42 589 1 17 +991: 7 5 3 904 6 +2834614: 78 2 440 497 41 +13580362: 20 679 34 8 17 +36635: 4 31 85 +1138576325: 71 5 805 1 2 16 5 +2940716494: 49 88 96 24 3 2 296 6 +4273426: 1 6 2 106 65 161 5 8 +956124: 3 7 1 5 3 31 5 1 977 7 36 +569155356942: 7 5 4 8 3 4 5 4 77 3 1 945 +44416728: 2 3 147 466 3 5 757 36 +3126568575: 9 6 4 2 1 7 38 56 857 2 +2205314: 5 867 6 508 86 +24302: 9 15 278 4 20 +2859438598: 72 266 395 1 845 2 1 +37923486: 2 4 4 4 3 8 331 62 4 14 4 +14138920: 4 69 8 6 38 5 40 39 5 26 +26029: 9 464 2 323 3 4 +4574281: 2 852 4 8 125 5 961 5 +919442: 3 2 6 9 2 12 7 622 2 269 +11187126629: 1 97 9 174 3 501 7 5 1 7 +1732752: 2 4 4 3 2 7 1 54 1 772 9 7 +7686: 5 3 6 6 98 702 9 +3031374168: 11 956 1 8 6 36 8 2 7 1 8 +644520102: 925 715 3 131 102 +4765080664800: 7 9 1 762 14 7 200 709 +96471: 1 9 939 228 6 6 3 27 3 +30985: 30 4 5 82 3 +4059067834: 2 3 18 1 98 88 78 27 7 +48735: 2 9 60 8 515 45 +1369: 3 7 5 151 63 4 4 70 1 6 +636174772137: 93 5 3 63 4 85 7 84 9 9 +4851957505: 4 84 4 9 763 8 5 8 8 4 3 1 +244514: 355 7 98 83 901 +1405481: 1 6 5 57 6 39 7 3 3 3 71 +20940131: 4 48 339 1 5 8 972 4 11 +205146: 408 8 493 57 1 +13543116: 4 498 5 742 1 36 3 93 1 +5490888: 3 92 90 371 1 8 6 +133082684295: 2 135 64 713 79 605 +2965227329635: 74 7 39 6 386 1 2 572 +73621: 99 1 780 8 83 +561700: 4 92 5 1 386 9 2 8 82 +970086174: 932 13 2 319 78 172 +1911986999: 2 977 775 9 280 +296273268776: 88 29 410 732 68 776 +12458895913: 34 550 46 6 601 35 +15665229: 296 20 294 83 18 9 +2577418: 530 3 4 81 2 2 4 960 +18856: 96 92 56 +1419: 56 17 68 1 7 +22459778: 3 2 78 8 685 +119345444: 36 3 830 4 5 3 3 5 1 3 3 5 +2679263061: 3 880 394 273 883 +13714046195: 8 3 4 237 829 900 95 +75918: 75 91 6 +3233825: 5 429 6 85 7 +6998621: 2 1 711 8 5 3 7 5 90 7 1 7 +24840: 79 266 2 36 1 +133350455172: 911 5 8 177 9 282 146 +122836: 25 53 6 48 6 +66638: 54 4 7 44 16 85 9 +729258: 65 8 723 9 57 94 9 1 5 +6443892: 50 8 4 85 562 39 2 +5219221770: 988 8 9 4 4 9 6 83 3 42 7 +103209182: 19 1 14 388 951 231 +169488: 8 9 102 360 22 +904694402: 3 9 19 3 2 9 7 1 54 20 8 2 +33766336296: 9 2 55 957 588 822 +135034: 18 748 30 7 87 +1398: 1 74 946 293 84 +185237973760: 530 78 82 665 64 +3731185: 64 25 8 29 4 9 5 +4751567577720: 388 521 51 569 810 +28765978: 34 830 487 58 9 7 8 +45629472867: 582 98 84 1 8 66 +39721705915: 273 291 41 183 5 +47443: 5 81 7 229 74 9 +362852784: 518 9 6 138 94 +34762477: 8 6 15 559 1 3 7 7 47 7 1 +962208: 9 4 9 1 8 6 4 73 208 18 +277488992: 6 6 776 3 21 88 4 +2510205: 5 62 3 2 37 7 5 52 141 6 +31693936: 3 61 5 3 5 431 77 351 +1149703276: 8 499 8 36 6 4 7 9 797 +8692151: 7 1 727 1 3 6 73 1 2 9 23 +164112488: 1 6 7 1 9 54 67 6 2 6 5 8 +136879759121: 8 8 9 9 83 903 33 44 3 6 +4501841: 539 835 1 112 6 57 +79965188: 50 28 96 7 23 3 332 +13294611000: 129 11 150 90 694 +44580515: 6 6 3 672 1 9 27 7 7 87 7 +36409: 7 634 17 8 769 +721870: 99 622 8 65 5 +980549: 3 3 2 28 552 +197065482800: 9 912 7 685 8 256 6 93 +1492605: 325 7 152 615 +216885264: 9 9 6 3 435 42 720 8 2 5 +784513608: 98 6 5 4 6 58 2 6 4 6 79 +43153004: 4 2 1 646 7 7 3 5 9 7 639 +64535869440: 922 84 28 93 4 80 +5921923803: 1 659 986 85 91 65 +95230827: 586 18 15 4 1 641 3 6 3 +659839: 417 66 86 90 839 +2823500: 48 15 44 51 500 +111615927768: 6 9 6 8 9 85 8 3 277 6 3 5 +1233: 59 1 3 8 658 77 2 +20010714: 185 63 584 863 7 12 +179457: 685 86 92 817 3 +1274865556: 7 182 8 655 52 4 +311254962: 9 953 3 1 336 3 6 97 6 +710778: 884 8 2 2 5 327 6 3 1 2 6 +1009083693: 438 732 230 9 3 +11899845: 82 9 78 2 976 2 1 7 905 +258: 2 31 5 93 +146136236: 4 510 18 2 5 3 6 767 6 6 +500228: 6 343 1 1 1 1 323 6 5 7 8 +4701: 9 58 70 11 1 +5772: 58 8 9 127 8 4 +32851085: 7 904 9 8 4 9 3 6 5 8 3 61 +850168170046: 2 79 4 1 389 390 5 6 43 +204708384: 9 757 3 1 2 5 6 1 667 9 9 +99253310718: 281 3 3 8 7 7 6 3 7 679 4 +41947138: 49 7 896 836 2 +495: 8 1 55 +1211838288: 561 44 208 636 59 4 +3061539894: 6 7 463 63 2 6 51 49 +1261471276241: 5 629 8 1 67 8 1 906 4 1 +26282899: 3 6 156 4 3 195 4 9 1 7 3 +59211: 648 7 31 61 9 +314847: 85 2 37 253 3 2 621 +225678: 1 695 43 13 3 78 +55: 1 6 49 +6505384491: 7 7 199 900 9 357 584 +47469174312: 61 658 9 306 1 4 322 3 +7426295: 6 365 31 2 47 48 +622850043: 999 2 7 3 87 5 7 9 6 9 1 2 +47672: 24 4 58 871 2 1 305 9 8 +1013: 4 6 1 1 8 88 41 15 6 4 49 +4719423039: 7 9 990 221 59 +32727139: 5 5 59 52 44 84 8 31 67 +18384030: 264 7 6 8 410 284 4 2 7 +2348354059: 906 72 36 16 189 6 +2856248987: 4 3 45 305 8 24 87 2 8 8 +2953398: 808 14 2 1 58 179 77 +10591944: 5 666 8 53 6 +1423704: 23 7 2 84 6 +52565760000: 208 2 5 81 375 832 +214016947200: 420 28 89 710 288 +4717682123: 31 40 5 1 6 6 6 7 4 3 8 25 +3381089: 61 9 69 7 3 5 54 +5508468: 868 47 7 135 63 +202480566: 391 4 4 729 883 3 3 59 +18954805: 6 8 4 376 5 1 8 621 7 +5125: 4 4 65 4 52 5 64 636 +85567207572: 771 6 4 7 55 8 7 4 2 9 14 +1196283387: 8 69 5 72 31 551 38 7 +143411: 35 4 6 2 279 1 +8849012251: 884 90 122 5 1 +23771104870: 2 248 2 7 8 474 43 5 7 1 +24308: 55 7 8 48 206 +154616070: 196 98 5 983 107 +49352688: 987 25 807 537 2 +1399167: 3 8 9 72 694 3 3 7 8 6 3 4 +1746482400: 5 5 6 365 1 360 47 65 4 +17442000: 66 2 36 4 7 3 764 204 9 +9369297541: 4 16 413 9 2 25 38 +4434524: 85 4 8 1 2 18 37 1 83 +538278646: 12 9 623 6 8 4 6 4 79 9 7 +25674303: 59 712 925 4 9 +623352364: 1 538 579 7 9 65 +4136655595: 7 2 947 4 6 1 4 202 78 7 +1041: 9 31 108 +1015482150: 4 9 8 2 6 41 611 2 1 50 +6710: 1 7 39 8 72 +16757169: 96 605 612 659 39 +690976730: 2 9 1 3 8 22 811 4 3 88 6 +6966: 5 4 129 +666851462: 6 4 870 2 7 5 5 1 2 6 7 9 +519190: 2 2 404 6 12 1 8 3 5 5 70 +381850200: 9 64 6 405 4 405 +5072464: 943 9 665 6 2 963 7 8 +433183766518: 6 9 894 77 912 82 36 +606665867: 3 4 133 2 537 620 5 82 +26531: 94 2 6 46 35 +1462819: 5 379 3 83 1 69 77 5 9 4 +124816429: 5 1 4 9 3 4 1 895 2 4 4 31 +84154546878: 2 8 468 6 7 73 8 7 8 +16190100: 7 3 135 8 1 6 5 4 4 9 52 9 +21573: 89 615 3 3 452 +6349804023: 62 987 5 35 4 695 9 7 4 +335814: 939 2 585 999 97 +219004174: 94 807 6 55 7 1 +5581443: 4 1 47 40 8 95 64 +2491375328: 29 962 838 4 4 3 8 +57538: 958 15 4 9 49 +22964234: 2 1 29 63 818 416 +1024849747837: 6 3 1 291 9 9 5 2 5 6 6 43 +318448: 55 4 3 82 13 448 +30033360700: 417 13 720 6 97 +173508: 87 35 6 952 1 3 9 483 +21110947: 3 465 9 8 3 5 7 8 1 11 6 1 +2695000228: 28 4 7 3 22 696 92 2 74 +4568231: 6 9 5 992 39 78 4 +239039: 6 2 3 8 6 5 1 75 2 78 409 +10096752: 276 5 9 5 7 53 114 +198559200: 20 50 8 669 530 +12702301242240: 6 9 940 6 6 41 408 80 +175107: 1 49 92 3 205 2 8 439 +39551458: 43 891 55 9 57 +13285608: 26 19 10 163 1 9 31 31 +405744027: 7 30 3 8 95 9 8 632 24 +2997721: 92 479 16 68 9 +523183: 398 3 2 652 78 201 +6951812: 3 769 8 64 3 2 5 481 9 +3435759673472: 844 18 949 7 6 734 7 2 +124233456: 7 643 93 4 4 535 3 29 7 +110606134088: 1 657 21 7 766 761 1 8 +2690276461191: 372 21 66 76 813 889 +1539522: 59 2 2 9 31 9 595 3 186 +3634947456: 8 3 412 691 532 +2105559380: 183 765 9 852 7 2 835 +4690009: 66 743 330 95 46 +367735534: 45 966 942 2 4 +13146574: 57 3 96 4 7 78 544 8 +170181372255: 15 87 855 9 779 4 994 +9309567: 113 5 4 519 38 78 705 +50277: 1 55 3 865 2 47 58 +324895639860: 86 954 35 35 396 +1361: 923 1 437 +10597271: 716 148 12 2 457 +816105568: 889 9 34 4 9 3 686 11 3 +172116525: 69 9 1 18 9 35 5 137 +62149: 13 478 2 1 9 +155664243: 8 138 141 24 3 +12261286139: 66 7 8 8 5 94 3 5 2 965 +332109: 3 1 8 5 3 1 9 5 817 9 3 3 +54259531200: 7 70 643 240 7 90 76 +39489024: 547 94 768 +38958: 790 777 8 450 3 +8641850: 2 6 380 2 795 352 3 14 +193723: 14 878 9 5 4 2 9 60 12 7 +16059120: 28 50 75 2 7 3 84 605 1 +29897: 4 5 6 18 999 158 4 9 8 +8940153627504: 336 778 342 27 504 +1965619: 61 11 91 3 19 +17582495: 1 69 7 7 1 38 6 5 4 9 5 90 +3747060: 745 26 9 3 180 +1284121: 39 19 60 41 9 +6465: 10 8 24 7 7 +75352: 4 3 558 6 4 +987: 97 1 5 2 7 +31695169: 60 528 14 1 169 +1275278: 456 972 89 433 2 7 1 +6139: 2 650 9 2 8 9 79 5 9 4 1 2 +2625916: 94 3 32 87 1 606 +401166: 26 5 8 1 39 2 399 38 3 +13159342272: 8 978 4 292 5 2 6 8 24 +188587: 2 7 2 6 429 6 1 82 98 7 +104092779157: 34 9 918 2 722 39 9 5 7 +2785524088: 64 779 630 1 43 +38869: 587 4 891 3 4 +14297230: 6 97 9 8 73 6 2 2 4 8 30 +49782092802: 5 14 8 9 7 507 47 544 5 +97002793: 4 4 9 4 4 870 2 6 3 60 7 2 +11629747: 4 692 7 6 7 4 3 5 2 920 1 +54441: 67 3 270 94 77 +15210: 345 83 72 7 30 +185641372: 68 3 4 65 32 2 3 4 +636407522647: 86 740 75 22 499 149 +5931209262: 4 9 5 6 3 795 8 7 22 3 +21897266: 29 55 52 323 34 74 +103008144: 444 580 3 6 4 +583104: 505 5 5 953 4 4 8 1 96 +3097084: 86 36 919 6 159 +45450: 4 54 50 +822804080: 595 83 3 2 98 85 +812543797144: 21 9 746 55 830 3 81 +61531143092: 28 9 1 91 325 96 8 86 4 +291242: 4 5 4 6 246 8 7 9 2 7 54 2 +659813: 733 9 8 3 2 +13703922939: 13 703 915 7 937 2 +3385407968629: 8 5 490 10 396 8 629 +3156: 5 493 1 372 319 +2305744653: 6 1 7 45 6 7 34 35 99 3 +22755422659279: 43 976 93 84 616 79 +1529611: 6 4 560 97 27 4 36 75 +185929: 356 4 21 1 488 +10921: 8 772 13 8 2 17 754 +19474: 1 7 36 3 4 9 1 4 9 7 70 1 +14418986: 804 49 366 46 4 +805143: 7 8 63 852 3 +605682837: 60 8 1 3 8 9 9 4 8 418 +3328867490: 876 38 674 63 27 +9092: 30 119 61 +674618845700: 663 72 343 6 6 9 763 2 +873252624: 202 5 4 5 6 7 43 8 59 3 4 +2234424: 46 39 82 23 471 +67994313730: 7 6 53 9 6 19 1 6 521 3 7 +7020: 76 33 584 9 10 +8490829762800: 908 116 235 495 77 9 +1243674: 32 3 89 27 1 4 4 7 887 +40115314: 2 21 872 670 987 2 +63515106: 1 969 4 72 91 18 +3642671: 36 811 63 2 4 68 4 +98830: 844 13 9 6 76 +2118210: 5 6 3 5 178 1 170 2 2 6 +12759: 49 5 73 3 485 448 +1113420: 867 737 3 8 77 3 +139374: 8 48 37 331 23 +94905: 3 8 21 3 1 783 7 9 204 9 +37670: 4 75 79 68 +120506596: 89 68 83 9 5 5 8 5 5 8 8 7 +1288: 6 13 5 2 896 +3957763: 74 5 5 77 6 3 +32266: 240 2 19 7 9 7 39 783 +940221360: 86 5 3 410 35 39 240 +10564: 2 330 5 3 8 7 649 +48283977: 277 7 17 372 2 202 53 +251997386: 67 3 7 6 4 5 9 3 184 9 8 6 +819485: 77 4 3 5 527 +9913289: 23 8 1 3 4 630 1 4 8 2 4 9 +12445: 78 4 6 4 2 4 3 2 6 327 8 5 +38330265: 7 5 89 8 31 5 894 6 9 +1888605: 4 53 30 5 40 17 64 45 +752008400963: 751 98 2 8 341 59 963 +290444: 7 41 1 2 506 +1542226852: 83 2 8 48 2 775 7 923 5 +138965442: 9 8 2 3 5 8 4 86 305 7 66 +2015410: 3 46 8 9 4 4 293 498 3 4 +94446951669: 98 4 6 355 9 27 483 9 +2560057568: 487 69 81 938 30 76 +325037568: 88 57 27 60 10 192 4 +34041139: 2 9 15 997 44 139 +91735876: 73 52 7 297 353 1 +6681558019: 146 791 113 512 3 +2377642284: 3 3 44 12 1 2 52 8 476 9 +612191967542: 306 2 1 187 4 96 7 54 2 +5617962: 79 5 7 9 5 1 9 5 61 9 56 7 +377664: 9 6 562 1 7 +351084461052: 622 2 3 85 103 182 52 +24245: 7 9 51 1 7 7 5 8 1 6 240 5 +421642386: 29 688 55 54 17 2 99 +1711583639: 678 6 1 51 14 260 6 69 +22620616: 1 705 164 26 593 23 +256245692: 88 3 8 31 1 1 280 8 94 +50489: 12 689 2 7 7 680 9 8 9 +46104: 8 287 8 84 2 +4085258167: 48 29 359 303 77 67 +889: 7 2 728 56 89 7 +1306: 51 6 785 4 +2273: 1 9 9 2 9 66 37 256 +56074716672267: 7 5 8 82 29 96 208 269 +30955126672: 934 7 331 6 65 4 596 +127980: 488 45 5 48 60 +535484167: 617 54 266 7 1 3 2 16 7 +66915820: 76 7 5 52 2 866 5 +470840167808: 3 8 3 8 6 2 751 5 244 4 8 +106862: 5 1 3 3 38 5 7 7 5 433 5 5 +2962152: 37 8 21 52 +1085092459: 640 58 7 48 87 619 +9395566: 6 692 4 351 +58598361138: 76 8 710 494 9 9 137 +130059: 264 15 465 2 322 +33555: 5 67 55 +1377820190: 7 2 1 6 7 3 4 501 4 1 1 8 +8424: 9 9 19 23 558 +2684223: 2 6 8 3 11 741 3 +22014969: 72 94 44 3 96 9 +5185353762: 1 145 656 2 89 7 2 6 2 6 +51226935: 573 894 62 672 1 +44553: 6 627 70 243 +90331578: 8 890 453 7 95 3 9 74 +1170: 5 55 25 5 13 +94308: 4 8 259 6 58 +2000707: 490 50 8 9 2 6 5 27 3 7 +158802343: 8 1 544 4 72 7 33 7 +28522992: 5 501 271 208 784 +415148: 6 7 99 828 441 600 8 +341844522: 81 422 2 45 21 +322752: 59 55 1 3 6 1 32 9 6 718 +6579809: 8 35 788 7 5 +2010664: 958 960 524 2 600 +1306995: 9 4 168 5 76 7 19 5 37 +24078: 23 4 260 6 152 +855504: 115 7 6 709 457 +7362818928: 64 4 3 5 3 68 2 3 4 5 28 +133587328084: 38 413 665 128 84 +2600: 291 229 5 +82140: 2 4 9 66 221 45 2 6 48 +7429: 97 65 83 43 3 6 25 4 +7050943801: 14 866 62 85 90 +1457: 27 543 1 790 96 +39465: 20 3 638 437 748 +52926628172: 2 281 5 1 5 2 85 8 2 6 22 +14402304: 8 3 1 6 49 5 5 78 224 9 +19161187: 5 7 77 391 9 15 186 1 +46189: 4 603 6 6 93 +5096011: 6 5 8 98 1 2 +8337: 513 310 8 4 21 +637146: 535 635 72 513 +163586304: 282 3 5 2 2 24 7 276 2 6 +38979: 6 42 6 9 71 +4025184: 683 980 35 131 69 +385600: 7 9 753 1 1 32 +4204547: 5 7 513 8 4 267 270 8 1 +2168: 300 956 5 903 4 +897176: 9 96 43 7 866 +207451: 9 3 27 979 714 261 51 +9786368: 188 6 82 8 177 1 3 8 76 +45647: 6 7 52 2 70 7 +72049657270: 1 799 551 74 9 6 70 +854299810000: 8 75 5 68 49 7 92 91 +201480450: 27 707 5 3 814 4 75 6 1 +1044050: 753 59 3 61 554 7 +32520810: 65 7 51 7 6 637 7 1 5 6 +117229532: 1 379 3 581 146 +3048545: 12 254 440 9 96 +1151528814: 6 3 458 5 6 49 8 6 45 1 9 +1468: 21 8 82 6 738 59 5 +24718953: 3 4 51 4 784 5 1 8 79 7 +9624368954: 961 7 2 5 365 49 346 6 +7705207125: 99 917 125 97 7 +1385267: 8 12 6 82 82 25 95 +329120663: 4 8 2 1 8 4 6 680 5 8 3 8 +4354855: 1 6 1 1 7 82 1 6 5 2 647 6 +513338599: 3 7 476 338 599 +2575296: 218 9 328 288 4 +153551885: 166 3 11 20 454 5 +23653336: 7 15 40 36 826 +1175289: 9 4 125 2 8 9 +582912792: 1 5 1 9 9 59 33 5 8 1 7 99 +7639418701: 7 1 629 9 1 418 65 3 48 +26000388461: 500 52 388 4 6 1 +11148480: 10 7 7 948 24 +4375098791: 5 2 6 3 31 5 9 8 4 698 1 4 +173167644: 7 7 6 1 5 27 8 5 44 8 867 +4440: 3 7 2 1 5 2 5 1 2 335 91 8 +79949528272: 3 740 73 9 3 3 4 827 1 +268345: 44 435 2 55 7 +1391: 9 37 4 1 58 +719: 7 23 4 66 9 +41747731344: 6 608 7 1 2 4 987 6 2 6 8 +52958316813: 87 63 902 39 67 +1113623: 12 3 1 3 357 8 45 +66704: 28 316 372 41 1 88 +13865: 231 60 4 1 +22316427322: 99 51 97 9 603 9 321 +794426: 785 6 3 3 2 4 4 50 9 +336672: 45 35 11 5 42 +3647896: 96 1 67 7 6 69 560 56 +4108432021: 882 9 2 1 2 1 461 50 2 1 +33172170: 1 5 4 4 10 6 2 9 9 23 4 6 +3958503: 87 65 70 1 3 +5605088: 3 1 4 7 8 5 119 5 8 7 4 7 +1148738115: 535 7 3 68 8 333 113 +2388379500: 8 827 880 86 5 650 +78084: 5 6 83 66 6 +1399069: 175 4 977 8 5 +1784175537: 6 40 14 8 821 85 7 242 +5060096: 1 9 4 7 1 54 3 9 865 8 8 8 +2984239: 32 793 91 6 70 +54527: 5 35 10 27 1 +2625838: 142 1 528 91 5 43 +11970: 78 7 4 35 70 +9750784240: 9 58 7 32 41 8 4 240 +3670629: 1 42 7 95 82 8 131 7 2 1 +269878: 4 67 53 19 2 +29729866375: 328 7 4 81 8 196 458 7 +1650454: 841 809 45 4 +958406: 1 1 536 894 38 +15047959679: 8 27 8 9 8 5 26 243 +110153: 9 9 328 35 83 45 9 9 +155720: 183 46 229 18 62 5 6 1 \ No newline at end of file