diff --git a/.gitignore b/.gitignore
index dfcfd56..6c2bd2f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -348,3 +348,5 @@ MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
+
+.idea/
\ No newline at end of file
diff --git a/AdventOfCode.Tests/AdventOfCode.Tests.csproj b/AdventOfCode.Tests/AdventOfCode.Tests.csproj
new file mode 100644
index 0000000..6377497
--- /dev/null
+++ b/AdventOfCode.Tests/AdventOfCode.Tests.csproj
@@ -0,0 +1,30 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+ false
+ true
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
+
diff --git a/AdventOfCode.Tests/DayTests.cs b/AdventOfCode.Tests/DayTests.cs
new file mode 100644
index 0000000..9f5a975
--- /dev/null
+++ b/AdventOfCode.Tests/DayTests.cs
@@ -0,0 +1,138 @@
+using Shouldly;
+using Xunit;
+
+namespace AdventOfCode.Tests;
+
+public class DayTests
+{
+ [Fact]
+ public void Day01_01_Test1()
+ {
+ var strList = string.Join("\r\n", new List
+ {
+ "1abc2",
+ "pqr3stu8vwx",
+ "a1b2c3d4e5f",
+ "treb7uchet"
+ });
+
+ var day = new Day01();
+ day.IsTest = true;
+ day.TestInput = strList;
+ var result = day.Solve_1()
+ .Result;
+ result.ShouldBe("142");
+ }
+
+ [Fact]
+ public void Day01_02_Test1()
+ {
+ var strList = string.Join("\r\n", new List
+ {
+ "two1nine",
+ "eightwothree",
+ "abcone2threexyz",
+ "xtwone3four",
+ "4nineeightseven2",
+ "zoneight234",
+ "7pqrstsixteen"
+ });
+
+ var day = new Day01();
+ day.IsTest = true;
+ day.TestInput = strList;
+ var result = day.Solve_2()
+ .Result;
+ result.ShouldBe("281");
+ }
+
+ [Fact]
+ public void Day02_01_Test1()
+ {
+ var strList = string.Join("\r\n", new List
+ {
+ "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green",
+ "Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue",
+ "Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red",
+ "Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red",
+ "Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"
+ });
+
+ var day = new Day02();
+ day.IsTest = true;
+ day.TestInput = strList;
+ var result = day.Solve_1()
+ .Result;
+ result.ShouldBe("8");
+ }
+
+ [Fact]
+ public void Day02_02_Test1()
+ {
+ var strList = string.Join("\r\n", new List
+ {
+ "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green",
+ "Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue",
+ "Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red",
+ "Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red",
+ "Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"
+ });
+
+ var day = new Day02();
+ day.IsTest = true;
+ day.TestInput = strList;
+ var result = day.Solve_2()
+ .Result;
+ result.ShouldBe("2286");
+ }
+
+ [Fact]
+ public void Day03_01_Test1()
+ {
+ var strList = string.Join("\r\n", new List
+ {
+ "467..114..",
+ "...*......",
+ "..35..633.",
+ "......#...",
+ "617*......",
+ ".....+.58.",
+ "..592.....",
+ "......755.",
+ "...$.*....",
+ ".664.598.."
+ });
+
+ var day = new Day03();
+ day.IsTest = true;
+ day.TestInput = strList;
+ var result = day.Solve_1()
+ .Result;
+ result.ShouldBe("4361");
+ }
+
+ [Fact]
+ public void Day03_02_Test1()
+ {
+ var strList = string.Join("\r\n", new List
+ {
+ "467..114..",
+ "...*......",
+ "..35..633.",
+ "......#...",
+ "617*......",
+ ".....+.58.",
+ "..592.....",
+ "......755.",
+ "...$.*....",
+ ".664.598.."
+ });
+
+ var day = new Day03();
+ day.IsTest = true;
+ day.TestInput = strList;
+ var result = day.Solve_2()
+ .Result;
+ result.ShouldBe("467835");
+ }
+}
\ No newline at end of file
diff --git a/AdventOfCode.sln b/AdventOfCode.sln
index 5b5da75..8ba13b6 100644
--- a/AdventOfCode.sln
+++ b/AdventOfCode.sln
@@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdventOfCode", "AdventOfCod
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FBE09BBA-34E4-4DED-94F2-44217330E37F}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.Tests", "AdventOfCode.Tests\AdventOfCode.Tests.csproj", "{1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -29,6 +31,18 @@ Global
{6B01383F-FF08-4839-BF44-2DE9071CCC37}.Release|x64.Build.0 = Release|Any CPU
{6B01383F-FF08-4839-BF44-2DE9071CCC37}.Release|x86.ActiveCfg = Release|Any CPU
{6B01383F-FF08-4839-BF44-2DE9071CCC37}.Release|x86.Build.0 = Release|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|x64.Build.0 = Debug|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|x86.Build.0 = Debug|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|x64.ActiveCfg = Release|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|x64.Build.0 = Release|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|x86.ActiveCfg = Release|Any CPU
+ {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/AdventOfCode/AdventOfCode.csproj b/AdventOfCode/AdventOfCode.csproj
index 352e9aa..5426578 100644
--- a/AdventOfCode/AdventOfCode.csproj
+++ b/AdventOfCode/AdventOfCode.csproj
@@ -1,23 +1,25 @@
-
- net8.0
- enable
- Exe
-
+
+ net8.0
+ Exe
+
-
-
-
+
+
+
-
- S101
-
+
+ S101
+
-
-
- PreserveNewest
-
-
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
diff --git a/AdventOfCode/Core/BetterBaseDay.cs b/AdventOfCode/Core/BetterBaseDay.cs
new file mode 100644
index 0000000..63c05e8
--- /dev/null
+++ b/AdventOfCode/Core/BetterBaseDay.cs
@@ -0,0 +1,16 @@
+using System.IO;
+using AoCHelper;
+
+namespace AdventOfCode.Core;
+
+public abstract class BetterBaseDay : BaseDay
+{
+ public bool IsTest { get; set; } = false;
+ public string TestInput { get; set; }
+ protected string InputData => GetData();
+
+ private string GetData()
+ {
+ return IsTest ? TestInput : File.ReadAllText(InputFilePath);
+ }
+}
\ No newline at end of file
diff --git a/AdventOfCode/Day01.cs b/AdventOfCode/Day01.cs
index 66fb158..e9fb3a3 100644
--- a/AdventOfCode/Day01.cs
+++ b/AdventOfCode/Day01.cs
@@ -1,15 +1,125 @@
-namespace AdventOfCode;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using AdventOfCode.Core;
-public class Day01 : BaseDay
+namespace AdventOfCode;
+
+public class Day01 : BetterBaseDay
{
- private readonly string _input;
- public Day01()
+ public override ValueTask Solve_1()
{
- _input = File.ReadAllText(InputFilePath);
+ var lines = InputData.Split("\r\n");
+ var sum = 0;
+ var regex = new Regex(@"\d");
+ foreach (var line in lines)
+ {
+ var numberStr = regex.Matches(line)
+ .Select(x => x.Value)
+ .ToArray();
+ sum += int.Parse($"{numberStr[0]}{numberStr[^1]}");
+ }
+ return new ValueTask(sum.ToString());
}
- public override ValueTask Solve_1() => new($"Solution to {ClassPrefix} {CalculateIndex()}, part 1");
+ public override ValueTask Solve_2()
+ {
+ var numbers3Dict = new Dictionary
+ {
+ {
+ "one", "1"
+ },
+ {
+ "two", "2"
+ },
+ {
+ "six", "6"
+ }
+ };
+
+ var numbers4Dict = new Dictionary
+ {
+ {
+ "four", "4"
+ },
+ {
+ "five", "5"
+ },
+ {
+ "nine", "9"
+ }
+ };
+
+ var numbers5Dict = new Dictionary
+ {
+ {
+ "three", "3"
+ },
+ {
+ "seven", "7"
+ },
+ {
+ "eight", "8"
+ }
+ };
+
+ var firstChars = new HashSet
+ {
+ 'o',
+ 't',
+ 's',
+ 'f',
+ 'n',
+ 'e'
+ };
+ var sum = 0;
+ var data = InputData.AsSpan();
+ var newData = new StringBuilder();
+ for (var i = 0; i < data.Length; i++)
+ {
+ if (firstChars.Contains(data[i]))
+ {
+ if (CheckNumber(data, newData, i, numbers3Dict, 3))
+ continue;
+ if (CheckNumber(data, newData, i, numbers4Dict, 4))
+ continue;
+ if (CheckNumber(data, newData, i, numbers5Dict, 5))
+ continue;
+ }
+
+ newData.Append(data[i]);
+ }
- public override ValueTask Solve_2() => new($"Solution to {ClassPrefix} {CalculateIndex()}, part 2");
-}
+ var lines = newData.ToString()
+ .Split("\r\n");
+ var regex = new Regex(@"\d");
+ foreach (var line in lines)
+ {
+ var numberStr = regex.Matches(line)
+ .Select(x => x.Value)
+ .ToArray();
+
+ sum += int.Parse($"{numberStr[0]}{numberStr[^1]}");
+ }
+
+ return new ValueTask(sum.ToString());
+ }
+ private bool CheckNumber(ReadOnlySpan data, StringBuilder newData, int i,
+ Dictionary numbersDict, int length)
+ {
+ if (i + length > data.Length)
+ return false;
+
+ var number = data.Slice(i, length);
+ if (numbersDict.ContainsKey(number.ToString()))
+ {
+ newData.Append(numbersDict[number.ToString()]);
+ return true;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/AdventOfCode/Day02.cs b/AdventOfCode/Day02.cs
new file mode 100644
index 0000000..ffd06e5
--- /dev/null
+++ b/AdventOfCode/Day02.cs
@@ -0,0 +1,95 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using AdventOfCode.Core;
+
+namespace AdventOfCode;
+
+public class Day02 : BetterBaseDay
+{
+ public override ValueTask Solve_1()
+ {
+ var lines = InputData.Split("\r\n");
+ var games = new List();
+ foreach (var line in lines)
+ games.Add(Game.Parse(line));
+
+ games = games.Where(x => x.Rounds.SelectMany(r => r.Cubes)
+ .Where(c => c.Color == "red")
+ .All(c => c.Quantity <= 12))
+ .ToList();
+
+ games = games.Where(x => x.Rounds.SelectMany(r => r.Cubes)
+ .Where(c => c.Color == "green")
+ .All(c => c.Quantity <= 13))
+ .ToList();
+
+ games = games.Where(x => x.Rounds.SelectMany(r => r.Cubes)
+ .Where(c => c.Color == "blue")
+ .All(c => c.Quantity <= 14))
+ .ToList();
+
+ return new ValueTask(games.Sum(x => x.Number)
+ .ToString());
+ }
+
+ public override ValueTask Solve_2()
+ {
+ var lines = InputData.Split("\r\n");
+ var games = new List();
+ foreach (var line in lines)
+ games.Add(Game.Parse(line));
+
+ var power = games.Sum(x => x.GetPower());
+ return new ValueTask(power.ToString());
+ }
+
+ private record Game(int Number, List Rounds)
+ {
+ public static Game Parse(string line)
+ {
+ var splited = line.Split(':');
+ var number = int.Parse(splited[0]
+ .Split(' ')[1]);
+ var roundsStr = splited[1]
+ .Split(';');
+ var rounds = new List();
+ foreach (var roundStr in roundsStr)
+ rounds.Add(Round.Parse(roundStr));
+
+ return new Game(number, rounds);
+ }
+
+ public int GetPower()
+ {
+ var cubes = Rounds.SelectMany(x => x.Cubes)
+ .GroupBy(x => x.Color)
+ .ToList();
+ var power = 1;
+ foreach (var cubeColor in cubes)
+ power *= cubeColor.Max(x => x.Quantity);
+
+ return power;
+ }
+ }
+
+ private record Round(List Cubes)
+ {
+ public static Round Parse(string line)
+ {
+ var splited = line.Split(',');
+ var cubes = new List();
+ foreach (var color in splited)
+ {
+ var temp = color.Trim()
+ .Split(' ');
+ var quantity = int.Parse(temp[0]);
+ cubes.Add(new Cube(temp[1], quantity));
+ }
+
+ return new Round(cubes);
+ }
+ }
+
+ private record Cube(string Color, int Quantity);
+}
\ No newline at end of file
diff --git a/AdventOfCode/Day03.cs b/AdventOfCode/Day03.cs
new file mode 100644
index 0000000..6c87ea7
--- /dev/null
+++ b/AdventOfCode/Day03.cs
@@ -0,0 +1,129 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using AdventOfCode.Core;
+
+namespace AdventOfCode;
+
+public class Day03 : BetterBaseDay
+{
+
+ public override ValueTask Solve_1()
+ {
+ var lines = InputData.Split("\r\n")
+ .ToArray();
+ var sum = 0;
+ for (var i = 0; i < lines.Length; i++)
+ {
+ for (var j = 0; j < lines[i].Length; j++)
+ {
+ if (!char.IsDigit(lines[i][j]))
+ continue;
+
+ if (CheckSymbol(lines, i, j))
+ {
+ var result = GetNumber(lines, i, j);
+ j = result.Item2;
+ sum += result.Item1;
+ }
+ }
+ }
+
+ return new ValueTask(sum.ToString());
+ }
+
+ public override ValueTask Solve_2()
+ {
+ var lines = InputData.Split("\r\n")
+ .ToArray();
+ var sum = 0;
+ for (var i = 0; i < lines.Length; i++)
+ {
+ for (var j = 0; j < lines[i].Length; j++)
+ {
+ if (lines[i][j] == '*')
+ {
+ sum += GetGear(lines, i, j);
+ }
+ }
+ }
+
+ return new ValueTask(sum.ToString());
+ }
+ private int GetGear(string[] lines, int i, int j)
+ {
+ var numbers = new HashSet();
+ if (i > 0 && j > 0 && char.IsDigit(lines[i - 1][j - 1]))
+ numbers.Add(GetNumber(lines, i-1, j-1).Item1);
+ if (i > 0 && char.IsDigit(lines[i - 1][j]))
+ numbers.Add(GetNumber(lines, i-1, j).Item1);
+ if (i > 0 && j < lines[i].Length - 1 && char.IsDigit(lines[i - 1][j + 1]))
+ numbers.Add(GetNumber(lines, i-1, j+1).Item1);
+ if (j > 0 && char.IsDigit(lines[i][j - 1]))
+ numbers.Add(GetNumber(lines, i, j-1).Item1);
+ if (j < lines[i].Length - 1 && char.IsDigit(lines[i][j + 1]))
+ numbers.Add(GetNumber(lines, i, j+1).Item1);
+ if (i < lines.Length - 1 && j > 0 && char.IsDigit(lines[i + 1][j - 1]))
+ numbers.Add(GetNumber(lines, i+1, j-1).Item1);
+ if (i < lines.Length - 1 && char.IsDigit(lines[i + 1][j]))
+ numbers.Add(GetNumber(lines, i+1, j).Item1);
+ if (i < lines.Length - 1 && j < lines[i].Length - 1 && char.IsDigit(lines[i + 1][j + 1]))
+ numbers.Add(GetNumber(lines, i+1, j+1).Item1);
+
+ return numbers.Count == 1 ? 0 : numbers.Aggregate(1, (current, num) => current * num);
+ }
+
+ private static Tuple GetNumber(string[] lines, int i, int j)
+ {
+
+ var cursor = j;
+ var forward = false;
+ var start = j;
+ var end = j;
+ do
+ {
+ if (forward)
+ cursor++;
+ else
+ cursor--;
+
+ if (cursor < 0 || cursor >= lines[i].Length || !char.IsDigit(lines[i][cursor]))
+ {
+ if (forward)
+ {
+ end = cursor;
+ break;
+ }
+ start = cursor + 1;
+ forward = true;
+ }
+ } while (true);
+
+ return new Tuple(int.Parse(lines[i][start..end]), end - 1);
+ }
+
+ private bool CheckSymbol(string[] lines, int i, int j)
+ {
+ if (i > 0 && j > 0 && !char.IsDigit(lines[i - 1][j - 1]) && lines[i - 1][j - 1] != '.')
+ return true;
+ if (i > 0 && !char.IsDigit(lines[i - 1][j]) && lines[i - 1][j] != '.')
+ return true;
+ if (i > 0 && j < lines[i].Length - 1 && !char.IsDigit(lines[i - 1][j + 1]) && lines[i - 1][j + 1] != '.')
+ return true;
+ if (j > 0 && !char.IsDigit(lines[i][j - 1]) && lines[i][j - 1] != '.')
+ return true;
+ if (j < lines[i].Length - 1 && !char.IsDigit(lines[i][j + 1]) && lines[i][j + 1] != '.')
+ return true;
+ if (i < lines.Length - 1 && j > 0 && !char.IsDigit(lines[i + 1][j - 1]) && lines[i + 1][j - 1] != '.')
+ return true;
+ if (i < lines.Length - 1 && !char.IsDigit(lines[i + 1][j]) && lines[i + 1][j] != '.')
+ return true;
+ if (i < lines.Length - 1 && j < lines[i].Length - 1 && !char.IsDigit(lines[i + 1][j + 1]) &&
+ lines[i + 1][j + 1] != '.')
+ return true;
+
+ return false;
+ }
+
+}
\ No newline at end of file
diff --git a/AdventOfCode/Day_26.cs b/AdventOfCode/Day_26.cs
deleted file mode 100644
index 2c93622..0000000
--- a/AdventOfCode/Day_26.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace AdventOfCode;
-
-public class Day_26 : BaseDay
-{
- private readonly string _input;
-
- public Day_26()
- {
- _input = File.ReadAllText(InputFilePath);
- }
-
- public override ValueTask Solve_1() => new(_input.Length.ToString());
-
- public override ValueTask Solve_2() => throw new NotImplementedException();
-}
diff --git a/AdventOfCode/GlobalUsings.cs b/AdventOfCode/GlobalUsings.cs
deleted file mode 100644
index cb4d472..0000000
--- a/AdventOfCode/GlobalUsings.cs
+++ /dev/null
@@ -1 +0,0 @@
-global using AoCHelper;
diff --git a/AdventOfCode/Inputs/01.txt b/AdventOfCode/Inputs/01.txt
index bf4fa01..36374dd 100644
--- a/AdventOfCode/Inputs/01.txt
+++ b/AdventOfCode/Inputs/01.txt
@@ -1 +1,1000 @@
-
\ No newline at end of file
+eighttkbtzjz6nineeight
+5knjbxgvhktvfcq89onefive
+hnjcrxeightonejnlvm4hstmcsevensix
+trsdgcxcseven39dpmzs
+oneninesixtwo26
+dppthreeh32twobhrqzks
+1cxklgfbvhsnccfive4
+foursgjsevenseven5five19
+nrrk87
+63ntkjbvcv3ntdcptmvheight78
+7xv3one
+3tzjcrfbvhtqctfmqmdcbjhxln9eightnqbcqztmxcthree
+sevensszlgdrlrhnptonethree3qvrxkbgfxtthree
+3nckzkpkjsvztqkgvm99
+fourthreeonesevencqdv2gnvblhr
+528ksdcbx
+six342
+3twozrfrtljql9eightgcqrgmbzz7dlcr5
+6five2threesevenone65
+4onejrg23sevensxfive
+fourthreecszzvhzfsevensix916
+spqzvdxxjeightninejzbpzone7
+cfivesevensix332lfpcffmld
+ninesevenhrdvmzj24bcxxz6
+khpn3fourvhqmntjxfhsvrlnvc
+bfzxhzftwo2czsrv
+mmblpnnineseven4gtfvqscghfour
+1zjgqlz
+five1ninetjjtfxqpdkgrxtgxrcsevenkfdzlh
+s8twoned
+8fiveone53nineeightthree7
+926xrfcjzvpd7
+3sevenqnzjsqh6fnssjdsbv3nine
+rjbbsevenvzkghzsixsbjchs59
+221fsnxtbstone1
+seven9fourpdseven1four2eight
+two1nine4nine7
+9seven7
+fourcjmdgjsfive2l
+twokvhrdldggn15twoxfivenine
+mmjtldgmvq157hchsnvpbjvrvtvnineeight
+cgzeight3sjmhdcvlnthree5vkgfmx
+8sevenfourgnxdpp62xx5
+jgdk3z7mmkkjkm
+9xrdltttpqznsljbvcdvtz
+62zthreethree6
+sjbxq9ptsvjhpzmxfoureightmdbnlsckfqlqr
+91xrnsbxxsvk6brxfftpttsevencszfhsnrfive
+two9ljdfskpfive
+1seven384
+xbfkhfvlts8dhtnxhxgn93three7one1
+3xkjrnqnqhgcfgjvfmxhghp15
+nine9844
+5onepczqjfcgfrbmtstbqbktphkvqcmbbvhpld
+eightsixhnsbnine1twonevrs
+eightcmbm2zbxsixone34
+five99qccjbklfivevqskhpxzd
+seven9four2kzkjbrp
+ttdbhd4gqzdlqldnm
+9cqcztfourrsfskdjf
+njttzmcrchfd4
+r414tzqnfddrbf
+4tzbfcjksjsn7eightonelvkjzkch
+ls7four
+6eightsixrtkcrcbmqq6eight3nine
+onesix5five7six1
+dvrqseven5ninegqthree4two9
+fourgdkmbrlgc8
+three7nine
+sixqrpzqvxd7xnbkftn5seven
+oneonerbpgk5ljpqh5threevtpkpfxtsv2
+ljttxthreefour3three4gxzgsfm
+sixttjvhdggbk357
+eightlb4
+fourtwo4twonekzb
+8one2cdsnrbfxbsixztcfour1
+ldveight19lg
+seventpd84dscfmxj
+one34flpg6eight76
+cfninepkscscc5
+flqv5v6twooneprlprlkcbk
+qsqlrvmkq5457ninetwosevenm
+xlvvtxgspct4gmrgeight
+hpbbkqthree4gzbq768five
+5dqfsixeightonenine
+seven4nfshmhvgqm4
+rhfgvzxtfckbtmxtt9rqms9one
+3gsgfbrnkhqrjddvlx59four2jfz
+fdl4two
+9sevennine158
+five9eight49
+3mfsixnkxdbpdxqdgfdqnk
+six9fivefive
+fourjdmvlvkrp5seventhreejnqncmktwonev
+8cjfqkkgtzlnine
+3nnsevenjdbjfp1
+ghthree1mhgtklfqdkqthree7seven4
+4mqsstftj
+sixprblqsevendsxvqnk5
+four45one
+dxhvj23188xz4
+dcmnr2
+xfoneightsixnine6fiveseven
+6cxbbxkrxphsix
+5ckkzlzjngvssfx
+223zgb
+six4qsf
+hfxgsfhfhpjlvb329eightone
+9zjkckhxoneightbnj
+xsdp23seven3four7
+8five53eightthreenljbtgcnfive
+fnjn36
+eightkpkxrvssix2lhctc
+6ninebqcksevensevenhk
+2one98rrtlncrxhllbgthreelgvkdf
+sixzdnlfrvvd4
+lltjs8sixqbblmfdhctwo
+6twonclq98sscjn
+six3niners7eightwokjj
+sixeighttwo1onerxrvvbfxxqmxnq9
+conetfpbsrm81sixsgkfqk8six
+jbqs5277
+kjbncjlqthxzlznld89bgqgkxfzpqsptwo
+onefive1
+pchlnspk52one4sgqj
+zd3
+43fsfplhgxtjthree7gs4npllqvll
+eight8sixeightone6onexr
+six6hqltskzpkgbggjktlzlpktdqhzdbnine9
+eightnpfbmfninevgpjsleightxh3mz
+rninenine7nine
+fourbbjnjrbzdvshfeight62
+3hzpfsfsdm
+2vzhjbv6
+27bpninejhbcjrmz7zfqf4
+ppflreightpmztvhvonetnjmrxdd31one
+threeseven7
+srf5hcxvhsmn5five
+onersvqvqgkfiveeightqxgrjgfcqj5ntgdzxp3zxdcmbsjqn
+mcb643fivetwo
+onermbkvmkc9pfvlpdhkzj
+3oneeight64
+qtnptg5two36nine2tprkbtb
+15lbhtcqfnj1qgjk
+eightkzrnlrrnlltdmxlbxfourpbpghtgkb9nvlvsm
+26kmmkz
+jhnldxdtpseven46oneightnb
+4lfftjtbzvppxsix17nxpgvjkxd
+vszsbxdzjfourhlxldrthdzpqg6slnj8four
+nineone2njsfpcb
+5sevenone6five
+jrmdhdvrb53onelgvlkd29seven
+qqqg7eightseven
+sevenm9
+3dfcfcdb9twoqbvxjgt56six
+xq88jjmv83pspctxthree
+38five5
+six7rbrvjb
+eightlvqn335nine
+rgmfflzxzd9hs3foureight5
+qm6qvmrone4
+fournine8
+two688qqdtdfbmzn5
+8joneonefourljvbjntkngtskcgfnszpgxt
+ninethree5pjzcvntl984five
+mfgqzcjbglx7
+ninemxnfcqrbjonek1nineggj
+8dcfkfdtwo
+4cltttbrlzpgzbdbqsevendtwosspqk
+8eight9klmcbninetwozdcznsv
+six85pjqldfbqvclntpnqgv
+1dgprzx53
+4sixthreeh3fjqpggtjzq
+fourone8fiveseven4kgbs7
+seven64npxthreeonefour
+xvntvgxv9twotlgcsbgsix4
+hcqtdzthfour2xvqmnmgrncjt51
+qhlpksvnntjq8
+3rtmfngqccktwovpppqfqdlxmk2
+sixfoureight9tqpdln3eightbjnqfldblnine
+eight2sixthree
+3plpm
+6two3two2
+1cfszpnxgtk5fivefive8one
+lxrdvls2
+sevenfqszrfhone5dxcqsq
+42
+3dmpsix9nhgzhbmknfour19oneightlng
+six2dfglxszbjone
+eightone88
+9hffzxl7five4
+seven8fknjk
+fivefoursevenllljzrvjf7
+eightmsxfkbszh2
+6fiveqhkttbsthreefghn4
+3eight98vsnzbkvzcjfive
+spmzsdztzgcfbhvbzqlv5
+fourtwozlsst9sevenjjmbmqk4
+jtmlgrjcpkone2twockgc5four
+one35five4
+four8tltpxqfour
+57sevenbmhceightbhttrzxfvt
+qlvrrlnxgvjgnine1four2two
+sixoneseven3sevenm
+fivejxfghfp81two
+rkp3zbzfnrrqfour4eight
+eightnine7tpflkbqpz
+28fourlmxlhdzctxkrsix
+2fiveeightnineninexhfourseven7
+mnlrszkr18tfive7l
+3eight639
+gqpbkntddpeight22lxqjqqone
+txxrdbx4bvsfxd
+343nsctfvndmp93four2
+9lqjvtjcrrtthree
+bsffrmtwo2fivesix
+qltdtgl3eighttwo91mjq
+rh4rddsfr
+fourfive7seven
+pbqmx7twoqdk
+6onesixclklzfzsq992
+kzxkxvqzjffourdtm4onefive6xoneightsnl
+k4snine4three39
+sevenone2xcnscqhcdplnonekcxmgt
+seven7ninepmeighthqr8
+xpspdx3twoqpc3881
+5two5four8eightfive
+sevenseven2bcbsf
+1sevenrjstpdxfiveseven
+2zsxfivefivesix43
+eightone5j99nhvbfqhzbvrv5
+onefive35m
+2kfnqftkkcxtskj
+twoeight8
+1one8bzzsmgvj2kmqcnqjrz4
+1one4sixsixbzbcglm
+fiveqqhbmnjgz5ninerlrxkl2seven
+4eight4two1xgkb91fdzgxlp
+nine8onefive5scxlfrf
+gbrqllhnine9
+1fouronesixfiveseven95
+7qjrprpseightshfzfxvn
+2vkbbxfrthreenineeight
+58three4
+lmfsgdzxnqfdbxtjsnp9
+zlbqglfseventprsqvsmt1one9
+fmksmtlc8dvhbtdvpfgdz
+3six1
+mkdthree67jkprftqhdzvjxxftthree8
+bstlpptcfghsrrnine7bz
+5m1qfscxncvkqgtf
+62four16threeoneightg
+twoxlrhpc8n9nine
+q5sixfour
+ninesix2ninepzvxxlpcbxsfpz28hxtccfzmdq
+sevenccq4npgpkkb
+k79four9fp
+ssqptjqvld1pjfdjnkvsevenkjdzks
+2bgpbgqfournine614
+16threeeightwot
+five68jnhzdfqp2qlqbmnjmjdtfbj
+vplnzg4545seven
+two3two
+zcbhzsvc68cnppjpqhfl5
+nine68seventwo8pfzgfzbsh
+onethreethreeknngnmzhpmlnsd7
+46two
+sixhdg748blmlkbdtjbtwobgpzzlhzqrbvl
+2smcthmql84seveneighthnmdkmfg
+5fourrpscd3
+sppzzjbckgsixone1sixfour
+ltkzb3v3ltwo
+four61nineeightdkgtcjfvds
+eightd5nfcvvdxhkkddhb
+four6q7thbpnz
+5rknhshlhgnzz7sixone1six
+327rkthreesixeight
+cnbqtvptwo1qnsevenpzqh
+threeqthreepmhgcqhseven2sevenggmpjcldz
+ninedlvlgnglqf3
+4two993ninetwo
+eightzpfournine72oneseven7
+ninejdfkznz62kflbvgpblcgchpzz
+448
+6rktvxxjpfpqtntbsonefive
+6lngttwodshgtworkvvsrnfhjmvpvvbseven
+eight43gpssneight
+6seven3threefourninesevenrnxx
+three22rblfvqjr1four5six6
+xtdsqqbv43cxxvfpvtwoklhnqgjlkrrg
+threevpvxgddmhl576
+3cxccdsevenmvzhqvpfn3btldbhbmfg
+kklcmgptl931threenineeight
+vj42ntvkrcjtq7sk6
+llsvqthreefive5
+xspgshknq3kpld2lfour6mhzrzvqf
+4bfl38onesix9
+seven1vjzjmcrrvnh
+7sixsevensix
+gqnkgzmvpsnnzcvldlftrzhnpcbq6hzvbqbmnqvsix
+5jvbldxsh
+jrmvplfive7mfpbsmklzfivefivelsm
+8seven5nppxjfjsevenbxrmzmdjnine
+seveneightnrkconeqgjfkxjr532
+m9seven7
+vdn5hdghzvphfour
+cpceightwo3
+sixtdxhninesevenmmzrpdqcp24
+tghjrkhltwojgrcnnbbq1
+cfrqlvsevengkthnsbtwo4twovffpv5six
+two6pcxj4eightgbctk71
+five93nrqpshmxpbdnzssb2
+jnxjdzm2xcfhnzkxxz948twonejv
+sixfive4four5nkdxzvd
+twoqvnxzgcg883fivejgvltjq4
+7mzsqvrxlf6kpfjgvdpvj
+tzhkjn813six7
+5qjbtklseven
+rddmfnjgdlnkx5fourzkxlttqdfourrrjfdd
+qtr2qrrqvhrkvmtqgbkdq
+five56ninesschfzxone
+lkb3
+3zmbbqdqqnineeightlvlfqqxleighttloneightv
+7threetwofive168
+njxgnsqcpnine2
+zthreerfnvvone7
+three4one8
+8ppmjj983seveneight9
+p4
+8tshsgmkb516three6four
+7seven8
+twosixthreenine6three
+gvqz9
+n89ninethreesix8
+ptqrhhvztxsjbxfour81lncqpkjt
+8flvhqljqpmlf6fivenine28
+zhbsl7seightwoczd
+four1pspgxdvtbzdcd7vsbkzmt
+fourj9sdnqtwotwonine3ftzrbzckqk
+1fourkkfnndsdxnklrl
+zpcdvrszc4ggjcpngkqeight
+6twonxhgzcsrgxtwosixvblddxgfmsmqtfcthree
+6pltsptthreefive5jjqtzncslmxrmbv7
+sixfourqfxtfour9onefivehsgdvpmdsfive
+ksevensevenonebdxdxffive5threeeight
+zztvdjzlnqtbrfccctsknppmx5seventhree9
+soneight716
+1fqnntfjhcj2threekmcpzqnbzlqps
+twopcftkx8twofourcsixfour
+8six2sixgxzzhpkv
+four9nine4tgq
+htfmtchrx634four5zsmkmdv
+45dltlvdvv
+dtl848three36
+nine7sixonetwo8vsix
+twobxctmqvdnt96mnljbpxtsptjpznrjctgtwooneightqv
+peightwosixeightseven4
+1seven8ds4five6pone
+zjftdkvpkpfrhzj97nine56
+4sdcdr53beightwocjc
+onezxmtfive7ttbbttjeighttwo
+rlcjone3sixonezvbmzcgpk4eightwotnm
+5ddmcsfzhntpnzntlllthreevqvct
+twoeight9
+tfhmxsbf2foursqrrfourmfrzjffive6
+dhhnlbkjmfourthree6
+dxtkbxjlphpqcbmhpdfpqlmreight775bh
+sixklvmtjgsevennine33qgvplfourb
+gkjmcxsmhtwopkcszlrjd1onesevenseven
+8xxvzzqvzszcn1onevmdfsrrtbbjgeighttgpmhh
+eightpndprhrf7
+three7fpxtxghx
+fivenssevengrrlntzldl87
+484sixjsxcmmtvbftrfive
+t8onesevenvqsfc2k
+sevenoneoneeightsevenfive71
+sevennvnvbtzsnqggrsrgq35sevenfive7
+feightfive12
+twoc846cf
+1mtvlxhhxlsdbphgltlgzpl
+xddrlslrdl9
+fiveqvfjvcqlcfour27
+9fjqp9rrkqbtpv3
+23fqccxsvsix94tkzsqmrhsg
+6lvrsqnz
+9four7hvlfl9
+gbgsnmkrxjxpgnj828
+56grzmb6onekf9six
+87bjn4
+sjdzmqkrlkbsmxzsmn3
+seven91eightsix
+svhfnxzdzqczc2
+vbnz92chjjfqftxfourqzzxseven
+seventwofour5jbqvlmqknbznfbhtonefour
+dqdmntkfsnbmjqxxgmkvm6vqpgpnnreight
+one1431
+1five4
+twoone8thtxlrrdxbone
+qftpltmjd1zpxckthreeeight
+9xg
+pjpdjrkltnrkkmd9five75rdctppdhjtghrffczdx
+mtvbhnpzjfive7nine
+thlzdgxcqvsknczrdslsh7
+eighteight4kkt7four5
+71ninekzfntxtjthreeone3
+gzseven2fssqrgmbj
+52j
+nsv16seven
+stwone1
+twodbqgfivegsrrvxvone3
+jckhqbdlvgbgn7vtx3vggrdm
+ntzftfhfeighteight2
+48eight6
+flzfqonezvskbf1668one6
+sevensix864eightfour3
+dnsdrsxvcxnsevengxrszqxfnd4fmnine
+tjjngfourhdfzpfkh24
+foursmgvlqjxsqmz8ninekthktdhz
+three435
+tkfqhpz8zjmcqbxcb46
+mmvstlmln3kxnkvjcmxtrdxp4seven
+rmfour13vkgnnmbzbzgd
+three6nnbljchmzthreeg
+68onep9five1one2
+rbvzvgmkbmdrnmvone7kqtxtrtbone
+three13six4
+qksfrmvgztsfournnvp66nine
+34three
+11fourpzkmqnfmjqkdgrlgqbsixsixcqtgdggbdx
+nineone2seven4twoninesix
+ninez6qpnnbpmcdhcr
+sixbdbkhgntpsevencpn3
+1fivehvlrzpninemkfbfgtvfivesix3
+7kpeightzlvqsgkfjznpfpfsseven66
+c7hxrgkglfivebfctxk
+5rfdxgshzmnzqscpqzlbnrhbg9strxdthree8kntkhdpdll
+4gfzcjcjsm63fvxpvflv
+nine8526
+6scslfpnrveight1seven5bdllknjj
+seven94hnxddjv26s
+two48seven3four58four
+fourseven1smh5
+1zzdzmbjpjfzlhsvzgxf61gvtnklgx6
+ninefour63
+nine3nrfzn
+gthreeseventwonine1eights
+sdonejzdmtxtpl9onerzztvqr8
+eight15kqnjrggpblhsbdz1
+lkkxnzjrgsixsixthreeeighteight4twonem
+d17two44
+6seveneight1fourthreesevenbdpvg
+cjgchvhq4386five8
+1threefive426rsxmthree8
+sixnztppjtn9twossfjrdkzkrldztfbbv
+threesevenlqrdmvzdcphmqj3four5three
+fivethreepcfxdxmc3vdbprghd5sevenszprlbzrbn
+threethree88xcgdmrcssevenrlflv39
+eightonezchscllpfone9
+zreight6sevennine
+fmrhqrxr7
+sixnlqccjchpxpqg86five5
+sdpxjrxtk4sevenfivetmddbpqgtqffive2
+hrvrgjgvxt7vrsr
+2zj8
+35fourspthreeseven3zgddrmbxmsz
+four8kkxmtsscf
+4six98
+five9four
+four5one7pjbninefourbmss
+4sixsixt138seven
+fourxsevenseveneighthsgmmpdx5
+tonexhgcjxbjn8
+chbkd2183
+six8fivefourglszgngfgqthree
+pghkzrftwo6
+fourpfx572
+62zfvzp
+sixsixnzvtxdgsixzxsgmpz1zvtwo4oneightpg
+425twothreebv4twoxbx
+8nineeight55eightflkpggltsr4spl
+seven45clkrkrxj
+65six594twofive
+4ktvpfjeight
+nnslpmkqc5five5four
+nineonetzmft8jcxqzrk
+fivefivethree99
+2l2
+4mhdj
+3eight7fivejqhvrszgh3
+5four7mbfz8
+one8sevenmltbgqcbq22
+1zgfnfvt9seven
+2lhbfrndhmfiveone
+fivekzgch424zbpgxhtkbjdljxkxvnz
+1vd6vpmzjmnhhn
+vlqcbhskb5onerqbql6
+six3tplqcxthreethreefoureightzldgvgxrthree
+4fourtwo4
+cvznvxbxlszjpxvzbqn7gt2fjtxddzmjv
+kjqthree67twosixfour4nine
+dmjrhflfzslhkjmthreemfgqvzcpm9bcnfbpz
+nfpcsevenone3two58
+eight4kdqczz96five1four
+1mzfour
+57tdcmtmns4
+bdxeightrjvkrddrm3nftmzxlftthree
+2three2kvfourgrtvxmrzgdninecseven
+threemxpfnthree5onehjdxfntvtzlxhr
+8onelqtjpkmtwotwoseven91
+rzhzg1fouronecqkdpfkgdkkftsixhllvphvtjv
+vxgrlptk48one14two
+kqncz3znmkppxs3hlggbmsfj81
+ddrp3
+three8hjdccgthrtbd6lvhnbfivemzh
+twomptzvkqmssix7bjvpsix6nine
+phrdjxmzj3xxkmfour7dsix
+5threeshtmlsjbmfzgdq
+96eight
+three6rqqxgzthreejphvs
+69seven52kmnpbqmjdhtjvxcnlxfgldbs
+veightwozbbcmqrdxv6hxxpdknf
+nxbtwone1vktdvlbbhnfour
+4five864
+2dn1fiveeightthree
+two4twofoureight43
+1eight51
+71fourhjrnqssxqvf
+sevenqxkccdxndfgqhctsfsx6
+xqgsjvdmnb31sixfourtksqshz5
+4ghkqfzxceighteight2eightfiveeightwotf
+ninelsnldgslfxfqfsrc24six
+3seven3ctbf9eightmshd
+mbqpfourfive44sixbnmqrmkgxt
+flgdrvjj4dks
+oneqslfbjgfx8
+jmmssm2
+hjfbzsix1
+bvjdxseven8
+fivenhfccvg9
+four5sevengkvslppponerhlvfms
+b9one
+89znlhgbnkmmxsix3two
+sixsqtjcdfbs87ninejvznvmeightfvst1
+sevenktnzdkcsrzzdqtb9jnbtwotgxsptxcd5
+6mqvbhsddnmb21sixskg8
+threenb2four74five1lcmdzrvq
+ftvone7
+5msevenpdqgzncvzxeight
+foursixpshnbrpm64
+six2twotwordzf
+nine7lbnxsfjtbb1seven4ggt4
+zlnfkkconept36
+9sevenfqlxjmts94xpcxqseven
+foursevenseven15ninedqff1kmzfgvnks
+xktjdhb115
+threeeightcnlpzrb8
+91six
+376kkgmlblrcbthree7jgxvgfcdv
+9xpz3
+rrcvpkgtwo2one6vjfone24
+sevenhfour3three
+pxfvzltqrg9twotwogqdtzbp
+lrgseveneight5pmxvppjdhtwoone
+97six
+four8bjdhpmszdeightprkgone
+mb6lfcdkcn
+8fbvxnjone
+z9vdthreethreesbsrkzgnsxp8
+sevengftjmm1onegqhpninesnr3
+f4fourrbbngrdm37five
+ninerbmdqfvkfx9eightone8eight2
+rxdvclfr714
+oneggchmt2dgh7
+tvbfour9four
+four474fourgmdtm
+nffourpbxtlcs7ninethree3
+bpjlrztwo2sdttcghc
+hfflhmdc18
+4ninepsrmtbqrfeightk3xxxf
+433hdvcggkr1xjcntvtnvsc
+7nine2nine6
+9zctwo
+9vvfjvctgtzpjh7jtdjcrh
+qrtgcd5six31khd5
+fourbjshrq845zg
+ghconeight35jljdqgtg4fjdtxtsfiveone4
+one7kxscgcxnsx
+43threethree54four
+vmninetwo2onetqgblrsgcpfkrreightwokg
+threefour38
+fivesixeights26three
+jtmzzxvmxone2four9jgtxjrvpcthree
+fdqgczkq8sevenvcnhpseven8three88
+7ninezone3
+frj4eighttwobgx1threesjckzsvvxlone
+oneseven2cspzhqfsix4
+ljmnbbcnxffkmdn5
+tmzlnl8oneseven86ninelbrzjgqn
+fthree3seven6sixtwo34
+6two8fivexteight
+89seven5twosix63
+63pzsjcjzvbhseven
+msqvppsgnfbjrjmdrrhbfxrjqdlkpfourjbrjks3dthree
+eight6twoklkdfgvxzteighttctqz
+4gjpfmqs233six
+onefourninenxcnkgfour8rmmrzln
+1sptlpstqb6eightqgfhzzgpgp24
+eightlrjlhqfoureightjvj937
+595oneighthpt
+44five
+two2sevenbtwo
+7fivefivepxonebbrlthreefive
+klxnlfjlsrgjcd7eightninefive
+threeqzpptnzhjnkqfsixpvk3xxlrpl
+mqkhsdtbqqzgjb7149ninesix
+1dbrrvjsx34cbdxhqpzbfhtgpm9three
+3onesix6eight
+five34
+6qcv9nzngtsjv
+9lttthreegttzjstt
+four47
+95onetwoftdzmhsfmhbnblnine
+chcsqhnp72qjdqtjxzc8fourfourfour
+fourfive28
+81eighttwoqdjkmnleightdbmzz
+vzzqpjx8
+qq1six
+qbktqgrjcqq75
+772
+njvnhnzdz6threefivetwonelt
+pcfzzjfhqkxhfpztpv7
+fivemztfourqjrtngrkpcbfc3qq
+bfjhbm6ghtdpsmlvb86eight
+94883
+6onegbxmcqmdfive
+sevenonesixcngsrgcz9
+sevenzhxktd22fourgnr9
+tdxpzvggnlpdxxrcpsp3threexjrldrkmp
+34kjtbsxppmxfoursixlbzgqxbltv
+fivethreezfive2
+7seven1seven
+4fhvxbg58eighteightone
+631gqtwosix
+xqn1chrcjjrqxp4threezjcd
+jtssvppxlnsix49rfvjdzntwoone
+sevencmpmdnczcfdprgfdbjnzzkgnine26
+hkbnggqfk7mfmfsone68sxpdmf
+fourtlhsmksvzg4foursixseven
+pprkj3sixseven
+kzxjpdczxhxckxtgbbtwothreethree5dztmdfrlfivedgcfmmrt
+hjvrdhnckspl5eight3three9
+74two95eightfourdkzzlkxszm
+one7tbfour1cpjtrxsqgvbjtpbcct2
+fivefour4hsix8hjsxrmpqqxnkhmjseven
+nine8fivehvmnxsfour7four75
+sjfrjr2ds
+fivefourqt95vbndnzns665
+sixssbznthreethree6f8lnzcgpprl
+ninepfbpfnflrfnpzhq9
+nh9fvrldpkjmq7six5p
+75zsixnqbhrcbpmddshjfqthtq
+sevennine377fourfrtvpqrseven6
+97eightnine
+52fiveonetrq5
+threehgjqt7rvfsljtzkfour
+tjkxc1
+jthreerqbpzpzmeightntjlrhdmfour2
+fourmgv2three4one
+four91
+9bone
+oneseven1sevenpdvdqhlq
+xlhbqxcpfp7
+twothreefive43
+1ctjmfn9one2
+htfivesixcdkjrjbr45eightseven
+onefour8rrhltfl897
+37ljvmcnjhonevxkqpjk
+3891sevencfgjhh45
+twoone5tbznkdmv1fourpltvnnsvk19
+55bcnzbfggd2
+17zpskbgeight2dx3
+vbdshtdkxllttwo65
+tzvmcmltfphztpplrxjxpbnine3qvktlctfrpxncb
+1sixppzlfvkbnm
+eight1gdvlzrfkc
+four74fivefseven
+hlzlvnjrp9312jxeightnine1
+sixsevenkjpbz5sevencksb2
+9rtvlgdpfnmgzdzcjggsq7sevendxglftncmbninefive
+eight8gxkrbkgcvbxbbxlonefivesevenjnffhjsk
+99twobdmcnfthreevr
+sevenlpjbbthree58
+eightthree32
+14fhxsqshmjbngrhdzvxvvhxgvqnlxnnvrsgsheightninenine
+6twotwo
+kr573eightseven78
+9six18
+2seven8six1qdvf
+ones9three1lcqj2
+sixbfour6gbd
+tfpvtbbjtwormxz6
+49eighttwoonesixeighteight
+fcrhntggdvseventhreeeight9foureightxjxqvtb
+oneone3rnngppxj8fzpsncjmzn
+9fiveonejjdpthreetwo9
+sixsixjzckvmbbszsl1nrrfphj5
+zgjvnttth7sbmtxczggxbbqpzq467
+3mhslltk
+9six16three79three
+fxprlhbm3zljzd49gdsrtt
+6eightoneseveneightfourrfive
+fourfive11six
+6gmrfxnsmnnljf8ninenlctx
+seven5threehninecnhbkgbnvqbsfx
+pxzccjqz8
+xgzpzljnfour7threethrxskjlz9
+fourseveneight292eightone
+5bjpzjseven21four
+xbtf88nine
+6nfjllxh4
+67five4c8
+1qbzdkvmlrzgj3rzqczz4
+mjjzblg3
+x3five
+jrpxsrqgr9hqsddmscmsrsbhkdc63eightxfscd
+6eightsixone
+5dggfbgclz7htvpcx1
+onethree46psdlfpgbsix
+lqbnine978
+7nrrdzfksbtjlnbgfxttzfourstqkd
+mtfptwo9six23hctpbrxtbx
+eightfznvmmp7cllpkggknttwoxbbv
+rggdrlsgcm2hdljxzjhjrfour83
+vhtmhvjdzzkzmzqgr7fourfourfourgzbqqpz
+dfjctmlnkqzzjhhltpvhfmhsixvclfive7vgm9
+nine642sevenseven9mblrhxxktfhdhbcztvx
+4rzrdfmtvlpthree86
+qkdoneighttwo1one3
+dnnvkvpcmn2cltbzc6five59s
+sixsnzpnfplrn38hthhbfive4
+tsrxkzfxcdgckxrgzkmrctqvrngfnvdscnpc6jgszldglnhsg
+vvtfhtgxjbdgznjjzqjjclfg1lvpdcpjsevenseven3
+xrhbrpg8zb8
+4nine5qfxlhmvzsjsbznmklseven
+lffl2six733jtrfrs3
+7nbvpkdpzjtc8qckhbqfsqqgz
+cfljnthreecninedt2xldzbgl5six
+nrggf7four
+hbkpxrxonetwo969fivethreegspmzcfr
+jjpmzlzfvqbvbzqcz2eightninepfqjkjrkfivebzcthgrpqx
+xsccsbmcninefive4kkrvrht
+sgnzzschtwotwofzjt9seven
+8tworpzncglnmninenjmf368
+2one1zjtgllvsone
+7nine4nqqxnvvnsbsevenvddcvfdr
+three117
+shcjhvrfourpthree12
+1zxcxninegpdfrfhzlbzg
+7eight9gkkfbdhplnmjkksbqzp6htmbhg
+sixeight76sixfive
+5twonemt
+three86
+4three52psgzhnlhgvgcsbzbleight5oneightkj
+cnztwone1
+six9sgx
+79clrpmeightninepkh39
+rmfplpsixsixlvrdbqgpljgl5onetwo3
+7ninelznqjxjgtwohhk6five
+1659two7onefive
+rskpnrmfbbghttvklkg773fourczdqeight
+xftwo4
+2nine5ccrgsmfcseven9seven52
+8sixseven
+k33threehgqtljcdqxkl
+hfgdvngttzfivecflmcc31three
+eightninethreensjxxlzhgk9b51x
+ninejktfhnnphkkgm2dms5dpxrbcd
+eight7skzllgxgmkd1three4thhdpsjtvnq
+7ninehhhdngbxjvvxldvbrhzrbvntl2
+pxgsixone75llslx
+31tgrvtvvlbhnshjfgnqc
+knzgkjfckf2sevendfive
+bmxcnznineeight9dvkbngzmxz
+gzqdjfsxq9pbseven
+212
+h3
+9sixfourbrfsfivekttxzhrmdsppps
+3vxtbtrzqzxfhgsksbvqd
+9lbxdjmckrhfgjqlnsrrfzqxktqkrmmjshfnine
+7pjmmxdcffxgspeightgpdcftjtdxjgdrfthree
+t84ninefive4
+fgfour63sevendmtrrc9
+64three
+btjnc3g6f3one
+pm9
+threefourvjmsx5four
+14one2rtcccqc
+jhcckpv84xntpzdn
+rpjrhgddzfvrzpqnfg5twoseven3threehvcmnkreightwotl
+74one
+six4ninesnbxlonesix5three
+kfxjzjone76xppxgddstgfhxphpffrjlone
+sixthreedsdccpqff4
+4951
+zszgqjxbx7
+three4pqqvfzf622
+vc77threetd
+sixlbglxqhn52
+1sgktgvxp
+bdsonekxsevenpgssslcq3fgp7
+pvnxnhdjmndnhthreefive49
+kgvkszsixone4
+3mjvqjpglzhphg67ninehnnine
+one6xvvnvkxp4dfcxv
+eightfour7threesevenp
+7ggdl1
+ztwonethree427ninetnmzntj4
+fttwone258seventwotwo
+75sixseven59
+7kmfzqgjpqkpdhthjlseven674xdgmphfk
+eighttwo6five7
+3eightwoxg
+22434five
+khjmcpzvfpr9
+3rrzqzlrljgcvdnxj6four8six
+63qrgqklszpgthreefkpzx
+574htclbtzfivetwo
+jtwofqfpkflzt9
+xnjzxpmmdln4lzlmlk41
+6jdzjjmz7jt7seven8fourkgttztbsktwoneps
+72s166zpslq5
+3553lhkdcxvhqbddrfdbc5two
+4gktbmone
+fouronefives3qhglmzttwoeightone
+one87rxkkhfrjfrpdjjt485
+one437nine
+119one
+5lseven87nmxxqvhmn
+pphfmcfhxlsevensqdmtvtpvq1
+18eightfivefour
+three98
+4onephzhtq4qc5four
+26zglkpjvz3twoeight
+7mxkdrbpnk29
+ppeight15
+9jnprvtmscsixbbpsixfivecktgvdpf5
+lbftvcngvkvxf5cmmrqljjb471
+eight3knrvtwo
+one6pvbpkqkpdsixbv
+eight2onethree6eight
+5rztcbtfjkb2twoeight39hxppvpxqg
+8threemlllncmfourthree
+vhtsmncssixbmlpggvmlzdxbczgc1fxrgvsbhsrbs
+ninebnpv7575three
+4mthree
+fourtwo1qrbfourjrjmlxjr
+3jbkcsrqznc8
+pcgrxgf4eight54
+seven5mjk
+ninenine6vmcmlxmcrbvq1nine8
+sixone2ninesixrdqfgpxddzthreetcheight
+899lfbzhgn151
+46nineone
+7one2qthree
+nine2hjnfourninesixvblnqbgctwoeight
+qkggsnnthrxnrccbgs583
+351zkxqtmbd9sixthreegjjxt
+zrchlhmqcthreeninesmxz9
+219fivejrxgbjvvcxkjtwoseven
+8threebzzsxdx
+nine249ninefmlhj8rfour
+16zfljhfdcmkthree
+7sixjvdqgpvhmndpmhhzsphceight
+two2zjqc4nfd6732
+41threeseven1fourseven
+296fourgnq7three
+tbzdhbhs7ntshptcgrbkjspjdz
+55qcrmclmcck9
+25mhmtb3dscmjbhgv3four
+bjmhkxsffourhnxkxv1
+jvntlbn5fivegjdcjl
+7gndbbbneight
+357623chktvtfzvf
+169plhsshseven
+nhgsrxcdfktpbzf9vpppxzkznine9
+xrdnlbmtdeightone3threeeighttwo
+bnnqzcfoneeight2hhdfkrrqzt
+342tlmjgtfcnine
+47rvtfqlzgmjlqbqthree
+7gnmxplrjbvfour6
+mcgbldbhlh1eightnine
+two9eightxnpdj61kzcdpnpnpfgsdrbcflh
+6541fourpkdplksnkpvkjxpdnvfttlfdflz
+kfour7
+x4tpbnnvnjlseven
+55nineninesevenzttsztwo9nlcqjq
+1drhjrzsbvpl
+mpknzhj9vmqckrpznqthreesj9
+211zqgpdlmpn
+4jxzrztg5onehnzvdbtcqdtsnkqtdvsd1fournine
+bvcrcz5four4
+4nineninecfhgtdphone9
+zbkjgbshqqkrcb3qmtfmdrdcckcsxshjb2
+1eightrblhbhljvkpshmrxc5
+hjcrrdsvnbqktxrgmq9nqgcztbv
+6lzsixl5one
+twofivesevenfivesixonenine5seven
+fourmldkgnzb8djlsdmjnzxbmmvpf59seven
+8hnfkknnsrhm
+three2krtqmmxqzs4jbrnrtrxzxsllblbkjmthcrlxxkdlh
+mglfmvvnthreefour1
+onehxz4fourhqcfvdlhg
+zrzqdgs5jsttkrone
+sevenrdmhnldsmdnineqfrgjhmhnnqkztxzm7
+63seven
+2seven3mrsltqb17
+fdbtvthmmrb5gbxvcmtwosixt5five
+eightlzglvxfone5five7dlqpmseven5
+dmzdkbfive98onefivehhbljrnz
+eight8ninefour
+24nvmftwofive
+seven3onefourrmgkxtcsfour
+fgpxmqqsfdrk8eight8zhcrzvrzmdxbbfive
+eightonetwo7ninesjsrlr
+rrkrrtnkq941sixone
+threeffspgv3eightfivesix5
+lthnrlgfcnine2scdcvnineseven
+sx86
+cxklrckbz5lsqq28
+5seven298
+933five5cmddfj46
+hrhhs76343
+one3two4fourst4three
+nine3three
+dhtscvgm9foureight81vp
+btpeightpzbtphdlcm8fiverknbrhthreelxndqcv
+one96six45tm
+fourninetkdrvnbznnine22
+vxeightwothree5cd3jcnine
+seven5one4one7ninefive3
+nflkr2dlmtsrkrgkfvsixxvznjbvz3btxkhhqcc
+eightrtz6jslqxsixoneeightnine
+xmvxn5
+tgnlrmjtkjdpbnpmsixbxfnl7sixone
+htwonezcshpqgsix73qlgdqnkjskjthree
+nrlkxq6fnfourseven
+zmrlngjdhc41four4fourptrhddthreenhzv
+n9twogdrzkcsbk8hph6
+436sevens7cnkrrk
+6qkdvkhtwo
+mztkszm39
+fourtwo4mqhjkkdzgffhqfktwonine
+hbthree2hvpbznlgrxfgkthfour8
+34prfzlx4three
+29zzfdvghll9three6
+two83
+one982
+36hhgdf7
+seven6ninednnine9mbtzfm1
+one38
+seventhree5lsjxknqtdsbtxrkone
+eightmfctkbc9jlxgdnchlq9one8nine
+p371b
+9ninejszqsnpkfbthree1h5xscpfzvl
+three9ljd
+fbbv9
+five582
+58dctdbhbninesixczhd
+qp4
+6pfqdeight
+3onethreekqnnlt
+m4fgbmdtwo3
+twodkrmtqs4
+9three6
+six1798nineeightsqpvpsmcbmh
+9qxxmrmbnine3fivefourfive3four
+one7sevenone78ninetwozqps
+973keight9seventwo
+keightwothreethreeh6threeeightlnqdzhlt
+five94
+mqlltnfive8eighttwoqhztggvqqkcxgvgmch
+2kpnsevenfive6
+gtmszpsjmggr3
+pm126one3
+rvcqbtz9zjtndbxlrdcxzf3
+mkninekhmtxzbjpd8threeeight7eight
+5274xm636
+bleightfive9vdddzjdntthreerxtvdslrvbcvf
+9eight4sixdqzrltgpzlpxtcrzxbhmsmdtwothree
+cpneightwofive3fourtwo
+one61threejxbjvsltxzpntpv
+19581
+six2qllhlxhr1foursixz8
+6278teight3three
+8gstxqdngxzlxvnvphlsznr3kknftvzxcqqbrfteightthree
+4jlzjvjfltwo7pv
+7dvt
+blhsm4xcrbrf68ninezvhhtqgphnzxlhl
+9dvjvfourtcthree
+onethreenfkgrvsevenkczctlgkt7
\ No newline at end of file
diff --git a/AdventOfCode/Inputs/02.txt b/AdventOfCode/Inputs/02.txt
new file mode 100644
index 0000000..c5ab8c4
--- /dev/null
+++ b/AdventOfCode/Inputs/02.txt
@@ -0,0 +1,100 @@
+Game 1: 1 green, 1 blue, 1 red; 1 green, 8 red, 7 blue; 6 blue, 10 red; 4 red, 9 blue, 2 green; 1 green, 3 blue; 4 red, 1 green, 10 blue
+Game 2: 9 red, 7 green, 3 blue; 15 green, 2 blue, 5 red; 10 red, 3 blue, 13 green
+Game 3: 3 red, 1 blue, 4 green; 6 red, 3 green, 2 blue; 6 red, 16 blue, 1 green
+Game 4: 2 blue, 2 green, 19 red; 3 blue, 11 red, 16 green; 18 blue, 13 green, 20 red; 18 red, 12 blue, 16 green; 8 green, 16 blue, 16 red
+Game 5: 8 green, 1 red, 12 blue; 10 green, 6 red, 13 blue; 1 red, 3 blue, 6 green; 14 blue, 2 red, 7 green
+Game 6: 1 red; 1 blue; 2 green, 1 blue; 1 red, 3 blue; 1 red, 2 blue, 2 green; 1 green, 7 blue, 1 red
+Game 7: 2 red, 1 blue, 5 green; 5 green, 1 red; 3 red, 7 blue; 8 blue, 1 red, 4 green
+Game 8: 6 green, 4 blue; 10 green, 7 blue; 5 blue; 1 red, 7 blue; 11 green, 1 red
+Game 9: 2 green, 2 blue; 8 red, 5 blue, 6 green; 11 green, 6 blue, 8 red; 4 blue, 3 green, 8 red; 2 green, 10 red, 5 blue
+Game 10: 2 blue, 8 green, 2 red; 10 blue, 3 green; 12 blue, 1 green, 2 red; 9 green, 2 red; 3 green, 2 red, 5 blue
+Game 11: 12 red, 1 green, 1 blue; 7 green, 1 red; 2 blue, 1 red, 3 green; 15 green, 8 red
+Game 12: 4 red, 10 green, 4 blue; 3 red, 10 blue, 18 green; 5 red, 2 blue, 18 green; 8 blue, 16 green, 2 red
+Game 13: 3 green, 1 blue, 8 red; 8 blue, 2 green, 6 red; 6 blue, 3 green, 11 red; 2 red, 13 blue; 1 blue, 5 red, 2 green; 6 red
+Game 14: 3 blue, 15 green, 10 red; 7 green, 6 red, 6 blue; 8 red, 13 green, 4 blue; 4 green, 1 blue, 9 red; 9 red, 7 blue
+Game 15: 8 green, 9 blue, 4 red; 8 blue, 4 green, 4 red; 8 green, 7 blue, 10 red
+Game 16: 12 red, 8 blue, 2 green; 4 green, 10 red, 4 blue; 9 green, 4 blue, 5 red; 7 red, 1 blue
+Game 17: 1 blue, 4 red, 6 green; 1 blue; 6 red, 8 blue, 10 green; 2 blue, 2 red, 3 green; 8 green, 14 red, 6 blue
+Game 18: 5 blue, 1 green, 5 red; 1 green, 11 blue; 3 green, 18 red, 8 blue
+Game 19: 2 blue, 2 red, 16 green; 5 blue, 2 red, 17 green; 10 green, 6 blue; 2 blue, 11 green; 15 green, 3 blue, 5 red; 18 green, 8 red
+Game 20: 7 red, 6 green, 3 blue; 7 red, 16 green; 1 blue, 6 green; 1 green, 7 red
+Game 21: 10 red, 10 blue; 16 green, 4 blue, 7 red; 2 red, 9 blue, 11 green
+Game 22: 12 green, 7 red, 2 blue; 6 blue, 3 red, 10 green; 11 red, 12 green, 3 blue; 8 red, 3 green, 3 blue; 3 red, 4 green, 7 blue
+Game 23: 7 red, 9 blue; 5 red, 1 green, 4 blue; 8 green, 9 blue, 10 red; 8 green, 9 red, 11 blue
+Game 24: 4 blue, 2 red, 15 green; 1 green, 4 blue; 7 green, 2 blue
+Game 25: 12 red, 12 green; 11 red, 5 blue, 15 green; 15 green, 5 red, 3 blue; 15 green, 6 blue, 10 red; 3 blue, 1 green, 5 red
+Game 26: 7 red, 18 green, 6 blue; 3 red, 2 green, 7 blue; 1 red, 1 green, 1 blue; 16 green, 5 red, 2 blue; 5 blue, 4 red; 12 red, 2 blue
+Game 27: 1 blue, 5 red, 5 green; 11 blue, 7 red, 5 green; 8 blue, 7 green, 4 red; 3 green, 3 blue; 14 green, 1 blue
+Game 28: 12 green, 1 red, 1 blue; 17 green, 1 red, 1 blue; 1 red, 1 blue, 15 green
+Game 29: 15 green, 10 blue; 6 green, 5 blue, 2 red; 19 green, 5 blue
+Game 30: 10 red, 13 green, 2 blue; 5 blue, 14 green, 1 red; 9 green, 14 red, 3 blue; 14 blue, 14 green, 17 red; 15 blue, 9 green, 16 red
+Game 31: 6 green, 1 blue, 8 red; 12 red, 8 green; 5 red, 8 green; 9 green, 11 red
+Game 32: 6 red, 7 green; 12 green, 1 blue, 2 red; 2 red, 3 green; 4 red, 13 green; 7 red, 9 green
+Game 33: 3 red, 7 blue, 10 green; 4 blue, 3 red, 15 green; 6 red, 7 blue, 18 green; 5 red, 10 green, 10 blue; 2 blue, 6 red, 10 green; 7 blue, 3 green, 6 red
+Game 34: 1 red, 6 blue, 3 green; 2 green, 13 blue, 2 red; 2 red, 7 green, 5 blue; 4 red, 2 blue, 5 green; 3 red, 4 blue, 3 green
+Game 35: 3 red, 4 blue; 3 green, 6 red, 2 blue; 8 green, 4 blue, 3 red; 11 red, 4 blue, 3 green; 5 green, 1 blue, 6 red; 8 red, 7 green
+Game 36: 2 blue, 8 red, 2 green; 11 green, 14 red; 14 red, 1 green; 7 green, 2 blue, 11 red
+Game 37: 2 green, 10 red; 1 green, 5 red; 5 red, 11 green; 1 blue, 11 green, 2 red
+Game 38: 11 red, 1 green, 11 blue; 9 red, 1 green; 5 red, 2 blue, 1 green; 2 red, 6 blue
+Game 39: 3 red; 2 green, 18 red, 2 blue; 2 green; 6 red, 2 green; 12 red; 3 green, 11 red
+Game 40: 3 blue, 4 red; 2 red; 7 red, 1 green, 2 blue; 1 green, 1 blue; 5 green; 2 green, 2 red, 1 blue
+Game 41: 5 green, 3 blue, 10 red; 6 green, 3 blue, 12 red; 2 blue, 5 green, 7 red; 2 blue, 3 green, 2 red
+Game 42: 11 green, 1 red; 6 green, 4 red; 4 red, 4 blue, 7 green; 11 green, 5 red, 5 blue
+Game 43: 1 blue; 6 green, 16 blue; 7 green, 1 red; 2 red, 15 green, 7 blue; 2 red, 16 green, 3 blue; 3 red, 14 blue
+Game 44: 3 green, 1 red, 5 blue; 9 blue, 1 red; 14 blue; 7 blue, 1 green, 2 red
+Game 45: 1 blue, 1 red; 1 blue, 1 red; 3 green, 1 red; 1 green, 1 blue
+Game 46: 1 green, 8 red, 2 blue; 13 blue, 7 red, 2 green; 3 red, 4 blue; 2 green, 18 blue, 5 red; 4 red, 5 green, 9 blue; 3 red, 7 blue, 1 green
+Game 47: 8 blue, 1 red, 8 green; 2 red, 6 green, 1 blue; 2 green, 6 blue, 5 red; 6 blue, 6 red, 6 green; 6 green, 9 blue, 7 red
+Game 48: 5 blue, 14 green, 8 red; 7 blue, 10 green, 7 red; 9 green, 9 blue, 6 red; 9 green, 5 blue, 17 red
+Game 49: 10 green, 6 blue, 2 red; 3 blue, 5 green, 4 red; 8 red, 8 blue, 11 green; 5 red, 6 green, 5 blue
+Game 50: 3 red, 2 green; 1 red, 8 blue; 2 red, 2 green, 3 blue
+Game 51: 4 green, 8 red; 8 red, 5 blue, 13 green; 3 red, 11 blue, 14 green; 5 blue, 11 green, 3 red; 5 red, 9 blue, 11 green; 6 green, 4 red, 12 blue
+Game 52: 2 green, 1 red, 1 blue; 3 blue, 2 green, 2 red; 1 green, 3 blue, 4 red; 2 blue; 8 red, 2 blue
+Game 53: 18 blue, 4 green, 9 red; 6 blue, 9 green; 14 blue, 9 green, 9 red
+Game 54: 2 red, 7 blue, 3 green; 6 green, 3 red, 2 blue; 1 blue, 3 green, 3 red; 2 green, 4 red, 9 blue
+Game 55: 3 green, 6 blue; 6 green, 8 blue, 6 red; 5 green, 3 red; 4 blue, 8 green, 1 red; 1 red, 2 blue
+Game 56: 4 green; 2 blue, 4 green, 1 red; 3 blue, 6 green
+Game 57: 15 red, 3 green; 15 red, 1 blue, 2 green; 15 red, 1 green
+Game 58: 1 red, 5 blue; 5 green; 6 green, 8 blue, 2 red; 1 red, 6 blue, 6 green
+Game 59: 3 green, 8 blue, 5 red; 1 green, 12 blue, 4 red; 2 green, 18 blue; 2 red, 4 green; 16 blue, 3 red, 1 green
+Game 60: 7 green, 6 blue, 2 red; 6 blue, 2 red, 4 green; 11 green, 5 blue; 4 green, 4 blue, 3 red; 2 red, 7 green, 8 blue; 6 green, 4 red, 1 blue
+Game 61: 6 green, 6 red; 1 green, 3 blue; 6 green, 1 red, 7 blue; 5 red, 19 green, 7 blue
+Game 62: 3 red, 4 green; 2 red, 4 blue; 1 red, 13 blue, 5 green
+Game 63: 2 red, 13 green, 4 blue; 10 green, 5 red, 10 blue; 13 blue, 6 red, 3 green
+Game 64: 5 blue, 2 green; 1 blue, 1 red, 6 green; 3 blue, 11 green; 2 blue, 8 green, 1 red
+Game 65: 4 red, 5 green, 2 blue; 2 blue, 4 red, 1 green; 3 red, 5 green, 4 blue; 6 red, 3 blue; 3 blue, 2 green, 5 red; 2 green, 3 red
+Game 66: 14 red, 17 green, 1 blue; 2 red, 12 green, 2 blue; 1 blue, 4 green, 14 red
+Game 67: 7 green, 4 red, 10 blue; 11 blue, 4 green; 7 green, 2 red, 3 blue; 11 blue, 3 red, 9 green
+Game 68: 5 blue, 4 red; 10 blue, 8 green, 5 red; 1 green, 1 red, 10 blue
+Game 69: 1 red, 15 blue, 2 green; 16 blue, 15 green; 1 red, 15 green, 14 blue; 2 red, 5 green, 11 blue; 5 green, 1 red, 13 blue; 2 blue, 16 green
+Game 70: 1 red, 2 blue, 9 green; 2 green, 1 red; 7 green, 4 blue
+Game 71: 5 blue, 1 green; 2 green, 5 blue; 2 blue, 1 red, 1 green; 1 red, 5 blue; 1 red
+Game 72: 5 green, 5 blue; 8 green, 3 red; 7 blue, 8 green
+Game 73: 1 green, 4 red, 3 blue; 5 green, 5 blue, 3 red; 8 blue, 7 green, 1 red; 3 blue, 3 red, 9 green; 13 green, 2 red, 10 blue
+Game 74: 2 red, 4 green, 5 blue; 3 blue, 6 green, 4 red; 2 blue, 6 green, 5 red
+Game 75: 10 red, 20 green, 14 blue; 9 blue, 15 green, 17 red; 8 green, 18 blue, 6 red
+Game 76: 7 green, 1 red, 9 blue; 1 green, 3 red; 3 red, 3 green; 4 blue, 20 red, 9 green; 12 red, 7 blue
+Game 77: 1 blue, 9 green, 7 red; 5 green, 7 red; 4 red, 1 green, 1 blue; 6 green, 3 red, 3 blue; 3 blue, 5 green, 18 red
+Game 78: 11 red, 4 green, 4 blue; 12 red, 3 green, 4 blue; 11 red, 4 green, 13 blue; 8 red, 5 blue, 6 green
+Game 79: 1 blue, 16 red; 9 red, 2 green, 2 blue; 2 blue, 12 red; 3 green, 12 red
+Game 80: 2 blue, 3 green, 5 red; 5 red, 8 blue, 3 green; 10 blue, 8 red, 8 green; 5 blue, 4 red
+Game 81: 1 green, 3 red; 6 blue; 6 red, 1 green, 8 blue; 1 green, 8 blue
+Game 82: 4 blue, 2 red; 7 blue, 10 green, 3 red; 7 green, 1 red
+Game 83: 12 blue, 9 green; 10 green, 7 blue; 7 green, 1 red, 12 blue; 5 green, 12 blue
+Game 84: 1 green, 2 blue, 1 red; 2 green, 9 red; 14 red, 1 blue, 2 green; 2 green, 9 red; 4 blue, 2 green, 9 red
+Game 85: 1 blue, 8 red, 8 green; 1 green, 4 red, 4 blue; 8 red, 7 green, 18 blue; 5 green, 3 red, 15 blue; 11 blue, 1 red, 4 green; 4 green, 3 red, 1 blue
+Game 86: 14 green, 11 red, 14 blue; 9 green, 14 blue; 12 red, 4 green, 13 blue; 14 green, 9 blue, 2 red; 5 red, 17 green, 1 blue
+Game 87: 3 red, 3 green, 7 blue; 3 green, 2 red, 20 blue; 12 green, 9 blue; 3 blue, 3 red, 8 green; 12 green, 9 blue, 2 red
+Game 88: 4 green, 1 red, 4 blue; 1 green, 3 red, 1 blue; 2 green, 3 blue, 3 red; 5 green, 1 blue
+Game 89: 8 blue, 1 red; 4 red, 6 blue, 1 green; 12 blue, 3 red; 1 red, 4 blue; 3 red, 5 blue, 1 green; 7 red, 7 blue
+Game 90: 3 red, 2 green; 4 blue, 13 red; 1 blue, 7 red
+Game 91: 8 blue, 2 red, 9 green; 5 blue, 17 green; 2 green, 7 blue, 1 red; 8 blue, 11 green, 3 red; 2 red, 5 blue, 1 green
+Game 92: 8 red, 11 blue; 7 green, 9 blue, 2 red; 6 red, 3 green, 3 blue; 4 green, 8 blue, 2 red; 9 blue, 12 green, 8 red; 6 red, 14 blue
+Game 93: 4 blue, 1 red, 3 green; 7 green, 1 red, 3 blue; 6 green, 1 red, 3 blue; 3 blue, 10 green, 1 red; 3 blue, 7 green
+Game 94: 11 red, 13 green, 3 blue; 4 green, 15 red, 5 blue; 1 red, 7 green
+Game 95: 4 green, 10 blue, 6 red; 4 green, 9 blue; 8 blue, 9 red, 5 green; 7 green, 12 blue; 12 blue, 8 green, 3 red; 2 green, 5 red
+Game 96: 2 red, 2 green, 1 blue; 1 red, 4 green; 1 green
+Game 97: 4 red, 5 green; 5 blue, 3 red; 8 blue, 2 green, 1 red
+Game 98: 1 blue; 2 green, 1 red; 5 red, 2 green; 4 red, 1 green; 2 red, 2 green, 2 blue
+Game 99: 6 blue, 5 red, 2 green; 9 red, 1 blue; 2 green, 2 red, 5 blue; 10 blue, 2 green; 11 blue, 1 green, 4 red
+Game 100: 1 blue, 13 green, 14 red; 11 green, 11 blue, 7 red; 2 red, 1 blue, 2 green; 10 blue, 15 red
\ No newline at end of file
diff --git a/AdventOfCode/Inputs/03.txt b/AdventOfCode/Inputs/03.txt
new file mode 100644
index 0000000..5c5dd5f
--- /dev/null
+++ b/AdventOfCode/Inputs/03.txt
@@ -0,0 +1,140 @@
+..............423....688..934............970................................95.728..........896...113..................153..972.............
+...122..................*.....*..........................919..509*..........&...@.........../...........................+.......*...........
+....+..........259....698..373.992.52.674.........................781...22........130.584.....-...%399.......777.................266........
+......148..+....*........................*.....357.123.......................812.........*756.143...........*...............................
+..691*.....700..708................-...357........*........$177......%..244.............................762.453....477-.707..-168..359*.....
+.......................394.443....456......750..................71.160.....*..183.........835..74.........*.............../............129..
+....578$....................%........................362..1......*.......661....*...........=.....730......744..294..........247............
+..............415...306*....../.452.................+.....*......375.............76....186*....../...............*..........@.......-..441..
+.....*152......#........75.757.......204%..................605.............................77.......%405.......957..324...........404.......
+..545.............../...........................................*....618......%...599...............................&....43.............=...
+..............902...145............170..............568..741.285.592..........54./.......%.......923......522+..........*..../...128....602.
+.......697.16*................322...........$............*............+339..........633.56............$..............792..751...............
+.......*.........................*..752..826.......*...104..861......................................144.....883...............+..778.892...
+......968..690.......#.....769#.718...*.........326..........*..............493..123..........362...........*.........757....570..@....*....
+..681.................242............806................509...307..../.....*......./.350..942...*..614@...511........+.................151..
+........*....../..256.......................235.....923....*..........28..264........*......&..316..............945....522........*823......
+.....961.136.567....................944.......*..........500..-.......................504................765$..........=.......563..........
+..................837..823......480.....627....984.#.........136....969..........-289......$757............................107........593...
+.74.924....../.............+110....*...............511................+....564......................389%.....989*305....@...*.........*.....
+.......+......110..735..........647....658.509*378..........-999............*....#225....937.............147.........778...868.....871..611.
+.........$...........*.....3............*...........................608..842..............*.......589.......*....842...................*....
+......$.963.....634.....................569....&..........177................*..........774.........*..132.153..*.............=.......13....
+...723.........=.......@..324......455#.......417....849$.*.........*372..747.87............./358...35..*.......974..453...811...990........
+.....................174...%............949...............182....684.............414...................201.......................*...../....
+........@.......................62.....*.....-.@669.....................487......*................943.........740*...10.......298....384....
+....446.711.........20.674...........343..806.....................&.574.*........965..............*......776...........*.867................
+......*............&.......705.804.............................374....+.307............&.......683...830...*....625..530....*837...272*.....
+.......791....................*.......&.................108...........................533..............*...966.*.......................515..
+............412...../................764....................658.+292.635.674..337.................98..814......263.......720*...............
+..............*...469..162.....23......................*64..*...............*.............+.........*.....*552...............990......942...
+790.536.......365.......*..587..=..........................313.....512....983....953.......348.....617.982..................................
+........580............227...*....673.808....66......595............./........*............................$..........21..989...............
+.....#.....*.781...........688...*..../........=.........865...............316.162.440.............&......482.663....*.............529......
+...357...182.@......359=..........553.......#....33....................323.........*............702...........*....200........&.....*.......
+...............733....................957.22..........815.........................57..657@..................792..........%.....678.305......
+..701..246........*238....553..107......*...................301..........649.555..............70....................610.233.&...............
+....#...*..&.................$.*....$.......$......438.....*.......943......*.....&675..955*....*..........183...=....%.....595.............
+......719.857...640*299............202...125...802..#...786...........*.....................277.424..........*.790./...............984......
+...@......................368.....................*...............323..587.479....553.272.................843.......518.............*.......
+...382..........892...46..........359..372+.611..585...............*.......*........*...+........&.............................487...35.....
+........&692.......*..*..............@.......-.......*697.......656.....155....34..681............64..641......................*............
+....495..........885..964................993......685................%........*....................../..........543.........863.............
+..........*408................&....244.....*..........................893....339........................109.....................777.........
+...521.985..................677......*......734........18....925#................352...843*74.......&....*.............260.......*..........
+...$........445.$..................802...................#..........=........533...@.................228..612......724....*.................
+.............*..504............=.......*.....177...................502.....+..*.............395......................$.....274.....396......
+......................417....274.....61.504..*........36*..................34..801..........%............224......................*.........
+......789.........139......&.....*............802........674....&..332..............675............819.............814............883..+915.
+...@.....*.....-..*.....970...279.117...............984@.....878..........231*168.*..................*.........793*.........................
+..33..875.....483.433....................*.........................................148.675...581*.....544.........................*537......
+......................884............671..839.....31..........685..@...899....350*...............621........*509............./.913..........
+....947......=742..........*.......................*...............712....*.......722...159............378........438.....300...........381.
+...*....................548..-................*..638.....................827...........*......714/...../...867....$..................%.-....
+998.....966.693..............694...........781...........764......584...............233....58......-......*............67=........161.......
+...........*.....................509..-851.........&.846..#........../...199.................*.443..658..976.130..489..................594..
+243....413.........499-...384.......*............352.+.............................752....298..*...............$..$...............577...*...
+......*......................*......378.335.................*.........+...813.120.*....................654..........$........325...*...984..
+...847..496....151*...........741.......*............624.116....767.988..&.....*...87............807...*.........127....997+......621.......
+........*..........227....345......*........@.....................*............699....566..604...*...760....290.............................
+......526..................*..500..799...761...413*......277....101........$..........*.........342..........*.......589..997......=........
+.............+....379....549............................*............*97.647.779....$.655..975......216...............*.......51..307./496..
+...........485.......&...............................55...........509............825......+.....43.....*...554......36...678+.$.............
+..........................73.....419.....314../...........311...........$....946.....272............351...*........................968../...
+.....786.................*........-..824.$...478......908....*.....455.254.....*.........615....760.....60...$......&.....*562.........102..
+.......*......43.....&...808........*.............267.*...985.....*..........616.........../......*...........189....977........616.........
+......45.932...*.....502..........805...943.840%...*..270......764......680......................750..415*184......................*606.....
+..768....*.....941............%.......8.&..................*................248&..105..745...633...........................584..........692.
+.......684............115....88...396*..................494.354...88...58.....................*.........956......809...53.......615.........
+................*391.............................................$....%.....&64.............488...........$.........*.....*.......*.........
+......440.459...........637...*....866...412.519.183..../.......................*82..963.........*307..=......715.408..421.292....626..*....
+.........*......$..........#...769............./..*....470.939.+......*.....257.....*.........257.....109.578..*.......................290..
+......+.......-..897...............................629.....-...834.254.798..*.......411....................*....411.......309....218........
+.......960..744..............384............................................433................$301.....848.................*.......#..144..
+..746............$....../...........38$...536.....-....@.............*..................-............................320...471..........*...
+....*.............720...59......................260..852...........633.........714...510......256.173.23...850........*........#.....691....
+..294..434...264......................422../639..........378.493...........388*................-....*...*..../.141..............539.........
+........../.&........790..........@....*....................*..........&............$.............16....633.....=.....................458...
+..678...............&.......184....186.934..652...741%.........=887...980.425../....485.732...502...........%........745..............*.....
+...*..........98.......@......*.................+...........................*...989.....$........*......838.9..........-...........464......
+.975..768....*.....*..702.....979....511$....161....645..............44.....18............721.695...348.........400......./.543*............
+........*.769....320......724......................&.....330&........*...................*...........$...188.....*.....977......618...%.....
+......879.....79............*....658..............................601................701..490....#......*........478.......166.........892..
+..844.............706....472....*...........113.........-765..217........267....../.*..........648....973....285............................
+.....*.482..........*...........853....408.....*................&........*.......59.265.........................*.......364....45.......@...
+..164..*...........309....472............#..478...40.......356........328....706..............$...............149.526.....%.....*.....27....
+...........................*.......&..................612...*..58.64%........*...766.......953......488............=.../.......152..........
+...*73....872.............347....27...22......552@.........559.*............435.....*679.............*...13.774......177.#250.......8*......
+977......#.........=....................=.......................56...508......................139.747.....*..*................861.....666...
+..............703...102....../........&....637..448......%..951........*...175.552*235...@.....*.......486..693.............................
+........944..*....@...........590..42.738...*..........861.....&....919.....*............108.837................#....963.530...831..&...251.
+........#.....93.103....708................54.342....+......................496.......................&.........278.....*.....*....162......
+..........860............@.......$167..............431.683......=496....858.........422.............662.154.405..............635.%..........
+.....882/.*.............................%......611..........766.......-...*.....755..@.....................*..........608.........951.......
+..........513......................274...226......*........@.......&..556.151....*.............229...681..............*.....911.............
+..............445....375.....774....*...........348..............643.............302...........*........*.......-...88......*........975....
+....*664.........*...&........@.........................893..........523....13...............825.........558...733.....769...991.....*......
+.328......821....935...................&.......@...457.....*.....+..*.........=..................341..................#............384......
+.........*...........164..........251..756....23...........912.532..879..................459........*...=...................................
+219.....71..821..............654.....................684........................@2....................931...........910.....................
+............&...425+..-.............207........*.....%...360...........190..........69.....................43..........$....................
+.....................116....................127.214.........*..181........@..%...49*....444....57.........*.....................715.........
+............$....*.............-..859.................=..248......*..........82........*.......@.......246..376.........#........*..........
+...726...898...-..772...223.712....%........%464.....342.........442..447.........461..102.....................*355...537....313..596...584.
+....*.........189........@...............................................*187........*...............*....807.............+.....*...........
+.....181.+..........197......530.653+.383...293.........461%.22*..............394....769..104...$.818.36.$....=.......&....860...333........
+..........827..........*................-....*..................110.883..................%.....56............111......872...................
+........................8.321....-............209.....578...583.....$.....948..548#..................868*678......871.......................
+......658...264...........&....105......132............./...................*..................640..................*...........714.........
+.........+.*.....................................................................608..............*....963*565.....472.......93...*.........
+...*717....14.......................702............604.608......................*.....12....689..599.............................423........
+999.........................764......*.......$780.....*.......+.......%........406....*...............278*........600*23.....407.....964....
+...........%....308................183................../......758..&..360..........127.#696...50........................839*.....&.....$...
+......277..449....*............881.......822.....905...205.........345.......572@................../733....=..61...................796......
+.......#..........659...*.....=..........................................................................665...................292..........
+......................887.711.....560..........................11...213*434...................949....761......*856...233*996......%.965.....
+.....699..../.............&....%......103...518...............................673......=.........*....@....149..............................
+............894......=......292..425.....#........@259....787..995..................927..813..326..............439.....379.547..292.........
+....901............678.217......*..............................*.......289.346..875.........*.........653+......*......*....=.....$.........
+......#........................56..887....&540..200...........824............&.....*.414=....629..............893..34.334................731
+...............476.......338........@..#............592..573*.....759...........598........$.........692..474.......*................304....
+..........................*..263*93...541....138......*..........*.....................260.187.......%...*.........436.................*....
+.....#..895............744.....................%.473...92........23..................$..#........853.....443......................12..339...
+...284...*...59*...131...............................................=....354.792...679.....649....*.......................994...%..........
+.......267............*...............176..............=.............743.........*......631......856................166.......*.............
+.....................684.................@...........773....108...........617...965....*........................958............777.....767..
+..........572................#....&.............................51........@..........190..............694..882.#......511..788..............
+...96........%.....119..4.954....81..836....@.....671....161.................*.........................#..*.......730.%...*.................
+....................@.................*...68..924...........*...644.......654.842..473.....449.............936.....*......305............980
+..........188....7..........672......596.........@........473......*..................*418....&.......302.........7...621.....476...938.*...
+.......@...*...........#824..*...303...........................%....486..........290..................*.....-907.....*.......*......*...686.
+....869....976...478*.......56..*...........*..................415......97.@605.....................129............701....626....157........
+.....................455.......306.876......829............430..................956.15@.......302..........938..............................
+..........................43.......*..............$.......-.....998...106.......=.......486*....&.......+......................982..........
+.554......................*.......50.231.........409..............+...$.....*........72.....716.........51..445.....*284........*........350
+.........425............*.94..836......&..............#516..............775.701.....*............................744..........541......-....
+....*810..............34....................&....297..........#........*....................#.............899=..........972..........27.....
+960........762.....................*........394........&355.401........347.....+853.....&...967............................*86..663.........
+............*..........991......686.25.286.......&...................................653...........914........$.....580...........*.........
+...#.....784......-.......*............*......498......*..........*..316........................&.&..........691.2.....*........91..........
+..791..............462....193..........8.............57.685.......90..........201............371.....242............996................579..
\ No newline at end of file
diff --git a/AdventOfCode/Inputs/26.txt b/AdventOfCode/Inputs/26.txt
deleted file mode 100644
index b159ea4..0000000
--- a/AdventOfCode/Inputs/26.txt
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/AdventOfCode/Program.cs b/AdventOfCode/Program.cs
index 12312e5..0739d46 100644
--- a/AdventOfCode/Program.cs
+++ b/AdventOfCode/Program.cs
@@ -1,8 +1,13 @@
+using System;
+using System.Linq;
+using AoCHelper;
+
if (args.Length == 0)
{
await Solver.SolveLast(opt => opt.ClearConsole = false);
}
-else if (args.Length == 1 && args[0].Contains("all", StringComparison.CurrentCultureIgnoreCase))
+else if (args.Length == 1 && args[0]
+ .Contains("all", StringComparison.CurrentCultureIgnoreCase))
{
await Solver.SolveAll(opt =>
{
@@ -15,4 +20,4 @@ await Solver.SolveAll(opt =>
var indexes = args.Select(arg => uint.TryParse(arg, out var index) ? index : uint.MaxValue);
await Solver.Solve(indexes.Where(i => i < uint.MaxValue));
-}
+}
\ No newline at end of file