diff --git a/AdventOfCode.csproj b/AdventOfCode.csproj
index 17d5e9e..590a043 100644
--- a/AdventOfCode.csproj
+++ b/AdventOfCode.csproj
@@ -18,4 +18,8 @@
+
+
+
+
diff --git a/Days/Day5.cs b/Days/Day5.cs
new file mode 100644
index 0000000..4ca9c16
--- /dev/null
+++ b/Days/Day5.cs
@@ -0,0 +1,122 @@
+using Spectre.Console;
+
+namespace AdventOfCode.Days;
+
+public class Day5 : Day
+{
+ public override int Number => 5;
+ public override string Name => "Print Queue";
+
+ public override void RunPart1(bool display = true)
+ {
+ var result = 0;
+
+ var precedences = new HashSet?[100];
+
+ var readingPrecedences = true;
+ foreach (var line in Input.ReadAllLines())
+ {
+ if (string.IsNullOrWhiteSpace(line))
+ {
+ readingPrecedences = false;
+
+ continue;
+ }
+
+ var span = line.AsSpan();
+ if (readingPrecedences)
+ {
+ var split = span.Split('|');
+ split.MoveNext();
+
+ var ruleTarget = int.Parse(span[split.Current]);
+
+ split.MoveNext();
+
+ var ruleNumber = int.Parse(span[split.Current]);
+
+ if (precedences[ruleTarget] is not { } precedenceSet)
+ {
+ precedenceSet = [ ruleNumber ];
+ precedences[ruleTarget] = precedenceSet;
+ }
+ else
+ {
+ precedenceSet.Add(ruleNumber);
+ }
+ }
+ else
+ {
+ result += CheckLine(span);
+ }
+ }
+
+ if (display)
+ {
+ AnsiConsole.MarkupLine($"[green]Sum of middle page numbers: [yellow]{result}[/][/]");
+ }
+
+ return;
+
+ int CheckLine(ReadOnlySpan line)
+ {
+ Span positions = stackalloc int[100];
+
+ // Read line to get positions
+ var position = 1;
+ foreach (var range in line.Split(','))
+ {
+ var number = int.Parse(line[range]);
+
+ positions[number] = position;
+
+ position++;
+ }
+
+ var middlePosition = (position - 1) / 2;
+ var middleNumber = 0;
+
+ var index = 0;
+ // Check if positions respect precedence rules
+ foreach (var range in line.Split(','))
+ {
+ var number = int.Parse(line[range]);
+
+ // Fetch middle number
+ if (index == middlePosition)
+ {
+ middleNumber = number;
+ }
+ index++;
+
+ if (precedences[number] is not { } precedenceSet)
+ {
+ continue;
+ }
+
+ var numberPosition = positions[number];
+
+ // Check all precedence rules for numbers in the list
+ foreach (var nextNumber in precedenceSet)
+ {
+ var nextNumberPosition = positions[nextNumber];
+
+ if (nextNumberPosition != 0 && numberPosition >= nextNumberPosition)
+ {
+ return 0;
+ }
+ }
+ }
+
+ return middleNumber;
+ }
+ }
+
+ public override void RunPart2(bool display = true)
+ {
+ // if (display)
+ // {
+ // AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{xmasCount}[/][/]");
+ // }
+ }
+}
\ No newline at end of file
diff --git a/Inputs/Day5.txt b/Inputs/Day5.txt
new file mode 100644
index 0000000..53df5e5
--- /dev/null
+++ b/Inputs/Day5.txt
@@ -0,0 +1,1379 @@
+91|88
+92|39
+92|57
+32|64
+32|59
+32|77
+79|66
+79|42
+79|89
+79|37
+74|32
+74|92
+74|83
+74|66
+74|41
+39|91
+39|81
+39|11
+39|71
+39|72
+39|78
+89|92
+89|35
+89|44
+89|19
+89|57
+89|42
+89|17
+78|96
+78|64
+78|44
+78|47
+78|38
+78|83
+78|63
+78|43
+28|94
+28|39
+28|89
+28|19
+28|92
+28|41
+28|35
+28|66
+28|37
+61|81
+61|96
+61|44
+61|71
+61|19
+61|63
+61|57
+61|59
+61|91
+61|77
+33|37
+33|93
+33|27
+33|79
+33|29
+33|41
+33|34
+33|97
+33|28
+33|26
+33|61
+67|78
+67|72
+67|41
+67|37
+67|17
+67|97
+67|57
+67|39
+67|42
+67|19
+67|92
+67|96
+77|27
+77|29
+77|88
+77|81
+77|11
+77|38
+77|57
+77|64
+77|63
+77|47
+77|95
+77|34
+77|28
+98|81
+98|44
+98|94
+98|54
+98|72
+98|47
+98|61
+98|71
+98|57
+98|53
+98|17
+98|11
+98|93
+98|96
+97|96
+97|19
+97|94
+97|17
+97|44
+97|64
+97|77
+97|39
+97|55
+97|37
+97|72
+97|61
+97|98
+97|92
+97|71
+42|39
+42|96
+42|64
+42|98
+42|32
+42|57
+42|35
+42|26
+42|44
+42|11
+42|19
+42|93
+42|37
+42|63
+42|94
+42|53
+19|74
+19|34
+19|79
+19|64
+19|18
+19|43
+19|11
+19|63
+19|91
+19|47
+19|83
+19|88
+19|59
+19|38
+19|81
+19|96
+19|95
+55|44
+55|71
+55|72
+55|39
+55|96
+55|98
+55|93
+55|63
+55|32
+55|61
+55|94
+55|54
+55|35
+55|26
+55|57
+55|17
+55|78
+55|81
+64|38
+64|43
+64|81
+64|67
+64|63
+64|83
+64|27
+64|29
+64|56
+64|53
+64|95
+64|33
+64|59
+64|28
+64|79
+64|66
+64|47
+64|88
+64|11
+43|26
+43|89
+43|34
+43|66
+43|97
+43|56
+43|83
+43|18
+43|32
+43|42
+43|88
+43|28
+43|27
+43|41
+43|92
+43|79
+43|37
+43|67
+43|55
+43|95
+44|74
+44|64
+44|28
+44|63
+44|53
+44|57
+44|95
+44|59
+44|29
+44|43
+44|77
+44|54
+44|83
+44|81
+44|18
+44|33
+44|79
+44|11
+44|56
+44|88
+44|47
+59|89
+59|97
+59|34
+59|27
+59|37
+59|28
+59|74
+59|88
+59|42
+59|83
+59|55
+59|29
+59|67
+59|43
+59|56
+59|33
+59|41
+59|92
+59|66
+59|26
+59|18
+59|98
+83|37
+83|29
+83|55
+83|35
+83|97
+83|56
+83|88
+83|33
+83|92
+83|28
+83|66
+83|79
+83|42
+83|89
+83|41
+83|61
+83|67
+83|32
+83|17
+83|39
+83|98
+83|26
+83|27
+37|47
+37|63
+37|93
+37|64
+37|98
+37|81
+37|11
+37|57
+37|26
+37|96
+37|32
+37|54
+37|35
+37|77
+37|71
+37|19
+37|53
+37|44
+37|94
+37|72
+37|78
+37|17
+37|39
+37|61
+57|64
+57|38
+57|29
+57|83
+57|59
+57|18
+57|79
+57|33
+57|81
+57|54
+57|27
+57|53
+57|34
+57|91
+57|66
+57|47
+57|88
+57|74
+57|28
+57|95
+57|63
+57|43
+57|11
+57|56
+53|33
+53|74
+53|18
+53|67
+53|56
+53|89
+53|43
+53|95
+53|88
+53|66
+53|63
+53|54
+53|59
+53|27
+53|34
+53|83
+53|11
+53|91
+53|47
+53|38
+53|28
+53|29
+53|81
+53|79
+54|28
+54|33
+54|43
+54|38
+54|97
+54|27
+54|89
+54|67
+54|88
+54|74
+54|42
+54|29
+54|59
+54|34
+54|18
+54|91
+54|81
+54|95
+54|79
+54|56
+54|66
+54|41
+54|83
+54|47
+63|56
+63|28
+63|67
+63|34
+63|95
+63|79
+63|33
+63|83
+63|27
+63|54
+63|88
+63|81
+63|66
+63|91
+63|89
+63|29
+63|43
+63|97
+63|38
+63|74
+63|59
+63|18
+63|47
+63|11
+71|19
+71|94
+71|91
+71|88
+71|59
+71|77
+71|33
+71|44
+71|18
+71|53
+71|38
+71|96
+71|57
+71|81
+71|43
+71|74
+71|72
+71|64
+71|83
+71|54
+71|63
+71|95
+71|11
+71|47
+94|81
+94|63
+94|91
+94|33
+94|96
+94|43
+94|57
+94|53
+94|29
+94|54
+94|19
+94|72
+94|95
+94|64
+94|11
+94|18
+94|59
+94|47
+94|88
+94|83
+94|74
+94|44
+94|38
+94|77
+47|74
+47|56
+47|29
+47|28
+47|67
+47|95
+47|91
+47|97
+47|92
+47|18
+47|59
+47|55
+47|41
+47|38
+47|42
+47|79
+47|27
+47|89
+47|43
+47|88
+47|34
+47|33
+47|83
+47|66
+93|78
+93|96
+93|38
+93|43
+93|11
+93|64
+93|72
+93|44
+93|77
+93|19
+93|59
+93|95
+93|94
+93|53
+93|71
+93|83
+93|47
+93|18
+93|91
+93|54
+93|74
+93|81
+93|57
+93|63
+26|61
+26|32
+26|19
+26|72
+26|78
+26|39
+26|54
+26|93
+26|53
+26|71
+26|38
+26|91
+26|81
+26|94
+26|44
+26|77
+26|57
+26|35
+26|17
+26|11
+26|64
+26|96
+26|63
+26|47
+56|71
+56|67
+56|93
+56|32
+56|42
+56|39
+56|55
+56|97
+56|27
+56|28
+56|61
+56|41
+56|89
+56|17
+56|19
+56|35
+56|26
+56|66
+56|37
+56|92
+56|72
+56|98
+56|78
+56|94
+34|39
+34|66
+34|98
+34|89
+34|78
+34|37
+34|94
+34|17
+34|67
+34|92
+34|71
+34|35
+34|32
+34|27
+34|93
+34|26
+34|42
+34|97
+34|61
+34|56
+34|28
+34|41
+34|55
+34|79
+18|88
+18|32
+18|83
+18|34
+18|27
+18|79
+18|67
+18|74
+18|28
+18|26
+18|33
+18|37
+18|41
+18|42
+18|98
+18|92
+18|97
+18|39
+18|29
+18|89
+18|66
+18|95
+18|56
+18|55
+95|41
+95|26
+95|56
+95|79
+95|92
+95|28
+95|39
+95|88
+95|97
+95|42
+95|89
+95|27
+95|34
+95|83
+95|35
+95|37
+95|55
+95|67
+95|74
+95|66
+95|32
+95|98
+95|29
+95|33
+66|67
+66|17
+66|94
+66|42
+66|61
+66|93
+66|97
+66|19
+66|71
+66|32
+66|98
+66|37
+66|96
+66|35
+66|89
+66|72
+66|77
+66|39
+66|44
+66|92
+66|41
+66|26
+66|55
+66|78
+38|74
+38|88
+38|92
+38|59
+38|34
+38|79
+38|29
+38|89
+38|42
+38|33
+38|95
+38|41
+38|66
+38|97
+38|18
+38|91
+38|56
+38|37
+38|28
+38|43
+38|83
+38|67
+38|55
+38|27
+72|11
+72|83
+72|59
+72|96
+72|53
+72|57
+72|34
+72|81
+72|77
+72|47
+72|33
+72|88
+72|38
+72|63
+72|19
+72|95
+72|64
+72|91
+72|54
+72|29
+72|74
+72|18
+72|44
+72|43
+81|41
+81|88
+81|66
+81|74
+81|95
+81|43
+81|18
+81|56
+81|38
+81|91
+81|27
+81|59
+81|42
+81|28
+81|33
+81|92
+81|34
+81|47
+81|79
+81|67
+81|83
+81|97
+81|89
+81|29
+88|93
+88|55
+88|32
+88|97
+88|27
+88|41
+88|61
+88|66
+88|28
+88|34
+88|26
+88|79
+88|33
+88|29
+88|39
+88|98
+88|89
+88|17
+88|37
+88|42
+88|35
+88|56
+88|67
+88|92
+17|94
+17|96
+17|93
+17|38
+17|81
+17|44
+17|53
+17|54
+17|59
+17|47
+17|63
+17|78
+17|95
+17|72
+17|43
+17|57
+17|18
+17|64
+17|61
+17|91
+17|71
+17|77
+17|19
+17|11
+27|41
+27|55
+27|92
+27|39
+27|42
+27|93
+27|72
+27|89
+27|66
+27|97
+27|67
+27|35
+27|37
+27|98
+27|71
+27|17
+27|78
+27|26
+27|96
+27|94
+27|19
+27|44
+27|61
+27|32
+35|81
+35|71
+35|11
+35|17
+35|57
+35|19
+35|77
+35|72
+35|59
+35|91
+35|54
+35|44
+35|78
+35|18
+35|64
+35|47
+35|53
+35|94
+35|61
+35|96
+35|38
+35|43
+35|93
+35|63
+29|32
+29|42
+29|28
+29|78
+29|67
+29|61
+29|17
+29|27
+29|35
+29|92
+29|26
+29|79
+29|66
+29|34
+29|55
+29|71
+29|37
+29|56
+29|93
+29|97
+29|39
+29|89
+29|41
+29|98
+96|53
+96|79
+96|56
+96|44
+96|91
+96|57
+96|83
+96|64
+96|54
+96|33
+96|47
+96|34
+96|18
+96|59
+96|95
+96|81
+96|43
+96|77
+96|88
+96|11
+96|74
+96|29
+96|63
+96|38
+11|28
+11|47
+11|67
+11|41
+11|34
+11|89
+11|97
+11|56
+11|95
+11|88
+11|38
+11|79
+11|81
+11|27
+11|91
+11|74
+11|33
+11|18
+11|29
+11|54
+11|66
+11|83
+11|43
+11|59
+41|17
+41|39
+41|53
+41|94
+41|61
+41|44
+41|98
+41|32
+41|92
+41|78
+41|63
+41|77
+41|57
+41|42
+41|71
+41|96
+41|35
+41|64
+41|37
+41|72
+41|19
+41|26
+41|93
+41|55
+91|59
+91|66
+91|92
+91|79
+91|18
+91|67
+91|97
+91|56
+91|95
+91|89
+91|28
+91|83
+91|98
+91|37
+91|27
+91|43
+91|55
+91|33
+91|29
+91|42
+91|41
+91|34
+91|74
+92|78
+92|44
+92|55
+92|26
+92|77
+92|11
+92|54
+92|19
+92|53
+92|72
+92|17
+92|32
+92|37
+92|71
+92|35
+92|94
+92|61
+92|63
+92|93
+92|96
+92|98
+92|64
+32|96
+32|94
+32|35
+32|19
+32|53
+32|11
+32|93
+32|61
+32|47
+32|57
+32|44
+32|78
+32|71
+32|54
+32|91
+32|38
+32|81
+32|63
+32|17
+32|72
+32|39
+79|94
+79|32
+79|56
+79|93
+79|92
+79|71
+79|17
+79|27
+79|39
+79|55
+79|78
+79|41
+79|97
+79|98
+79|61
+79|72
+79|67
+79|26
+79|35
+79|28
+74|55
+74|67
+74|56
+74|26
+74|98
+74|37
+74|17
+74|79
+74|33
+74|28
+74|97
+74|89
+74|88
+74|42
+74|27
+74|29
+74|34
+74|35
+74|39
+39|47
+39|64
+39|35
+39|63
+39|54
+39|96
+39|38
+39|19
+39|44
+39|77
+39|59
+39|94
+39|53
+39|17
+39|61
+39|43
+39|93
+39|57
+89|97
+89|77
+89|72
+89|94
+89|39
+89|78
+89|93
+89|26
+89|37
+89|98
+89|71
+89|96
+89|41
+89|61
+89|55
+89|64
+89|32
+78|74
+78|19
+78|18
+78|95
+78|94
+78|91
+78|72
+78|59
+78|53
+78|88
+78|54
+78|77
+78|11
+78|57
+78|71
+78|81
+28|17
+28|71
+28|97
+28|27
+28|93
+28|78
+28|98
+28|72
+28|67
+28|96
+28|55
+28|26
+28|42
+28|32
+28|61
+61|93
+61|74
+61|11
+61|43
+61|18
+61|94
+61|64
+61|38
+61|47
+61|78
+61|72
+61|95
+61|54
+61|53
+33|32
+33|78
+33|92
+33|55
+33|66
+33|39
+33|35
+33|89
+33|17
+33|42
+33|67
+33|56
+33|98
+67|93
+67|61
+67|98
+67|55
+67|44
+67|77
+67|26
+67|71
+67|94
+67|32
+67|89
+67|35
+77|43
+77|33
+77|54
+77|79
+77|83
+77|56
+77|18
+77|53
+77|74
+77|91
+77|59
+98|38
+98|35
+98|63
+98|77
+98|39
+98|19
+98|26
+98|64
+98|32
+98|78
+97|57
+97|78
+97|53
+97|26
+97|35
+97|93
+97|42
+97|41
+97|32
+42|55
+42|17
+42|78
+42|77
+42|92
+42|71
+42|72
+42|61
+19|29
+19|33
+19|57
+19|53
+19|54
+19|44
+19|77
+55|19
+55|11
+55|77
+55|37
+55|64
+55|53
+64|34
+64|18
+64|91
+64|74
+64|54
+43|74
+43|33
+43|29
+43|98
+44|34
+44|38
+44|91
+59|79
+59|95
+83|34
+
+33,27,67,97,92,32,93
+26,11,53,72,61,92,17,77,37
+63,95,74,83,33,79,56,28,89
+89,26,32,39,61,71,19
+41,26,61,19,57,64,53
+96,43,78,17,63,81,54,64,72,53,35
+81,38,59,43,18,83,88,29,79,56,27,66,67,41,42
+17,55,97,71,77,37,78,94,39,89,44,42,35,32,19
+32,33,92,39,42,37,61,98,17,66,41,79,67,35,26,29,34,89,93,55,27
+66,55,26,93,78,72,44
+92,55,37,32,35,17,61,93,71,94,19,57,64,53,11
+59,43,18,74,83,88,33,29,34,79,67,89,41,42,92,37,98
+67,98,26,35,17,93,94
+32,39,35,78,19,77,63,38,91
+96,44,77,57,63,54,81,47,43,18,88,33,29
+47,54,63,83,43,88,96,94,81,33,57
+26,32,27,17,94,41,66
+95,74,83,34,79,56,28,27,66,97,41,42,55,37,98,32,39
+26,32,93,78,96,44,63,47,38
+95,74,83,88,33,29,34,79,56,28,27,66,67,89,97,41,42,92,55,37,26,32,39
+77,28,91,38,11,64,34
+96,91,47,74,53,43,34,38,81,54,44,77,95,19,64
+83,18,89,43,28,95,34,41,97,79,98,27,67,92,37,66,74,42,29,56,88,55,26
+39,61,35,96,17,92,66,32,72,67,89,71,97,78,42,93,98,26,94,41,37
+19,77,97,78,37,64,98,92,96,61,17,71,72,26,93,94,55,57,39
+81,47,38,91,59,43,18,95,74,83,88,33,29,34,56,28,27,66,67,89,97,41,42
+64,53,63,81,43,18,95,74,29,34,66
+71,42,98,17,37,97,96,55,89,39,78,35,66,19,44,92,94,32,72,41,93,26,61
+79,34,37,28,66,97,32,26,42,71,92,55,39
+57,11,81,47,38,91,59,43,18,83,88,34,79,28,27
+56,34,35,66,28,32,55,42,98,97,92,17,37,41,29,39,79,88,26,61,27
+53,27,63,95,29,38,67
+29,34,56,66,67,97,41,55,37,98,26,32,61
+61,64,53,71,37,19,39,72,42,78,26,57,92
+33,29,79,41,39,35,17,61,93
+35,74,83,55,89,41,66,32,79,56,88,92,27,34,29,97,33
+35,44,77,53,63,17,11,71,43
+28,27,66,67,97,55,37,32,39,35,17,61,78,94,19
+33,29,56,28,66,67,89,97,41,42,92,55,98,26,32,39,35,17,93
+98,32,39,78,71,19,96,57,53,63,11,81,47
+55,37,32,17,78,71,72,19,63
+71,97,17,92,67,93,27,56,78,41,61,79,28,42,34,39,66,37,35,26,98,89,32
+55,92,56,67,29,38,33
+35,17,61,93,78,71,94,72,19,96,44,77,64,53,11,54,81,47,38,91,43
+95,83,88,33,29,79,67,89,92,55,37,26,32
+88,33,29,79,27,66,41,42,55,37,26,32,61
+96,26,71,41,53,42,94,19,77
+32,29,79,42,39
+92,55,37,98,26,32,39,35,17,61,93,78,71,94,72,19,44,77,57,64,53,63,11
+67,97,42,55,98,26,32,39,35,61,93,78,19,96,77
+43,88,33,29,34,79,28,27,66,89,97,41,92
+72,98,67,89,92,77,26
+54,91,59,74,88,34,28
+88,77,19,95,53
+39,61,93,78,71,94,19,96,44,77,57,64,53,63,11,54,81,47,91
+19,44,77,57,64,11,81,38,91,43,88,33,34
+74,42,29,59,34,41,97,66,38,83,56,89,79,28,18
+53,63,11,54,47,38,59,43,18,95,74,29,34,79,27
+37,98,32,35,17,93,71,19,44,53,63,11,81
+38,91,59,43,18,95,74,83,88,33,34,79,56,28,27,66,67,89,97,41,42,92,55
+77,57,64,53,63,11,81,38,91,59,43,18,74,83,88,29,34,56,28
+54,81,47,59,43,95,74,83,88,33,29,34,79,67,89,97,41
+93,19,44,57,64,53,63,47,38,91,18,95,74
+59,43,18,74,83,88,33,79,56,28,27,66,67,89,97,41,42,92,55,37,98
+97,41,78,67,71,27,92,94,61,17,26,96,93,37,98
+61,78,77,53,63,11,54,47,59,18,95
+28,27,66,67,89,97,41,92,55,37,98,32,39,35,61,93,78,71,94,72,19
+11,81,59,18,95,34,97
+26,35,19,77,54,47,38
+59,33,18,91,88,97,28,41,43,74,54
+81,38,43,18,95,74,83,88,29,34,79,56,28,27,66,67,89
+57,53,47,59,74,88,56,28,27
+17,61,93,78,94,72,19,96,44,77,57,64,53,11,81,47,91,43,18
+98,26,39,35,17,61,71,94,72,19,96,77,57,64,53,63,54,81,47
+38,91,59,18,29,79,27,66,89,97,41
+44,64,33,95,94,72,54
+18,74,27,89,92,98,32
+53,64,11,93,38,43,72,47,71,54,94,81,77,91,95,19,63
+57,64,81,47,38,91,95,74,33,34,27
+78,61,66,27,56
+42,55,37,98,26,32,39,17,61,93,78,94,72,19,44,77,57,64,63
+19,18,47,59,64,54,74,72,78,57,91,43,96,94,95,77,71,53,11,38,81
+53,54,47,83,34,56,67
+29,95,74,54,38,88,83,27,59,28,91,33,66,43,11,53,34,56,64
+26,28,71,97,92,32,56,67,61,72,89,55,39,27,98,17,35,37,93,78,66,41,42
+42,55,37,98,26,32,39,35,17,61,93,71,94,72,19,77,64,53,63
+39,93,94,72,44,64,47,91,59
+72,19,96,57,64,11,54,81,38,91,18,83,88,33,29
+33,29,34,79,56,28,27,67,89,97,41,92,37,98,26,32,17,61,93
+64,53,63,54,81,47,38,91,43,18,74,83,33,29,79,56,28
+47,34,81,56,88,91,57,29,77,28,74
+56,92,37,93,78,71,72
+96,32,72,57,93,71,19,81,37
+91,43,18,95,74,88,29,34,56,28,27,67,89,97,41,42,92,55,37
+38,43,18,95,33,29,34,79,56,28,27,66,97,42,55
+72,19,96,57,53,11,81,38,91,59,43,95,74,88,29
+79,56,28,27,67,89,97,41,92,37,98,39,17,93,94
+19,39,97,72,35,92,93,17,37,64,61,41,94
+54,81,47,38,91,59,43,18,95,74,83,88,33,29,34,79,66,67,89,97,41
+81,47,38,95,74,83,88,33,29,34,79,56,28,66,67,89,97,41,42
+53,71,95,38,59,83,77,78,47
+44,83,63,74,29,19,47,72,88,54,81,53,43,96,95,59,33,11,57
+77,64,11,54,47,91,43,95,74,83,33
+64,61,35,63,98,72,55,44,57
+67,18,88,98,55,41,97
+91,59,43,18,95,74,83,88,33,29,34,79,56,28,27,66,67,89,97,41,42,55,37
+32,35,17,61,19
+83,33,29,28,27,67,37,98,17
+74,89,28,27,83,92,79,59,41,56,95,18,38,34,97,42,29,67,47,33,91
+95,74,83,88,33,29,79,28,27,66,67,89,97,41,42,92,55,37,26,32,39
+47,26,19,11,57,61,81,94,78,39,72,38,77,63,17,53,64
+33,11,34,19,44,77,83
+81,38,91,59,18,95,83,88,33,29,34,79,56,28,27,66,67,89,97
+55,98,39,35,17,93,78,94,19,77,64,53,63,11,54
+28,17,35,32,42,97,71
+19,94,61,96,67,41,44,97,42,26,71,72,39,37,35
+63,83,38,77,59,53,57,28,18,64,56
+77,64,53,63,54,81,38,91,59,95,74,83,88,33,34,56,28
+28,66,89,97,92,37,98,39,35,17,93,71,19
+39,32,29,95,33,37,28,27,26,66,89
+94,72,44,77,57,64,53,11,38,59,43,18,74,83,33
+57,64,63,11,81,38,91,59,43,18,95,74,83,88,33,29,34,79,56,28,27
+55,98,26,35,17,61,93,71,94,19,44,77,57,64,53,63,54
+61,72,63,53,64,71,96,44,38,93,57,94,17,26,19,54,47
+96,44,53,81,59,43,95
+33,11,77,81,96,47,38,91,43,83,57,44,29,54,63,19,88,53,18,59,74,64,72
+47,95,83,66,89
+37,98,26,32,39,61,93,78,71,94,72,19,96,44,77,57,64,63,11,54,81
+63,18,95,79,33,81,44,77,88,59,29,74,47,11,34,56,43,53,57
+29,95,33,59,64,18,81,53,28,43,63,34,56,74,91,54,57,11,47,83,27,79,38
+91,43,95,88,56,66,67,89,97,92,55
+35,61,93,71,94,72,19,96,57,64,53,63,81,47,91,59,43
+28,66,55,98,26,39,17,61,78,71,94
+74,28,81,97,47,59,88,38,67,18,34,54,11,79,95,89,91
+78,97,55,19,37,27,93,39,94,98,32,35,42,28,89,92,72
+71,94,72,96,44,77,57,64,53,63,11,91,59,18,95,83,88
+95,74,33,34,79,28,89,41,39
+71,94,96,57,63
+28,18,92,29,26,67,97,32,74,27,89
+56,27,66,67,89,97,42,92,55,37,26,32,35,17,61,93,78,94,72
+47,95,96,54,63,77,29,88,18,91,74,83,81,57,59,38,64,34,44,33,79
+53,63,11,54,81,47,38,91,59,43,18,88,79,56,28,66,67
+44,77,53,63,11,81,47,38,91,59,43,18,95,74,83,88,33,29,34,79,56
+63,11,81,18,74,28,89
+34,56,66,89,42,92,17,61,71
+79,74,43,38,27,55,29
+96,78,11,81,83,77,71
+57,77,11,44,38,34,53,88,47,91,56
+74,29,34,79,56,28,66,67,89,41,42,92,55,37,98,26,32,39,35
+63,47,81,17,53,72,94,39,35,64,77,61,93,78,11,98,57
+96,44,77,57,64,53,63,11,54,81,38,91,59,43,18,95,74,83,88,33,29,34,79
+67,89,97,41,42,92,55,37,98,26,32,39,35,17,61,93,71,94,72,19,96,44,77
+19,44,77,53,81,47,38,91,43,18,95,74,83,88,29
+94,96,93,63,57,81,95,78,44,53,11,77,71,54,43,64,19,91,59,47,74,72,38
+56,28,27,97,41,42,37,26,32,39,35,17,61,93,78
+17,93,78,94,72,53,11,43,18
+29,54,18,59,63,34,38,74,83,28,57,95,77,79,81,47,91
+66,92,55,26,17,72,44
+28,61,92,97,56,29,67,27,78,98,55,26,42,79,17,41,39,89,34
+95,74,83,33,29,34,79,56,67,89,41,42,92,55,98,32,39
+67,89,92,55,98,32,17,78,71
+71,72,44,77,63,54,47,38,59,43,18,74,88
+35,17,61,93,78,71,94,72,96,44,77,57,64,53,63,11,54,81,47,38,91,59,43
+17,71,19,44,77
+18,64,47,59,72,93,94,95,57,54,38,81,91,44,63,53,78,61,71,43,11
+83,56,98,95,55,28,97,59,34,27,18,79,43,74,37
+78,57,44,61,39,59,38,63,17,81,72
+64,18,95,74,88,34,66
+66,67,37,98,61
+64,47,38,91,59,43,74,88,34,28,66
+71,94,72,19,96,44,77,53,63,54,47,38,59,43,18,95,74,83,88
+47,38,59,43,18,95,74,83,88,33,29,34,79,56,28,27,66,67,89,97,41,42,92
+97,41,92,26,61,93,71,94,19,44,64
+41,55,53,61,44,42,39,77,37,98,72,92,94
+19,59,74,78,47,71,94,95,38,91,53,93,64,11,57,43,44
+78,71,19,44,77,57,64,63,11,54,81,47,38,91,43,74,83
+17,66,27,88,28,35,56,33,67,32,92,89,34,37,41,26,83,29,79,42,97,98,39
+39,42,32,17,92,27,98,55,41,71,67,96,35
+26,32,35,17,61,93,78,72,19,96,44,77,57,64,53,63,11,54,81,47,38
+44,11,93,43,74,53,91,54,95,64,63,81,96
+42,18,83,88,27
+39,17,93,44,57,64,63,81,59
+89,98,17,78,19,96,57
+55,98,89,71,93,42,35,92,79,61,37,66,97,78,39,26,34
+53,63,11,54,81,47,38,91,59,43,95,74,83,88,33,29,34,79,56,28,27,66,67
+96,42,17,35,92,44,89,55,94,57,61
+79,64,96,63,54,47,83,88,18,43,74,44,59
+39,35,41,61,97,42,37
+56,28,97,42,92,37,26,17,78
+27,55,18,88,74,38,56,67,91,83,42,79,41,43,28,66,92
+42,92,26,61,93,72,19
+44,77,53,63,11,54,47,38,91,43,18,95,83,88,34
+32,39,35,17,61,93,78,71,94,72,19,96,44,77,57,53,63,11,54,81,47,38,91
+53,83,29,33,63,34,27,56,79,81,47
+44,93,89,32,61,92,94,26,66,42,55,78,96,97,17
+92,55,98,61,94,96,77,57,53,63,11
+42,88,92,89,74,27,98,28,33,41,83,18,66,79,97,43,55,59,34,37,29,56,95
+44,77,57,53,63,54,43,18,95,88,34
+41,93,26,42,39,35,97
+18,64,74,88,96,59,81,38,95,83,77
+56,28,27,67,89,97,41,42,92,55,37,98,39,35,17,61,93,78,71,94,72
+98,39,55,19,78,67,27,96,72,37,66
\ No newline at end of file