Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ded4631c3b | |||
| 6cf07be0c6 | |||
| e7afab8c99 | |||
| f100c7596b | |||
| 04102d1fec | |||
| a805b5b96a | |||
| 533c7437dc | |||
| 0c3a8478d4 | |||
| f8843866ca |
@@ -2,15 +2,15 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<LangVersion>latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.13.2" />
|
||||
<PackageReference Include="Spectre.Console" Version="0.45.0" />
|
||||
<PackageReference Include="BenchmarkDotNet" Version="0.15.8" />
|
||||
<PackageReference Include="Spectre.Console" Version="0.54.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@@ -18,4 +18,8 @@
|
||||
<EmbeddedResource Include="Inputs\*" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="Inputs\Day8.txt" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace AdventOfCode;
|
||||
[MemoryDiagnoser(false)]
|
||||
public class DayBenchmark
|
||||
{
|
||||
private Day Day { get; } = new Day10();
|
||||
private Day Day { get; } = new Day6();
|
||||
|
||||
[GlobalSetup]
|
||||
public void Setup()
|
||||
|
||||
77
Days/Day1.cs
77
Days/Day1.cs
@@ -5,60 +5,83 @@ namespace AdventOfCode.Days;
|
||||
public class Day1 : Day
|
||||
{
|
||||
public override int Number => 1;
|
||||
public override string Name => "Historian Hysteria";
|
||||
public override string Name => "Secret Entrance";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
List<int> leftNumbers = [];
|
||||
List<int> rightNumbers = [];
|
||||
var password = 0;
|
||||
var dialPosition = 50;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
foreach (var line in Input.EnumerateLines())
|
||||
{
|
||||
var separatorIndex = line.IndexOf(' ');
|
||||
var direction = line[0];
|
||||
var offset = int.Parse(line[1..]);
|
||||
|
||||
leftNumbers.Add(int.Parse(line[..separatorIndex]));
|
||||
rightNumbers.Add(int.Parse(line[(separatorIndex + 1)..]));
|
||||
var sign = direction is 'L'
|
||||
? -1
|
||||
: +1;
|
||||
|
||||
dialPosition = MathMod(dialPosition + (offset * sign), 100);
|
||||
|
||||
if (dialPosition is 0)
|
||||
{
|
||||
password++;
|
||||
}
|
||||
}
|
||||
|
||||
leftNumbers.Sort();
|
||||
rightNumbers.Sort();
|
||||
|
||||
var totalDistance = leftNumbers.Zip(rightNumbers, (a, b) => Math.Abs(a - b)).Sum();
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Total distance is: [yellow]{totalDistance}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]Safe password is: [yellow]{password}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
List<int> leftNumbers = [];
|
||||
Dictionary<int, int> rightNumbersCount = [];
|
||||
var similarityScore = 0;
|
||||
var password = 0;
|
||||
var dialPosition = 50;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
foreach (var line in Input.EnumerateLines())
|
||||
{
|
||||
var separatorIndex = line.IndexOf(' ');
|
||||
var direction = line[0];
|
||||
var offset = int.Parse(line[1..]);
|
||||
|
||||
leftNumbers.Add(int.Parse(line[..separatorIndex]));
|
||||
var originalSign = Math.Sign(dialPosition);
|
||||
|
||||
var rightNumber = int.Parse(line[(separatorIndex + 1)..]);
|
||||
var sign = direction is 'L'
|
||||
? -1
|
||||
: +1;
|
||||
|
||||
if (!rightNumbersCount.TryAdd(rightNumber, 1))
|
||||
dialPosition = dialPosition + (offset * sign);
|
||||
|
||||
int clickCount;
|
||||
if (dialPosition is 0)
|
||||
{
|
||||
rightNumbersCount[rightNumber]++;
|
||||
clickCount = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
clickCount = Math.Abs(dialPosition) / 100; // Number of times the dial passed by 0
|
||||
|
||||
foreach (var leftNumber in leftNumbers)
|
||||
{
|
||||
similarityScore += leftNumber * rightNumbersCount.GetValueOrDefault(leftNumber);
|
||||
// If we did a loop around it counts as a "click" too
|
||||
if (originalSign != 0 && originalSign != Math.Sign(dialPosition))
|
||||
{
|
||||
clickCount++;
|
||||
}
|
||||
}
|
||||
|
||||
dialPosition = MathMod(dialPosition, 100);
|
||||
|
||||
password += clickCount;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Similarity score is: [yellow]{similarityScore}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]Safe password is: [yellow]{password}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private static int MathMod(int left, int right)
|
||||
{
|
||||
return (Math.Abs(left * right) + left) % right;
|
||||
}
|
||||
}
|
||||
169
Days/Day10.cs
169
Days/Day10.cs
@@ -1,169 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day10 : Day
|
||||
{
|
||||
public override int Number => 10;
|
||||
public override string Name => "Hoof It";
|
||||
|
||||
private const int MapSize = 60;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var hikingTrailsScores = 0;
|
||||
|
||||
var (heightMap, trailHeads) = ParseMap();
|
||||
|
||||
var hikingTrails = new HashSet<Point>();
|
||||
|
||||
foreach (var trailHead in trailHeads)
|
||||
{
|
||||
hikingTrails.Clear();
|
||||
|
||||
GetHikingTrailScore(trailHead, -1);
|
||||
|
||||
hikingTrailsScores += hikingTrails.Count;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Sum of scores of hiking trails: [yellow]{hikingTrailsScores}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
void GetHikingTrailScore(Point position, int previousHeight)
|
||||
{
|
||||
// Out of bounds
|
||||
if (position is { X: < 0 or >= MapSize } or { Y: < 0 or >= MapSize })
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var height = heightMap[position.X, position.Y];
|
||||
|
||||
if (height - previousHeight is not 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (height == 9)
|
||||
{
|
||||
hikingTrails.Add(position);
|
||||
}
|
||||
|
||||
|
||||
GetHikingTrailScore(position + (1, 0), height);
|
||||
GetHikingTrailScore(position + (-1, 0), height);
|
||||
GetHikingTrailScore(position + (0, 1), height);
|
||||
GetHikingTrailScore(position + (0, -1), height);
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (heightMap, trailHeads) = ParseMap();
|
||||
|
||||
var totalRating = 0;
|
||||
|
||||
foreach (var trailHead in trailHeads)
|
||||
{
|
||||
GetHikingTrailRating(trailHead, -1);
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Total rating of hiking trails: [yellow]{totalRating}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
void GetHikingTrailRating(Point position, int previousHeight)
|
||||
{
|
||||
// Out of bounds
|
||||
if (position is { X: < 0 or >= MapSize } or { Y: < 0 or >= MapSize })
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var height = heightMap[position.X, position.Y];
|
||||
|
||||
if (height - previousHeight is not 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (height == 9)
|
||||
{
|
||||
totalRating++;
|
||||
}
|
||||
|
||||
GetHikingTrailRating(position + (1, 0), height);
|
||||
GetHikingTrailRating(position + (-1, 0), height);
|
||||
GetHikingTrailRating(position + (0, 1), height);
|
||||
GetHikingTrailRating(position + (0, -1), height);
|
||||
}
|
||||
}
|
||||
|
||||
private (byte[,] HeightMap, List<Point> TrailHeads) ParseMap()
|
||||
{
|
||||
var heightMap = new byte[MapSize, MapSize];
|
||||
var trailHeads = new List<Point>();
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var x = 0;
|
||||
foreach (var height in line)
|
||||
{
|
||||
var heightValue = height - '0';
|
||||
|
||||
if (heightValue is 0)
|
||||
{
|
||||
trailHeads.Add(new Point(x, y));
|
||||
}
|
||||
|
||||
heightMap[x, y] = (byte)heightValue;
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return (heightMap, trailHeads);
|
||||
}
|
||||
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
127
Days/Day11.cs
127
Days/Day11.cs
@@ -1,127 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day11 : Day
|
||||
{
|
||||
public override int Number => 11;
|
||||
public override string Name => "Plutonian Pebbles";
|
||||
|
||||
private const int BlinkIterations = 25;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var stones = ParseStones();
|
||||
|
||||
for (var iteration = 0; iteration < BlinkIterations; iteration++)
|
||||
{
|
||||
var index = 0;
|
||||
|
||||
while (index < stones.Count)
|
||||
{
|
||||
var stone = stones[index];
|
||||
var stoneString = stone.ToString();
|
||||
|
||||
if (stone is 0)
|
||||
{
|
||||
stones[index] = 1;
|
||||
}
|
||||
else if (stoneString.Length % 2 == 0)
|
||||
{
|
||||
var splitIndex = stoneString.Length / 2;
|
||||
|
||||
var leftStone = long.Parse(stoneString[..splitIndex]);
|
||||
var rightStone = long.Parse(stoneString[splitIndex..]);
|
||||
|
||||
stones[index] = leftStone;
|
||||
stones.Insert(index + 1, rightStone);
|
||||
|
||||
index++;
|
||||
}
|
||||
else
|
||||
{
|
||||
stones[index] = stone * 2024;
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of stones after blinking {BlinkIterations} times: [yellow]{stones.Count}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var stones = ParseStones().ToDictionary(s => s, _ => 1L);
|
||||
|
||||
for (var iteration = 0; iteration < (BlinkIterations * 3); iteration++)
|
||||
{
|
||||
var stonesToIterate = stones.ToList();
|
||||
|
||||
foreach (var (stone, count) in stonesToIterate)
|
||||
{
|
||||
var stoneString = stone.ToString();
|
||||
|
||||
if (stone is 0)
|
||||
{
|
||||
SafeAdd(stones, 1, count);
|
||||
}
|
||||
else if (stoneString.Length % 2 == 0)
|
||||
{
|
||||
var splitIndex = stoneString.Length / 2;
|
||||
|
||||
var leftStone = long.Parse(stoneString[..splitIndex]);
|
||||
var rightStone = long.Parse(stoneString[splitIndex..]);
|
||||
|
||||
SafeAdd(stones, leftStone, count);
|
||||
SafeAdd(stones, rightStone, count);
|
||||
}
|
||||
else
|
||||
{
|
||||
SafeAdd(stones, stone * 2024, count);
|
||||
|
||||
}
|
||||
|
||||
SafeAdd(stones, stone, -count);
|
||||
}
|
||||
}
|
||||
|
||||
var stonesCount = stones.Sum(p => p.Value);
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of stones after blinking {BlinkIterations} times: [yellow]{stonesCount}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private List<long> ParseStones()
|
||||
{
|
||||
var stones = new List<long>();
|
||||
|
||||
var span = Input.AsSpan();
|
||||
|
||||
foreach (var stoneRange in span.Split(' '))
|
||||
{
|
||||
stones.Add(long.Parse(span[stoneRange]));
|
||||
}
|
||||
|
||||
return stones;
|
||||
}
|
||||
|
||||
private void SafeAdd(Dictionary<long, long> dictionary, long key, long valueToAdd)
|
||||
{
|
||||
if (dictionary.TryGetValue(key, out var currentValue))
|
||||
{
|
||||
dictionary[key] = currentValue + valueToAdd;
|
||||
}
|
||||
else
|
||||
{
|
||||
dictionary[key] = valueToAdd;
|
||||
}
|
||||
}
|
||||
}
|
||||
155
Days/Day12.cs
155
Days/Day12.cs
@@ -1,155 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day12 : Day
|
||||
{
|
||||
public override int Number => 12;
|
||||
public override string Name => "Garden Groups";
|
||||
|
||||
private const int GridSize = 140;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var areas = ParseAreas();
|
||||
|
||||
var visited = new HashSet<Point>();
|
||||
var totalPrice = 0;
|
||||
|
||||
var currentArea = 0;
|
||||
var currentPerimeter = 0;
|
||||
|
||||
for (var y = 0; y < GridSize; y++)
|
||||
{
|
||||
for (var x = 0; x < GridSize; x++)
|
||||
{
|
||||
// Skip already visited points
|
||||
if (visited.Contains(new Point(x, y)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var id = areas[x, y];
|
||||
|
||||
ComputeAreaPrice(new Point(x, y), id, ref currentArea, ref currentPerimeter);
|
||||
|
||||
// Add price of fencing this area
|
||||
totalPrice += currentArea * currentPerimeter;
|
||||
|
||||
currentArea = 0;
|
||||
currentPerimeter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Total pricing: [yellow]{totalPrice}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
void ComputeAreaPrice(Point position, byte id, ref int area, ref int perimeter)
|
||||
{
|
||||
if (!visited.Add(position))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Update area and perimeter
|
||||
area++;
|
||||
perimeter += 4;
|
||||
|
||||
var left = position with { X = position.X - 1 };
|
||||
var right = position with { X = position.X + 1 };
|
||||
var up = position with { Y = position.Y - 1 };
|
||||
var down = position with { Y = position.Y + 1 };
|
||||
|
||||
if (left is { X: >= 0 and < GridSize } && areas[left.X, left.Y] == id)
|
||||
{
|
||||
perimeter--;
|
||||
|
||||
ComputeAreaPrice(left, id, ref area, ref perimeter);
|
||||
}
|
||||
|
||||
if (right is { X: >= 0 and < GridSize } && areas[right.X, right.Y] == id)
|
||||
{
|
||||
perimeter--;
|
||||
|
||||
ComputeAreaPrice(right, id, ref area, ref perimeter);
|
||||
}
|
||||
|
||||
if (up is { Y: >= 0 and < GridSize } && areas[up.X, up.Y] == id)
|
||||
{
|
||||
perimeter--;
|
||||
|
||||
ComputeAreaPrice(up, id, ref area, ref perimeter);
|
||||
}
|
||||
|
||||
if (down is { Y: >= 0 and < GridSize } && areas[down.X, down.Y] == id)
|
||||
{
|
||||
perimeter--;
|
||||
|
||||
ComputeAreaPrice(down, id, ref area, ref perimeter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private byte[,] ParseAreas()
|
||||
{
|
||||
var areas = new byte[GridSize, GridSize];
|
||||
|
||||
int y = 0;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
int x = 0;
|
||||
|
||||
foreach (var area in line)
|
||||
{
|
||||
areas[x, y] = (byte)(area - 'A');
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return areas;
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day13 : Day
|
||||
{
|
||||
public override int Number => 13;
|
||||
public override string Name => "Claw Contraption";
|
||||
|
||||
private const int MaxButtonPress = 100;
|
||||
private const int ButtonACost = 3;
|
||||
private const int ButtonBCost = 1;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var lines = Input.AsSpan().EnumerateLines();
|
||||
|
||||
var minimumTokensToWin = 0;
|
||||
|
||||
while (lines.MoveNext())
|
||||
{
|
||||
var (aX, aY, bX, bY, goalX, goalY) = ParseMachine(ref lines);
|
||||
|
||||
for (var i = MaxButtonPress; i >= 0; i--)
|
||||
{
|
||||
var xOffset = bX * i;
|
||||
|
||||
if (xOffset > goalX)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((goalX - xOffset) % aX != 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var timesAPressed = (goalX - xOffset) / aX;
|
||||
|
||||
if (bY * i + aY * timesAPressed != goalY)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
minimumTokensToWin += i * ButtonBCost + timesAPressed * ButtonACost;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Minimum tokens to win all prizes: [yellow]{minimumTokensToWin}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private (int aX, int aY, int bX, int bY, int goalX, int goalY) ParseMachine(ref SpanLineEnumerator lines)
|
||||
{
|
||||
var lineA = lines.Current;
|
||||
lines.MoveNext();
|
||||
|
||||
var lineB = lines.Current;
|
||||
lines.MoveNext();
|
||||
|
||||
var lineGoal = lines.Current;
|
||||
lines.MoveNext();
|
||||
|
||||
return (
|
||||
int.Parse(lineA[(lineA.IndexOf('+') + 1)..lineA.IndexOf(',')]),
|
||||
int.Parse(lineA[(lineA.LastIndexOf('+') + 1)..]),
|
||||
|
||||
int.Parse(lineB[(lineB.IndexOf('+') + 1)..lineB.IndexOf(',')]),
|
||||
int.Parse(lineB[(lineB.LastIndexOf('+') + 1)..]),
|
||||
|
||||
int.Parse(lineGoal[(lineGoal.IndexOf('=') + 1)..lineGoal.IndexOf(',')]),
|
||||
int.Parse(lineGoal[(lineGoal.LastIndexOf('=') + 1)..])
|
||||
);
|
||||
}
|
||||
}
|
||||
151
Days/Day14.cs
151
Days/Day14.cs
@@ -1,151 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day14 : Day
|
||||
{
|
||||
public override int Number => 14;
|
||||
public override string Name => "Restroom Redoubt";
|
||||
|
||||
private const int Height = 103;
|
||||
private const int HeightCenter = Height / 2;
|
||||
|
||||
private const int Width = 101;
|
||||
private const int WidthCenter = Width / 2;
|
||||
|
||||
private const int Iterations = 100;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var robots = ParseRobots();
|
||||
|
||||
for (var i = 0; i < Iterations; i++)
|
||||
{
|
||||
foreach (var robot in robots)
|
||||
{
|
||||
robot.Position = new Point(
|
||||
Math.Abs((Width + robot.Position.X + robot.Velocity.X) % Width),
|
||||
Math.Abs((Height + robot.Position.Y + robot.Velocity.Y) % Height)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Compute safety factor
|
||||
var safetyFactor =
|
||||
robots.Count(r => r.Position is { X: < WidthCenter, Y: < HeightCenter }) *
|
||||
robots.Count(r => r.Position is { X: > WidthCenter, Y: < HeightCenter }) *
|
||||
robots.Count(r => r.Position is { X: < WidthCenter, Y: > HeightCenter }) *
|
||||
robots.Count(r => r.Position is { X: > WidthCenter, Y: > HeightCenter });
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Safety factor: [yellow]{safetyFactor}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var robots = ParseRobots();
|
||||
|
||||
var canvas = new Canvas(Width, Height);
|
||||
|
||||
for (var i = 0; i < int.MaxValue; i++)
|
||||
{
|
||||
for (var x = 0; x < Width; x++)
|
||||
{
|
||||
for (var y = 0; y < Height; y++)
|
||||
{
|
||||
canvas.SetPixel(x, y, Color.Grey23);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var robot in robots)
|
||||
{
|
||||
robot.Position = new Point(
|
||||
Math.Abs((Width + robot.Position.X + robot.Velocity.X) % Width),
|
||||
Math.Abs((Height + robot.Position.Y + robot.Velocity.Y) % Height)
|
||||
);
|
||||
|
||||
canvas.SetPixel(robot.Position.X, robot.Position.Y, Color.Green1);
|
||||
}
|
||||
|
||||
// Display grid
|
||||
if ((i + 1 - 46) % 101 == 0)
|
||||
{
|
||||
AnsiConsole.Write(canvas);
|
||||
AnsiConsole.WriteLine();
|
||||
|
||||
AnsiConsole.Write($"Seconds elapsed: {i + 1}");
|
||||
|
||||
var key = Console.ReadKey(true).Key;
|
||||
|
||||
if (key is ConsoleKey.Enter)
|
||||
{
|
||||
AnsiConsole.WriteLine();
|
||||
AnsiConsole.WriteLine();
|
||||
AnsiConsole.MarkupLine($"[green]Image at instant: [yellow]t={i + 1}s[/][/]");
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
AnsiConsole.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<Robot> ParseRobots()
|
||||
{
|
||||
var robots = new List<Robot>();
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var positionX = int.Parse(line[(line.IndexOf('=') + 1)..line.IndexOf(',')]);
|
||||
var positionY = int.Parse(line[(line.IndexOf(',') + 1)..line.IndexOf(' ')]);
|
||||
|
||||
var velocityX = int.Parse(line[(line.LastIndexOf('=') + 1)..line.LastIndexOf(',')]);
|
||||
var velocityY = int.Parse(line[(line.LastIndexOf(',') + 1)..]);
|
||||
|
||||
robots.Add(new Robot(new Point(positionX, positionY), new Point(velocityX, velocityY)));
|
||||
}
|
||||
|
||||
return robots;
|
||||
}
|
||||
|
||||
private class Robot(Point position, Point velocity)
|
||||
{
|
||||
public Point Position { get; set; } = position;
|
||||
public Point Velocity { get; } = velocity;
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
193
Days/Day15.cs
193
Days/Day15.cs
@@ -1,193 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day15 : Day
|
||||
{
|
||||
public override int Number => 15;
|
||||
public override string Name => "Warehouse Woes";
|
||||
|
||||
private const int Size = 50;
|
||||
|
||||
private const char Wall = '#';
|
||||
private const char Box = 'O';
|
||||
private const char Empty = '.';
|
||||
|
||||
private const char InstructionLeft = '<';
|
||||
private const char InstructionRight = '>';
|
||||
private const char InstructionUp = '^';
|
||||
private const char InstructionDown = 'v';
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (map, position, instructions) = ParseMap();
|
||||
|
||||
foreach (var instruction in instructions)
|
||||
{
|
||||
var direction = instruction switch
|
||||
{
|
||||
InstructionLeft => new Point(-1, 0),
|
||||
InstructionRight => new Point(1, 0),
|
||||
InstructionUp => new Point(0, -1),
|
||||
InstructionDown => new Point(0, 1),
|
||||
_ => throw new ArgumentException($"Invalid instruction: {instruction}")
|
||||
};
|
||||
|
||||
var destination = position + direction;
|
||||
|
||||
// Destination is free, just move
|
||||
if (map[destination.X, destination.Y] is not (Wall or Box))
|
||||
{
|
||||
position = destination;
|
||||
}
|
||||
// Destination is a box, check if there is a free space further up and move accordingly
|
||||
else if (map[destination.X, destination.Y] is Box)
|
||||
{
|
||||
var pushTarget = destination + direction;
|
||||
|
||||
while (map[pushTarget.X, pushTarget.Y] is Box)
|
||||
{
|
||||
pushTarget += direction;
|
||||
}
|
||||
|
||||
// Cannot move anything since there is a wall
|
||||
if (map[pushTarget.X, pushTarget.Y] is Wall)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Move robot and boxes (only need to move first and last box of a chain)
|
||||
position = destination;
|
||||
|
||||
map[destination.X, destination.Y] = Empty;
|
||||
map[pushTarget.X, pushTarget.Y] = Box;
|
||||
}
|
||||
// Else destination is a wall, do nothing
|
||||
}
|
||||
|
||||
var coordinatesSum = 0;
|
||||
|
||||
// Count gps coordinates
|
||||
for (var x = 0; x < Size; x++)
|
||||
{
|
||||
for (var y = 0; y < Size; y++)
|
||||
{
|
||||
if (map[x, y] is Box)
|
||||
{
|
||||
coordinatesSum += 100 * y + x;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Sum of boxes GPS coordinates: [yellow]{coordinatesSum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private static void DisplayGrid(char[,] map)
|
||||
{
|
||||
for (var y = 0; y < Size; y++)
|
||||
{
|
||||
for (var x = 0; x < Size; x++)
|
||||
{
|
||||
AnsiConsole.Write(map[x, y]);
|
||||
}
|
||||
|
||||
AnsiConsole.WriteLine();
|
||||
}
|
||||
|
||||
AnsiConsole.WriteLine();
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private (char[,] Map, Point Start, List<char> Instructions) ParseMap()
|
||||
{
|
||||
var readingMap = true;
|
||||
|
||||
var map = new char[Size, Size];
|
||||
|
||||
Point start = default;
|
||||
|
||||
var instructions = new List<char>();
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
if (line.IsWhiteSpace())
|
||||
{
|
||||
readingMap = false;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (readingMap)
|
||||
{
|
||||
var x = 0;
|
||||
foreach (var symbol in line)
|
||||
{
|
||||
map[x, y] = Empty;
|
||||
|
||||
if (symbol is Wall or Box)
|
||||
{
|
||||
map[x, y] = symbol;
|
||||
}
|
||||
else if (symbol is '@')
|
||||
{
|
||||
start = new Point(x, y);
|
||||
}
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var instruction in line)
|
||||
{
|
||||
instructions.Add(instruction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (map, start, instructions);
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
289
Days/Day16.cs
289
Days/Day16.cs
@@ -1,289 +0,0 @@
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day16 : Day
|
||||
{
|
||||
public override int Number => 16;
|
||||
public override string Name => "Reindeer Maze";
|
||||
|
||||
private const int Size = 141;
|
||||
|
||||
private const char Wall = '#';
|
||||
private const char Empty = '.';
|
||||
private const char Start = 'S';
|
||||
private const char End = 'E';
|
||||
|
||||
private static readonly Point DirectionUp = new(0, -1);
|
||||
private static readonly Point DirectionDown = new(0, 1);
|
||||
private static readonly Point DirectionLeft = new(-1, 0);
|
||||
private static readonly Point DirectionRight = new(1, 0);
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (maze, start, end) = ParseMaze();
|
||||
|
||||
var visited = new Dictionary<(Point Position, Point Direction), int>();
|
||||
|
||||
var minimumScore = int.MaxValue;
|
||||
|
||||
var toVisit = new Queue<(Point Position, Point Direction, int Score)>();
|
||||
|
||||
toVisit.Enqueue((start, DirectionRight, 0));
|
||||
|
||||
while (toVisit.Count > 0)
|
||||
{
|
||||
var (position, direction, score) = toVisit.Dequeue();
|
||||
|
||||
if (visited.TryGetValue((position, direction), out var savedScore) && savedScore <= score)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
visited[(position, direction)] = score;
|
||||
|
||||
// Reached end
|
||||
if (position == end)
|
||||
{
|
||||
if (score < minimumScore)
|
||||
{
|
||||
minimumScore = score;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Try forward if there is no wall
|
||||
var destination = position + direction;
|
||||
|
||||
if (maze[destination.X, destination.Y] is not Wall)
|
||||
{
|
||||
toVisit.Enqueue((destination, direction, score + 1));
|
||||
}
|
||||
|
||||
// Also try changing direction
|
||||
toVisit.Enqueue((position, NextDirection(direction), score + 1000));
|
||||
toVisit.Enqueue((position, PreviousDirection(direction), score + 1000));
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Lowest score: [yellow]{minimumScore}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (maze, start, end) = ParseMaze();
|
||||
|
||||
var visited = new Dictionary<(Point Position, Point Direction), int>();
|
||||
|
||||
var minimumScore = int.MaxValue;
|
||||
|
||||
var toVisit = new Queue<(Point Position, Point Direction, int Score)>();
|
||||
|
||||
toVisit.Enqueue((start, DirectionRight, 0));
|
||||
|
||||
// First we need to find minimum score
|
||||
while (toVisit.Count > 0)
|
||||
{
|
||||
var (position, direction, score) = toVisit.Dequeue();
|
||||
|
||||
if (visited.TryGetValue((position, direction), out var savedScore) && savedScore <= score)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
visited[(position, direction)] = score;
|
||||
|
||||
// Reached end
|
||||
if (position == end)
|
||||
{
|
||||
if (score < minimumScore)
|
||||
{
|
||||
minimumScore = score;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Try forward if there is no wall
|
||||
var destination = position + direction;
|
||||
|
||||
if (maze[destination.X, destination.Y] is not Wall)
|
||||
{
|
||||
toVisit.Enqueue((destination, direction, score + 1));
|
||||
}
|
||||
|
||||
// Also try changing direction
|
||||
toVisit.Enqueue((position, NextDirection(direction), score + 1000));
|
||||
toVisit.Enqueue((position, PreviousDirection(direction), score + 1000));
|
||||
}
|
||||
|
||||
// Now that we have minimum score, we need to find all the paths that lead to this score
|
||||
var toVisitPath = new Stack<(Point Position, Point Direction, int Score, List<Point> Path)>();
|
||||
toVisitPath.Push((start, DirectionRight, 0, []));
|
||||
|
||||
var minimumScorePaths = new List<List<Point>>();
|
||||
|
||||
while (toVisitPath.Count > 0)
|
||||
{
|
||||
var (position, direction, score, path) = toVisitPath.Pop();
|
||||
|
||||
if (score > minimumScore)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (visited.TryGetValue((position, direction), out var savedScore) && savedScore < score)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
path.Add(position);
|
||||
|
||||
// Reached end
|
||||
if (position == end)
|
||||
{
|
||||
minimumScorePaths.Add(path);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Try forward if there is no wall
|
||||
var destination = position + direction;
|
||||
|
||||
if (maze[destination.X, destination.Y] is not Wall)
|
||||
{
|
||||
toVisitPath.Push((destination, direction, score + 1, path));
|
||||
}
|
||||
|
||||
// Also try changing direction
|
||||
toVisitPath.Push((position, NextDirection(direction), score + 1000, path.ToList()));
|
||||
toVisitPath.Push((position, PreviousDirection(direction), score + 1000, path.ToList()));
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Unique positions in optimal paths: [yellow]{minimumScorePaths.SelectMany(l => l).ToHashSet().Count}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private (char[,] Maze, Point Start, Point end) ParseMaze()
|
||||
{
|
||||
var maze = new char[Size, Size];
|
||||
Point start = default;
|
||||
Point end = default;
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var x = 0;
|
||||
foreach (var symbol in line)
|
||||
{
|
||||
if (symbol is Start)
|
||||
{
|
||||
start = new Point(x, y);
|
||||
|
||||
maze[x, y] = Empty;
|
||||
}
|
||||
else if (symbol is End)
|
||||
{
|
||||
end = new Point(x, y);
|
||||
|
||||
maze[x, y] = Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
maze[x, y] = symbol;
|
||||
}
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return (maze, start, end);
|
||||
}
|
||||
|
||||
private static Point NextDirection(Point direction)
|
||||
{
|
||||
if (direction == DirectionUp)
|
||||
{
|
||||
return DirectionRight;
|
||||
}
|
||||
|
||||
if (direction == DirectionRight)
|
||||
{
|
||||
return DirectionDown;
|
||||
}
|
||||
|
||||
if (direction == DirectionDown)
|
||||
{
|
||||
return DirectionLeft;
|
||||
}
|
||||
|
||||
if (direction == DirectionLeft)
|
||||
{
|
||||
return DirectionUp;
|
||||
}
|
||||
|
||||
throw new ArgumentException("Invalid direction", nameof(direction));
|
||||
}
|
||||
|
||||
private static Point PreviousDirection(Point direction)
|
||||
{
|
||||
if (direction == DirectionUp)
|
||||
{
|
||||
return DirectionLeft;
|
||||
}
|
||||
|
||||
if (direction == DirectionLeft)
|
||||
{
|
||||
return DirectionDown;
|
||||
}
|
||||
|
||||
if (direction == DirectionDown)
|
||||
{
|
||||
return DirectionRight;
|
||||
}
|
||||
|
||||
if (direction == DirectionRight)
|
||||
{
|
||||
return DirectionUp;
|
||||
}
|
||||
|
||||
throw new ArgumentException("Invalid direction", nameof(direction));
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
247
Days/Day17.cs
247
Days/Day17.cs
@@ -1,247 +0,0 @@
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day17 : Day
|
||||
{
|
||||
public override int Number => 17;
|
||||
public override string Name => "Chronospatial Computer";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (registerA, registerB, registerC, program) = ParseState();
|
||||
|
||||
var toOutput = new List<int>();
|
||||
var instructionPointer = 0;
|
||||
|
||||
while (instructionPointer < program.Length)
|
||||
{
|
||||
var opCode = program[instructionPointer];
|
||||
|
||||
var isComboOperand = opCode switch
|
||||
{
|
||||
0 => true,
|
||||
1 => false,
|
||||
2 => true,
|
||||
3 => false,
|
||||
4 => false,
|
||||
5 => true,
|
||||
6 => true,
|
||||
7 => true,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(opCode))
|
||||
};
|
||||
|
||||
var operand = (isComboOperand, program[instructionPointer + 1]) switch
|
||||
{
|
||||
(false, var literalValue) => literalValue,
|
||||
(true, 0) => 0,
|
||||
(true, 1) => 1,
|
||||
(true, 2) => 2,
|
||||
(true, 3) => 3,
|
||||
(true, 4) => registerA,
|
||||
(true, 5) => registerB,
|
||||
(true, 6) => registerC,
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
};
|
||||
|
||||
switch (opCode)
|
||||
{
|
||||
// adv
|
||||
case 0:
|
||||
registerA = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
|
||||
// bxl
|
||||
case 1:
|
||||
registerB = registerB ^ operand;
|
||||
break;
|
||||
|
||||
// bst
|
||||
case 2:
|
||||
registerB = operand % 8;
|
||||
break;
|
||||
|
||||
// jnz
|
||||
case 3:
|
||||
if (registerA is not 0)
|
||||
{
|
||||
instructionPointer = operand - 2;
|
||||
}
|
||||
break;
|
||||
|
||||
// bxc
|
||||
case 4:
|
||||
registerB = registerB ^ registerC;
|
||||
break;
|
||||
|
||||
// out
|
||||
case 5:
|
||||
toOutput.Add(operand % 8);
|
||||
break;
|
||||
|
||||
// bdv
|
||||
case 6:
|
||||
registerB = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
|
||||
// cdv
|
||||
case 7:
|
||||
registerC = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
}
|
||||
|
||||
instructionPointer += 2;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Output: [yellow]{string.Join(',', toOutput)}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (_, originalRegisterB, originalRegisterC, program) = ParseState();
|
||||
var toOutput = new List<int>();
|
||||
var instructionPointer = 0;
|
||||
|
||||
var finalRegisterA = 0;
|
||||
|
||||
AnsiConsole.Status().Start("Computing (0)...", ctx =>
|
||||
{
|
||||
for (var initialRegisterA = 0; initialRegisterA < int.MaxValue; initialRegisterA++)
|
||||
{
|
||||
// Reset state
|
||||
var registerA = initialRegisterA;
|
||||
var registerB = originalRegisterB;
|
||||
var registerC = originalRegisterC;
|
||||
|
||||
toOutput.Clear();
|
||||
instructionPointer = 0;
|
||||
|
||||
while (instructionPointer < program.Length)
|
||||
{
|
||||
var opCode = program[instructionPointer];
|
||||
|
||||
var isComboOperand = opCode switch
|
||||
{
|
||||
0 => true,
|
||||
1 => false,
|
||||
2 => true,
|
||||
3 => false,
|
||||
4 => false,
|
||||
5 => true,
|
||||
6 => true,
|
||||
7 => true,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(opCode))
|
||||
};
|
||||
|
||||
var operand = (isComboOperand, program[instructionPointer + 1]) switch
|
||||
{
|
||||
(false, var literalValue) => literalValue,
|
||||
(true, 0) => 0,
|
||||
(true, 1) => 1,
|
||||
(true, 2) => 2,
|
||||
(true, 3) => 3,
|
||||
(true, 4) => registerA,
|
||||
(true, 5) => registerB,
|
||||
(true, 6) => registerC,
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
};
|
||||
|
||||
switch (opCode)
|
||||
{
|
||||
// adv
|
||||
case 0:
|
||||
registerA = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
|
||||
// bxl
|
||||
case 1:
|
||||
registerB = registerB ^ operand;
|
||||
break;
|
||||
|
||||
// bst
|
||||
case 2:
|
||||
registerB = operand % 8;
|
||||
break;
|
||||
|
||||
// jnz
|
||||
case 3:
|
||||
if (registerA is not 0)
|
||||
{
|
||||
instructionPointer = operand - 2;
|
||||
}
|
||||
break;
|
||||
|
||||
// bxc
|
||||
case 4:
|
||||
registerB = registerB ^ registerC;
|
||||
break;
|
||||
|
||||
// out
|
||||
case 5:
|
||||
toOutput.Add(operand % 8);
|
||||
break;
|
||||
|
||||
// bdv
|
||||
case 6:
|
||||
registerB = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
|
||||
// cdv
|
||||
case 7:
|
||||
registerC = (int)(registerA / Math.Pow(2, operand));
|
||||
break;
|
||||
}
|
||||
|
||||
instructionPointer += 2;
|
||||
}
|
||||
|
||||
if (initialRegisterA % 1000 == 0)
|
||||
{
|
||||
ctx.Status($"Computing ({initialRegisterA})...");
|
||||
}
|
||||
|
||||
// Check if output is the program itself
|
||||
if (toOutput.SequenceEqual(program))
|
||||
{
|
||||
finalRegisterA = initialRegisterA;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Lowest possible value for register A to output itself: [yellow]{finalRegisterA}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private (int RegisterA, int RegisterN, int RegisterC, int[] Program) ParseState()
|
||||
{
|
||||
var lineIterator = Input.AsSpan().EnumerateLines();
|
||||
|
||||
lineIterator.MoveNext();
|
||||
var registerA = int.Parse(lineIterator.Current[(lineIterator.Current.IndexOf(':') + 2)..]);
|
||||
|
||||
lineIterator.MoveNext();
|
||||
var registerB = int.Parse(lineIterator.Current[(lineIterator.Current.IndexOf(':') + 2)..]);
|
||||
|
||||
lineIterator.MoveNext();
|
||||
var registerC = int.Parse(lineIterator.Current[(lineIterator.Current.IndexOf(':') + 2)..]);
|
||||
|
||||
lineIterator.MoveNext();
|
||||
lineIterator.MoveNext();
|
||||
|
||||
var program = lineIterator.Current[(lineIterator.Current.IndexOf(':') + 2)..]
|
||||
.ToString()
|
||||
.Split(',')
|
||||
.Select(int.Parse)
|
||||
.ToArray();
|
||||
|
||||
return (registerA, registerB, registerC, program);
|
||||
}
|
||||
}
|
||||
204
Days/Day18.cs
204
Days/Day18.cs
@@ -1,204 +0,0 @@
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day18 : Day
|
||||
{
|
||||
public override int Number => 18;
|
||||
public override string Name => "RAM Run";
|
||||
|
||||
private const int Size = 71;
|
||||
|
||||
private const char Corrupted = '#';
|
||||
private const char Empty = ' ';
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var grid = ParseGrid(1024);
|
||||
|
||||
var visited = new Dictionary<Point, int>();
|
||||
var toVisit = new Queue<(Point Position, int Score)>();
|
||||
|
||||
var end = new Point(Size - 1, Size - 1);
|
||||
|
||||
var minimumScore = int.MaxValue;
|
||||
|
||||
toVisit.Enqueue((new Point(0, 0), 0));
|
||||
|
||||
while (toVisit.Count > 0)
|
||||
{
|
||||
var (position, score) = toVisit.Dequeue();
|
||||
|
||||
// Cannot go out of bounds
|
||||
if (position is { X: < 0 or >= Size } or { Y: < 0 or >= Size })
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Cannot go onto a corrupted space
|
||||
if (grid[position.X, position.Y] is Corrupted)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (visited.TryGetValue(position, out var savedScore) && savedScore <= score)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
visited[position] = score;
|
||||
|
||||
// End
|
||||
if (position == end)
|
||||
{
|
||||
if (score < minimumScore)
|
||||
{
|
||||
minimumScore = score;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
toVisit.Enqueue((position + (1, 0), score + 1));
|
||||
toVisit.Enqueue((position + (-1, 0), score + 1));
|
||||
toVisit.Enqueue((position + (0, 1), score + 1));
|
||||
toVisit.Enqueue((position + (0, -1), score + 1));
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Minimum number of steps to reach the exit: [yellow]{minimumScore}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
(int X, int Y)[] bytesToFall = Input.ReadAllLines()
|
||||
.Select(line => line.Split(','))
|
||||
.Select(split => (int.Parse(split[0]), int.Parse(split[1])))
|
||||
.ToArray();
|
||||
|
||||
var nextByteIndex = 1024;
|
||||
var grid = ParseGrid(1024);
|
||||
|
||||
while (true)
|
||||
{
|
||||
var nextByte = bytesToFall[nextByteIndex];
|
||||
|
||||
grid[nextByte.X, nextByte.Y] = Corrupted;
|
||||
|
||||
if (!IsGridCompletable())
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
nextByteIndex++;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Grid will be blocked at byte n°{nextByteIndex} at position: [yellow]{bytesToFall[nextByteIndex]}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool IsGridCompletable()
|
||||
{
|
||||
var visited = new HashSet<Point>();
|
||||
var toVisit = new Queue<Point>();
|
||||
|
||||
var end = new Point(Size - 1, Size - 1);
|
||||
|
||||
toVisit.Enqueue(new Point(0, 0));
|
||||
|
||||
while (toVisit.Count > 0)
|
||||
{
|
||||
var position = toVisit.Dequeue();
|
||||
|
||||
// Cannot go out of bounds
|
||||
if (position is { X: < 0 or >= Size } or { Y: < 0 or >= Size })
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Cannot go onto a corrupted space
|
||||
if (grid[position.X, position.Y] is Corrupted)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!visited.Add(position))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// End
|
||||
if (position == end)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
toVisit.Enqueue(position + (1, 0));
|
||||
toVisit.Enqueue(position + (-1, 0));
|
||||
toVisit.Enqueue(position + (0, 1));
|
||||
toVisit.Enqueue(position + (0, -1));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private char[,] ParseGrid(int limit)
|
||||
{
|
||||
var grid = new char[Size, Size];
|
||||
|
||||
var counter = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
if (counter >= limit)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
var x = int.Parse(line[..line.IndexOf(',')]);
|
||||
var y = int.Parse(line[(line.IndexOf(',') + 1)..]);
|
||||
|
||||
grid[x, y] = Corrupted;
|
||||
|
||||
counter++;
|
||||
}
|
||||
|
||||
return grid;
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
}
|
||||
}
|
||||
179
Days/Day19.cs
179
Days/Day19.cs
@@ -1,179 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day19 : Day
|
||||
{
|
||||
public override int Number => 19;
|
||||
public override string Name => "Linen Layout";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (towels, patterns) = ParseInput();
|
||||
var impossiblePatterns = new HashSet<string>();
|
||||
|
||||
var possiblePatterns = 0;
|
||||
|
||||
foreach (var pattern in patterns)
|
||||
{
|
||||
// Check if it's possible to make this pattern
|
||||
if (CheckPattern(pattern))
|
||||
{
|
||||
possiblePatterns++;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of designs that are possible: [yellow]{possiblePatterns}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool CheckPattern(ReadOnlySpan<char> pattern)
|
||||
{
|
||||
// Console.WriteLine($"Checking '{pattern}'");
|
||||
|
||||
if (pattern.Length is 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (impossiblePatterns.Contains(pattern.ToString()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var prefix = pattern[0];
|
||||
|
||||
if (!towels.TryGetValue(prefix, out var towelsList))
|
||||
{
|
||||
impossiblePatterns.Add(pattern.ToString());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach (var towel in towelsList)
|
||||
{
|
||||
if (pattern.StartsWith(towel) && CheckPattern(pattern[towel.Length..]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
impossiblePatterns.Add(pattern.ToString());
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (towels, patterns) = ParseInput();
|
||||
var impossiblePatterns = new HashSet<string>();
|
||||
var knownPatterns = new Dictionary<string, long>();
|
||||
|
||||
var possibleCombinations = 0L;
|
||||
|
||||
foreach (var pattern in patterns)
|
||||
{
|
||||
// Check if it's possible to make this pattern
|
||||
possibleCombinations += CheckPattern(pattern);
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of combinations that are possible: [yellow]{possibleCombinations}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
long CheckPattern(ReadOnlySpan<char> pattern)
|
||||
{
|
||||
if (pattern.Length is 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (impossiblePatterns.Contains(pattern.ToString()))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (knownPatterns.TryGetValue(pattern.ToString(), out var count))
|
||||
{
|
||||
return count;
|
||||
}
|
||||
|
||||
var prefix = pattern[0];
|
||||
|
||||
if (!towels.TryGetValue(prefix, out var towelsList))
|
||||
{
|
||||
impossiblePatterns.Add(pattern.ToString());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
var possibilities = 0L;
|
||||
|
||||
foreach (var towel in towelsList)
|
||||
{
|
||||
if (pattern.StartsWith(towel))
|
||||
{
|
||||
possibilities += CheckPattern(pattern[towel.Length..]);
|
||||
}
|
||||
}
|
||||
|
||||
if (possibilities is 0)
|
||||
{
|
||||
impossiblePatterns.Add(pattern.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
knownPatterns.Add(pattern.ToString(), possibilities);
|
||||
}
|
||||
|
||||
return possibilities;
|
||||
}
|
||||
}
|
||||
|
||||
private (FrozenDictionary<char, List<string>> Towels, List<string> Patterns) ParseInput()
|
||||
{
|
||||
var towels = new Dictionary<char, List<string>>();
|
||||
var patterns = new List<string>();
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
if (towels.Count is 0)
|
||||
{
|
||||
var split = line.Split(", ");
|
||||
|
||||
foreach (var range in split)
|
||||
{
|
||||
var towel = line[range].Trim();
|
||||
|
||||
var prefix = towel[0];
|
||||
|
||||
if (!towels.TryGetValue(prefix, out var towelsList))
|
||||
{
|
||||
towelsList = [];
|
||||
towels[prefix] = towelsList;
|
||||
}
|
||||
|
||||
towelsList.Add(towel.ToString());
|
||||
}
|
||||
}
|
||||
else if (!line.IsWhiteSpace())
|
||||
{
|
||||
var pattern = line.Trim();
|
||||
|
||||
patterns.Add(pattern.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
return (towels.ToFrozenDictionary(), patterns);
|
||||
}
|
||||
}
|
||||
258
Days/Day2.cs
258
Days/Day2.cs
@@ -1,3 +1,5 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
@@ -5,135 +7,223 @@ namespace AdventOfCode.Days;
|
||||
public class Day2 : Day
|
||||
{
|
||||
public override int Number => 2;
|
||||
public override string Name => "Red-Nosed Reports";
|
||||
public override string Name => "Gift Shop";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var safeReports = 0;
|
||||
var inputSpan = Input.AsSpan();
|
||||
var sum = 0L;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
// Parse the ranges
|
||||
var idsCount = inputSpan.Count(',') + 1;
|
||||
|
||||
Span<IdRange> idRanges = stackalloc IdRange[idsCount];
|
||||
|
||||
var index = 0;
|
||||
var maxDigits = 0;
|
||||
foreach (var spanRange in inputSpan.Split(','))
|
||||
{
|
||||
var isSafe = true;
|
||||
var levels = line.Split(' ');
|
||||
var span = inputSpan[spanRange];
|
||||
|
||||
var previousDirection = 0;
|
||||
var previousLevel = int.MinValue;
|
||||
foreach (var levelRange in levels)
|
||||
var separatorIndex = span.IndexOf('-');
|
||||
var lowerBound = long.Parse(span[..separatorIndex]);
|
||||
var upperBound = long.Parse(span[(separatorIndex + 1)..]);
|
||||
|
||||
idRanges[index] = new IdRange(lowerBound, upperBound);
|
||||
index++;
|
||||
|
||||
// Also find the biggest number
|
||||
var digitsCount = CountDigits((ulong) upperBound);
|
||||
if (digitsCount > maxDigits)
|
||||
{
|
||||
var level = int.Parse(line[levelRange]);
|
||||
|
||||
// First level, skip to next
|
||||
if (previousLevel == int.MinValue)
|
||||
{
|
||||
previousLevel = level;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check that direction is preserved
|
||||
var direction = level - previousLevel;
|
||||
|
||||
if (previousDirection != 0 && Math.Sign(direction) != Math.Sign(previousDirection))
|
||||
{
|
||||
isSafe = false;
|
||||
break;
|
||||
}
|
||||
|
||||
// Check that distance >= 1 and <= 3
|
||||
if (Math.Abs(direction) is < 1 or > 3)
|
||||
{
|
||||
isSafe = false;
|
||||
break;
|
||||
}
|
||||
|
||||
previousLevel = level;
|
||||
previousDirection = direction;
|
||||
maxDigits = digitsCount;
|
||||
}
|
||||
}
|
||||
|
||||
if (isSafe)
|
||||
// For each possible invalid ID, check if it's in a range
|
||||
var maxSingleId = 1L * (long) Math.Pow(10, Math.Ceiling(maxDigits / 2D)) - 1L;
|
||||
for (var invalidIdSingle = 1L; invalidIdSingle <= maxSingleId; invalidIdSingle++)
|
||||
{
|
||||
// Build invalid ID
|
||||
var invalidId = (invalidIdSingle * (long) Math.Pow(10, (int) Math.Log10(invalidIdSingle) + 1)) + invalidIdSingle;
|
||||
|
||||
// Check if invalid ID is in a range
|
||||
// This could be optimized by building a sorted list of ranges and using binary search
|
||||
foreach (var idRange in idRanges)
|
||||
{
|
||||
safeReports++;
|
||||
if (invalidId >= idRange.Lower && invalidId <= idRange.Upper)
|
||||
{
|
||||
sum += invalidId;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{safeReports}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]Sum of invalid IDs: [yellow]{sum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var safeReports = 0;
|
||||
var inputSpan = Input.AsSpan();
|
||||
var sum = 0L;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
// Parse the ranges
|
||||
var idsCount = inputSpan.Count(',') + 1;
|
||||
|
||||
Span<IdRange> idRanges = stackalloc IdRange[idsCount];
|
||||
|
||||
var index = 0;
|
||||
var maxDigits = 0;
|
||||
foreach (var spanRange in inputSpan.Split(','))
|
||||
{
|
||||
if (IsSafe(line))
|
||||
var span = inputSpan[spanRange];
|
||||
|
||||
var separatorIndex = span.IndexOf('-');
|
||||
var lowerBound = long.Parse(span[..separatorIndex]);
|
||||
var upperBound = long.Parse(span[(separatorIndex + 1)..]);
|
||||
|
||||
idRanges[index] = new IdRange(lowerBound, upperBound);
|
||||
index++;
|
||||
|
||||
// Also find the biggest number
|
||||
var digitsCount = CountDigits((ulong) upperBound);
|
||||
if (digitsCount > maxDigits)
|
||||
{
|
||||
safeReports++;
|
||||
maxDigits = digitsCount;
|
||||
}
|
||||
}
|
||||
|
||||
// For each possible invalid ID, check if it's in a range
|
||||
Span<long> invalidIds = stackalloc long[maxDigits];
|
||||
var visitedIds = new HashSet<long>();
|
||||
|
||||
var maxSingleId = 1L * (long) Math.Pow(10, Math.Ceiling(maxDigits / 2D)) - 1L;
|
||||
for (var invalidIdSingle = 1L; invalidIdSingle <= maxSingleId; invalidIdSingle++)
|
||||
{
|
||||
// Build invalid IDs
|
||||
var filledCount = FillPossibleInvalidIds(invalidIds, invalidIdSingle, maxDigits);
|
||||
|
||||
// Check if invalid ID is in a range
|
||||
// This could be optimized by building a sorted list of ranges and using binary search
|
||||
for (var i = 0; i < filledCount; i++)
|
||||
{
|
||||
var invalidId = invalidIds[i];
|
||||
|
||||
if (visitedIds.Add(invalidId))
|
||||
{
|
||||
foreach (var idRange in idRanges)
|
||||
{
|
||||
if (invalidId >= idRange.Lower && invalidId <= idRange.Upper)
|
||||
{
|
||||
sum += invalidId;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{safeReports}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]Sum of invalid IDs: [yellow]{sum}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool IsSafe(ReadOnlySpan<char> line, Range? toSkip = null)
|
||||
static int FillPossibleInvalidIds(Span<long> invalidIds, long invalidIdSingle, int maxDigits)
|
||||
{
|
||||
var levels = line.Split(' ');
|
||||
Span<char> idSpanBuffer = stackalloc char[20];
|
||||
Span<char> target = stackalloc char[maxDigits];
|
||||
|
||||
var previousDirection = 0;
|
||||
var previousLevel = int.MinValue;
|
||||
Range previousLevelRange = default;
|
||||
Range firstLevelRange = default;
|
||||
// Write number to char span
|
||||
invalidIdSingle.TryFormat(idSpanBuffer, out var idLength);
|
||||
var idSpan = idSpanBuffer[..idLength];
|
||||
|
||||
foreach (var levelRange in levels)
|
||||
// First part will always be the single id
|
||||
idSpan.CopyTo(target);
|
||||
|
||||
var times = 2;
|
||||
var index = 0;
|
||||
while (true)
|
||||
{
|
||||
if (levelRange.Equals(toSkip))
|
||||
var targetSize = idSpan.Length * times;
|
||||
|
||||
// Check if result number would be too big
|
||||
if (targetSize > target.Length)
|
||||
{
|
||||
// This level can be skipped using the problem dampener
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
|
||||
var level = int.Parse(line[levelRange]);
|
||||
|
||||
// First level, skip to next
|
||||
if (previousLevel == int.MinValue)
|
||||
// Build concatenated string
|
||||
for (var i = 1; i < times; i++)
|
||||
{
|
||||
previousLevel = level;
|
||||
previousLevelRange = levelRange;
|
||||
firstLevelRange = levelRange;
|
||||
|
||||
continue;
|
||||
idSpan.CopyTo(target[(idSpan.Length * i)..]);
|
||||
}
|
||||
|
||||
// Check that direction is preserved
|
||||
var direction = level - previousLevel;
|
||||
invalidIds[index] = long.Parse(target[..targetSize]);
|
||||
|
||||
if (previousDirection != 0 && Math.Sign(direction) != Math.Sign(previousDirection))
|
||||
{
|
||||
// Also try by removing current or previous level if it's first try (problem dampener)
|
||||
return toSkip is null
|
||||
&& (IsSafe(line, levelRange) || IsSafe(line, previousLevelRange) || IsSafe(line, firstLevelRange));
|
||||
}
|
||||
|
||||
// Check that distance >= 1 and <= 3
|
||||
if (Math.Abs(direction) is < 1 or > 3)
|
||||
{
|
||||
// Also try by removing current or previous level if it's first try (problem dampener)
|
||||
return toSkip is null
|
||||
&& (IsSafe(line, levelRange) || IsSafe(line, previousLevelRange) || IsSafe(line, firstLevelRange));
|
||||
}
|
||||
|
||||
previousLevel = level;
|
||||
previousDirection = direction;
|
||||
previousLevelRange = levelRange;
|
||||
times++;
|
||||
index++;
|
||||
}
|
||||
|
||||
return true;
|
||||
return index;
|
||||
}
|
||||
}
|
||||
|
||||
private record struct IdRange(long Lower, long Upper);
|
||||
|
||||
// Source: https://source.dot.net/#System.Private.CoreLib/src/libraries/System.Private.CoreLib/src/System/Buffers/Text/FormattingHelpers.CountDigits.cs,b2bb39bb9360e1d1,references
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static int CountDigits(ulong value)
|
||||
{
|
||||
// Map the log2(value) to a power of 10.
|
||||
ReadOnlySpan<byte> log2ToPow10 =
|
||||
[
|
||||
1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5,
|
||||
6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10,
|
||||
10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, 15,
|
||||
15, 16, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 19, 20
|
||||
];
|
||||
|
||||
nint elementOffset = log2ToPow10[(int)ulong.Log2(value)];
|
||||
|
||||
// Read the associated power of 10.
|
||||
ReadOnlySpan<ulong> powersOf10 =
|
||||
[
|
||||
0, // unused entry to avoid needing to subtract
|
||||
0,
|
||||
10,
|
||||
100,
|
||||
1000,
|
||||
10000,
|
||||
100000,
|
||||
1000000,
|
||||
10000000,
|
||||
100000000,
|
||||
1000000000,
|
||||
10000000000,
|
||||
100000000000,
|
||||
1000000000000,
|
||||
10000000000000,
|
||||
100000000000000,
|
||||
1000000000000000,
|
||||
10000000000000000,
|
||||
100000000000000000,
|
||||
1000000000000000000,
|
||||
10000000000000000000,
|
||||
];
|
||||
|
||||
ulong powerOf10 = Unsafe.Add(ref MemoryMarshal.GetReference(powersOf10), elementOffset);
|
||||
|
||||
// Return the number of digits based on the power of 10, shifted by 1
|
||||
// if it falls below the threshold.
|
||||
int index = (int)elementOffset;
|
||||
|
||||
return index - (value < powerOf10 ? 1 : 0);
|
||||
}
|
||||
}
|
||||
288
Days/Day20.cs
288
Days/Day20.cs
@@ -1,288 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day20 : Day
|
||||
{
|
||||
public override int Number => 20;
|
||||
public override string Name => "Race Condition";
|
||||
|
||||
private const int Size = 141;
|
||||
private const char Wall = '#';
|
||||
private const char Empty = '.';
|
||||
|
||||
private readonly List<Point> _cheatOffsets =
|
||||
[
|
||||
(2, 0),
|
||||
(1, 1),
|
||||
(0, 2),
|
||||
(-1, 1),
|
||||
(-2, 0),
|
||||
(-1, -1),
|
||||
(0, -2),
|
||||
(1, -1)
|
||||
];
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (map, start, end) = ParseMap();
|
||||
|
||||
// Find track path
|
||||
var trackPath = new List<Point>();
|
||||
var distanceFromStart = new Dictionary<Point, int>();
|
||||
|
||||
var position = start;
|
||||
|
||||
var distance = 0;
|
||||
while (position != end)
|
||||
{
|
||||
trackPath.Add(position);
|
||||
distanceFromStart[position] = distance;
|
||||
|
||||
// Find next track position
|
||||
distance++;
|
||||
var up = position + new Point(0, -1);
|
||||
if (up is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[up.X, up.Y] is not Wall && !distanceFromStart.ContainsKey(up))
|
||||
{
|
||||
position = up;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var down = position + new Point(0, 1);
|
||||
if (down is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[down.X, down.Y] is not Wall && !distanceFromStart.ContainsKey(down))
|
||||
{
|
||||
position = down;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var left = position + new Point(-1, 0);
|
||||
if (left is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[left.X, left.Y] is not Wall && !distanceFromStart.ContainsKey(left))
|
||||
{
|
||||
position = left;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var right = position + new Point(1, 0);
|
||||
if (right is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[right.X, right.Y] is not Wall && !distanceFromStart.ContainsKey(right))
|
||||
{
|
||||
position = right;
|
||||
}
|
||||
}
|
||||
|
||||
// Also add end
|
||||
trackPath.Add(position);
|
||||
distanceFromStart[position] = distance;
|
||||
|
||||
var cheats = new Dictionary<(Point StartPosition, Point EndPosition), int>();
|
||||
|
||||
// Now return to start and try all possible combination of cheats for each track position
|
||||
foreach (var trackPosition in trackPath)
|
||||
{
|
||||
var originDistance = distanceFromStart[trackPosition];
|
||||
|
||||
foreach (var cheatOffset in _cheatOffsets)
|
||||
{
|
||||
var cheatDestination = trackPosition + cheatOffset;
|
||||
|
||||
if (cheatDestination.X is < 0 or >= Size || cheatDestination.Y is < 0 or >= Size)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (map[cheatDestination.X, cheatDestination.Y] is Wall)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var destinationDistance = distanceFromStart[cheatDestination];
|
||||
var savedDistance = destinationDistance - originDistance - 2;
|
||||
|
||||
// Only take into account real shortcuts, not those that do not save time
|
||||
if (savedDistance < 1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
cheats.Add((trackPosition, cheatDestination), savedDistance);
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of cheats that save at least 100 picoseconds: [yellow]{cheats.Count(c => c.Value >= 100)}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (map, start, end) = ParseMap();
|
||||
|
||||
// Find track path
|
||||
var trackPath = new List<Point>();
|
||||
var distanceFromStart = new Dictionary<Point, int>();
|
||||
|
||||
var position = start;
|
||||
|
||||
var distance = 0;
|
||||
while (position != end)
|
||||
{
|
||||
trackPath.Add(position);
|
||||
distanceFromStart[position] = distance;
|
||||
|
||||
// Find next track position
|
||||
distance++;
|
||||
var up = position + new Point(0, -1);
|
||||
if (up is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[up.X, up.Y] is not Wall && !distanceFromStart.ContainsKey(up))
|
||||
{
|
||||
position = up;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var down = position + new Point(0, 1);
|
||||
if (down is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[down.X, down.Y] is not Wall && !distanceFromStart.ContainsKey(down))
|
||||
{
|
||||
position = down;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var left = position + new Point(-1, 0);
|
||||
if (left is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[left.X, left.Y] is not Wall && !distanceFromStart.ContainsKey(left))
|
||||
{
|
||||
position = left;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var right = position + new Point(1, 0);
|
||||
if (right is { X: >= 0 and < Size, Y: >= 0 and < Size } && map[right.X, right.Y] is not Wall && !distanceFromStart.ContainsKey(right))
|
||||
{
|
||||
position = right;
|
||||
}
|
||||
}
|
||||
|
||||
// Also add end
|
||||
trackPath.Add(position);
|
||||
distanceFromStart[position] = distance;
|
||||
|
||||
var cheats = new Dictionary<(Point StartPosition, Point EndPosition), int>();
|
||||
|
||||
// Now return to start and try all possible combination of cheats for each track position
|
||||
foreach (var trackPosition in trackPath)
|
||||
{
|
||||
var originDistance = distanceFromStart[trackPosition];
|
||||
|
||||
foreach (var cheatDestination in trackPath.Where(destination => trackPosition.DistanceTo(destination) <= 20))
|
||||
{
|
||||
var cheatLength = trackPosition.DistanceTo(cheatDestination);
|
||||
|
||||
var destinationDistance = distanceFromStart[cheatDestination];
|
||||
var savedDistance = destinationDistance - originDistance - cheatLength;
|
||||
|
||||
// Only take into account real shortcuts, not those that do not save time
|
||||
if (savedDistance < 1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (cheats.TryGetValue((trackPosition, cheatDestination), out var otherSavedDistance))
|
||||
{
|
||||
if (savedDistance <= otherSavedDistance)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
cheats[(trackPosition, cheatDestination)] = savedDistance;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of cheats that save at least 100 picoseconds: [yellow]{cheats.Count(c => c.Value >= 100)}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private (char[,] Map, Point Start, Point End) ParseMap()
|
||||
{
|
||||
var map = new char[Size, Size];
|
||||
Point start = default;
|
||||
Point end = default;
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var x = 0;
|
||||
|
||||
foreach (var symbol in line)
|
||||
{
|
||||
if (symbol == 'S')
|
||||
{
|
||||
start = new Point(x, y);
|
||||
}
|
||||
else if (symbol == 'E')
|
||||
{
|
||||
end = new Point(x, y);
|
||||
}
|
||||
|
||||
if (symbol is Wall)
|
||||
{
|
||||
map[x, y] = Wall;
|
||||
}
|
||||
else
|
||||
{
|
||||
map[x, y] = Empty;
|
||||
}
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return (map, start, end);
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
|
||||
public int DistanceTo(Point other)
|
||||
{
|
||||
var distance = other - this;
|
||||
|
||||
return Math.Abs(distance.X) + Math.Abs(distance.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
183
Days/Day21.cs
183
Days/Day21.cs
@@ -1,183 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day21 : Day
|
||||
{
|
||||
public override int Number => 21;
|
||||
public override string Name => "Keypad Conundrum";
|
||||
|
||||
private const char Up = '^';
|
||||
private const char Right = '>';
|
||||
private const char Down = 'v';
|
||||
private const char Left = '<';
|
||||
private const char Enter = 'A';
|
||||
|
||||
private readonly Dictionary<char, Point> _numpadPositions = new()
|
||||
{
|
||||
{ '7', (0, 0) },
|
||||
{ '8', (1, 0) },
|
||||
{ '9', (2, 0) },
|
||||
{ '4', (0, 1) },
|
||||
{ '5', (1, 1) },
|
||||
{ '6', (2, 1) },
|
||||
{ '1', (0, 2) },
|
||||
{ '2', (1, 2) },
|
||||
{ '3', (2, 2) },
|
||||
{ '0', (1, 3) },
|
||||
{ Enter, (2, 3) }
|
||||
};
|
||||
|
||||
private readonly Dictionary<char, Point> _keypadPositions = new()
|
||||
{
|
||||
{ Up, (1, 0) },
|
||||
{ Enter, (2, 0) },
|
||||
{ Left, (0, 1) },
|
||||
{ Down, (1, 1) },
|
||||
{ Right, (2, 1) }
|
||||
};
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var codes = ParseCodes();
|
||||
var complexitiesSum = 0;
|
||||
|
||||
foreach (var code in codes)
|
||||
{
|
||||
// Get first keypad sequence
|
||||
var firstKeypadSequence = new StringBuilder();
|
||||
var currentInput = Enter;
|
||||
|
||||
foreach (var digit in code)
|
||||
{
|
||||
firstKeypadSequence.Append(GetNumpadMoveSequence(currentInput, digit));
|
||||
|
||||
currentInput = digit;
|
||||
}
|
||||
|
||||
// Get second keypad sequence
|
||||
var secondKeypadSequence = new StringBuilder();
|
||||
currentInput = Enter;
|
||||
|
||||
foreach (var input in firstKeypadSequence.ToString())
|
||||
{
|
||||
secondKeypadSequence.Append(GetKeypadMoveSequence(currentInput, input));
|
||||
|
||||
currentInput = input;
|
||||
}
|
||||
|
||||
// Get third and last keypad sequence
|
||||
var thirdKeypadSequence = new StringBuilder();
|
||||
currentInput = Enter;
|
||||
|
||||
foreach (var input in secondKeypadSequence.ToString())
|
||||
{
|
||||
thirdKeypadSequence.Append(GetKeypadMoveSequence(currentInput, input));
|
||||
|
||||
currentInput = input;
|
||||
}
|
||||
|
||||
complexitiesSum += thirdKeypadSequence.Length * int.Parse(code.AsSpan()[..^1]);
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Sum of complexities: [yellow]{complexitiesSum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private string GetNumpadMoveSequence(char origin, char destination)
|
||||
{
|
||||
var originPosition = _numpadPositions[origin];
|
||||
var destinationPosition = _numpadPositions[destination];
|
||||
|
||||
var move = destinationPosition - originPosition;
|
||||
|
||||
var moveRight = move.X > 0;
|
||||
var moveDown = move.Y > 0;
|
||||
|
||||
var sequence = string.Concat(
|
||||
new string(moveRight ? Right : Left, Math.Abs(move.X)),
|
||||
new string(moveDown ? Down : Up, Math.Abs(move.Y)),
|
||||
Enter.ToString() // Always end on Enter to press key
|
||||
);
|
||||
|
||||
return sequence;
|
||||
}
|
||||
|
||||
private string GetKeypadMoveSequence(char origin, char destination)
|
||||
{
|
||||
var originPosition = _keypadPositions[origin];
|
||||
var destinationPosition = _keypadPositions[destination];
|
||||
|
||||
var move = destinationPosition - originPosition;
|
||||
|
||||
var moveRight = move.X > 0;
|
||||
var moveDown = move.Y > 0;
|
||||
|
||||
var sequence = string.Concat(
|
||||
new string(moveDown ? Down : Up, Math.Abs(move.Y)),
|
||||
new string(moveRight ? Right : Left, Math.Abs(move.X)),
|
||||
Enter.ToString() // Always end on Enter to press key
|
||||
);
|
||||
|
||||
return sequence;
|
||||
}
|
||||
|
||||
private List<string> ParseCodes()
|
||||
{
|
||||
var codes = new List<string>();
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
codes.Add(line.ToString());
|
||||
}
|
||||
|
||||
return codes;
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
}
|
||||
|
||||
public static implicit operator Point((int X, int Y) point)
|
||||
=> new(point.X, point.Y);
|
||||
|
||||
public int DistanceTo(Point other)
|
||||
{
|
||||
var distance = other - this;
|
||||
|
||||
return Math.Abs(distance.X) + Math.Abs(distance.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
162
Days/Day22.cs
162
Days/Day22.cs
@@ -1,162 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day22 : Day
|
||||
{
|
||||
public override int Number => 22;
|
||||
public override string Name => "Monkey Market";
|
||||
|
||||
private const int Iterations = 2000;
|
||||
private const int PruneValue = 16777216;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var secretsSum = 0L;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var secret = long.Parse(line);
|
||||
|
||||
for (var i = 0; i < Iterations; i++)
|
||||
{
|
||||
var result = secret * 64;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
|
||||
result = secret / 32;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
|
||||
result = secret * 2048;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
}
|
||||
|
||||
secretsSum += secret;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Sum of {Iterations}th secret numbers: [yellow]{secretsSum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var maximumBananas = 0L;
|
||||
|
||||
var initialSecrets = Input.ReadAllLines().Select(l => long.Parse(l)).ToArray();
|
||||
var matchSequences = GenerateSequences().ToArray();
|
||||
|
||||
AnsiConsole.Progress().Start(progress =>
|
||||
{
|
||||
var progressTask = progress.AddTask("Finding best sequence", maxValue: matchSequences.Length);
|
||||
|
||||
Parallel.ForEach(matchSequences, matchSequence =>
|
||||
{
|
||||
Span<long> sequence = stackalloc long[4];
|
||||
var currentBananas = 0L;
|
||||
|
||||
for (var initialSecretIndex = 0; initialSecretIndex < initialSecrets.Length; initialSecretIndex++)
|
||||
{
|
||||
var secret = initialSecrets[initialSecretIndex];
|
||||
|
||||
for (var i = 0; i < Iterations; i++)
|
||||
{
|
||||
var previousSecret = secret;
|
||||
|
||||
// Compute new secret
|
||||
var result = secret * 64;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
|
||||
result = secret / 32;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
|
||||
result = secret * 2048;
|
||||
secret = (secret ^ result) % PruneValue;
|
||||
|
||||
var lastDigit = secret % 10;
|
||||
var previousSecretLastDigit = previousSecret % 10;
|
||||
|
||||
// Update sequence
|
||||
sequence[0] = sequence[1];
|
||||
sequence[1] = sequence[2];
|
||||
sequence[2] = sequence[3];
|
||||
sequence[3] = lastDigit - previousSecretLastDigit;
|
||||
|
||||
// Check if sequence match
|
||||
if (sequence[0] == matchSequence.Item1
|
||||
&& sequence[1] == matchSequence.Item2
|
||||
&& sequence[2] == matchSequence.Item3
|
||||
&& sequence[3] == matchSequence.Item4
|
||||
&& i >= 3)
|
||||
{
|
||||
currentBananas += lastDigit;
|
||||
|
||||
// Go to next monkey
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Stop early if it's not possible to beat current maximum
|
||||
if (maximumBananas - currentBananas >= ((initialSecrets.Length - initialSecretIndex - 1) * 9))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ExchangeIfGreaterThan(ref maximumBananas, currentBananas);
|
||||
|
||||
progressTask.Increment(1);
|
||||
});
|
||||
});
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Maximum amount of bananas: [yellow]{maximumBananas}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
IEnumerable<(long, long, long, long)> GenerateSequences()
|
||||
{
|
||||
for (var a = -9L; a <= 9; a++)
|
||||
{
|
||||
for (var b = -9L; b <= 9; b++)
|
||||
{
|
||||
for (var c = -9L; c <= 9; c++)
|
||||
{
|
||||
for (var d = -9L; d <= 9; d++)
|
||||
{
|
||||
yield return (a, b, c, d);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Source: https://stackoverflow.com/a/13323172
|
||||
private static void ExchangeIfGreaterThan(ref long location, long value)
|
||||
{
|
||||
// Read
|
||||
var current = Interlocked.Read(ref location);
|
||||
|
||||
// Compare
|
||||
while (current < value)
|
||||
{
|
||||
// Set
|
||||
var previous = Interlocked.CompareExchange(ref location, value, current);
|
||||
|
||||
// If another thread has set a greater value, we can break
|
||||
// or if previous value is current value, then no other thread has it changed in between
|
||||
if (previous == current || previous >= value) // note: most common case first
|
||||
break;
|
||||
|
||||
// For all other cases, we need another run (read value, compare, set)
|
||||
current = Interlocked.Read(ref location);
|
||||
}
|
||||
}
|
||||
}
|
||||
172
Days/Day23.cs
172
Days/Day23.cs
@@ -1,172 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day23 : Day
|
||||
{
|
||||
public override int Number => 23;
|
||||
public override string Name => "LAN Party";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var computerLinks = new Dictionary<string, HashSet<string>>();
|
||||
|
||||
// Parse all links
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var firstComputer = line[..2].ToString();
|
||||
var secondComputer = line[3..].ToString();
|
||||
|
||||
if (!computerLinks.TryGetValue(firstComputer, out var firstLinks))
|
||||
{
|
||||
firstLinks = [];
|
||||
computerLinks[firstComputer] = firstLinks;
|
||||
}
|
||||
firstLinks.Add(secondComputer);
|
||||
|
||||
if (!computerLinks.TryGetValue(secondComputer, out var secondLinks))
|
||||
{
|
||||
secondLinks = [];
|
||||
computerLinks[secondComputer] = secondLinks;
|
||||
}
|
||||
secondLinks.Add(firstComputer);
|
||||
}
|
||||
|
||||
var sets = new HashSet<ComputerSet>();
|
||||
|
||||
foreach (var (firstComputer, firstLinks) in computerLinks)
|
||||
{
|
||||
foreach (var secondComputer in firstLinks)
|
||||
{
|
||||
var thirdComputers = computerLinks[secondComputer].Intersect(firstLinks);
|
||||
|
||||
foreach (var thirdComputer in thirdComputers)
|
||||
{
|
||||
sets.Add(new ComputerSet(firstComputer, secondComputer, thirdComputer));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var finalCount = sets.Count(set => set.First.StartsWith('t') || set.Second.StartsWith('t') || set.Third.StartsWith('t'));
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Amount of sets that contain at least one computer that starts with t: [yellow]{finalCount}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var computerLinks = new Dictionary<string, HashSet<string>>();
|
||||
|
||||
// Parse all links
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var firstComputer = line[..2].ToString();
|
||||
var secondComputer = line[3..].ToString();
|
||||
|
||||
if (!computerLinks.TryGetValue(firstComputer, out var firstLinks))
|
||||
{
|
||||
firstLinks = [];
|
||||
computerLinks[firstComputer] = firstLinks;
|
||||
}
|
||||
firstLinks.Add(secondComputer);
|
||||
|
||||
if (!computerLinks.TryGetValue(secondComputer, out var secondLinks))
|
||||
{
|
||||
secondLinks = [];
|
||||
computerLinks[secondComputer] = secondLinks;
|
||||
}
|
||||
secondLinks.Add(firstComputer);
|
||||
}
|
||||
|
||||
List<string> largestSet = [];
|
||||
|
||||
AnsiConsole.Status().Start("Starting check...", status =>
|
||||
{
|
||||
var size = 4;
|
||||
while (true)
|
||||
{
|
||||
var ended = true;
|
||||
|
||||
status.Status($"Checking set size: {size}");
|
||||
|
||||
var i = 0;
|
||||
foreach (var (firstComputer, firstLinks) in computerLinks)
|
||||
{
|
||||
status.Status($"Checking set size: {size} ({i++}/{computerLinks.Count})");
|
||||
|
||||
if (GenerateLargestSet(firstLinks, size, [ firstComputer ]) is { } largest)
|
||||
{
|
||||
largestSet = largest;
|
||||
size++;
|
||||
ended = false;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ended)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var password = string.Join(',', largestSet.Order());
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Password to enter lan party: [yellow]{password}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
List<string>? GenerateLargestSet(HashSet<string> set, int targetSize, List<string> selected)
|
||||
{
|
||||
if (selected.Count == targetSize)
|
||||
{
|
||||
return selected;
|
||||
}
|
||||
|
||||
if (set.Count is 0 || (set.Count < (targetSize - selected.Count)))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Next depth
|
||||
foreach (var computer in set)
|
||||
{
|
||||
var nextSet = set.Intersect(computerLinks[computer]).ToHashSet();
|
||||
var nextSelected = selected.Append(computer).ToList();
|
||||
|
||||
if (GenerateLargestSet(nextSet, targetSize, nextSelected) is { } largest)
|
||||
{
|
||||
return largest;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private record ComputerSet(string First, string Second, string Third) : IEquatable<ComputerSet>
|
||||
{
|
||||
public virtual bool Equals(ComputerSet? other)
|
||||
{
|
||||
return other is not null &&
|
||||
(First == other.First || First == other.Second || First == other.Third) &&
|
||||
(Second == other.First || Second == other.Second || Second == other.Third) &&
|
||||
(Third == other.First || Third == other.Second || Third == other.Third);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return First.GetHashCode() * Second.GetHashCode() * Third.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
370
Days/Day24.cs
370
Days/Day24.cs
@@ -1,370 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.VisualBasic;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day24 : Day
|
||||
{
|
||||
public override int Number => 24;
|
||||
public override string Name => "Crossed Wires";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (signals, gates, zGates) = ParseInput();
|
||||
|
||||
while (zGates.Count > 0)
|
||||
{
|
||||
foreach (var (inputLeft, inputRight, output, logicOperator) in gates)
|
||||
{
|
||||
if (!signals.TryGetValue(inputLeft, out var inputLeftValue) ||
|
||||
!signals.TryGetValue(inputRight, out var inputRightValue))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
signals[output] = Compute(inputLeftValue, inputRightValue, logicOperator);
|
||||
|
||||
if (output.StartsWith('z'))
|
||||
{
|
||||
zGates.Remove(output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var zOutputValue = signals
|
||||
.Where(s => s.Key.StartsWith('z'))
|
||||
.Select(s => new { Index = int.Parse(s.Key[1..]), Value = (long)s.Value })
|
||||
.Sum(s => s.Value << s.Index);
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Value output on z signal: [yellow]{zOutputValue}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (initialSignals, initialGates, initialZGates) = ParseInput();
|
||||
|
||||
var xInputValue = initialSignals
|
||||
.Where(s => s.Key.StartsWith('x'))
|
||||
.Select(s => new { Index = int.Parse(s.Key[1..]), Value = (long)s.Value })
|
||||
.Sum(s => s.Value << s.Index);
|
||||
|
||||
var yInputValue = initialSignals
|
||||
.Where(s => s.Key.StartsWith('y'))
|
||||
.Select(s => new { Index = int.Parse(s.Key[1..]), Value = (long)s.Value })
|
||||
.Sum(s => s.Value << s.Index);
|
||||
|
||||
// Find wires that need to be changed
|
||||
const long initialZValue = 58740594706150L;
|
||||
var targetZValue = xInputValue + yInputValue;
|
||||
|
||||
var difference = targetZValue ^ initialZValue;
|
||||
var possibleChange = new HashSet<string>();
|
||||
|
||||
for (var i = 0; i < sizeof(long) * 8; i++)
|
||||
{
|
||||
if (((1 << i) & difference) != 0)
|
||||
{
|
||||
possibleChange.Add($"z{i:D2}");
|
||||
}
|
||||
}
|
||||
|
||||
// Find all dependencies
|
||||
int initialSize;
|
||||
do
|
||||
{
|
||||
initialSize = possibleChange.Count;
|
||||
|
||||
foreach (var gate in initialGates)
|
||||
{
|
||||
if (possibleChange.Contains(gate.Output))
|
||||
{
|
||||
possibleChange.Add(gate.InputLeft);
|
||||
possibleChange.Add(gate.InputRight);
|
||||
}
|
||||
}
|
||||
} while (possibleChange.Count != initialSize);
|
||||
|
||||
var gatesToSwapIndices = initialGates
|
||||
.Index()
|
||||
.ToList()
|
||||
.Where(t => possibleChange.Contains(t.Item.Output))
|
||||
.Select(t => t.Index)
|
||||
.ToList();
|
||||
|
||||
// Try out all possible permutations of concerned outputs
|
||||
List<string> changedOutputs = [];
|
||||
|
||||
for (var a = 0; a < gatesToSwapIndices.Count - 7; a++)
|
||||
{
|
||||
for (var b = a + 1; b < gatesToSwapIndices.Count - 6; b++)
|
||||
{
|
||||
for (var c = b + 1; c < gatesToSwapIndices.Count - 5; c++)
|
||||
{
|
||||
for (var d = c + 1; d < gatesToSwapIndices.Count - 4; d++)
|
||||
{
|
||||
for (var e = d + 1; e < gatesToSwapIndices.Count - 3; e++)
|
||||
{
|
||||
for (var f = e + 1; f < gatesToSwapIndices.Count - 2; f++)
|
||||
{
|
||||
for (var g = f + 1; g < gatesToSwapIndices.Count - 1; g++)
|
||||
{
|
||||
for (var h = g + 1; h < gatesToSwapIndices.Count; h++)
|
||||
{
|
||||
Console.WriteLine($"h: {h}");
|
||||
|
||||
ForAllPermutation([
|
||||
gatesToSwapIndices[a],
|
||||
gatesToSwapIndices[b],
|
||||
gatesToSwapIndices[c],
|
||||
gatesToSwapIndices[d],
|
||||
gatesToSwapIndices[e],
|
||||
gatesToSwapIndices[f],
|
||||
gatesToSwapIndices[g],
|
||||
gatesToSwapIndices[h]], permutations =>
|
||||
{
|
||||
if (CheckPermutations(permutations) is { } modifiedOutputs)
|
||||
{
|
||||
changedOutputs = modifiedOutputs;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var swappedOutputs = string.Join(',', changedOutputs.Order());
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Swapped outputs: [yellow]{swappedOutputs}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
List<string>? CheckPermutations(int[] permutations)
|
||||
{
|
||||
var gates = initialGates.ToArray();
|
||||
var zGates = initialZGates.ToHashSet();
|
||||
var signals = initialSignals.ToDictionary();
|
||||
|
||||
SwapOutput(ref gates[permutations[0]], ref gates[permutations[1]]);
|
||||
SwapOutput(ref gates[permutations[2]], ref gates[permutations[3]]);
|
||||
SwapOutput(ref gates[permutations[4]], ref gates[permutations[5]]);
|
||||
SwapOutput(ref gates[permutations[6]], ref gates[permutations[7]]);
|
||||
|
||||
var zOutputValue = 0L;
|
||||
while (zGates.Count > 0)
|
||||
{
|
||||
// Avoid locks when result is not reachable (infinite loop)
|
||||
var resultsCount = signals.Count;
|
||||
|
||||
foreach (var (inputLeft, inputRight, output, logicOperator) in gates)
|
||||
{
|
||||
if (signals.ContainsKey(output))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!signals.TryGetValue(inputLeft, out var inputLeftValue) ||
|
||||
!signals.TryGetValue(inputRight, out var inputRightValue))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var computed = Compute(inputLeftValue, inputRightValue, logicOperator);
|
||||
signals[output] = computed;
|
||||
|
||||
if (output.StartsWith('z'))
|
||||
{
|
||||
zGates.Remove(output);
|
||||
|
||||
zOutputValue += (long)computed << int.Parse(output[1..]);
|
||||
}
|
||||
}
|
||||
|
||||
// No new signal value computed, it's an infinite loop
|
||||
if (signals.Count == resultsCount)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if (xInputValue + yInputValue == zOutputValue)
|
||||
{
|
||||
return permutations.Select(i => gates[i].Output).ToList();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
void SwapOutput(ref LogicGate first, ref LogicGate second)
|
||||
{
|
||||
var temp = first.Output;
|
||||
|
||||
first = first with { Output = second.Output };
|
||||
second = second with { Output = temp };
|
||||
}
|
||||
}
|
||||
|
||||
private int Compute(int inputLeftValue, int inputRightValue, Operator logicOperator) => logicOperator switch
|
||||
{
|
||||
Operator.And => inputLeftValue & inputRightValue,
|
||||
Operator.Or => inputLeftValue | inputRightValue,
|
||||
Operator.Xor => inputLeftValue ^ inputRightValue,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(logicOperator), logicOperator, null)
|
||||
};
|
||||
|
||||
private (Dictionary<string, int> Signals, List<LogicGate> Gates, HashSet<string> ZGates) ParseInput()
|
||||
{
|
||||
var readingSignals = true;
|
||||
|
||||
var signals = new Dictionary<string, int>();
|
||||
var gates = new List<LogicGate>();
|
||||
var zGates = new HashSet<string>();
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
if (line.IsWhiteSpace())
|
||||
{
|
||||
readingSignals = false;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (readingSignals)
|
||||
{
|
||||
var signalName = line[..line.IndexOf(':')];
|
||||
var signalValue = int.Parse(line[(line.IndexOf(':') + 2)..]);
|
||||
|
||||
signals[signalName.ToString()] = signalValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
var split = line.Split(' ');
|
||||
split.MoveNext();
|
||||
|
||||
var inputLeft = line[split.Current];
|
||||
split.MoveNext();
|
||||
|
||||
var logicOperator = Enum.Parse<Operator>(line[split.Current], true);
|
||||
split.MoveNext();
|
||||
|
||||
var inputRight = line[split.Current];
|
||||
split.MoveNext();
|
||||
split.MoveNext();
|
||||
|
||||
var output = line[split.Current];
|
||||
|
||||
gates.Add(new LogicGate(inputLeft.ToString(), inputRight.ToString(), output.ToString(), logicOperator));
|
||||
|
||||
if (output.StartsWith('z'))
|
||||
{
|
||||
zGates.Add(output.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (signals, gates, zGates);
|
||||
}
|
||||
|
||||
private record LogicGate(string InputLeft, string InputRight, string Output, Operator LogicOperator);
|
||||
|
||||
private enum Operator
|
||||
{
|
||||
And,
|
||||
Or,
|
||||
Xor
|
||||
}
|
||||
|
||||
// Source: https://stackoverflow.com/a/36634935
|
||||
|
||||
/// <summary>
|
||||
/// Heap's algorithm to find all permutations. Non recursive, more efficient.
|
||||
/// </summary>
|
||||
/// <param name="items">Items to permute in each possible ways</param>
|
||||
/// <param name="funcExecuteAndTellIfShouldStop"></param>
|
||||
/// <returns>Return true if cancelled</returns>
|
||||
private static bool ForAllPermutation<T>(T[] items, Func<T[], bool> funcExecuteAndTellIfShouldStop)
|
||||
{
|
||||
int countOfItem = items.Length;
|
||||
|
||||
if (countOfItem <= 1)
|
||||
{
|
||||
return funcExecuteAndTellIfShouldStop(items);
|
||||
}
|
||||
|
||||
var indexes = new int[countOfItem];
|
||||
|
||||
// Unnecessary. Thanks to NetManage for the advise
|
||||
// for (int i = 0; i < countOfItem; i++)
|
||||
// {
|
||||
// indexes[i] = 0;
|
||||
// }
|
||||
|
||||
if (funcExecuteAndTellIfShouldStop(items))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
for (int i = 1; i < countOfItem;)
|
||||
{
|
||||
if (indexes[i] < i)
|
||||
{
|
||||
// On the web there is an implementation with a multiplication which should be less efficient.
|
||||
if ((i & 1) == 1) // if (i % 2 == 1) ... more efficient ??? At least the same.
|
||||
{
|
||||
Swap(ref items[i], ref items[indexes[i]]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Swap(ref items[i], ref items[0]);
|
||||
}
|
||||
|
||||
if (funcExecuteAndTellIfShouldStop(items))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
indexes[i]++;
|
||||
i = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
indexes[i++] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Swap 2 elements of same type
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="a"></param>
|
||||
/// <param name="b"></param>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
private static void Swap<T>(ref T a, ref T b)
|
||||
{
|
||||
T temp = a;
|
||||
a = b;
|
||||
b = temp;
|
||||
}
|
||||
}
|
||||
111
Days/Day25.cs
111
Days/Day25.cs
@@ -1,111 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.VisualBasic;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day25 : Day
|
||||
{
|
||||
public override int Number => 25;
|
||||
public override string Name => "Code Chronicle";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (locks, keys) = ParseInput();
|
||||
|
||||
var workingPairs = 0;
|
||||
|
||||
foreach (var lockToTest in locks)
|
||||
{
|
||||
foreach (var key in keys)
|
||||
{
|
||||
if (lockToTest.Height1 + key.Height1 < 6 &&
|
||||
lockToTest.Height2 + key.Height2 < 6 &&
|
||||
lockToTest.Height3 + key.Height3 < 6 &&
|
||||
lockToTest.Height4 + key.Height4 < 6 &&
|
||||
lockToTest.Height5 + key.Height5 < 6)
|
||||
{
|
||||
workingPairs++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Amont of unique key/lock pairs that fit: [yellow]{workingPairs}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private (List<Lock> Locks, List<Key> Keys) ParseInput()
|
||||
{
|
||||
var locks = new List<Lock>();
|
||||
var keys = new List<Key>();
|
||||
|
||||
Span<int> itemHeights = stackalloc int[5];
|
||||
|
||||
var input = Input.AsSpan();
|
||||
foreach (var itemRange in input.Split($"{Environment.NewLine}{Environment.NewLine}"))
|
||||
{
|
||||
var item = input[itemRange];
|
||||
var lines = item.EnumerateLines();
|
||||
|
||||
var isKey = false;
|
||||
|
||||
// Reset item heights
|
||||
itemHeights[0] = -1;
|
||||
itemHeights[1] = -1;
|
||||
itemHeights[2] = -1;
|
||||
itemHeights[3] = -1;
|
||||
itemHeights[4] = -1;
|
||||
|
||||
for (var height = 0; height <= 6; height++)
|
||||
{
|
||||
lines.MoveNext();
|
||||
var line = lines.Current;
|
||||
|
||||
if (height is 0)
|
||||
{
|
||||
isKey = line is ".....";
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
for (var i = 0; i < 5; i++)
|
||||
{
|
||||
if (isKey && line[i] is '#' && itemHeights[i] is -1)
|
||||
{
|
||||
itemHeights[i] = 6 - height;
|
||||
}
|
||||
else if (!isKey && line[i] is '.' && itemHeights[i] is -1)
|
||||
{
|
||||
itemHeights[i] = height - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isKey)
|
||||
{
|
||||
keys.Add(new Key(itemHeights[0], itemHeights[1], itemHeights[2], itemHeights[3], itemHeights[4]));
|
||||
}
|
||||
else
|
||||
{
|
||||
locks.Add(new Lock(itemHeights[0], itemHeights[1], itemHeights[2], itemHeights[3], itemHeights[4]));
|
||||
}
|
||||
}
|
||||
|
||||
return (locks, keys);
|
||||
}
|
||||
|
||||
private readonly record struct Lock(int Height1, int Height2, int Height3, int Height4, int Height5);
|
||||
private readonly record struct Key(int Height1, int Height2, int Height3, int Height4, int Height5);
|
||||
}
|
||||
139
Days/Day3.cs
139
Days/Day3.cs
@@ -5,105 +5,116 @@ namespace AdventOfCode.Days;
|
||||
public class Day3 : Day
|
||||
{
|
||||
public override int Number => 3;
|
||||
public override string Name => "Mull It Over";
|
||||
public override string Name => "Lobby";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var result = 0;
|
||||
var totalOutputJoltage = 0L;
|
||||
|
||||
var input = Input.AsSpan();
|
||||
var mulStart = input.IndexOf("mul(");
|
||||
Span<int> bank = stackalloc int[100];
|
||||
|
||||
while (mulStart != -1)
|
||||
foreach (var line in Input.EnumerateLines())
|
||||
{
|
||||
input = input[(mulStart + 4)..];
|
||||
|
||||
// Start of a mul operation, search the ending parenthesis and make sure it's before the next mul
|
||||
var mulEnd = input.IndexOf(")");
|
||||
var nextMulStart = input.IndexOf("mul(");
|
||||
|
||||
if (mulEnd != -1 && (nextMulStart == -1 || mulEnd < nextMulStart))
|
||||
// Parse the line into battery values
|
||||
for (var i = 0; i < bank.Length; i++)
|
||||
{
|
||||
var operands = input[..mulEnd];
|
||||
var separator = operands.IndexOf(",");
|
||||
bank[i] = line[i] - '0';
|
||||
}
|
||||
|
||||
if (separator != -1
|
||||
&& int.TryParse(operands[..separator], out var left)
|
||||
&& int.TryParse(operands[(separator + 1)..], out var right))
|
||||
// The first digit the joltage value will be the "left-most" biggest number we can find
|
||||
var firstDigitMax = bank[0];
|
||||
var firstDigitMaxIndex = 0;
|
||||
|
||||
for (var i = 1; i < bank.Length - 1; i++)
|
||||
{
|
||||
var batteryValue = bank[i];
|
||||
if (batteryValue > firstDigitMax)
|
||||
{
|
||||
result += left * right;
|
||||
firstDigitMax = batteryValue;
|
||||
firstDigitMaxIndex = i;
|
||||
|
||||
// We cannot have a digit bigger than 9
|
||||
if (batteryValue is 9)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mulStart = nextMulStart;
|
||||
// Now we can find the second digit which will be the biggest digit on the right of the first one
|
||||
var secondDigitMax = bank[firstDigitMaxIndex + 1];
|
||||
for (var i = firstDigitMaxIndex + 2; i < bank.Length; i++)
|
||||
{
|
||||
var batteryValue = bank[i];
|
||||
|
||||
if (batteryValue > secondDigitMax)
|
||||
{
|
||||
secondDigitMax = batteryValue;
|
||||
|
||||
if (batteryValue is 9)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Build the joltage value
|
||||
totalOutputJoltage += firstDigitMax * 10 + secondDigitMax;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Result: [yellow]{result}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]The total output joltage is: [yellow]{totalOutputJoltage}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var result = 0;
|
||||
var totalOutputJoltage = 0L;
|
||||
|
||||
var input = Input.AsSpan();
|
||||
var mulStart = input.IndexOf("mul(");
|
||||
Span<int> bank = stackalloc int[100];
|
||||
|
||||
while (mulStart != -1)
|
||||
foreach (var line in Input.EnumerateLines())
|
||||
{
|
||||
// Check if there is a "don't()" before next mul
|
||||
var dontStart = input.IndexOf("don't()");
|
||||
|
||||
if (dontStart < mulStart)
|
||||
// Parse the line into battery values
|
||||
for (var i = 0; i < bank.Length; i++)
|
||||
{
|
||||
// Search for next "do()"
|
||||
input = input[(dontStart + 7)..];
|
||||
|
||||
var doStart = input.IndexOf("do()");
|
||||
|
||||
if (doStart == -1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
input = input[(doStart + 4)..];
|
||||
|
||||
// Update next mult position
|
||||
mulStart = input.IndexOf("mul(");
|
||||
|
||||
if (mulStart == -1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
bank[i] = line[i] - '0';
|
||||
}
|
||||
|
||||
input = input[(mulStart + 4)..];
|
||||
|
||||
// Start of a mul operation, search the ending parenthesis and make sure it's before the next mul
|
||||
var mulEnd = input.IndexOf(")");
|
||||
var nextMulStart = input.IndexOf("mul(");
|
||||
|
||||
if (mulEnd != -1 && (nextMulStart == -1 || mulEnd < nextMulStart))
|
||||
var maxIndex = -1;
|
||||
for (var digitPosition = 11; digitPosition >= 0; digitPosition--)
|
||||
{
|
||||
var operands = input[..mulEnd];
|
||||
var separator = operands.IndexOf(",");
|
||||
// Next max is always on the right of previous one
|
||||
maxIndex++;
|
||||
|
||||
if (separator != -1
|
||||
&& int.TryParse(operands[..separator], out var left)
|
||||
&& int.TryParse(operands[(separator + 1)..], out var right))
|
||||
// Find biggest battery value on the right
|
||||
var max = bank[maxIndex];
|
||||
for (var i = maxIndex + 1; i < bank.Length - digitPosition; i++)
|
||||
{
|
||||
result += left * right;
|
||||
}
|
||||
}
|
||||
var batteryValue = bank[i];
|
||||
|
||||
mulStart = nextMulStart;
|
||||
if (batteryValue > max)
|
||||
{
|
||||
maxIndex = i;
|
||||
max = batteryValue;
|
||||
|
||||
// We cannot have a digit bigger than 9
|
||||
if (batteryValue is 9)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Directly add its value to the total, we don't need to do compound sum
|
||||
totalOutputJoltage += max * (long) Math.Pow(10, digitPosition);
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Result: [yellow]{result}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]The total output joltage is: [yellow]{totalOutputJoltage}[/][/]");
|
||||
}
|
||||
}
|
||||
}
|
||||
222
Days/Day4.cs
222
Days/Day4.cs
@@ -5,132 +5,152 @@ namespace AdventOfCode.Days;
|
||||
public class Day4 : Day
|
||||
{
|
||||
public override int Number => 4;
|
||||
public override string Name => "Ceres Search";
|
||||
public override string Name => "Printing Department";
|
||||
|
||||
public const int Length = 136;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var xmasCount = 0;
|
||||
var accessibleRollsOfPaper = 0;
|
||||
|
||||
var grid = Input.AsCharGrid();
|
||||
var map = ParseMap(Input);
|
||||
|
||||
for (int x = 0; x < grid.GetLength(0); x++)
|
||||
Span<(int i, int j)> adjacentPositions =
|
||||
[
|
||||
(-1, -1), (-1, 0), (-1, 1),
|
||||
( 0, -1), ( 0, 1),
|
||||
( 1, -1), ( 1, 0), ( 1, 1)
|
||||
];
|
||||
|
||||
for (var i = 0; i < Length; i++)
|
||||
{
|
||||
for (int y = 0; y < grid.GetLength(1); y++)
|
||||
for (var j = 0; j < Length; j++)
|
||||
{
|
||||
xmasCount += CheckXmas(x, y);
|
||||
// There is no paper roll at position (i, j)
|
||||
if (!map[i, j])
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check if a paper roll is accessible
|
||||
var adjacentRolls = 0;
|
||||
foreach (var adjacentPosition in adjacentPositions)
|
||||
{
|
||||
var targetI = i + adjacentPosition.i;
|
||||
var targetJ = j + adjacentPosition.j;
|
||||
|
||||
// Check that the adjacent position is not out of bounds
|
||||
if (targetI is < 0 or >= Length || targetJ is < 0 or >= Length)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (map[targetI, targetJ])
|
||||
{
|
||||
adjacentRolls++;
|
||||
}
|
||||
}
|
||||
|
||||
if (adjacentRolls < 4)
|
||||
{
|
||||
accessibleRollsOfPaper++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{xmasCount}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
int CheckXmas(int x, int y)
|
||||
{
|
||||
(int xOffset, int yOffset)[] patterns = [
|
||||
(1, 0),
|
||||
(-1, 0),
|
||||
(0, 1),
|
||||
(0, -1),
|
||||
(1, 1),
|
||||
(1, -1),
|
||||
(-1, 1),
|
||||
(-1, -1)
|
||||
];
|
||||
|
||||
char[] word = ['X', 'M', 'A', 'S'];
|
||||
|
||||
int count = 0;
|
||||
|
||||
foreach (var pattern in patterns)
|
||||
{
|
||||
bool valid = true;
|
||||
|
||||
for (int i = 0; i < word.Length; i++)
|
||||
{
|
||||
var xTarget = x + (pattern.xOffset * i);
|
||||
var yTarget = y + (pattern.yOffset * i);
|
||||
|
||||
if (xTarget < 0 || xTarget >= grid.GetLength(0)
|
||||
|| yTarget < 0 || yTarget >= grid.GetLength(1)
|
||||
|| word[i] != grid[xTarget, yTarget])
|
||||
{
|
||||
valid = false;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (valid)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
AnsiConsole.MarkupLine($"[green]Accessible rolls of paper: [yellow]{accessibleRollsOfPaper}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var xmasCount = 0;
|
||||
var accessibleRollsOfPaper = 0;
|
||||
|
||||
var grid = Input.AsCharGrid();
|
||||
var map = ParseMap(Input);
|
||||
|
||||
for (int x = 0; x < grid.GetLength(0); x++)
|
||||
Span<(int i, int j)> adjacentPositions =
|
||||
[
|
||||
(-1, -1), (-1, 0), (-1, 1),
|
||||
( 0, -1), ( 0, 1),
|
||||
( 1, -1), ( 1, 0), ( 1, 1)
|
||||
];
|
||||
|
||||
int removedRollsOfPaper;
|
||||
// Loop until we cannot remove any roll anymore
|
||||
do
|
||||
{
|
||||
for (int y = 0; y < grid.GetLength(1); y++)
|
||||
removedRollsOfPaper = 0;
|
||||
|
||||
for (var i = 0; i < Length; i++)
|
||||
{
|
||||
xmasCount += CheckXmas(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{xmasCount}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
int CheckXmas(int x, int y)
|
||||
{
|
||||
((int xOffset, int yOffset) first, (int xOffset, int yOffset) second)[] patterns = [
|
||||
((-1, -1), (-1, 1)),
|
||||
((-1, -1), (1, -1)),
|
||||
((1, -1), (1, 1)),
|
||||
((1, 1), (-1, 1))
|
||||
];
|
||||
|
||||
char[] word = ['M', 'S'];
|
||||
|
||||
// Center element of the cross must be an 'A'
|
||||
if (grid[x, y] != 'A')
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Make sure we're not going out of bounds
|
||||
if (x - 1 < 0 || x + 1 >= grid.GetLength(0) ||
|
||||
y - 1 < 0 || y + 1 >= grid.GetLength(1))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int count = 0;
|
||||
|
||||
foreach (var (first, second) in patterns)
|
||||
{
|
||||
if (grid[x + first.xOffset, y + first.yOffset] is 'M' && grid[x - first.xOffset, y - first.yOffset] is 'S' &&
|
||||
grid[x + second.xOffset, y + second.yOffset] is 'M' && grid[x - second.xOffset, y - second.yOffset] is 'S')
|
||||
for (var j = 0; j < Length; j++)
|
||||
{
|
||||
count++;
|
||||
// There is no paper roll at position (i, j)
|
||||
if (!map[i, j])
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check if a paper roll is accessible
|
||||
var adjacentRolls = 0;
|
||||
foreach (var adjacentPosition in adjacentPositions)
|
||||
{
|
||||
var targetI = i + adjacentPosition.i;
|
||||
var targetJ = j + adjacentPosition.j;
|
||||
|
||||
// Check that the adjacent position is not out of bounds
|
||||
if (targetI is < 0 or >= Length || targetJ is < 0 or >= Length)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (map[targetI, targetJ])
|
||||
{
|
||||
adjacentRolls++;
|
||||
}
|
||||
}
|
||||
|
||||
if (adjacentRolls < 4)
|
||||
{
|
||||
removedRollsOfPaper++;
|
||||
|
||||
// Remove roll of paper
|
||||
map[i, j] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
accessibleRollsOfPaper += removedRollsOfPaper;
|
||||
} while (removedRollsOfPaper > 0);
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Accessible rolls of paper: [yellow]{accessibleRollsOfPaper}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private static bool[,] ParseMap(string input)
|
||||
{
|
||||
// Map is a square
|
||||
var map = new bool[Length, Length];
|
||||
|
||||
var i = 0;
|
||||
foreach (var line in input.EnumerateLines())
|
||||
{
|
||||
var j = 0;
|
||||
|
||||
foreach (var value in line)
|
||||
{
|
||||
map[i, j] = value is '@';
|
||||
|
||||
j++;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
}
|
||||
194
Days/Day5.cs
194
Days/Day5.cs
@@ -5,117 +5,129 @@ namespace AdventOfCode.Days;
|
||||
public class Day5 : Day
|
||||
{
|
||||
public override int Number => 5;
|
||||
public override string Name => "Print Queue";
|
||||
public override string Name => "Cafeteria";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var result = 0;
|
||||
var freshIngredients = 0;
|
||||
var idRanges = new List<IdRange>();
|
||||
|
||||
var precedences = new HashSet<int>?[100];
|
||||
|
||||
var readingPrecedences = true;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
var readingRanges = true;
|
||||
foreach (var line in Input.EnumerateLines())
|
||||
{
|
||||
if (line.IsWhiteSpace())
|
||||
// Read ranges
|
||||
if (readingRanges)
|
||||
{
|
||||
readingPrecedences = false;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (readingPrecedences)
|
||||
{
|
||||
var split = line.Split('|');
|
||||
split.MoveNext();
|
||||
|
||||
var ruleTarget = int.Parse(line[split.Current]);
|
||||
|
||||
split.MoveNext();
|
||||
|
||||
var ruleNumber = int.Parse(line[split.Current]);
|
||||
|
||||
if (precedences[ruleTarget] is not { } precedenceSet)
|
||||
// End of ranges
|
||||
if (line.IsWhiteSpace())
|
||||
{
|
||||
precedenceSet = [ ruleNumber ];
|
||||
precedences[ruleTarget] = precedenceSet;
|
||||
}
|
||||
else
|
||||
{
|
||||
precedenceSet.Add(ruleNumber);
|
||||
readingRanges = false;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
var rangeSeparatorIndex = line.IndexOf('-');
|
||||
var lower = long.Parse(line[..rangeSeparatorIndex]);
|
||||
var upper = long.Parse(line[(rangeSeparatorIndex + 1)..]);
|
||||
|
||||
idRanges.Add(new IdRange(lower, upper));
|
||||
}
|
||||
else
|
||||
{
|
||||
result += CheckLine(line);
|
||||
// Read ingredients
|
||||
var ingredientId = long.Parse(line);
|
||||
if (idRanges.Any(range => ingredientId >= range.Lower && ingredientId <= range.Upper))
|
||||
{
|
||||
freshIngredients++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Sum of middle page numbers: [yellow]{result}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
int CheckLine(ReadOnlySpan<char> line)
|
||||
{
|
||||
Span<int> 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;
|
||||
AnsiConsole.MarkupLine($"[green]Fresh ingredients count: [yellow]{freshIngredients}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
// if (display)
|
||||
// {
|
||||
// AnsiConsole.MarkupLine($"[green]Number of safe reports: [yellow]{xmasCount}[/][/]");
|
||||
// }
|
||||
var idRanges = new List<IdRange>();
|
||||
var rangesToDelete = new List<IdRange>();
|
||||
|
||||
// Read ranges
|
||||
foreach (var line in Input.EnumerateLines())
|
||||
{
|
||||
// End of ranges
|
||||
if (line.IsWhiteSpace())
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
var rangeSeparatorIndex = line.IndexOf('-');
|
||||
var lower = long.Parse(line[..rangeSeparatorIndex]);
|
||||
var upper = long.Parse(line[(rangeSeparatorIndex + 1)..]);
|
||||
|
||||
// Simplify ranges if there is overlap
|
||||
rangesToDelete.Clear();
|
||||
var skipRange = false;
|
||||
foreach (var idRange in idRanges)
|
||||
{
|
||||
// Distinct
|
||||
if (lower > idRange.Upper || upper < idRange.Lower)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Outer overlap
|
||||
if (lower >= idRange.Lower && upper <= idRange.Upper)
|
||||
{
|
||||
skipRange = true;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// Inner overlap
|
||||
if (lower <= idRange.Lower && upper >= idRange.Upper)
|
||||
{
|
||||
rangesToDelete.Add(idRange);
|
||||
}
|
||||
|
||||
// Left overlap
|
||||
if (lower >= idRange.Lower && lower <= idRange.Upper)
|
||||
{
|
||||
lower = idRange.Lower;
|
||||
|
||||
rangesToDelete.Add(idRange);
|
||||
}
|
||||
|
||||
// Right overlap
|
||||
if (upper >= idRange.Lower && upper <= idRange.Upper)
|
||||
{
|
||||
upper = idRange.Upper;
|
||||
|
||||
|
||||
rangesToDelete.Add(idRange);
|
||||
}
|
||||
}
|
||||
|
||||
if (!skipRange)
|
||||
{
|
||||
foreach (var idRange in rangesToDelete)
|
||||
{
|
||||
idRanges.Remove(idRange);
|
||||
}
|
||||
|
||||
idRanges.Add(new IdRange(lower, upper));
|
||||
}
|
||||
}
|
||||
|
||||
var freshIngredients = idRanges.Sum(range => (range.Upper - range.Lower) + 1);
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Fresh ingredients count: [yellow]{freshIngredients}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private record struct IdRange(long Lower, long Upper);
|
||||
}
|
||||
273
Days/Day6.cs
273
Days/Day6.cs
@@ -1,3 +1,4 @@
|
||||
using System.Buffers;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
@@ -6,189 +7,203 @@ namespace AdventOfCode.Days;
|
||||
public class Day6 : Day
|
||||
{
|
||||
public override int Number => 6;
|
||||
public override string Name => "Guard Gallivant";
|
||||
public override string Name => "Trash Compactor";
|
||||
|
||||
private const int GridSize = 130;
|
||||
|
||||
private static readonly Point DirectionUp = new(0, -1);
|
||||
private static readonly Point DirectionDown = new(0, 1);
|
||||
private static readonly Point DirectionLeft = new(-1, 0);
|
||||
private static readonly Point DirectionRight = new(1, 0);
|
||||
private static SearchValues<char> DigitsSearchValue = SearchValues.Create(
|
||||
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
|
||||
);
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
HashSet<Point> visited = [];
|
||||
var direction = DirectionUp;
|
||||
long grandTotal = 0;
|
||||
var numberRows = new List<List<long>>(4);
|
||||
var symbolRow = new List<char>();
|
||||
|
||||
var (obstaclesGrid, position) = ReadInputGrid();
|
||||
|
||||
visited.Add(position);
|
||||
|
||||
// Move the guard till it leaves the grid
|
||||
while (true)
|
||||
var rowIndex = 0;
|
||||
foreach (var line in Input.EnumerateLines())
|
||||
{
|
||||
var destination = position + direction;
|
||||
|
||||
if (destination.X is < 0 or >= GridSize ||
|
||||
destination.Y is < 0 or >= GridSize)
|
||||
if (rowIndex <= 3)
|
||||
{
|
||||
break;
|
||||
numberRows.Add([]);
|
||||
}
|
||||
|
||||
// Check if it's possible to move or if there is an obstacle
|
||||
if (obstaclesGrid[destination.X, destination.Y])
|
||||
foreach (var range in line.Split(' '))
|
||||
{
|
||||
direction = NextDirection(direction);
|
||||
var span = line[range];
|
||||
|
||||
continue;
|
||||
// Ignore split columns
|
||||
if (span.IsWhiteSpace())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Numbers
|
||||
if (rowIndex <= 3)
|
||||
{
|
||||
numberRows[rowIndex].Add(int.Parse(span));
|
||||
}
|
||||
// Symbols
|
||||
else
|
||||
{
|
||||
symbolRow.Add(span.Trim()[0]);
|
||||
}
|
||||
}
|
||||
|
||||
position = destination;
|
||||
rowIndex++;
|
||||
}
|
||||
|
||||
visited.Add(position);
|
||||
// Do the calculations
|
||||
var count = numberRows[0].Count;
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
checked
|
||||
{
|
||||
grandTotal += symbolRow[i] switch
|
||||
{
|
||||
'+' => numberRows[0][i] + numberRows[1][i] + numberRows[2][i] + numberRows[3][i],
|
||||
'*' => numberRows[0][i] * numberRows[1][i] * numberRows[2][i] * numberRows[3][i],
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Amount of distinct positions: [yellow]{visited.Count}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]The grand total is: [yellow]{grandTotal}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var possibleLoops = 0;
|
||||
var (initialGrid, startPosition) = ReadInputGrid();
|
||||
long grandTotal = 0L;
|
||||
var numberRows = new List<List<long>>(4);
|
||||
var symbolRow = new List<char>();
|
||||
|
||||
for (var y = 0; y < GridSize; y++)
|
||||
var lines = Input.Split(Environment.NewLine);
|
||||
|
||||
for (var i = 0; i < 4; i++)
|
||||
{
|
||||
for (var x = 0; x < GridSize; x++)
|
||||
numberRows.Add([]);
|
||||
}
|
||||
|
||||
var offset = 0;
|
||||
while (offset < lines[0].Length)
|
||||
{
|
||||
// Find offset at which the next set of numbers stop
|
||||
var numbersEnd = offset + 1;
|
||||
var foundSpaceColumn = false;
|
||||
while (!foundSpaceColumn)
|
||||
{
|
||||
// Store obstacle state
|
||||
var initialState = initialGrid[x, y];
|
||||
|
||||
// Check if grid is a loop after adding an obstacle there
|
||||
initialGrid[x, y] = true;
|
||||
|
||||
if (IsLoop(initialGrid, startPosition))
|
||||
foreach (var line in lines)
|
||||
{
|
||||
possibleLoops++;
|
||||
}
|
||||
// If any line does not contain a space, we can go next offset
|
||||
if (line[numbersEnd] is not ' ')
|
||||
{
|
||||
numbersEnd++;
|
||||
foundSpaceColumn = false;
|
||||
|
||||
// Restore obstacle state
|
||||
initialGrid[x, y] = initialState;
|
||||
break;
|
||||
}
|
||||
|
||||
foundSpaceColumn = true;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < numberRows.Count; i++)
|
||||
{
|
||||
var span = lines[i].AsSpan()[offset..numbersEnd];
|
||||
|
||||
// Parse number with correct offset
|
||||
var lastPaddingIndex = span.LastIndexOfAnyExcept(DigitsSearchValue);
|
||||
var lastDigitIndex = span.LastIndexOfAny(DigitsSearchValue);
|
||||
|
||||
if (lastPaddingIndex > lastDigitIndex)
|
||||
{
|
||||
numberRows[i].Add(long.Parse(span) * (int)Math.Pow(10, lastPaddingIndex - lastDigitIndex));
|
||||
}
|
||||
else
|
||||
{
|
||||
numberRows[i].Add(long.Parse(span));
|
||||
}
|
||||
}
|
||||
|
||||
// Also get the symbol
|
||||
symbolRow.Add(lines[4][offset]);
|
||||
|
||||
// Next pack of numbers starts after the space column
|
||||
offset = numbersEnd + 1;
|
||||
}
|
||||
|
||||
// Do the calculations
|
||||
Span<long> numbersBuffer = stackalloc long[4];
|
||||
var count = numberRows[0].Count;
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
numbersBuffer[0] = numberRows[0][i];
|
||||
numbersBuffer[1] = numberRows[1][i];
|
||||
numbersBuffer[2] = numberRows[2][i];
|
||||
numbersBuffer[3] = numberRows[3][i];
|
||||
|
||||
NumbersToRtl(numbersBuffer);
|
||||
|
||||
grandTotal += symbolRow[i] switch
|
||||
{
|
||||
'+' => numbersBuffer[0] + numbersBuffer[1] + numbersBuffer[2] + numbersBuffer[3],
|
||||
'*' => ValueOrIdentity(numbersBuffer[0]) * ValueOrIdentity(numbersBuffer[1]) * ValueOrIdentity(numbersBuffer[2]) * ValueOrIdentity(numbersBuffer[3]),
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
};
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Amount of possible loop positions: [yellow]{possibleLoops}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]The grand total is: [yellow]{grandTotal}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool IsLoop(bool[,] obstaclesGrid, Point position)
|
||||
void NumbersToRtl(Span<long> numbers)
|
||||
{
|
||||
HashSet<(Point position, Point direction)> visited = [];
|
||||
var direction = DirectionUp;
|
||||
Span<char> number0 = stackalloc char[4];
|
||||
Span<char> number1 = stackalloc char[4];
|
||||
Span<char> number2 = stackalloc char[4];
|
||||
Span<char> number3 = stackalloc char[4];
|
||||
|
||||
visited.Add((position, direction));
|
||||
numbers[0].TryFormat(number0, out _, "D4");
|
||||
numbers[1].TryFormat(number1, out _, "D4");
|
||||
numbers[2].TryFormat(number2, out _, "D4");
|
||||
numbers[3].TryFormat(number3, out _, "D4");
|
||||
|
||||
// Move the guard till it loops or leaves the grid
|
||||
while (true)
|
||||
// Reconstruct numbers
|
||||
for (var i = 0; i < 4; i++)
|
||||
{
|
||||
var destination = position + direction;
|
||||
var number = 0;
|
||||
|
||||
if (visited.Contains((destination, direction)))
|
||||
if (number0[i] - '0' is not 0 and var digit0)
|
||||
{
|
||||
return true;
|
||||
number = digit0;
|
||||
}
|
||||
|
||||
if (destination.X is < 0 or >= GridSize || destination.Y is < 0 or >= GridSize)
|
||||
if (number1[i] - '0' is not 0 and var digit1)
|
||||
{
|
||||
return false;
|
||||
number = (number * 10) + digit1;
|
||||
}
|
||||
|
||||
// Check if it's possible to move or if there is an obstacle
|
||||
if (obstaclesGrid[destination.X, destination.Y])
|
||||
if (number2[i] - '0' is not 0 and var digit2)
|
||||
{
|
||||
direction = NextDirection(direction);
|
||||
|
||||
continue;
|
||||
number = (number * 10) + digit2;
|
||||
}
|
||||
|
||||
position = destination;
|
||||
if (number3[i] - '0' is not 0 and var digit3)
|
||||
{
|
||||
number = (number * 10) + digit3;
|
||||
}
|
||||
|
||||
visited.Add((position, direction));
|
||||
numbers[i] = number;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private (bool[,] ObstaclesGrid, Point Start) ReadInputGrid()
|
||||
{
|
||||
var grid = new bool[GridSize, GridSize];
|
||||
Point start = default;
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
{
|
||||
var x = 0;
|
||||
|
||||
foreach (var symbol in line)
|
||||
{
|
||||
if (symbol == '^')
|
||||
{
|
||||
start = new Point(x, y);
|
||||
|
||||
grid[x, y] = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
grid[x, y] = symbol switch
|
||||
{
|
||||
'#' => true,
|
||||
_ => false
|
||||
};
|
||||
}
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
return (grid, start);
|
||||
}
|
||||
|
||||
private static Point NextDirection(Point direction)
|
||||
{
|
||||
if (direction == DirectionUp)
|
||||
{
|
||||
return DirectionRight;
|
||||
}
|
||||
|
||||
if (direction == DirectionRight)
|
||||
{
|
||||
return DirectionDown;
|
||||
}
|
||||
|
||||
if (direction == DirectionDown)
|
||||
{
|
||||
return DirectionLeft;
|
||||
}
|
||||
|
||||
if (direction == DirectionLeft)
|
||||
{
|
||||
return DirectionUp;
|
||||
}
|
||||
|
||||
throw new ArgumentException("Invalid direction", nameof(direction));
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y) : IAdditionOperators<Point, Point, Point>
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
}
|
||||
long ValueOrIdentity(long value) => value is 0
|
||||
? 1
|
||||
: value;
|
||||
}
|
||||
}
|
||||
196
Days/Day7.cs
196
Days/Day7.cs
@@ -1,3 +1,5 @@
|
||||
using System.Buffers;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
@@ -5,115 +7,169 @@ namespace AdventOfCode.Days;
|
||||
public class Day7 : Day
|
||||
{
|
||||
public override int Number => 7;
|
||||
public override string Name => "Bridge Repair";
|
||||
public override string Name => "Laboratories";
|
||||
|
||||
public const int Width = 141;
|
||||
public const int Height = 142;
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var calibrationResult = 0L;
|
||||
var splitCount = 0;
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
var splittersMap = ParseSplittersMap(Input, out var startPosition);
|
||||
|
||||
var beams = new HashSet<Position>();
|
||||
var nextLineBeams = new List<Position>();
|
||||
var usedSplitters = new HashSet<Position>();
|
||||
beams.Add(startPosition with { I = startPosition.I + 1 });
|
||||
|
||||
// Simulate beams going down
|
||||
var row = 1;
|
||||
while (row < Height - 1)
|
||||
{
|
||||
// Read input equation
|
||||
var equationStart = line.IndexOf(':');
|
||||
|
||||
var target = long.Parse(line[..equationStart]);
|
||||
|
||||
var numbers = new List<long>();
|
||||
var equationNumbers = line[(equationStart + 2)..];
|
||||
|
||||
foreach (var range in equationNumbers.Split(' '))
|
||||
foreach (var beamPosition in beams)
|
||||
{
|
||||
numbers.Add(int.Parse(equationNumbers[range]));
|
||||
var targetPosition = beamPosition with { I = beamPosition.I + 1 };
|
||||
|
||||
// There is nothing below
|
||||
if (!splittersMap[targetPosition.I, targetPosition.J])
|
||||
{
|
||||
nextLineBeams.Add(targetPosition);
|
||||
}
|
||||
// There is a splitter, only counts it if not already used
|
||||
else if (usedSplitters.Add(targetPosition))
|
||||
{
|
||||
splitCount++;
|
||||
|
||||
// Left and right beam
|
||||
if (targetPosition.J - 1 >= 0)
|
||||
{
|
||||
nextLineBeams.Add(targetPosition with { J = targetPosition.J - 1 });
|
||||
}
|
||||
|
||||
if (targetPosition.J + 1 < Width)
|
||||
{
|
||||
nextLineBeams.Add(targetPosition with { J = targetPosition.J + 1 });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check if equation is possible
|
||||
if (CheckEquation(target, numbers.ToArray().AsSpan()[1..], numbers[0]))
|
||||
// Always delete current line beams since we iterate from top to bottom
|
||||
beams.Clear();
|
||||
foreach (var nextLineBeam in nextLineBeams)
|
||||
{
|
||||
calibrationResult += target;
|
||||
beams.Add(nextLineBeam);
|
||||
}
|
||||
nextLineBeams.Clear();
|
||||
|
||||
// Also clear the used splitters list for next line
|
||||
usedSplitters.Clear();
|
||||
|
||||
row++;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Total calibration result: [yellow]{calibrationResult}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool CheckEquation(long target, ReadOnlySpan<long> numbers, long result)
|
||||
{
|
||||
// Early return when result is greater than target because result is increasing
|
||||
if (result > target)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (numbers.IsEmpty)
|
||||
{
|
||||
return result == target;
|
||||
}
|
||||
|
||||
var sumResult = result + numbers[0];
|
||||
var multiplyResult = result * numbers[0];
|
||||
|
||||
return CheckEquation(target, numbers[1..], sumResult)
|
||||
|| CheckEquation(target, numbers[1..], multiplyResult);
|
||||
AnsiConsole.MarkupLine($"[green]Beam split count: [yellow]{splitCount}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var calibrationResult = 0L;
|
||||
var splittersMap = ParseSplittersMap(Input, out var startPosition);
|
||||
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
var quantumPositions = new Dictionary<Position, long>();
|
||||
var nextQuantumPositions = new Dictionary<Position, long>();
|
||||
quantumPositions.Add(startPosition with { I = startPosition.I + 1 }, 1L);
|
||||
|
||||
// Simulate beams going down for each timeline
|
||||
var row = 1;
|
||||
while (row < Height - 1)
|
||||
{
|
||||
// Read input equation
|
||||
var equationStart = line.IndexOf(':');
|
||||
|
||||
var target = long.Parse(line[..equationStart]);
|
||||
|
||||
var numbers = new List<long>();
|
||||
var equationNumbers = line[(equationStart + 2)..];
|
||||
|
||||
foreach (var range in equationNumbers.Split(' '))
|
||||
// Simulation step
|
||||
foreach (var (beamPosition, timelinesCount) in quantumPositions)
|
||||
{
|
||||
numbers.Add(int.Parse(equationNumbers[range]));
|
||||
var targetPosition = beamPosition with { I = beamPosition.I + 1 };
|
||||
|
||||
// There is nothing below, keep going down
|
||||
if (!splittersMap[targetPosition.I, targetPosition.J])
|
||||
{
|
||||
UpdateTimelines(nextQuantumPositions, targetPosition, timelinesCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Left and right beams
|
||||
var leftBeamPosition = targetPosition with { J = targetPosition.J - 1 };
|
||||
var rightBeamPosition = targetPosition with { J = targetPosition.J + 1 };
|
||||
|
||||
UpdateTimelines(nextQuantumPositions, leftBeamPosition, timelinesCount);
|
||||
UpdateTimelines(nextQuantumPositions, rightBeamPosition, timelinesCount);
|
||||
}
|
||||
}
|
||||
|
||||
// Check if equation is possible
|
||||
if (CheckEquation(target, numbers.ToArray().AsSpan()[1..], numbers[0]))
|
||||
// Always delete current line beams since we iterate from top to bottom
|
||||
quantumPositions.Clear();
|
||||
foreach (var nextQuantumPosition in nextQuantumPositions)
|
||||
{
|
||||
calibrationResult += target;
|
||||
quantumPositions.Add(nextQuantumPosition.Key, nextQuantumPosition.Value);
|
||||
}
|
||||
nextQuantumPositions.Clear();
|
||||
|
||||
row++;
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Total calibration result: [yellow]{calibrationResult}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]Timelines count: [yellow]{quantumPositions.Sum(p => p.Value)}[/][/]");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
bool CheckEquation(long target, ReadOnlySpan<long> numbers, long result)
|
||||
// Update and merge timelines
|
||||
static void UpdateTimelines(Dictionary<Position, long> nextQuantumPositions, Position targetPosition, long timelinesCount)
|
||||
{
|
||||
// Early return when result is greater than target because result is increasing
|
||||
if (result > target)
|
||||
// Merge timelines if there is already one for this target position
|
||||
if (nextQuantumPositions.TryGetValue(targetPosition, out var otherTimelinesCount))
|
||||
{
|
||||
return false;
|
||||
nextQuantumPositions[targetPosition] = otherTimelinesCount + timelinesCount;
|
||||
}
|
||||
|
||||
if (numbers.IsEmpty)
|
||||
// No timelines to merge, no new timeline
|
||||
else
|
||||
{
|
||||
return result == target;
|
||||
nextQuantumPositions[targetPosition] = timelinesCount;
|
||||
}
|
||||
|
||||
var sumResult = result + numbers[0];
|
||||
var multiplyResult = result * numbers[0];
|
||||
var concatResult = result * (int)Math.Pow(10, (int)Math.Log10(numbers[0]) + 1) + numbers[0];
|
||||
|
||||
return CheckEquation(target, numbers[1..], sumResult)
|
||||
|| CheckEquation(target, numbers[1..], multiplyResult)
|
||||
|| CheckEquation(target, numbers[1..], concatResult);
|
||||
}
|
||||
}
|
||||
|
||||
private static bool[,] ParseSplittersMap(string input, out Position startPosition)
|
||||
{
|
||||
var map = new bool[Height, Width];
|
||||
startPosition = new Position(0, 0);
|
||||
|
||||
var i = 0;
|
||||
foreach (var line in input.EnumerateLines())
|
||||
{
|
||||
var j = 0;
|
||||
foreach (var symbol in line)
|
||||
{
|
||||
// Find start
|
||||
if (symbol is 'S')
|
||||
{
|
||||
startPosition = new Position(i, j);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
map[i, j] = symbol is '^';
|
||||
|
||||
j++;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
private record Position(int I, int J);
|
||||
}
|
||||
264
Days/Day8.cs
264
Days/Day8.cs
@@ -1,4 +1,4 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Buffers;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
@@ -7,163 +7,215 @@ namespace AdventOfCode.Days;
|
||||
public class Day8 : Day
|
||||
{
|
||||
public override int Number => 8;
|
||||
public override string Name => "Resonant Collinearity";
|
||||
|
||||
private const int GridSize = 50;
|
||||
public override string Name => "Playground";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
HashSet<Point> antinodePositions = [];
|
||||
var boxPositions = ParseBoxPositions(Input);
|
||||
var boxPairDistances = FetchOrderedDistances(boxPositions);
|
||||
|
||||
var frequencyAntennas = ParseAntennas();
|
||||
var circuits = new List<HashSet<Box>>();
|
||||
|
||||
// Find antinodes for each frequency
|
||||
foreach (var (_, antennas) in frequencyAntennas)
|
||||
var connectionsCount = 0;
|
||||
|
||||
while (connectionsCount < 1000)
|
||||
{
|
||||
// Take antennas by pair to find antinodes
|
||||
foreach (var firstAntenna in antennas)
|
||||
// Fetch next minimal distance pair. This is always the last pair in our ordered list
|
||||
var (pairLeftBox, pairRightBox, _) = boxPairDistances[^1];
|
||||
boxPairDistances.RemoveAt(boxPairDistances.Count - 1);
|
||||
|
||||
// Create a connection if those two boxes are not already connected
|
||||
if (!ConnectionExists(circuits, pairLeftBox, pairRightBox))
|
||||
{
|
||||
foreach (var secondAntenna in antennas.Where(a => a != firstAntenna))
|
||||
{
|
||||
var firstAntinode = firstAntenna + (firstAntenna - secondAntenna);
|
||||
var secondAntinode = secondAntenna + (secondAntenna - firstAntenna);
|
||||
|
||||
if (firstAntinode is { X: >= 0 and < GridSize, Y: >= 0 and < GridSize })
|
||||
{
|
||||
antinodePositions.Add(firstAntinode);
|
||||
}
|
||||
|
||||
if (secondAntinode is { X: >= 0 and < GridSize, Y: >= 0 and < GridSize })
|
||||
{
|
||||
antinodePositions.Add(secondAntinode);
|
||||
}
|
||||
}
|
||||
// Connect the boxes, eventually merging circuits
|
||||
ConnectBoxes(circuits, pairLeftBox, pairRightBox);
|
||||
}
|
||||
|
||||
connectionsCount++;
|
||||
}
|
||||
|
||||
var result = circuits
|
||||
.OrderByDescending(circuit => circuit.Count)
|
||||
.Take(3)
|
||||
.Aggregate(1, (product, circuit) => product * circuit.Count);
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Unique antinode positions count: [yellow]{antinodePositions.Count}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]Result is: [yellow]{result}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
HashSet<Point> antinodePositions = [];
|
||||
var boxPositions = ParseBoxPositions(Input);
|
||||
var boxPairDistances = FetchOrderedDistances(boxPositions);
|
||||
|
||||
var frequencyAntennas = ParseAntennas();
|
||||
var circuits = new List<HashSet<Box>>();
|
||||
|
||||
// Find antinodes for each frequency
|
||||
foreach (var (_, antennas) in frequencyAntennas)
|
||||
long result;
|
||||
while (true)
|
||||
{
|
||||
// Take antennas by pair to find antinodes
|
||||
foreach (var firstAntenna in antennas)
|
||||
// Fetch next minimal distance pair. This is always the last pair in our ordered list
|
||||
var (pairLeftBox, pairRightBox, _) = boxPairDistances[^1];
|
||||
boxPairDistances.RemoveAt(boxPairDistances.Count - 1);
|
||||
|
||||
// Create a connection if those two boxes are not already connected
|
||||
if (!ConnectionExists(circuits, pairLeftBox, pairRightBox))
|
||||
{
|
||||
foreach (var secondAntenna in antennas.Where(a => a != firstAntenna))
|
||||
{
|
||||
// Always add antinodes on antennas if a pair is formed
|
||||
antinodePositions.Add(firstAntenna);
|
||||
antinodePositions.Add(secondAntenna);
|
||||
// Connect the boxes, eventually merging circuits
|
||||
ConnectBoxes(circuits, pairLeftBox, pairRightBox);
|
||||
}
|
||||
|
||||
// Compute potential antinode positions
|
||||
var firstAntinodeOffset = firstAntenna - secondAntenna;
|
||||
var secondAntinodeOffset = secondAntenna - firstAntenna;
|
||||
|
||||
for (var i = 1; ; i++)
|
||||
{
|
||||
var firstAntinode = firstAntenna + (i * firstAntinodeOffset);
|
||||
|
||||
if (firstAntinode is { X: >= 0 and < GridSize, Y: >= 0 and < GridSize })
|
||||
{
|
||||
antinodePositions.Add(firstAntinode);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 1; ; i++)
|
||||
{
|
||||
var secondAntinode = secondAntenna + (i * secondAntinodeOffset);
|
||||
|
||||
if (secondAntinode is { X: >= 0 and < GridSize, Y: >= 0 and < GridSize })
|
||||
{
|
||||
antinodePositions.Add(secondAntinode);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Check if there is a circuit with all boxes connected
|
||||
if (circuits[0].Count >= 1000)
|
||||
{
|
||||
result = pairLeftBox.X * pairRightBox.X;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Unique antinode positions count: [yellow]{antinodePositions.Count}[/][/]");
|
||||
AnsiConsole.MarkupLine($"[green]Result is: [yellow]{result}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private FrozenDictionary<char, List<Point>> ParseAntennas()
|
||||
private static double BoxDistance(Box left, Box right)
|
||||
{
|
||||
var antennas = new Dictionary<char, List<Point>>();
|
||||
return Math.Sqrt(
|
||||
(right.X - left.X) * (right.X - left.X) +
|
||||
(right.Y - left.Y) * (right.Y - left.Y) +
|
||||
(right.Z - left.Z) * (right.Z - left.Z)
|
||||
);
|
||||
}
|
||||
|
||||
var y = 0;
|
||||
foreach (var line in Input.AsSpan().EnumerateLines())
|
||||
static bool ConnectionExists(List<HashSet<Box>> circuits, Box left, Box right)
|
||||
{
|
||||
foreach (var circuit in circuits)
|
||||
{
|
||||
var x = 0;
|
||||
|
||||
foreach (var frequency in line)
|
||||
if (circuit.Contains(left) && circuit.Contains(right))
|
||||
{
|
||||
if (frequency is '.')
|
||||
{
|
||||
x++;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!antennas.TryGetValue(frequency, out var list))
|
||||
{
|
||||
list = [];
|
||||
antennas[frequency] = list;
|
||||
}
|
||||
static void ConnectBoxes(List<HashSet<Box>> circuits, Box pairLeftBox, Box pairRightBox)
|
||||
{
|
||||
// Try to find circuit containing each box
|
||||
HashSet<Box>? leftCircuit = null;
|
||||
HashSet<Box>? rightCircuit = null;
|
||||
|
||||
list.Add(new Point(x, y));
|
||||
|
||||
x++;
|
||||
foreach (var circuit in circuits)
|
||||
{
|
||||
if (circuit.Contains(pairLeftBox))
|
||||
{
|
||||
leftCircuit = circuit;
|
||||
}
|
||||
|
||||
y++;
|
||||
if (circuit.Contains(pairRightBox))
|
||||
{
|
||||
rightCircuit = circuit;
|
||||
}
|
||||
}
|
||||
|
||||
return antennas.ToFrozenDictionary();
|
||||
// None is in a circuit, create a new one
|
||||
if (leftCircuit is null && rightCircuit is null)
|
||||
{
|
||||
var circuit = new HashSet<Box>
|
||||
{
|
||||
pairLeftBox,
|
||||
pairRightBox
|
||||
};
|
||||
|
||||
circuits.Add(circuit);
|
||||
}
|
||||
// One of the two is null
|
||||
else if (leftCircuit is not null && rightCircuit is null)
|
||||
{
|
||||
leftCircuit.Add(pairRightBox);
|
||||
}
|
||||
else if (leftCircuit is null && rightCircuit is not null)
|
||||
{
|
||||
rightCircuit.Add(pairLeftBox);
|
||||
}
|
||||
// Both are already in a circuit, merge them
|
||||
else
|
||||
{
|
||||
foreach (var box in rightCircuit!)
|
||||
{
|
||||
leftCircuit!.Add(box);
|
||||
}
|
||||
|
||||
circuits.Remove(rightCircuit);
|
||||
}
|
||||
}
|
||||
|
||||
private readonly record struct Point(int X, int Y)
|
||||
: IAdditionOperators<Point, Point, Point>,
|
||||
ISubtractionOperators<Point, Point, Point>,
|
||||
IMultiplyOperators<Point, int, Point>
|
||||
private static List<Box> ParseBoxPositions(string input)
|
||||
{
|
||||
public static Point operator +(Point left, Point right)
|
||||
var positions = new List<Box>();
|
||||
|
||||
foreach (var line in input.EnumerateLines())
|
||||
{
|
||||
return new Point(left.X + right.X, left.Y + right.Y);
|
||||
var split = line.Split(',');
|
||||
|
||||
split.MoveNext();
|
||||
var x = long.Parse(line[split.Current]);
|
||||
|
||||
split.MoveNext();
|
||||
var y = long.Parse(line[split.Current]);
|
||||
|
||||
split.MoveNext();
|
||||
var z = long.Parse(line[split.Current]);
|
||||
|
||||
positions.Add(new Box(x, y, z));
|
||||
}
|
||||
|
||||
public static Point operator -(Point left, Point right)
|
||||
return positions;
|
||||
}
|
||||
|
||||
private static List<BoxPairDistance> FetchOrderedDistances(List<Box> boxes)
|
||||
{
|
||||
var boxPairDistances = new List<BoxPairDistance>();
|
||||
|
||||
for (var i = 0; i < boxes.Count - 1; i++)
|
||||
{
|
||||
return new Point(left.X - right.X, left.Y - right.Y);
|
||||
for (var j = i + 1; j < boxes.Count; j++)
|
||||
{
|
||||
var leftBox = boxes[i];
|
||||
var rightBox = boxes[j];
|
||||
|
||||
var distance = BoxDistance(leftBox, rightBox);
|
||||
|
||||
boxPairDistances.Add(new BoxPairDistance(leftBox, rightBox, distance));
|
||||
}
|
||||
}
|
||||
|
||||
public static Point operator *(Point left, int right)
|
||||
{
|
||||
return new Point(left.X * right, left.Y * right);
|
||||
}
|
||||
// Sort in reverse order
|
||||
boxPairDistances.Sort((left, right) => right.CompareTo(left));
|
||||
|
||||
public static Point operator *(int left, Point right)
|
||||
return boxPairDistances;
|
||||
}
|
||||
|
||||
private record Box(long X, long Y, long Z);
|
||||
|
||||
private record BoxPairDistance(Box Left, Box Right, double Distance) : IComparable<BoxPairDistance>
|
||||
{
|
||||
public int CompareTo(BoxPairDistance? other)
|
||||
{
|
||||
return new Point(right.X * left, right.Y * left);
|
||||
if (ReferenceEquals(this, other))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (other is null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return Distance.CompareTo(other.Distance);
|
||||
}
|
||||
}
|
||||
}
|
||||
181
Days/Day9.cs
181
Days/Day9.cs
@@ -1,181 +0,0 @@
|
||||
using System.Collections.Frozen;
|
||||
using System.Numerics;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace AdventOfCode.Days;
|
||||
|
||||
public class Day9 : Day
|
||||
{
|
||||
public override int Number => 9;
|
||||
public override string Name => "Disk Fragmenter";
|
||||
|
||||
public override void RunPart1(bool display = true)
|
||||
{
|
||||
var (blocks, freeBlocksStarts) = ParseDiskBlocks();
|
||||
|
||||
var nextFreeIndex = freeBlocksStarts.Dequeue();
|
||||
|
||||
for (var i = blocks.Count - 1; i >= 0; i--)
|
||||
{
|
||||
// There is no more available space to move blocks into on the left
|
||||
if (nextFreeIndex >= i)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (blocks[i] is -1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
blocks[nextFreeIndex] = blocks[i];
|
||||
blocks[i] = -1;
|
||||
|
||||
nextFreeIndex++;
|
||||
|
||||
// Go to next free blocks if current free block is full
|
||||
if (blocks[nextFreeIndex] is not -1)
|
||||
{
|
||||
nextFreeIndex = freeBlocksStarts.Dequeue();
|
||||
}
|
||||
}
|
||||
|
||||
var checksum = blocks
|
||||
.Select((block, index) => block is -1 ? 0 : (long)block * index)
|
||||
.Sum();
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Filesystem checksum: [yellow]{checksum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
public override void RunPart2(bool display = true)
|
||||
{
|
||||
var (blocks, freeBlocks) = ParseDiskBlocks2();
|
||||
|
||||
var mapStart = string.Join(" ", blocks);
|
||||
|
||||
for (var i = blocks.Count - 1; i >= 0; i--)
|
||||
{
|
||||
if (blocks[i] is -1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get file length
|
||||
var fileId = blocks[i];
|
||||
var endPosition = i;
|
||||
var startPosition = i;
|
||||
|
||||
while (startPosition > 0 && blocks[startPosition - 1] == fileId)
|
||||
{
|
||||
startPosition--;
|
||||
}
|
||||
|
||||
var length = (endPosition - startPosition) + 1;
|
||||
|
||||
// Find first available free block on the left
|
||||
var freeBlockIndex = freeBlocks.FindIndex(b => b.StartIndex < startPosition && b.Length >= length);
|
||||
|
||||
if (freeBlockIndex is not -1)
|
||||
{
|
||||
var freeBlock = freeBlocks[freeBlockIndex];
|
||||
|
||||
for (var offset = 0; offset < length; offset++)
|
||||
{
|
||||
blocks[freeBlock.StartIndex + offset] = blocks[startPosition + offset];
|
||||
blocks[startPosition + offset] = -1;
|
||||
}
|
||||
|
||||
// Update free block start and length
|
||||
freeBlocks[freeBlockIndex] = (freeBlock.StartIndex + length, freeBlock.Length - length);
|
||||
}
|
||||
|
||||
// Move to next file or free block
|
||||
i = startPosition;
|
||||
}
|
||||
|
||||
var mapEnd = string.Join(" ", blocks).Replace("-1", ".");
|
||||
|
||||
var checksum = blocks
|
||||
.Select((block, index) => block is -1 ? 0 : (long)block * index)
|
||||
.Sum();
|
||||
|
||||
if (display)
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[green]Filesystem checksum: [yellow]{checksum}[/][/]");
|
||||
}
|
||||
}
|
||||
|
||||
private (List<int> Blocks, Queue<int> FreeBlocksStarts) ParseDiskBlocks()
|
||||
{
|
||||
var blocks = new List<int>(20_000 * 10);
|
||||
var freeBlocksStarts = new Queue<int>();
|
||||
|
||||
var readingBlock = true;
|
||||
var blockId = 0;
|
||||
|
||||
foreach (var length in Input.Select(encoded => encoded - '0'))
|
||||
{
|
||||
if (readingBlock)
|
||||
{
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
blocks.Add(blockId);
|
||||
}
|
||||
|
||||
blockId++;
|
||||
}
|
||||
else if (length > 0)
|
||||
{
|
||||
freeBlocksStarts.Enqueue(blocks.Count);
|
||||
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
blocks.Add(-1);
|
||||
}
|
||||
}
|
||||
|
||||
readingBlock = !readingBlock;
|
||||
}
|
||||
|
||||
return (blocks, freeBlocksStarts);
|
||||
}
|
||||
|
||||
private (List<int> Blocks, List<(int StartIndex, int Length)> FreeBlocks) ParseDiskBlocks2()
|
||||
{
|
||||
var blocks = new List<int>(20_000 * 10);
|
||||
var freeBlocksStarts = new List<(int StartIndex, int Length)>();
|
||||
|
||||
var readingBlock = true;
|
||||
var blockId = 0;
|
||||
|
||||
foreach (var length in Input.Select(encoded => encoded - '0'))
|
||||
{
|
||||
if (readingBlock)
|
||||
{
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
blocks.Add(blockId);
|
||||
}
|
||||
|
||||
blockId++;
|
||||
}
|
||||
else if (length > 0)
|
||||
{
|
||||
freeBlocksStarts.Add((blocks.Count, length));
|
||||
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
blocks.Add(-1);
|
||||
}
|
||||
}
|
||||
|
||||
readingBlock = !readingBlock;
|
||||
}
|
||||
|
||||
return (blocks, freeBlocksStarts);
|
||||
}
|
||||
|
||||
}
|
||||
5768
Inputs/Day1.txt
5768
Inputs/Day1.txt
File diff suppressed because it is too large
Load Diff
@@ -1,60 +0,0 @@
|
||||
670107898789217654342123456782345678011256767898765465432101
|
||||
789234567654308210256034105891089019100349897767874376569101
|
||||
658341234530989300107845234521078323270110588758901287478272
|
||||
345450347621895418916976367652569454589223679643210896564383
|
||||
430569678934786917014989898743458765678334534554034787665898
|
||||
521678432825677806323876321212345107895450128765125693456721
|
||||
437876501910543215214985400303434234784966549834296502107610
|
||||
108978967865676784305673212345125105672877838126787411098523
|
||||
232169054654985895676894501876056216781236923035498321015432
|
||||
147054103023984104389087662943237645890321015676325677896761
|
||||
058943212110873201243179879850198732765430234588714986234890
|
||||
167687601101164012652234568766784321887342101899603215105659
|
||||
678996511231054873701221978955693870996456701234514504378778
|
||||
982123490543123964823400876554212987345980896785603673069867
|
||||
765010587650123455916512345443403456287671015498512982154956
|
||||
876523018567656996507845678932212310196542564321027854323241
|
||||
985452109898743887765930987821054321203433473452567761018130
|
||||
784343216789212701894321076543065010012128982867658956789021
|
||||
891238345323105611256232565332170321234089801998943441034330
|
||||
760189653410134320347183423469981236985178767870832332125545
|
||||
654308754589823412398094012578876547876589454561221089076556
|
||||
569210345676210503480189017665014566981074305432012670988987
|
||||
778123216784345676503276328984323475212565213456587521267981
|
||||
898014505891256985214965410810012984303456432347895430345670
|
||||
785210676540787694345898325723678778984234541056498741234321
|
||||
654321987034896001256763676554569560128105650110345657876434
|
||||
321039654126789123347854985438765430439876763431233054965235
|
||||
490318743256770104098923821129654321540569892343212123452196
|
||||
581401232149863265121012530034341013691456701456504567861087
|
||||
672310345038054396432343448101231012782347650987623438932387
|
||||
965498786521178987503453559874342103452878943298510129873498
|
||||
878945697810265089612354567565213478501987801123456018784567
|
||||
969034398924354108743543658106904569612016772010567105695436
|
||||
450123454589443298874632109237876548743125983400198234306721
|
||||
343210545476554581965549434312361039654334876510256543217810
|
||||
012654556321055670123678323403456128761242108981347789878934
|
||||
101763217898765432252101410589567545650543567432098236712125
|
||||
249890106789854501343234521673498432787694656548123145601016
|
||||
432187678768763312854145636762876501098781067439054006432567
|
||||
243014569659643210965098745891985411239872358928765419647898
|
||||
156103012346501349876787876740694320540965443210474328756787
|
||||
067612101236432358565678945056543217601453456754389845643896
|
||||
198787656345678967632365432127680108912322589863265434512387
|
||||
234594565676589874541050121218998012301011267770172123001989
|
||||
109683410789490163698210930300107321694120178089085012123476
|
||||
658762125610301252784327845451256430783243569172196781018565
|
||||
567891034521212341075456786965344567654652410234505492109410
|
||||
656900347234301056789845697874498698676701322343012343478326
|
||||
543211298165692345698926543289567789589887011452321034567567
|
||||
432104347076780434767810432101125654434996320961478933003498
|
||||
218765456987101229896321101911036763221745467870567122112567
|
||||
309894365896234310785410110876545894100876786987651033678985
|
||||
456789223345985401656789212567030345210965495698776544543234
|
||||
787650110276576564565094303498121236321234324308989434350198
|
||||
896343023183465433004185478767870387123456710217375621060167
|
||||
125432134092174332113276769365968791001249854567434789871256
|
||||
034334547894089211223498853478959601098345983098723348964343
|
||||
301227656323456200124567942562344512367896572129810254328321
|
||||
212018965214387103438901231001123201456087561234722167219450
|
||||
323127656103898234567872102121010126545123450165621098308761
|
||||
@@ -1 +0,0 @@
|
||||
0 7 6618216 26481 885 42 202642 8791
|
||||
140
Inputs/Day12.txt
140
Inputs/Day12.txt
@@ -1,140 +0,0 @@
|
||||
MMNNPPPPGGGGAGGPPPPPPPPPZZZZZZZLLLLLLLEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAAAAAAMMMMNNMMMMMMMMMMMMMMMMAARRRRRRRRRRRRRRRRRRHHHHHHHHHHHHHAAAAAAAAAAAA
|
||||
MNNNPNPPGGGGGGGPPPPPPPEPZZZZZZZLLLLLLLWWEEEEEEEEEEEEEAPAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMMMMMMAMMAARRRRRRRRRRRRRRRRQRHHHHHHQHHHHHHHWAAAAAAAAAA
|
||||
NNNNNNNPGGGGGGGGPPPPPPPZZZZZZZZZLLLLLLLEEEEEEEEEEEEEEPPPPAAAAAAAAAAAAAAMMMMMMMMMMMMMMMMMMMMMAAAAAAAAAVRRRRRRRRRQQQQHHQQHQQQHQHHHHWWWWAAAAAAA
|
||||
NNNNNNNNGGGGGGGPPPPPPPPPZZZZZZLLLLLLLLLLEEEMEEEEEEEEEEPPPPAAAAAAAAAAAMMMMMMMMMMMMMMMMMMMMMMMMAAAAAAVVVVRRRRRRRQQQQXQQQQQQQQQQQQHHHWWWWWAAAAA
|
||||
NNNNNNNYYGGGGGGPPPPPPPPPZZZZZZZLLLLLLLLMMMMMEEEEEEEEEPPPPPPAAAAAHAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMAVVVVVVVRRRRRQQQQQQQQQQQQQQQQQQQHHWWWWAAAAAAA
|
||||
NNNNNNNXYYYCCCIPPPWZPPPPPZZZZZZLLLLLLLSSMMSSEEEEEEEPPPPPPPPPPAAHHAAAAHMMMMMMMMMMWWMMMMMMMMMMMMMMMDDVVVVRRRRRRQQQQQQQQQQQQQQQQQQHHWWWWWAWAAAA
|
||||
NNNNNNXXYCCCCCIPPPPZZPPPZZZZZZZZLSLSSSSMMMSSEEEEEEEPPPPPPPPPPPAAHHAAAHHMMMMMMMMMMWMTTMMMMMMMMMMDDDDVVVVRRIIMRMMMQQQHTTQQQQQQQQQQQWWWWWWWWWWA
|
||||
NNNXXXXXXCCCCCCXPZPZZZPZZZZZZZZZZSSSSSSSSSSSEEEEEEEEPPPPPUUXXXHAHHHAHHHMMTMMMTMMMMTTTMMMMMMMMMDDDDDVIIIRIIMMMIMZQQQHTHQQQQQQQQQQAAWWWWWWWWAA
|
||||
NNNNXXXXCCCCCCCZZZZZZZZZZZZZZZSSSSSSSSSSSSSSSSEEFFPPPPPUUUXXXHHHHHHHHHHHTTMMMTMMMMTTTTTMMMMMMDDDIDDVIIIIIIIMMMMMQQQHHHQQQQQQQQQQAAAWWWWWAWAA
|
||||
NNNNNXXXXCCCCCAVVZZZZZZZZZZZUUUSSSSSSSSSSSSSSFEFFFFPPPPUUUXXXXHHHHHHHHHHHTMTTTTTMMTTTTTTMMMDMDDIIIVVIIIIIIIMMMMMMQQHHQQQQQQQQGGGQAAAWWWAAAAA
|
||||
NNNNNXXXCCCCCVVVVVVZZZZZZZZUUUUSSSSSSSSSSSSSFFFFFFFPPPUUUUXUXHHHHHHHHHHHHTTTTTTTMMTTTTTTMMDDDDDDIIIIIIIIIIIMMMMMMQIHAQQQQQQQQQQQQAAAAAWAAAAA
|
||||
NNNNNNXCCCCCCCVVVVZZZZZZZZZUUUUSSSSSSSSSSSSSSFFFFFFPPPUUUUUUXHHHHHHHHHHHHHTTTTTTTTTTTTTTTTTDDDAAAAIAIIIIMMMMWMMDDGGGAQQQQQQQQQQQQQAAAAAAAAAA
|
||||
NNNNNNNCCCCCCCCVVZZZZZZZUZZUUUUSSSSSSSSSSSFFFFFFFFFFPPUUUUUUUHHHHHHHHHHTTTTTTTTTTTTTTTTTTTDDVVAAAAAAIIIIIIIMMTTDDGGGAQQQQQQQQQQWWWUUUAUUUAAA
|
||||
NNNNNNNNCCCCCCCCVVZZZZZZUUZUUUUSSSSSSSSSSSSSFFFFFFFFPPUUUUUUHHHHHHHHHHHHHHTTTTTTTTTTTTTTTTTDVVXAAAAAIIIIIIIMTTTTTTTGGQQQQQQQQQQWWWUUUUUAAAAA
|
||||
NNNNNNNNNNNCCCCCCCZZZZZZUQUUUUUUUSSSSSSSSXSSOFFFFFFFFPPPPUOOHHHHHHHHHHHTTTTTTTTTTTTTTTTTTTTDVVVAAAAAAIIIIIIMTTGTTGGGGQQQQQQQQQQWWWUUUUUUAAAA
|
||||
NNNNNNNNNNCCCCCCCCZZZZZUUQUUUUUUUSSSSSSSSSSOOOOFPFPFPPPPPPPPPPHHHHLHHHHTTTTTMMMTTTTTTTUTTTTDDVVVVAAAAIIIIIIMTTTTTGGGGQGGGQQCQQWWWWUUUUUUUUUA
|
||||
NNNNNNNNNNNNCCCCCBBMZZZUUUUUUUUUUSSSSSSSSOOOOBBPPPPFPPPPPPPPPPXHHHHHHHHTTPTTMMMTTTTUTUUUUUUUVVVVVVVAAAIIIIIITTTTTGGGGGGGGQFFWWWWWWUUUUUUUUUU
|
||||
NNNNNNNNTNCCCCCCBUBBHCCCUUKUUUUUSSSSSSSSOOOOOBBPPPPPPBPPPPPPPPHHHSSSSHPPPPPMMMMMTTTUUUUUUUUOUVVVVVVAAIIIIIIITTTTGGGGGGGGGFFFWWWWUUUUUUUUUUUU
|
||||
NNNNNNNWCCCCCCCBBBBBBCCCCCUUUUUUSSSSSRRRROROOOBBBBBBBBBBPPBBBBHSSSSSSSPPPPPMMMMMTTUUUUUUUUUUUVVVVVVVVVVVVXIITTTGGGGGGGFFFFFFSSKWUUUUUUUUUUUU
|
||||
NNNNNWWWWCCCCCCCBBBBHCCCCCUUUUUUUSSTGRRRRRRRRBBBVBBBBPPPPPBBBBSSSSSSSSPPPPPPMMMMMTTUUUUUUUUUUVVVVVVVVVVVVXXUUGGGGGGGGGFFFFFNSSKKJUUUUUUUUUUU
|
||||
MMMWWDWWIWWCCCCBBBBBBCCCCCCCCCCCCCGGGGRRRRRRRVVVVBBXXXXXPPBBSSSSSSSSSPPPPPPPMMMMMUTUUUUUUUUUUUUVVVVVXXXXXXXUUGGGGGGGGGFFFFFSSKKKJUUUUUUUUUUU
|
||||
MMMMWWWWWWWCCCCBQBBBBCCCCCCCCGGCGGGQGGRRRRRRRVZZZZZXXXXXBBBSSSSSSSPSPPPPPPPPPMMMMUUUUUUUUUUUUUUFVVVVXXXXXXXUUUUGGXGGGGGFFFFAAAKKJUUUUUUUUUUU
|
||||
MWWWWWWWWWCCCCCCQBQBCCCCCCCCCCGCGGGGGGRRRRRVVVVVZZZXXXXXZBBSSSSSSSPPPPPPPPPPPMMMMMUUUUUUUUULFFUFFVXXXXXXXXXUUUUGXXGGGEFFFKKKKAKKKKKUUUUUUUUU
|
||||
WWWYWWWWWWKCCCQCQQQCCCCCCCCCCGGGGGGGGGGGGGGVVVVVVZZXXXXXZZBBSBBSSSPPPPPPPPPEEMMMMMGUUUUUUUULFFFFVVXXXXXXXXXUUUUUBBUUGEFFFKKKKKKKKKUUUUUUUUUU
|
||||
WWWWWWWWWWWQQQQQQQQCCCCCCCCCCGGGGGGGGGGGGGGVVVVVVVZXXXXXKKKBBBBSSSSUUPPPPPPEMMSMMGGVAAAUUQFFFFFFVVVVVXXXXXUUUUBBBUUREEEMMKKKKKKKKKKKUUUUUUUU
|
||||
RWWWWWWWWWWQQQCQQQCCCCCCCGGGGGGGGGGGGGGGGGVVVVVVVVVXXXXXKKKKKBBBBBSSUPPPPPSMMMSSMMGVVVVVVQFFFFFFFFVVVXXXXXUUBUBBBBBREEEMMMMKKKKKKKKKUHUUUUUU
|
||||
WWWWWWWWWWWQCCCQQQQCCCCCCCCCGGGGGGGGGGGGGGGVVVVRVVRXXXXXKKKKBBBBBBBBPPPPPPSSSSSSMMMVVVVVVVFFFFFFFFFFFXXHXUUBBBBBBBRRREMMMMMKKKKKKKKKKHHHUUUU
|
||||
WWWWWWWWWWWCCCCQQQCCCCCCCCCIGIIGGGGGGWGGGGVRRRRRRRRXXXXXKKKKKKKBPBBPPPPPPSSSSSSSSMVVVVVVVVVVFFFFFFFFFHHHUUBBBBBBBRRRMMSMMMKKKKKKKKKKKUHUUUUU
|
||||
WWWWWWWWWWWWCCCCCCCCCCCCCCIIIIGGGGGGGWGGGVVRRRRRRRXXXXXXKKKKKBBBPPBPPRPPPPPSSSSSSVVVVVVVVVVVAFFFFFFFFFHHHHIBBBBBRRRRMMMMMMSKKKKKKKKVVUUUUUUU
|
||||
WWBBWWAWWUUUCCCCCCIQQCCCCIIIIRRRRRRRWWWGGVRRXXXXXXXXXXXXKKKKBBBBPPPPPPPPPPPPSSSVVVVVVVVVVVVVAFFFFFFFFFHHHBBBBBHHHRRRMMMMMMMKKKKKKKKVUUUUUUUU
|
||||
WWWAAAAWUUCCCCCCCIIICCCCCIIIIRRRRRRRWWGGVVVVXXXXXXXXXXXOBKBBBBBPPPPPPPPPPPPPPPPPLVVVVVVYVVVEFFFFFFHHHFFHHHHHBBBBHHHMMMMMMMMMKKKKKUUUUUUUUUUU
|
||||
WWWAAAAUUUUCCCCCCIIIIIIIIIIIURRRRRRRRRGGXXXXXXXXXXXXXXXRBBBBBBBBPQPPPPPPPPPUPPXEEVEVVVVVVVEFFFFFFFHHFFHHHHHHHHBHHMMMMMMMMMMMKKKKKKKKUUUUUUUU
|
||||
WWWAAAAUAUUCCCCCCLLIIIIIIIIUURRRRRRRRRGGXXXXXXXXXXXXXXXRRBBBBBBBPPPPPPPPPPPUPVEEEEEVVVVEVEEEEEFFFFHHHHHHHHHHHHHHHHMMMMMMMMMKKKKKKKKUUUUUUUUU
|
||||
WWAAAAAAAAUEEEOOOLIIIHIIIIIIURRRRRRRRRXXXXXXXXXXXRXXXXXXRBBBBBBBBPPPPBPPPBEBBBEEEEEVVVEEEEEEEEEEFHHHQHHHHHHHHHHHHHMMMMMMMMMMMKKKKKUUUUUUUUUU
|
||||
OOAAAAAAAAUOOOOOOLLLLIIIIIIIURRRRRRRRRXXLLLLXXXXXRXXXXXXRRMBBBBPBPPPPBBTPBBBBEEEEEEEEVEEEEEEEEEEFQQQQHHHHHHHHHMMMMMMMMMMMMMMMMMKKKKUUUUUUUUU
|
||||
OACCAAAAAGAOOOOOOELLLLIYIIRRRRRRRRRRRRXLLLLLXXXXXRRRRXXXRRRBBBBJKKPPPBBBBBBBBBEEEEEEEVEEEEEEEEEEEQQQQQHHHHHHHHHMMMMMMMMMMMMMMMMKKKUUUUUUUUUU
|
||||
AAAAAAAAAAAOOOOOEEELLLIYYVRRRRRRUUUUXXXLLLLLXXXXXRRRRXXXRMRBBBBJKJUBBBBBBBBBBBCEEEECEEEEEEEEEEEEQQQQQQHHHHHHHHHMMMMMMMMMMMMMMMWDDDWUUUUUUUUU
|
||||
AAAAAAAAAAAOOOOOUULLLYYYRRRRRRRRUUUUXXXXLLLLXXXXXXXXXXXXXMMCCBLJJJUBBBBBBBBBBQCCCCCCEEEEEEEEEEEEEFQQQHHHHHHHHMMMMMMMMMMMMMMMMWWWWWWWUUUUUUUU
|
||||
AAAAAAAAAAROOOOORRRRRRRRRRRYYDUUUUXXXXXXXLLLXXXXXXXXXXXXXCCCCCJJJJUUUUUBBBBCCCCCCCCCCEEEEEEEEEEEEEQQQEEHHHHHHHMMMMMMMMMDDDDDMWWWWWWUUUUUUUUU
|
||||
ZZAAAAAXAAROOOOORRRRRRRRRRRDDDUOUUAAXXXXWWLLLLRRXXXXXXXXXCCCCJJJJJJJJJJBBBLLLLLCCCCCEEEEEEEEEEEEEEEEEEEHEEEHHHMMMMMMMDDDDDDWWWWWWWWWWUWUUUUU
|
||||
ZZZAAAAOOOOOOOOORRRRRRRRRRRYDUUOUUUAXXXXXAAAALRRXXXXXXXXXCCCCCCCJJJJJLLLLLLLLLCCCCCCEEEEEEEESEEEEEEEEEEEEEHHHMMHMMMMDDDDDDDWWWWWWWWWWWWWWUUU
|
||||
ZZZAAAUOOOOOOOOORRRRQYYYYYYYYOUOUUAAAAAAAAAAALRRXXXXXXXXXCCCCCCJJJJJJLLLLLLLLLCCCCCCCCEEWWEEEEEEEEEEEEEEEEEHHHHHMHHHQQQQQQQQWQWWWWWWWWWWWWUU
|
||||
ZZAAXAUOOOOOOOOORRRREYYYYYOOOOOOOOAAAAAAAAAAAARAAAAAZXXXCCCCCCCJJJJJJJLLLLLLLLCCCCCCCCEEWWWEEEEIEEEEEEQQHHHHHHHHHHHQQQQQQQQQQQWWWWWWWWWWWWUU
|
||||
ZZAAXAUOOOOOOOOORRRROOYYREOOOOIOOOAAAAAAAAAAAARAAAAAZZZYYCCCCCCJCJJJJLLLLLLLLLCCCCCCCCCWWWEEEEIIEEEEEEEQQHHQHHHHHHQQQQQQQQQQQQWWWWWWWWWWWWUU
|
||||
ZZAAUUUOOOOOOOUUEEEEEEEEREOOOOIOOOAAAAAAAAAAAAAAAAAAZZZYYYYCCCCCCCCLLLLLLLLLLLLLCCCCPCWWWWEEEEIIIIEEEEEQQQQQHHAQQQQQQQQQQQQQQQWWWWWWWWWWWUUU
|
||||
PPPPPYUOOOOOOOEEEEEEEZEEEEOOOIIIIOAAAAAAAAAAAAAAAAAYYYYYYYYCCCCCCCCLLLLLLLLLLLLLCCCPPCWWWWWEEEIIIIEEEEQQQQQQQJJJJQQQQQQQQQQQQQQQQWWWWWWWUUUU
|
||||
PPPZYYYOOOOOOOOOOOEEEEEEEEIIIIIIIIAAAAAAQQAQAAAAAYAYYYYYYYYCCCCCCCLLLLLLLLJJLFLFFCTFFWWWWBBEEIIIIIKQQEQQQQQQJJJJJQQQQQQQQQQQQQQQQQWWWWWWUUUU
|
||||
PPPZYYYYYYYYYOOOOOEEEEEEEIIJIIIIIIACAAQQQQQQQAAYYYYYYYUYYYYCCCCCCCCLLLLLLLFFJFMFCCFFFSBBBBBBIIIIIIIQQQQQQQQQQQJJJJQQQQQQQQQQQQQQQQQWWKWWWUUU
|
||||
PPPYYCYYYYYYYOOOOOOEEEEEEIIIIIICCCCCCCCCCQQQQQYYYYYYYYYYYYYCYCCCCCCCLOOOLLFFFFFFFCFFFSSBBBBBIIBIIIBBQQQQQQQQQQQJJJQQQQQQQQQQQQQQQQQWLWWWWUUU
|
||||
PPYYYYYYYYYYYOOOOOOEEEEEEEIIIIICCCCCCCCCCQQQQQQQQYYYYYYYYYYYYCCCCCCOOOOOLHHFFFFFFFFFFFSSBBBBBBBIBBBQQQQQQQQQQQQQJJJQNQQQQQQQQQQQQQHHHHWWWWUU
|
||||
PYYYYYYYYYYYYOOOOOOEEEEEEEIICCCCCCCCCCCCCQQQQQQQQYYYYYYYYYYCCCICKITOOOOOHHHFFFFFFFFFFFFFBBBBBBBBBQQQQQQQQQQQQQJQJJJOQQQQOQQQQQQQQQQHHHHWWWHH
|
||||
PYYYYYYYYYYYYOOOOOOEEEEEIIIICCCCCCCCCCCCCQQQQQQQQYYYYYYYYZYSCCIIKIIOOOOOHHFFFFFFFFFFFFFFFFBBBBBBBBQQQQQQQQQQQQJJJJOOOQQQOQQQQQQQQQHHHHHHWWHH
|
||||
PYYYYYYYYYYYYOOOOOOEEIIIIIIICCCCCCCCCCCCCQQQQQQYYYYYYYYYYYYIIIIIIIIOOOOOHHFFFFFFFFFFFFFFFBBBBBBBBBQCQQQQQQQQXXXJJKKOOQQQQQQQQQQQQQHHHHHHHHHH
|
||||
PPPPYYYYYYYYYOOOOOOIEIIIIZZZCCCCCCCCCCCCCQQQQQQQPYYYYYYYYBYBIIIIIIIOOOOOIHHFFFFFFFFFFFFFFBBBBBBBBBBQQQQQQQQQXXXKKKKKKKKKKKQQQQQHHHHHHHHHHHHH
|
||||
PPPYYYYYYYYYYOOOOOOIIIIIIZZZCCCCCCCCCCCCCQQQQQQPPPYYYYYYYBBBIIIIIIIOOOJJIIFFFFFFFFFFFRFFFBBBBBBBBBBBQQQQQQQQXXXKKKKKKKKKKKQQQQQHHHHHHHHHHHHH
|
||||
PPPPPYYYYYYYYOOOOOOIIIIIIZZZCCCCCCCCCCCCCMQQQQQQQYYYYYYYYYYBBIIIIIIOOOOOOFFFFFFFFFFRRRFBBBBBBBBBBBBBBBQQQQQQQXKKKKKKKKKKKKQQQKQKHHHHHHHHHHHH
|
||||
PPPPPYYYYYYYYIIIIIIIIIIIIIZZCCCCCCCCCCCCCCCCCCCCCGGYYYYYBBBBIIIIEEIIOOOOODFFFFFFVBBRRRRBBBBBBBBBBBBBWBQQQQQQQQIIIKKKIKKKKKKKKKKKDDDDDDHHHHHH
|
||||
PPPPYYYYYYYYYIIIICIIIIIIIIIZCCCCCCCCCCCCCCCCCCCCCGGYYBBBBBBIIIEEEEEEOOOOOFFFFFFBBBBBRRBBBBBBBBBBBBBBWWWWQQQQPQIIIIIIIKKKKKKKKKKKKKDDDDHHHHHH
|
||||
PPPYYYYYYYYYYICIICCIIIIIIIZCCCCCCCCZZZCCCCCCCCCCCYYYYBBBBBBBIIEEEEEEOOOOOEEFFFFCBBBBRRBBBBBBBBBWWWWWWWWWQWWIIIIIIIIIPIKKKKKKKKKKKKDDDDDHHHHH
|
||||
PPPPYYYYYYYZYZCCCCIIIIIIIIZZCCCCCCCZZZCCCCCCCAQQAGLYBBBBBBBBBBEEEEEEOOOOOEEEFFWBBBBBBBBBBBBBBBBBWWWWWWWWWWIIIIIIIIIIIIIKKKKKKKKKKDDDDDDDDHHH
|
||||
PPPPYYJJYZZZZZCCCCIIIIIIIIIFZZZZZZZZZZCCCCCCCAAAAGGGGGGBBBBBBBEEEEEEOOOOOEEEEFWWBBBBBKKBKKBBBBBWWWWWWWWWWWWIIIIIIIIIIIKKKKKKKKKKKDDDDDDHHHHH
|
||||
PPZPPYJJYZZZZZZCCCCIIIIIFIIFFBFFZZZZAACCCCCCCAGAGGGGGGGGGBBBBEEEEEEEOOOOOEEEEWWHZZZBBWKKKKKBBWWWWWWWWWWAWWWWIIIIIFIIIIKKKKKKKPKKKDDDDNDHHHHH
|
||||
ZPPPPPZZZZZZZZZCCCCCCUIIFIIFFFFOOZZZAAACCCCCAAGGGGGGGGGGBBBBBEEEEEEEOOOOOEEEXHHHZWWWWWKWWKKWWWWWWWWWWWAAAWWWIIIIIFFIKKKFFFKPKPKKKKDDDDHHHHHH
|
||||
ZZZPZZZZZZZZZZZCIIRCUUUIFFFFFFFOFBZAAAACCCCCAAGGGGGGGGGGGGBEEEBEEEEEDEDDEEEEXHHHHHHWWWWWKKKKWWWWWWWWWWAAARRWIIIIFFFIFKFFFFPPPPKKKKKPHHHHHHHH
|
||||
ZZZZZZZZZZZZZZZIIIIIUUUFFFFFFFFFFZZZNANCCCCCAGGGGGGGGGGGGGBBBBBEEDDDDDDDDEEEEEHHHHHWWWWWWKWWWGWWWWWWWWAAARRRIIIIFFFFFFFFFFFPPPKPKKKPPPHHHHHH
|
||||
ZZZZZFZZZZZSSZZRIIIIUUUFFFFFFFFFFFFFNNNCCCCCGGGGGGGGGGGGGBBBBBBBDDDDDDDDDDEEEEHHHHWWWWWWWWWWWWWWWWWWAAAAARRRIIIIIFFGFFFFFFFFPPPPKPPPPPPHHHHH
|
||||
FFFFFFZZZZZZSSSIIIIIUUUUUUUFFFFFFFWNNNNNNANGGGGGGGGGGGGGBBBBBBBBDDDDDDDDDDDDEHHHHHWWWWWWWWWWWWWWWWWWAAARRRRRIRIIFFFFFFFFFFFWPPPPPPPPPPPHHHHH
|
||||
GFFFFFLZZZXZSSSSSSSIUUUUUUUFFFFFFFFFNNNNNNNNNGGGGGGGGGBBBBBBBDBDDDDDDDDDDDDDHHHHHHWWWWWWWWWWWWJJJWAAAARRRRRRRRRIFFFFFFFFFFFWWPPPPPPPPPPPHHHH
|
||||
GFFFFFFFFZFQFSSSSSSUUUUUUUUUFFFFFLFYNNNNNNNNGGGGGGGGGGBBBBBBBDBDDDDDDDDDDDDDHHHHHHHWWWWWWWWWWWWWJAAAARRRRRRRRRRQFFFFFFFFFFFFWPPWWPPPPPPPHHHH
|
||||
GGFFFFFFFFFFFSSSSSSUUUUUUUUUUFFFZNNNNNNNNNNNUUUGGGGGHIIBBBBBDDDDDDDDDDDDDDDDHHHHHHHWWWWWWWWWWWWUAAAAAAIRRRRRRRQQFFQRFFFFFFFFWWWWWPPPPPPUIISS
|
||||
FFFFFFFFFFFFIFSSIIIIUUUUUUUUFFFFINNNNNNNNNNNNNUGGGGIIIIIIIIIDDDDDDDDDDDDDDDHHHHHHHHWWWWWWWWWWWWWCACCCQQQRRRQQQQQQFFRCFFRRFFWWWWWWPPPPPPUUIIS
|
||||
QQQFFFFFFFFFIFIIIIIIUIUUUUUUUIIIIIINNNNNNNNBNNUUGGGIIIIIIIIIDDDDDDDDDDDDDOEHEHHHHHHWWWWWWWWWWSWCCAACQQQQQQQQQQQQQQQRRRRRRRRWWWWWWPPPPPPPPIIS
|
||||
QQQQFQFFFFFFFFPIIIIIIIUUUUIIIIIIIIINNNNNNNNNNUUUUUIIIIIIIIIIAADDLDDDDDDDDOEEEHHHHHWWWWWWWWWWHHCCCCCCQQQQQQQQQQTTQQRRRRRRRRRWWWWPPPPPPPPPIIIS
|
||||
KQQQQQFFFFFFFFFIIIIIIIUUUUIIIIIIIIINNNNNNNNNNUUUUUUIIIIIIIIIADDDLDDDDXXEEEEEEHHHHHHHWWRQQQHHHHCCCCCQQQQQQQQQQTTTTTRRRRRRRRRRPPPPWPPPPPPIIIII
|
||||
KKKQSSSSFFFFFFFIIIIIIIUIIIIIIIIVIIIVVVNNNNNNNNUNUUUIIIIIIIIDDDDDLDXDDXXEEEEEEEHHHHHHWRRQQQHHHHCCCCCQQQQQQQQQQTTTTRRRRRRRRRSSSPPPPPPPPIIIIIII
|
||||
SKVSSKSSALLLNLLRIIIIIIIIIIIIIIIVVVVVNNNNNNNNNNNNUUUIIIIIWWDDDDDDDDXXXXXEEEEEEEEHHHHHHRRQQQHHHHHHHCCCQQQQQQQQQTTTTRYRRRRRRRSSSSSSPPPPPIIIIIII
|
||||
SSSSSSSSLLLLLLLRIIIIIIIIIIIIIIIVVVVVVVNVNNNNNNNUUUUIIIIIDDDDDDDDDDDXDXXEEEEEEEESAHHHHRRQQQQQHHHHHHHHHHHQQQQQQTTTTYYYRRRRRRSSSLLLPPPIIIIIIIIW
|
||||
SSSSSSSSLLLLLLLLIIIIIIIIIIIIIVVVVVVVVVVVNNNNNNNNNUUIIILDDDDDDDDDDDDDDDDEEEEEESSSSQQIFFFFFFFFUHZHHHHHNNHQQTQTTTTTTYYYYRRVLLLLLLLLBIIIIIIIIIIW
|
||||
WWWSSSSSLLLLLLLLINNIIIIIIIIIVYVVVVVVVVVVNNNNNNNNUUUUUUUBBDVDDGDDDDDEEEDEEEEESSSSSQQQFFFFFFFFQZZZZHHHHNNNTTTTTTTTYYYYYRRLLLLLLLLLBBIIIIIIIIIW
|
||||
WWSSSSSSSSLLLLLNISNIIIIIIIIIVVVVVVVVVVVVVNNANNNNNUUUUUULLMLDDGGDDDDEEEEEESSSSSSSQQQQFFFFFFFFQQZZHHHNNNNTTTTTTTTHHYSYYYYLLLLLLLLLBIIIIIIIIIII
|
||||
WWWSSSSSSSSSSSNNNNNNIIIIIVVVVVVVVVVVVVVVAAAANNNNNUUUUUUULLLDDDLLDDDDEEEEESSSSSSSSSQQFFFFFFFFFFFZZZHNNNNTTTTTTTTHYYYYYYYLLLLLLLLLBIIIIIIIIIIX
|
||||
WWWSSSSSSSSSSSNNNNNIIIIIIVVVVVVVVVVVVVVVAAANNNNTTTUUUUULLLLLLLLNDDDDMEESSSSSSSSSSQQQFFFFFFFFFFFZJJJJNNNNNTTTTFFFFYYYYYYLLLLLLLLLLLBIXIIIIIXX
|
||||
WZWZSSSSSSSSSSNNNNNNIIIIIVIVVVVVVVVVVVVVAAAAANNTUUUULLLLLLLLLLLLQDLDEEESSSSSSSSSSQQQFFFFFFFFFFFJJJJNNNFFNTTTTFFFFKKYYYYRLLLLLLLLTTTIIHHIIMMX
|
||||
ZZZZSSSSSSSSNNNNNNNNIIIIIIIIVVVVVVVVVVVVAAAAETTTQUUUULLLLLLLLLLLLWLLEEESSSSSSSSSSQQQFFFFFFFFFFFJJJJJJJFFFFFFFFFFKKKYYYRRRLLLLLTTTTTHHHHIMMMM
|
||||
ZZZZSSSSSCCCNNNNNNNNNIIIIIIIVIVVVVVVVVAAAAAEETTTQQUUULLLLLLLLLLLLLLLEESSSSSSSSSSSQSQFFFFFFFFFFFFFFFJJWFFFFFFFFFFKKKKYRRRRRLLLLTSTTTTHHHHMMMM
|
||||
ZZZZSSSCCCCCYNNNNNNNNIIIIIIIIIVVVVVVAAAAAEEEETTQQQUUULLLLLLLLLLLLLLLEEQSSSSSSSSSSSSQFFFFFFFFFFFFFFFJJFFFFFFFFFFKKKKKKRRRRRLLLLTTTUTTTHMMMMMM
|
||||
ZZKKCCCCCCCCCCNNNNNNIIIIIIIIIIIIRVVVVAAAAAEEEEEEEQUQLLQLLLLSSSSLLQQLQQQSSSSSSSSSSSSCFFFFFFFFFFFFFFFTJTFFFFFFFFPFKKKKKKRRRLLLLLLLTUTTTHHMMMMM
|
||||
KKKKCCCCCCCCCCNNNNNNIIIIIIIIIIIIIIAAAAAEEEEEEEEEEQQQQQQLLLLLESSSSQQLQQQSSSSSSSSSSSSSFFFFFFFFFFFFFFFTTTTFFFFFFFFFFKKKRRRRRRLLLLLLTTTTTTHHMMMM
|
||||
UKKKCCCCCCCCCNNRYYIIIIIIIIIIIIIIIIAAAAAEOEEEEEEEEEQQQLLLLLLLESSSQQQQQQQQSSSVSSSSSSSJFFFFFFFFFFFFFFFTTFFFFFFFFFFFKKKKKRRRRRLLLLLLLLTTTTHHMMMM
|
||||
UKKCCCCCCCCCCCNCYYIIIIIIIIIIIIIIIIAABAAAEEEEEEEEEQQQQQLLLLLLEEQQQQQQQQQQSSVVSSSSSSSSFFFFFFFFFFFFNNNNTNNFFFFFFZKKKKKKKRRRRLLLLLLLLLTTTTHHMMMM
|
||||
UKKCCCCCCCCCCCCCYYIIIIYYYYYIIIIIAAABBBBEEEEEEEEEQQQQSSLLLESSEQKQQQQQQQQQSVVVVSSSSPPSFFFFFFFFFFFFNNNNANNNFFFFFFKKKKKKKIIRILBULLLLLLTTMMMMMMMM
|
||||
UKKKCCCCCCCCCCYYYYYIIIYHYYYYYYIAAAABBBBBEEEEEEQQQQQQSSSSSSSSEQQQQQQQQQQQQQVVQPPPPPSSSYFFFFFFFFFFNNNNNNNNNNFFFFKKKKKKKIIIIIUUUULUTTTTTTMMMMMM
|
||||
UUKKKCCCCCCCCYYYYYYIYIIHHHYAAAIAAAABBBBBBEEEEEEESSSSSSSSLLSSQQQQQQQQQQQQQQQQQPPPPPSYYYYJFFFFFFFFNNNNNNNGNMMMFFKKKKKKIIIIIIUUUUUUUTTTTMMMMMMM
|
||||
UKKCCCCPCCCSSYYYYYYYYYYHHFAACAAAAAAABBBBBEEEDDSSSSSSSSSSLSSSHVQQQQQQQQQQQQQQQQQPPPYYYYEEEEEJJJJNENENNNNNNMMMMFKKKKKKIIIIUUUUUUUUUTUTMMMMGMMM
|
||||
UKKKKKCCCCCYYYYYYYYYYYYHHHAAAAAAABBBBBBBBEEBSSSSSSSSSSSSSSSHHVQQQQQQQQQQQQQQQQQPPPYYYYYEEEEEEEEEENENNNNNNMMMMMKKKKKKIEEIIUUUUUUUUUUUDMMMGMMZ
|
||||
UKKKKKKKCCCAAAYYYYYYYYYHHHTAAAAAAAABBBBBBBBBBBBSSSSSSSSSSSSVVVQQQQQQQQQQQQQQQXXPPYYYYYYHEEEEEMEEEEEENNNNNMMMMKKKKKIIIEEEEUUUUUUUUUUUMMMMMMMZ
|
||||
KKKKKKKKTTCCCYYYYYYYYYHHHAAAAAAAAAJJBBBBBBBBBBBBSSSSSSSSSSSSVVQQQQQQQQQQQMQDQXXPYYYYYYEEEEEEEEEEEEEENNNNMMMMMMMMKKEIEEEEEEEPUUUUUMMMMMMMMZZZ
|
||||
KKKKKKKTTTMMKBYYYYYYYYHHHHHAAAAAAAJJBBBBBBBBBBSSSSSSSSSSSSSVVVVVQQQWQQQQMMXDQXXPYYYYYYYYEEEEEEEEEEEENNMMMMMMMMMKKKEEEEEEEEEEUUZUIMMMMMMMMZZZ
|
||||
KKKKKKTTTTTMKKYYYYHHHHHHHHHUAAAAAAJJBBBBBWWBBSSSSSSSSSSSSSVVVVVVQTQWQMMMMMXXQXXXXYYYYYEEEEEEEEEEEEEENNNNMMMMMMMKRKEEEEEEEEEEUZZZMMMMZMMMZZZZ
|
||||
KKTTTTTTTTTTKKYYKKKKKHBHHHHZLAAAAAAJJBBBNWWWRWWSSSSSSSSVVVVVVVVVVVVVQMMMMXXXXXXXPXXYYYYYEEEEEEEEEEENNNNNMWMMMMSSRRREEEEEEEEZZZZZZMMMZMMMMZZZ
|
||||
KKTTTTTTTTTTKKKKKTKKKHBHHNZZLLLAAAJJJJBJWWIWWWWWSSSSSSSVVVVVVVVVVVVMMMMMMXXXXXXXXXXXYYYYEEEEEEEEEEEEEWWWMWWMMMSSRSSSEEEEEEEEZZZZZZMZZZMZZZZZ
|
||||
TTTTTTTTTTTTJTTTTTTKKKKHHHZZZZLAAAAAAJJJJWWWWMMMMSSSSSVVVVVVVVVVVVVMMMMXXXXXXXXXXXXXYYYYYYEEEEEEEOWWNWWWWWWWWMSSSSSQESEEEEEEZZZZZZZZZZZZZZII
|
||||
TTTTTTTTTTTTTTTTTTTKKKKKHHZZZAAAAAAJJJJJWWWWWMMMMSSSSSSVVVVVVVVVVVVVMMMMXXXXXXXXXXXXYYYYYIIIIEIHEOWWWWWWWWWMMMSSSSSSSSSEEEEEYYZZZZZZZZZZZIII
|
||||
TTTTTTTTTTTTLTTTTTTKKKKKKKKKAAAAAAAAAJJJJJWWWMMMMSSSSSSSVVVVVVVVVVVVVMMXXXXXXXXXXXXXXYYYIIIIIIIWWWWWWWWWWWWMMMSSSSSSSSSEEEDEYYYYZZZIIIIIZIII
|
||||
TTTTTTTTTTTTTTTTTTTKKKKKKKKAAAAAAAAAJJJJWWWWWMMMMSSSVSSVVVVVVVNVVNNNVMMXXXXXXXXXCXYXXYYIIIIIIIIIWWWWWWWWWWWWMMMSSSSSSSSEEYDYYZZZZZIIIIIIIIII
|
||||
TTTTTTTTTTTTTTTTTTTTTKKKKKKAAAAAAAAAWWWWWWWWWMMMMCVVVVVVVVVVVNNNNNNNXNNXXXXXXXXXYYYYYYYIIIIIIIIIGWWWWWWWWWWWMMSSSSSSSSSYYYYYYKKZZIIIIIIIIIII
|
||||
TTTTTTTTTTTTTTTTTTTTTKKKKKKKKAAAAAAAWWWWWWWWWMMMMCVVVTVVVVVVVNNNNNNNNNNKKXXXXXXXYYYYYYIIIIIIIIIIWWWWWWWWWWWWSSSSSSSSSSSZZYYYYYYZJIIIIIIIIIII
|
||||
TTTTTTTTJTTTTTTTTTTTTTYKKKKKKAAAAAAAWWWWWWWWWMMMMWVVVTVVVNVVNNNNNNNNNNNNKXXXXXYYYYYYYYYYIIIIIIIIWWWWWWWWWWWWSSBSSSSSSZSZZZYZYYZZIIIIIIIIIIII
|
||||
ZTZTTTTTTTTYYTTTTTTTAAYKKKKKKAAAAAAWWWWWWWWWWMMMMMMMMMMMMMVVNNNNNNNNNNKKKXXXKKYYYYYYYYYIIIIIIIIIIIWWWWWWWWWWSASSSSQSZZZZZZYZYZZZZIIIIIIIIIII
|
||||
ZTZTTTAYYYYYYTTTTTTTTYYYYTTAAAAAAAAWWWWWWWWWWMMMMMMMMMMMMMNNNNNNNNNNNNNKKKKKKKKYYYYYYYYKIIIIIIIIIIWWWWWWWWNWAASSSSSSZZZZZZYZZZZZZIIIIDIIIIII
|
||||
ZZZZTHAAAYYAYYTTTTTTTTYYYYYUUAAAAAAUWWWWWWWWWMMMMMMMMMMMMMNNNNNNNNNNNNNKKKKKKKKYYYYYYYKKKIIIIIIIIIWWWWWGNNNNNNSQSSZZZZZZZZZZZZZZZZIIDDIIIIII
|
||||
ZZZZZZAAAAYAYYYYTTTTTTYYUUUUUUAUUUUUWWWWWWWWWMMMMMMMMMMMMMNNCNNNNNNNNKKKKKIIIKIIIYYYYYYYKIIIIIIIIWWWWWWWNNNNNNPPSSPPZZZZZZZZZZZZZZZDDDIIIIII
|
||||
ZZZZZAAAAAAAAAYTTTTTYYYYYUUUUUAUUUDUWWWWWDWWWMMMMMMMMMMMMMNNNNNNNNNNNKKKKIIIIIIIIIRYYYYKKIIIIIIIINWUWIWNNNNNNNNPPPPPZZZZZZZZZZZZZZDDDDDIIIII
|
||||
ZZZZZAAAAAAAAAAANTTTTYYYYYUUUUUUUDNNNNDDDDWWDMMMMMMMMMMMMMTTNNNNNNNNNKKKKIIIIIIIIIIIYYKKKKIIIIIINNNNIIIINNNNNNPPPPPPPPZZZZZZZZZZZZDDDDDDIIII
|
||||
ZZZZZAAAAAAAAAAAAJJTTYYYYUUUUUUUAAAAAAAAADDDDMMMMMMMMMMMMMTTNXXXNNNNRKKKKKIIIIIIIIIIJYYKKKKIIIINNNNNXXXIINNJJNPPPPPPPZZZZZZZZZZZZDDDDDDDDIII
|
||||
ZZZZZAAAAAAAAAAAAYYYYYYYYUYYUUUUAAAAAAAAAAADDMMMMMTTTTTTTTTMMXXXXNNNRRKKRROIIIIIIIBBYYYKGKIIIINNNNNNXXXXNNJJJNPPPPPPPZZZZZZZZZZZDDDDDDDDDDII
|
||||
ZZZZZAAAAAAAAAAAAAYYYYYYYYYYUUULAAAAAAAAAAADRMMMMMMTTXXTXTTTPPXVVNNNRRRKRIIIIIIIIIBGGGGGGKIIIBNNNNNXXXXXXNNJXNPPPPPPPPPPPPSSZSSZSDDDDDDDDDII
|
||||
ZZZZZAAAAAAAAAAAAAAAYYYYYYYLLLLLUDNNNNNAAAADURRRRMMTTTXXXTMTBPPPPPRRRRRRRRIIIIIIIIBGGGGGKKKIIBBNNNXXXXXXXXXXXPPPPPPPPPPPSYSSSSSSSUDSDSDDIIII
|
||||
ZZZZAAAAAAAAAAAAAAAAYYYYYYYYLLLLLDNNNNNAAAADURRRRRMTTXXXTTTPPPPPPPVRRRRRRRRLIIIIIIIGGGGGKKNYIBBNNNNEXXXXXXXXXPPPPPPPPPPSSSSSSSSSSUDSSSIIIIII
|
||||
ZZZZZAAAAAAAAAAAAAAXYYYYYYYYYLNNNNNNNNNAAAARRRRRRRRRXXXXXTTPPPPPPRRRRRRRRRRLLIIIIIIGGGGKKNNYNNNLNNNXXXXXXXXXXPPPPPPPPPPPPSSSSSSZZZZZIIIIIIII
|
||||
ZZZZZAAAAAAAAAABBBAXYYYYYYYYLLNNNNNNNNNAAAAAAARRRRRRRXXXXPPPPPPPPRRRRRRRRRRLLIIIINIGGGSKSXNNNNNNNKKXXXXXXXXXXPPPPPPPPPPPKSSSSSSZZZZZZIIIIIII
|
||||
ZZZZZZZZEAAAABBBBYYYYYYYYYYLLLNNNNNNNNNAAAAAAARRRRRXXXXXXXPPPPPPPRRRRRLMRRLLLLLIINNGGSSSSSNNNNNNKKKXXXXXXXXXXPPPPPPPPPPSKSSSSSSZZZHHHLIIZIIU
|
||||
ZZZZZZZZEEEEAABBYYYYYYYYYLLLLLNNNNNNNNNAAAAAAARRRRRXXXXXXXXPPPPPPRRRRRLLLLLLLLLLLLLLLLSSSANNNNNNNKKXXXXXXXXXPPPPPPPPPPPSSSSSSSSZZHHHHHHIHHIH
|
||||
ZZZZZZZEEEEEEBBBYYYYYYYYYLLYRLNNNNNNNNJAAAAAAARRXXRXXXXXXXXXPPPPPRRRRRRRLLLLLLLLLLLLOSSSSANNNNKKKKKKKKXXXXXPPPQQPPPPPIISSSISSSSSZHHHHHHHHHHH
|
||||
ZZZZZZEEEEEEGGBBYYYYYYYYYYYYRRNNNNNNAAAAAAAAAAXXXXXXXXXXXXXXXXPPPPRRRRRRRLLLLLLLLLLLLRRNNNNNNNNKKKKKKXXXXKKPPPQQQPPPPIIIIWISSBSSSSSHHHHHHHHH
|
||||
ZZZZZZEEEEEEGYYYYYYYYYYYYYYYRRNNNNNNAAAAAAAJRXXXXXXXXXXXXXXXXXPPPRRRRRLRRLLLLLLLLLLLLLLKNNNNNNNNKKKKKKKKXKPPPQQQQQQQPIIIIIIIIBSSSHHHHHHHHHHH
|
||||
ZZZEEEIEEEGGGGGYYYYYYYYYYYYYRYYRRJJJAAAAAAAWXXXXXXXXXXXXXXXXXXXPPRRRRRLLRLLLLLLLLLLLLLKKNNNNNNNNKKKKKKKKKKKQQLQQQQQQPIIIIIIIIBBBSHHHHHHHHHHH
|
||||
ZZZZZEEEEEGGGGGYYYYYYYKKKKYYYYYRRRJJAAAAAAAAAAXXXXXXXXXXXXXXXXJPRRRRROOLLLLLLLLLLLLLKKKKKNNSNNKKKKKKKKKKKEEQQQQQQQQQQIIIIIIIIIIIIHHHHHHHHHHH
|
||||
ZZZZZEEEEEZZGGGGYGYYYYKKKKKKKKRRRRJJAAAAAAAAAAQNNXXXXXXXXXXXBXJPBRRROOOOOQQQQLLLLLLKKKKKKNNNNNKKKKKKKEEEKEEEQQQQQQQQQIIIIIIIIIIIIIIHHHHHHHHH
|
||||
ZZZZZZZEZZZZZZGGGGGGGYKKKKKKKRRRRJJJJJJJAAAAAAQNNXXXXXXXXXXXBBBBBBBOOOOOOOOQLLLLLLQKKKKKKKKKKKKKKKKKKKEEEEEEQEQQQQQIIIIIIIIIIIIIIIHHHHHHHHHH
|
||||
ZNZZZZZZZZZZZZZGGGGGGKKNKKKKKKRRRRJNNNNNAAAAAANNNNXXXXXXXBXBBBBBBBAOOOOOOOOQLLLLLQQQKKKKKKKKBKKKKBKKKEEEEEEEEEEQQQQIIIIIIIIIIIIIIIHHHHHHHHHH
|
||||
NNZZZZZZZZZZZZZZGGGGKKKKKKKKKKKKNNNNNNNNAAAAAANNNNSSSSSBXBBBBBBBBBOOOOOOOQQQQQLLQQQQQKKBKKKBBBBBBBBKEEEEEEEEEEEQQQQIIIIIIIIIIIIIDIHHHHHHHHHH
|
||||
NNNNZZZZZZZZZZZZGGGGKKKKKKKKKKKNNNNNNNNNNNNNNNNNNNSSSSBBBBBBBBBBBBOOOOOOOQQQQQQQQQQQQKKBKKKBBBBBBBBBMEEEEEEEEEEQQQQIIIIIIIIIIIIIDHHHHHHHHHHQ
|
||||
NNNNZZZZZZZZZGGGGGGGKKKKKKKKKKKNNNNNNNNNNNNNNNNNNNSSSSBBBBBBBBBBBBIOOOOOOOQQQQQQQQQQKKKBBBBBBBBBBLBEEEEEEEEEEEEQQQQIIIIIIIIIIIIIDHHHHHHHHHHH
|
||||
NNNNNNNNZZZZZGGGGGKKKKKKKKKKKKKNNNNNNNNNNNNNNNNNNXSSSSBBBBBBBBBBBBIOOOOOOOOOQQQQQQQQQBBBBBBBBBBBBEEEEEEEEEEDEQQQPQQFSSIIIIIIISIIDDHHHHEHHHDD
|
||||
NNNNNNNNNZZZGGGGGGGKGKQKKKKKKKXNNNNNNNNNNNNNNNRNSXSSSBBBBBBBBBBBBBIIIIIOOOLQQQQQQQQQOBBBBBBBBBBBBEEEEEEEEEEDEFQQPQFFSSIIIIIISSSSDDDHHEHHHHDD
|
||||
NNNNNNNNNZNNGGGGGGGGGKKKKKKKKXXNNNNNNNNNNNNNNNSSSXXSSSBBSBBBBBBBBBBBBIIOOOQQQQQQQQQQQBBBBBBBBBBBBBEEEEEEDDDDFFQQQFFFSSSSSSSIISSSSSDDDHHHDHDD
|
||||
QNNNNNNNNNNGGGGGGGGGGKGGKKKKKKXXNNNNNNNNNNNNSSSSSXSZSSZBBBBBBBBBBBBBBIIIOIQQQQQQQQQQKBBBBBBBBBBBBBBDDEEDDDDDFQQFFFSSSSSSSSSSSSSSSSDDDDDDDDDD
|
||||
NNNNNNNNNNNNNGGGGGGGGGGGKKIKKXXXXNNNNNNNSNSSSSSSSSSZSZZZZZBBBBBBBBBBBBIIOIIIQQQQQQABBBBBBBBBBBBBBBBBDDEEDDDFFFFFFFSFSSSSSSSSSSSSSDDDDDDDDDDD
|
||||
NNNNNNNNNPNGGGGGGGGGGGGGGKKXXXXXXNNNNSSSSSSSSSSSSSSZZZZZZZBBBBBBBBBBBIIIIIQQQQQQQQQBBBBBBBBBBBBBBBDDDDDDDDDFFFFFFFFFSSSSSSSSSSSSDDDDDDDDDDDD
|
||||
1279
Inputs/Day13.txt
1279
Inputs/Day13.txt
File diff suppressed because it is too large
Load Diff
500
Inputs/Day14.txt
500
Inputs/Day14.txt
@@ -1,500 +0,0 @@
|
||||
p=84,26 v=99,-23
|
||||
p=98,17 v=-41,-46
|
||||
p=3,84 v=-17,-23
|
||||
p=92,66 v=36,-4
|
||||
p=16,102 v=95,-60
|
||||
p=14,90 v=-71,-62
|
||||
p=26,29 v=91,-20
|
||||
p=74,36 v=67,30
|
||||
p=59,66 v=86,-4
|
||||
p=32,47 v=-79,7
|
||||
p=82,42 v=3,-84
|
||||
p=61,16 v=28,34
|
||||
p=82,9 v=-84,-78
|
||||
p=5,71 v=16,84
|
||||
p=15,79 v=-48,75
|
||||
p=76,92 v=-32,68
|
||||
p=43,93 v=54,78
|
||||
p=22,73 v=-49,68
|
||||
p=79,13 v=-78,-55
|
||||
p=61,17 v=1,90
|
||||
p=71,58 v=-73,16
|
||||
p=60,63 v=-31,87
|
||||
p=8,41 v=-17,-96
|
||||
p=13,51 v=-16,-51
|
||||
p=86,15 v=12,-65
|
||||
p=35,71 v=57,3
|
||||
p=77,81 v=89,86
|
||||
p=100,37 v=93,-84
|
||||
p=31,38 v=22,20
|
||||
p=9,98 v=99,-47
|
||||
p=29,21 v=72,-76
|
||||
p=67,99 v=76,-25
|
||||
p=62,67 v=54,78
|
||||
p=80,79 v=-1,91
|
||||
p=74,7 v=51,-42
|
||||
p=31,57 v=30,70
|
||||
p=7,74 v=57,-75
|
||||
p=49,29 v=-9,34
|
||||
p=27,70 v=-45,-54
|
||||
p=96,30 v=47,-77
|
||||
p=7,22 v=-65,52
|
||||
p=50,53 v=15,-1
|
||||
p=37,44 v=46,-96
|
||||
p=85,87 v=-10,-25
|
||||
p=91,8 v=47,-56
|
||||
p=96,11 v=-50,-67
|
||||
p=75,85 v=80,90
|
||||
p=51,72 v=41,79
|
||||
p=81,67 v=-93,-25
|
||||
p=78,51 v=65,-99
|
||||
p=94,21 v=15,38
|
||||
p=41,63 v=-77,89
|
||||
p=98,11 v=-52,31
|
||||
p=97,53 v=67,12
|
||||
p=10,93 v=78,-74
|
||||
p=13,23 v=53,40
|
||||
p=73,39 v=-11,58
|
||||
p=82,54 v=45,-39
|
||||
p=4,14 v=-52,60
|
||||
p=69,85 v=-93,86
|
||||
p=88,27 v=-98,-64
|
||||
p=54,88 v=50,-27
|
||||
p=53,84 v=-82,-15
|
||||
p=47,51 v=24,61
|
||||
p=100,94 v=-54,-52
|
||||
p=91,23 v=1,-66
|
||||
p=95,45 v=-42,7
|
||||
p=76,92 v=80,53
|
||||
p=29,0 v=13,-29
|
||||
p=38,46 v=40,2
|
||||
p=29,19 v=-24,-59
|
||||
p=4,53 v=-74,11
|
||||
p=77,87 v=45,-13
|
||||
p=75,12 v=-82,-52
|
||||
p=95,84 v=38,93
|
||||
p=52,52 v=20,17
|
||||
p=16,0 v=-83,51
|
||||
p=68,21 v=98,-72
|
||||
p=9,54 v=-76,20
|
||||
p=27,9 v=9,-55
|
||||
p=32,44 v=-11,-96
|
||||
p=90,59 v=67,6
|
||||
p=68,52 v=65,30
|
||||
p=71,44 v=-3,11
|
||||
p=6,14 v=16,44
|
||||
p=10,0 v=18,-40
|
||||
p=85,41 v=17,90
|
||||
p=15,4 v=-59,57
|
||||
p=44,65 v=2,97
|
||||
p=15,78 v=53,-48
|
||||
p=34,12 v=46,53
|
||||
p=43,45 v=86,-83
|
||||
p=76,52 v=-92,-81
|
||||
p=11,80 v=97,-24
|
||||
p=37,3 v=48,63
|
||||
p=1,54 v=49,-5
|
||||
p=45,61 v=-5,81
|
||||
p=71,63 v=87,95
|
||||
p=72,40 v=-83,32
|
||||
p=10,9 v=-83,47
|
||||
p=3,23 v=-10,-73
|
||||
p=84,1 v=85,52
|
||||
p=52,24 v=-18,36
|
||||
p=76,37 v=21,-84
|
||||
p=49,26 v=20,11
|
||||
p=66,54 v=30,-4
|
||||
p=24,66 v=-61,79
|
||||
p=34,22 v=41,-90
|
||||
p=43,6 v=-52,-66
|
||||
p=15,30 v=68,6
|
||||
p=72,74 v=-55,93
|
||||
p=35,25 v=24,-66
|
||||
p=80,21 v=56,36
|
||||
p=43,67 v=59,95
|
||||
p=61,39 v=-69,-88
|
||||
p=61,93 v=-66,65
|
||||
p=18,94 v=97,74
|
||||
p=4,43 v=13,-75
|
||||
p=13,62 v=-74,-91
|
||||
p=61,27 v=32,-59
|
||||
p=28,88 v=55,-19
|
||||
p=52,55 v=-94,-60
|
||||
p=83,37 v=46,97
|
||||
p=2,72 v=-52,-77
|
||||
p=35,31 v=-33,23
|
||||
p=75,73 v=30,-12
|
||||
p=55,7 v=87,-70
|
||||
p=48,52 v=-41,-22
|
||||
p=50,15 v=39,-54
|
||||
p=35,69 v=63,-92
|
||||
p=40,55 v=-20,-84
|
||||
p=51,27 v=61,-67
|
||||
p=24,29 v=62,21
|
||||
p=12,14 v=86,45
|
||||
p=57,29 v=-99,-66
|
||||
p=82,74 v=16,26
|
||||
p=2,40 v=-32,-69
|
||||
p=23,14 v=-81,49
|
||||
p=89,70 v=-32,99
|
||||
p=4,27 v=60,-67
|
||||
p=34,10 v=-77,-57
|
||||
p=40,73 v=88,73
|
||||
p=26,38 v=-90,21
|
||||
p=31,25 v=45,15
|
||||
p=93,8 v=-65,54
|
||||
p=61,25 v=-69,-79
|
||||
p=13,63 v=19,27
|
||||
p=58,13 v=15,-42
|
||||
p=29,1 v=3,65
|
||||
p=65,59 v=41,15
|
||||
p=86,69 v=-89,-14
|
||||
p=23,63 v=-87,-79
|
||||
p=14,7 v=81,-54
|
||||
p=3,92 v=-96,61
|
||||
p=78,24 v=-34,-70
|
||||
p=48,30 v=-22,10
|
||||
p=59,79 v=85,66
|
||||
p=91,7 v=5,-60
|
||||
p=61,25 v=-20,41
|
||||
p=5,90 v=60,87
|
||||
p=68,9 v=-24,25
|
||||
p=27,55 v=42,9
|
||||
p=48,41 v=37,-78
|
||||
p=43,44 v=80,-68
|
||||
p=73,20 v=30,-49
|
||||
p=13,62 v=-19,-3
|
||||
p=46,11 v=24,50
|
||||
p=17,90 v=86,75
|
||||
p=77,18 v=-84,79
|
||||
p=5,52 v=4,-30
|
||||
p=28,63 v=34,41
|
||||
p=72,83 v=87,-15
|
||||
p=11,16 v=51,-60
|
||||
p=4,33 v=-63,-71
|
||||
p=70,77 v=34,-25
|
||||
p=37,46 v=22,-20
|
||||
p=87,49 v=-25,2
|
||||
p=89,16 v=45,-59
|
||||
p=9,82 v=-33,97
|
||||
p=66,27 v=87,-72
|
||||
p=64,97 v=-38,-40
|
||||
p=51,90 v=-73,76
|
||||
p=25,57 v=-68,-95
|
||||
p=41,13 v=8,-48
|
||||
p=39,13 v=59,29
|
||||
p=42,51 v=13,9
|
||||
p=70,102 v=-14,-54
|
||||
p=41,69 v=2,83
|
||||
p=74,7 v=-10,39
|
||||
p=91,63 v=32,-99
|
||||
p=6,22 v=-70,-55
|
||||
p=78,5 v=-12,37
|
||||
p=54,76 v=-46,-84
|
||||
p=17,19 v=-4,-62
|
||||
p=70,101 v=76,58
|
||||
p=71,94 v=41,74
|
||||
p=16,91 v=18,-32
|
||||
p=10,90 v=95,-53
|
||||
p=97,61 v=71,5
|
||||
p=63,49 v=-73,-70
|
||||
p=85,27 v=-76,-56
|
||||
p=98,11 v=47,47
|
||||
p=58,7 v=-5,46
|
||||
p=5,48 v=-6,-94
|
||||
p=4,90 v=-87,-16
|
||||
p=55,84 v=-3,-29
|
||||
p=74,1 v=95,-35
|
||||
p=3,43 v=35,28
|
||||
p=11,29 v=91,40
|
||||
p=10,11 v=38,31
|
||||
p=61,44 v=-19,10
|
||||
p=87,52 v=76,96
|
||||
p=3,92 v=27,67
|
||||
p=68,64 v=87,-6
|
||||
p=74,88 v=87,-34
|
||||
p=24,52 v=43,-61
|
||||
p=91,10 v=-65,-63
|
||||
p=65,98 v=49,-21
|
||||
p=88,66 v=-71,-46
|
||||
p=21,84 v=-26,93
|
||||
p=7,69 v=84,81
|
||||
p=43,21 v=6,-9
|
||||
p=43,64 v=-73,-19
|
||||
p=35,47 v=79,-88
|
||||
p=54,21 v=39,-62
|
||||
p=20,63 v=-33,27
|
||||
p=21,51 v=99,10
|
||||
p=16,82 v=-72,-31
|
||||
p=23,10 v=-2,-45
|
||||
p=37,33 v=-22,21
|
||||
p=41,74 v=-9,88
|
||||
p=31,96 v=-15,65
|
||||
p=37,12 v=46,55
|
||||
p=72,54 v=-54,-52
|
||||
p=9,58 v=-28,-87
|
||||
p=0,13 v=-96,-50
|
||||
p=65,70 v=18,11
|
||||
p=32,38 v=90,-84
|
||||
p=97,67 v=40,-3
|
||||
p=45,17 v=90,57
|
||||
p=36,85 v=2,83
|
||||
p=29,39 v=63,78
|
||||
p=51,99 v=-7,-40
|
||||
p=18,93 v=18,-30
|
||||
p=75,93 v=-12,65
|
||||
p=1,85 v=27,-20
|
||||
p=17,84 v=97,72
|
||||
p=3,68 v=-74,96
|
||||
p=72,22 v=-49,52
|
||||
p=18,65 v=-50,1
|
||||
p=71,16 v=63,-59
|
||||
p=36,44 v=-20,85
|
||||
p=77,21 v=-27,96
|
||||
p=70,54 v=95,-70
|
||||
p=20,5 v=-44,-9
|
||||
p=97,64 v=55,94
|
||||
p=49,82 v=35,-16
|
||||
p=63,54 v=2,-51
|
||||
p=88,101 v=1,65
|
||||
p=1,3 v=-89,-34
|
||||
p=29,97 v=-24,-42
|
||||
p=45,46 v=-66,14
|
||||
p=51,33 v=68,35
|
||||
p=91,29 v=-78,-35
|
||||
p=10,56 v=-83,31
|
||||
p=11,94 v=-41,-15
|
||||
p=63,76 v=19,90
|
||||
p=84,84 v=21,84
|
||||
p=24,41 v=-79,25
|
||||
p=94,82 v=23,85
|
||||
p=60,52 v=-48,-4
|
||||
p=47,36 v=66,-51
|
||||
p=0,49 v=-6,-90
|
||||
p=40,23 v=-99,-63
|
||||
p=21,79 v=-64,-40
|
||||
p=71,18 v=-14,-67
|
||||
p=53,44 v=-51,7
|
||||
p=71,40 v=83,51
|
||||
p=96,87 v=93,-29
|
||||
p=46,64 v=22,88
|
||||
p=3,53 v=44,-52
|
||||
p=54,57 v=74,-95
|
||||
p=61,63 v=-95,-12
|
||||
p=96,82 v=3,-17
|
||||
p=41,96 v=5,89
|
||||
p=7,46 v=-19,20
|
||||
p=2,7 v=55,33
|
||||
p=27,15 v=29,33
|
||||
p=54,64 v=-7,2
|
||||
p=84,58 v=-93,59
|
||||
p=80,24 v=56,5
|
||||
p=23,13 v=66,-56
|
||||
p=93,100 v=-89,45
|
||||
p=89,82 v=91,69
|
||||
p=55,90 v=96,-5
|
||||
p=43,41 v=16,-93
|
||||
p=54,70 v=28,-85
|
||||
p=50,64 v=-33,-22
|
||||
p=99,35 v=71,17
|
||||
p=23,77 v=11,-3
|
||||
p=78,99 v=43,-38
|
||||
p=3,80 v=-57,8
|
||||
p=22,75 v=-48,-18
|
||||
p=3,94 v=-98,-33
|
||||
p=72,89 v=-90,39
|
||||
p=87,84 v=67,61
|
||||
p=28,0 v=22,55
|
||||
p=65,55 v=82,70
|
||||
p=55,48 v=17,-96
|
||||
p=11,37 v=-33,52
|
||||
p=63,63 v=-94,9
|
||||
p=0,10 v=-78,59
|
||||
p=91,17 v=23,-58
|
||||
p=56,77 v=72,81
|
||||
p=99,47 v=14,19
|
||||
p=15,18 v=31,24
|
||||
p=47,9 v=56,-13
|
||||
p=38,11 v=-9,-50
|
||||
p=93,2 v=-76,47
|
||||
p=97,52 v=-45,-32
|
||||
p=51,44 v=-65,68
|
||||
p=15,2 v=-83,72
|
||||
p=15,99 v=97,54
|
||||
p=85,81 v=45,78
|
||||
p=11,57 v=3,-13
|
||||
p=91,30 v=11,56
|
||||
p=42,90 v=-75,73
|
||||
p=24,7 v=99,-68
|
||||
p=55,58 v=83,-7
|
||||
p=35,4 v=15,31
|
||||
p=21,39 v=42,27
|
||||
p=62,9 v=6,-48
|
||||
p=59,99 v=-20,46
|
||||
p=93,71 v=1,96
|
||||
p=31,3 v=77,-47
|
||||
p=98,11 v=25,-52
|
||||
p=28,41 v=92,22
|
||||
p=90,64 v=93,81
|
||||
p=64,93 v=-71,-28
|
||||
p=31,65 v=-74,-47
|
||||
p=62,44 v=21,30
|
||||
p=35,22 v=-76,5
|
||||
p=69,2 v=-4,47
|
||||
p=34,28 v=52,32
|
||||
p=3,37 v=-17,21
|
||||
p=43,92 v=90,-50
|
||||
p=16,59 v=29,-1
|
||||
p=41,6 v=57,-50
|
||||
p=93,58 v=-74,-16
|
||||
p=88,60 v=-2,-10
|
||||
p=62,19 v=-51,37
|
||||
p=30,80 v=79,83
|
||||
p=75,14 v=-84,79
|
||||
p=77,10 v=-34,-71
|
||||
p=92,60 v=21,13
|
||||
p=21,25 v=-26,-67
|
||||
p=88,101 v=57,80
|
||||
p=60,93 v=14,-99
|
||||
p=55,33 v=61,-77
|
||||
p=76,51 v=-60,67
|
||||
p=23,31 v=-48,25
|
||||
p=47,28 v=71,18
|
||||
p=6,10 v=-6,55
|
||||
p=74,29 v=-51,-56
|
||||
p=43,49 v=-66,15
|
||||
p=53,15 v=17,46
|
||||
p=34,89 v=-90,-28
|
||||
p=53,12 v=26,-53
|
||||
p=68,96 v=32,68
|
||||
p=10,50 v=-6,5
|
||||
p=30,7 v=69,80
|
||||
p=2,69 v=60,84
|
||||
p=78,74 v=32,-12
|
||||
p=83,87 v=-8,-31
|
||||
p=86,86 v=48,-45
|
||||
p=19,6 v=7,-48
|
||||
p=53,32 v=-55,-89
|
||||
p=32,35 v=-23,-39
|
||||
p=95,23 v=-87,43
|
||||
p=56,82 v=50,-22
|
||||
p=28,101 v=99,-36
|
||||
p=8,77 v=5,-13
|
||||
p=74,21 v=-27,-90
|
||||
p=68,59 v=98,-6
|
||||
p=83,93 v=21,76
|
||||
p=80,24 v=-91,-78
|
||||
p=7,78 v=47,-8
|
||||
p=19,81 v=90,-14
|
||||
p=96,20 v=-30,44
|
||||
p=70,54 v=-14,10
|
||||
p=93,25 v=-65,33
|
||||
p=51,76 v=26,90
|
||||
p=79,25 v=45,-69
|
||||
p=89,6 v=-47,-54
|
||||
p=32,78 v=62,18
|
||||
p=98,32 v=57,23
|
||||
p=34,30 v=-22,-91
|
||||
p=37,94 v=-72,86
|
||||
p=81,94 v=-45,63
|
||||
p=20,37 v=-24,29
|
||||
p=2,63 v=-26,-19
|
||||
p=4,29 v=-72,-68
|
||||
p=18,95 v=45,71
|
||||
p=64,84 v=28,-25
|
||||
p=8,32 v=84,-93
|
||||
p=15,3 v=-6,-41
|
||||
p=42,53 v=81,-92
|
||||
p=20,73 v=79,72
|
||||
p=43,3 v=28,-38
|
||||
p=86,85 v=-21,72
|
||||
p=97,29 v=69,36
|
||||
p=23,74 v=-55,72
|
||||
p=83,87 v=45,-26
|
||||
p=70,0 v=-93,57
|
||||
p=61,0 v=-25,74
|
||||
p=22,0 v=-35,56
|
||||
p=12,8 v=-70,34
|
||||
p=27,24 v=66,-74
|
||||
p=27,87 v=29,78
|
||||
p=36,98 v=68,72
|
||||
p=26,40 v=40,-82
|
||||
p=38,34 v=-80,6
|
||||
p=34,83 v=33,74
|
||||
p=23,24 v=9,27
|
||||
p=46,96 v=96,-43
|
||||
p=80,41 v=52,19
|
||||
p=33,10 v=37,-47
|
||||
p=47,15 v=74,73
|
||||
p=25,102 v=-3,-72
|
||||
p=73,63 v=-71,-1
|
||||
p=27,78 v=-2,83
|
||||
p=28,8 v=18,55
|
||||
p=95,102 v=-39,-42
|
||||
p=65,69 v=-38,-16
|
||||
p=54,17 v=-18,48
|
||||
p=63,64 v=96,96
|
||||
p=3,32 v=-37,33
|
||||
p=96,84 v=36,61
|
||||
p=67,9 v=67,-54
|
||||
p=88,54 v=-74,-52
|
||||
p=70,52 v=52,14
|
||||
p=97,81 v=-55,-56
|
||||
p=4,11 v=40,54
|
||||
p=51,9 v=-16,-97
|
||||
p=59,88 v=85,75
|
||||
p=58,24 v=72,-67
|
||||
p=73,59 v=76,-93
|
||||
p=34,40 v=81,2
|
||||
p=38,22 v=94,52
|
||||
p=77,27 v=78,39
|
||||
p=65,50 v=28,16
|
||||
p=63,14 v=-38,-48
|
||||
p=13,70 v=-24,75
|
||||
p=60,16 v=12,-9
|
||||
p=43,65 v=92,50
|
||||
p=66,31 v=-24,-65
|
||||
p=67,32 v=10,4
|
||||
p=20,27 v=-27,97
|
||||
p=87,35 v=-52,38
|
||||
p=69,86 v=80,-41
|
||||
p=55,81 v=4,-15
|
||||
p=11,102 v=-28,54
|
||||
p=34,74 v=52,-16
|
||||
p=74,90 v=19,77
|
||||
p=100,71 v=-63,-17
|
||||
p=16,27 v=-52,30
|
||||
p=77,75 v=-59,-50
|
||||
p=18,76 v=27,81
|
||||
p=65,99 v=42,-45
|
||||
p=30,15 v=-79,48
|
||||
p=4,95 v=80,-31
|
||||
p=81,87 v=83,15
|
||||
p=22,31 v=33,34
|
||||
p=46,77 v=-43,-42
|
||||
p=36,37 v=-99,27
|
||||
p=35,86 v=29,20
|
||||
p=54,16 v=-9,-77
|
||||
p=58,5 v=-38,-34
|
||||
p=40,26 v=4,-53
|
||||
p=31,36 v=56,-5
|
||||
p=46,101 v=-5,97
|
||||
p=99,97 v=47,88
|
||||
p=52,42 v=94,-81
|
||||
p=92,100 v=95,65
|
||||
p=86,19 v=-78,-48
|
||||
p=75,100 v=-23,63
|
||||
p=74,38 v=98,-99
|
||||
p=61,92 v=-42,-40
|
||||
p=70,98 v=8,63
|
||||
p=4,82 v=-74,-32
|
||||
p=79,1 v=63,-33
|
||||
p=5,49 v=-17,11
|
||||
p=55,39 v=-82,-68
|
||||
p=91,98 v=-96,64
|
||||
p=55,82 v=24,77
|
||||
p=54,48 v=83,13
|
||||
p=0,23 v=-19,-74
|
||||
p=25,50 v=48,36
|
||||
p=99,21 v=36,-68
|
||||
p=26,33 v=9,9
|
||||
@@ -1,71 +0,0 @@
|
||||
##################################################
|
||||
##...OO.O.#.O..........OO..#.#..O.O.O.....O......#
|
||||
#O.O#.OO.O#..O.....O..#..O........OO...O...#.....#
|
||||
#O#..O........O.O.O.O......O.O##...#.O....O.O#.O.#
|
||||
#...O.O...O..O..O..O.O..OO.O....O....OO.......##.#
|
||||
#O...O......#O.#...O.O.....#O.....O....#.........#
|
||||
#..OOO.....#.O.O#.........O#.OO.O.OO......OO...#.#
|
||||
#OO.O...#.O.....O#O....O#.........O........O#OO#.#
|
||||
#.#OO......O...O.O.#...........OO......O.#.OO....#
|
||||
#.#O..O.O..O...O.O......OO.......OO#..O.OO#OO....#
|
||||
#.O......#..OO.O...........O........O.O#.OO......#
|
||||
#O..#..#...#...............O.#......OOO.OO.....OO#
|
||||
##..OO.....#O##...O.O...##......#OOO..OO...O..O..#
|
||||
#..OO..O..#O...O.O..O.#.O#O##.O..O..O..OO.#O.#.O.#
|
||||
#...O..........OO........#...OO..O...O....O.OOO.O#
|
||||
#...O.......O...OO.#O....O....O.O.O.O.#.O#..OO...#
|
||||
##..O...O.O.......#O.OO.OO.OOO...O.OO....O..#....#
|
||||
#O..#...O.......O#OO.O...OO...O...#....O.OO.OO..##
|
||||
#...O..OO.#O.....O.OO..OOO.O........OO.O...#OOO.##
|
||||
#.#......#..OO..OO.O.O.........O..#...O........O.#
|
||||
#O...O..O.......O.O..#.OO.OO....#O....O....O...#.#
|
||||
#.##O.#...O.#.......#O.O..O.OOO.......O..O..O..O##
|
||||
#...OO.O..O......##...#.#.....O#O...O..O......#O.#
|
||||
#..O#OO.O.OO..#O........OO..##..O...O......OO.O..#
|
||||
#O..O.O.......OO.OO.....@O#.....#.O..#O........O.#
|
||||
#...........O#.....O....OO..OO...O..OO...O..OO..O#
|
||||
#O#...OOO................O.###.O...O.......O.....#
|
||||
#.OO.O...OO#O..O#..OO.OO...O.......OO.O.....O...O#
|
||||
#.O..#.O......OO..O.......#.OO.##OOOO..O....#.#O.#
|
||||
#.............O...O..O.OO#OO.O#..OO.OO#O.##.....##
|
||||
#..#O.OO.O.#..O#......O#.O....O.OO.O..O...O....###
|
||||
#O.O.O.O...OOO..O..O..........O#.OO..#...#O.###..#
|
||||
#..O#.#O.OO.....#OO.O....O..#......O.#O##..#...O##
|
||||
###.O.....O.....O.#OO.....O........O.OO#....O....#
|
||||
#O..#O.O.O.....O#.O..O.O#O...#.............O...#.#
|
||||
#..............#O.#.#....O.OO...O...O......#...#.#
|
||||
#OOOO...O.#..O..O#.#O....OOO........O.....O...#..#
|
||||
#OOO.O.#.OO..O.#.O..O.O........#..O...#O.....O.O.#
|
||||
#.....##.O.#OO.OO#.OO..OO.OO...OO...O....O#.#O..##
|
||||
#O.O.O.O..O.....O......OOO...O..O...O#OO...O..O..#
|
||||
#OO..OO..O......#....OO..#.O...OO..O....#O..#....#
|
||||
#OO....OO..OOOO....O.OO.....O.O#.....#O....O.OOOO#
|
||||
#........O.....#O..#O......O....O.#.O#..##..O..OO#
|
||||
#.#....#...O.O.O....O.......OO#.OOO#.#....#..#...#
|
||||
##O.O.#.....#O.......O.OO.#O...#OOO.O.#....OOO...#
|
||||
#..O.O#.O..OO..O.........O......O..OO.OO.OO......#
|
||||
#.O.....#.#O.O...OO................O.O.#O..#...O.#
|
||||
#...O......O.OO..OO..OO....#O.O..#O..O#....O...#O#
|
||||
#OO.O....O#..O.#.OOO.#............O.O.OO.O#.O.#O##
|
||||
##################################################
|
||||
|
||||
v>>^vv>>>^v>v^^>vv^><^vv^^^<^^<^>>^<>><^^>v>vvv<>v><>>v<v<<^^^vv<v^^><vvv<v<<<<^>^>>><><^>^>^^^>>^^^<<v^v^>^^<>^v<^v<<>^^vv<^>v>v<<>v^<<>^><<>>vv>^<>vv>v>>><<^>^^>v<>>v^<^<^>vvv<>^v<^<<<^>^^v<vv<^><vv<>>^<^^v<^<<^<^^>vv^<>^<>>><^<<^v<v<>vvvv<^<^v<>>v<><vvvv^v^<v<<v>^^>^^v^vv<<^^v>v<^vv>^vv><vv<<>v>v<>vv<<<><v>vv<^<><^><<<>^><<<<^>v^v<>vv^^<v^>>>v>^><v>v^^<v<^v>v>><^^<>>v<>v>>^<<v<^vvvv<vvv>^<v^<vvv<v^>^^>>v^^^<<^<<>^^<>><v>^>>^>>^>>vv>v^<v>vv<><<>><<<>v>>vv^^>v<vvv<v>>><<><><v^^>^v<^<>v<<^><><^^>^>^^vv<^vv><v^^><<<<<<<<v<^<<^v^^^><>v>^^^<><^v>v<^v><<<<<><^vv>^v>v^<<>v^>v<^>^<>^<v^v^>v^v^<^<><>>^<<^vv<>>vv^v^^<^<v<v^v^><>^^<>^><>^^v<^v<<v^^<>^v<v^^v^v>v^>><^^<><>>^v><v>><<>v>>>>v<<<^v^^v<<<<^v<><^<^^<v<>>^^>>>v>v>>><^<vv^<<^vvv>^<>^v<<^^>v^<^<v>v><vv^<v>>^^<>^v^^^<>v^v>v^><><v<v>v<^v>^vv<>><>>^>v^^<v<<^^><<^<^^^v><<^><>>v<<<v<<>><v<><<v>><<<^^^^v^v>v<vv><^^>>^^v>v<<<^<<>^v>>>v^v^v<<v^v<<><><><^<v^>v<><<>><>^^^><v^>^v<v<vv>v^<^^>><^^^vv^>v^<<v^>^^v^v>>v><<<>vv^><>v<>>>v^^^vv<v<<>>>>v<><^
|
||||
<vvv>v>v>>^v^<<<>>><>><<<^v^v>^^<v><vv>>^v<^<<>>^^^^v^><^^^v>v^vv^v<>>v>>>><v>^vv<<v<v<>>vvv^<>vvvv^>><<>^^<<^><><^<>v<^<<<v^>>^>^<<^^>>>^^v^vv>^><vvv^vv>><><>>^<v>>^v<>>><>v^v<vvvv<v^vvv^^^<^<^>v<>^v>><v>^^>^<v^<<v>v^>^v^^>vv<v^<><^<^<^<^>v<<<>>>v^v<^v<<<>^<<v^<>>>v><>>v<>>^><^>>v<^>v>v<><vv^<^^vv><^^v<v>vvvv<v<<^<>^>^^>^>>>vv>vv>v<^>v>^<<>^v<<<<v>^^vv>^v<^v>^>>^^^><v^>^>>^v<>v^<^v><>v><<<><<v<^^^^vv>^v><<<vv<<vv>^^v>><v<^vv<^<>v<vv^^v^vv<>v^^v<^^><<>^^>>v>v^>v<<vvv><^>v<<>v<<v<<><>^^^><^^^<<>v>v<<><<><^<v<<<>>v^<<v><<><^>^v>>>>><>v<<v>^^^>^>^v^v>><>>>>vvv^<v><^>^<^>v<^>^v>^<^^<vv<<v^<^^><<>v^<>^vv>^<>v>vv>v^^^<v^><^v^^^vv>vv>v^>^<<v><^vvv>v<vv<<^^>v^>v><>v^^^^<^v^v^<><vv<^<<vv>v>v^>>^<v>v>^<vv>>v<><^^<><vv>><<v<>^<>v<^>vvv<<>v<v^v>>^>><v^>^^><>vvv^^^v>^^<v>>><>v>^<^^^>vv<<<^>vv<^<^<>vvv<>^v^^>^^<^^^v^<v<^><>v<^^>^^>>v^v<><^v<>><>^<<<<v^v<^>v>>v><vv<v^<v^^v><vv^vv>>>^>^v>^^^vvvvvv>^vv>v>v<>^^><><^>^<>>^^^v^<<v<<v<v<<vv^^^vv>v^<^<<<^<vv<><>><<<vv><<<^^<<><<><>^<<vv<v^<v>><^v^^v><^v>>vv
|
||||
^<<<>>v>>^^v<>><^><^^>v>>^^^<>^>>^>v>>^>><^><^>v<v>v^v>v^v>vvv<<^>>vv>^<vv^v^^^v<^^v<^>v>v<>^<<v<<<>>^>^^v>>v<<vvv<^<^^>^<^>><^v^v><<>v>>><<>v^<^><v<v<vv^v<<><v>vv^v^v^v>^>v<^><><<v<v>^><v<^<v<^>>><^>v>^><<<vvv<vv<^v>v>^<vv^>>>v^<v^<<^>^<<<>>v<v<v>^^v>v<^>>>v^^^<<^<^v><^><^>vv>>^>>>v>^<^<v<v>vv><^^>>^<<^>><<<v^<<<v>v<^<v>^^v<<>v>vv^<vv>^v<>v^v>>^>^^><>v><v>v^>>>>>vv^><^>v<^^vv^^>>><<<><^<v<<>^><>>>v>>^<<<<>^v^v><^v^^^<<v<v<^>>^<^<<<v^<<<>v^<>^v>v^>^<>^>^<v<><^^<<<v<<v>><>^<^<^>^v^v><<>>>v>^vv^v<>>>><v<>v^<v<<vv<v<>>v>vv><>><<v^<>^<>v^<<<vv^>>>v^^v^vv><vv^^v<^<>>^<v^>v>><>><v<^v<>v^>>><>^^>v><><>^^v^vv<^v><v<>^^v>>v>^vv<<v^^<><v><v^<><v<^vv>v<^^^^^v<>>vv^^v<^>v<v>v^v<>><><v>>v<^<^^<<v^>>>v<v^v<v>><<v^<>v<^>^^<v^>v^<v<v>v>><v>v>vv>^^v^<<>>v>>>^<v>^<><vv>><v<>vv<vv>v^v<^>vv<^>>v><^^>^><>>vv<><<<v<v>^<^^^v^v>^vv><>>>><v<>^>^<<^^^^>v^^vv<vv^^v>^^<^<^<>>^^>v><^>v>><^<^<vv^><^><<>v^v^>>^><<><v^^>>vv<v^<<^v>^<v<v><v<vv^>>v<>>v<^v<vv^v<v<<<>><><v>>^<vv<^<<><>>>><^v><^>^v<v<v^v^>^><<>^^<v>><><^^
|
||||
>^>vv^v<>>><^^^<v<v^<v^^<>^^^^^^<>^><><^<v>v><<v<v<^v<<<^v^^v>>v>^v<<><^^v^v^v^v^v><^>>>^v><v^^^v<^v^^<<^<<><vv<>vvv^^<vv>>v^<^^>>v>vvv>^^v^^<^>><v^^v<^^>v>^<<v^><<>v^^^^<^<>^^>>v<^^^>vv>>>>>v>^<<>vv^<><v^<>>v^>vv^vvvv><^^<>v>v<vv>v><v>vv<v<v^^v<^><><vv>v><>^^vv^<v>v><<^vvv<>>^v<><>>^<<^v^<><<v<>v><>^vvvv^^v<<^^^<><<<>^^^>v^^<<>^<>^<><v^>v>>^<<<^^<>^v>^><<<^v<><v>^^>>^><<>^^v^><^v>^^<>>v<v^<<^v^v><<<<><^v<>>v^v<><v>^^vv>^^<>>^<v^<^^^<v>^v<><>>^^>v^v>v^><v>v<<^>>><^<<>^<vvvv^^><^v^>v>>v>^>^>^<^<><<^^<<<v^v<<<v^>^><v<^^<<^v><><><^vv^>vv<><<^^<<<v^v<>>^^><v<^<v^v>v>v^v<^>v>>>>><^^>>^v<<vv>^>v>v<><><<<v<>^>vv^<^^>>>><<<<>>v>v<<<^^<^>vv<^<v^>>><vv>>><>vv<v>v^^^><<>>>>^vv><^v^<<><v<<v^<vv<v<^v>vv^v<<>v<^vv><<v^>^^^^^<><^<><v>^<vv<^<^<^^<>>^<>^v^<<v^>^<^<v<^>><<><>vvv>vv>vvv<v^>><^^>^>v^^<v>^><v><^><>^><>^>>^vv<><^v^^<^>^v<^^^<>><>>^^vv^<>^v^>><<^^v<>^v^v^^v>^vv<^v^><^<v<<>>^^>>><^<<>><>v>^vv^^vv<><>>v><<^v><v><vvv>vv<>^vv<<v<>^vv>^<vv>v>>vvvv^><<<<vvv^>^<v^<<v<^vv>^<><v^^vv>>v>v>^>v^v>>><>vv
|
||||
^v>v<^<vv^>^vv^>>^>>v<<<<^v^<<<>>^^><<>>v>>><^<vv<v>^>>^<^><v>vv<^v^>^^<>^<<v>><>vv<<vv>v<^^<<<><<><>^>>v<>><^<v>^v>v<vvvv<>>>><>vv<v>>^>>>>>^vv^v^v><^^<<<v^^vv<><>^<^^>><>vvv^>v^<v^<v^^<<^<<v>^>^^<>>v^^<>v<>^>>^<>><^^v<<>^vv^<v>^^>><<<<>vvv><<v>>^v^<^^<>>><>v>^>v<>^><>^><vv>^>><^^<>v>v<>v><v><>v<<v>^v><<>^>v>^vv><^>><v^vv<v^^v<v^>^<^v^<^v><<^v<<<^><<<<<^v^<vvv<><^>>>>>>v>vv>v<^^<^>>^^^vvv^v^^vv>^<>v>><><<<>>v^^>^<^><v<>^v><<v>^<<^><<<v>vv>^>>v<><^v^vv<v>v^<v><^>^<>^^v>v>vv<><<^<<^<<^>vv^>^>v>><v>^<>^^^^v<v^>v^v><<^>^v^<v^>>>^><<^vvvv<vv><^v>^<v^v^<<^<^<>>^^>>><^^><><^^vv<v<v<><^<>^<vvv<v<^>^><^vv<v>^<vv<<<^vvv^>>^>><<>><<<vv>><><<v^<^v<<<<>>v^<^^<v<>^^vv>>^^^>^^^^^^v>^^<<<>v>^<^v>^^^^>>v><<v>^v><v<<>>>^<<<>>v<>vv>><<><<v<>vv^><^<><v<^><>>^>vv^>v^v^>><>vv><v^<v^>^<>^>v^<>v<<v^v<><<><>>>^>v<<^<v^<<^^v^v^><^<><<>>>^v<^>>^^v<<<>>>^^v^><>>v<<<<>v>^^>v><v>>>v<<<<^^^<^>>^^v>^>v^<>^^^<v><<v>^<<v<v^^<^vv>^v<>^^^>^^<>vv^^>vv>^<<><><^^^<>^<v^^>><v^>>v>v<^^vvv<^>><<<<^>^^v<v><<v<<^><v>v>v>^v><^^<
|
||||
^>>>^^^v^v^vv<v<vv^>v<^><>^>><^<vv>^vv>^^><v>v^v>>vv<^^<^<<v>^v^<>v>vv^v^^>v^^^^^^<>^^vv<<^vv^v<v<>v^^vv<>^^^^^><>v<v>vv><<v^>^^<>v<>>v<^v<vv^<^^<<^>v<v<>vv><v>^v><v<vvv^v^>v<^<vv<<v^<<v<><v><v^<>vv<^^v>>><<<>v^^>>^<><>>><^<v>>vv^v>^><vv^>v<<<>^v^^><<<^>v<vv^>v<><vv>vvv><><>>>^<<vv>>^v>><>v^^<<<^vv><^^>^vv><<<^>>^<v^^>>^>>^<^^>><><v^^<><><^^^^v^<^^vv<<>v^^v>>v^<<^^v^v^^<>v^<<<v<>>^><><^v^^vvv^>^><<^vv>^^^>><>vv^^>v^^^<v<>>^><^>>v><^<<^>>>>^v<<<>^>^<>v^>^^>>^^^^>v<vvv<vv^<v^v>v^<<>v^v><<><v<v^>vv>^<<<<v><<<v>^>v^<>v<>^<^^>>v^vvv>^<<>^vv<vvv>>^>>><>vv^^>vv>^>><^>v^>^<vv>><<^^^<v^^^<>v<><<<^^^>><><^vvv<^v^^v<<v<<v<>><<>>v^v><v^<^>><^^v>^^>>><vv<v<^>v^^v<^<^>v>>^<v^v<v^^>^v><><<^^^><^>>v^>v^^<>>><>><<^^v^>v>^>^<v^vv^vv<>^vv>>^>vv<^v>^^v<>v><>vv^<v^>>v^><vv<^<v^<<<<^^vvv^>^<>>><vv^^vv<^v<v^>v><^^^><v<<^v>v^v>vv<>^><>^v^>^>v<vvvv<v^^v<v>^^<<><>>><v><><v><^>>^^^>vv^<>v><<^^>v^vv^v<v>>v><>^vv<>v<v><^>^>>v^><>^<>^>>^<v^v^>^>><v><<v^^<v^^>^>v><^^^<v<<>vv^><v^^^<v^^<<^<vvv<v<>^>^>^vv>v<>>><^vv^v^
|
||||
^v>^vv<^<v><^<^><><v^<^<<^^v<v^<>^<v<<>^>v^v>v<v^<^^<<>^><^v^>v>^vv^vv><><>^^v<<v>>v<<>>^^^v^<^^><>^<^><vv<v^>^>>^v<>v^^<v<^^v>^v>^>>>^vv^^<^><^^<^>^>v>v<^<><vvv^>><>v<>^>v>>>v^<^^<>^v^^<<^>v<>v<><^v^<^>v>><^^><v<^^^>>v>vv<>vv^^<>v^v>^v<<<>^>>^<>^<vv><^>><^>v>^vv^^<><v^<^>>v>^^v<^v>^^>^<<vv>v><v^>>>v>>v^v<^<v<>>^v^^>^^<>><><>><<^<^>^v^<>>^vvv><^v><<>><>^vvv<>v><v<<>^v^v<v<vv<>>>v^<<vv<^>vv<^v<^^<>>>><^v>v>vvvv^>v<^^><><v<v^^<<>><>>>><vvv^v>^v^^^<>v>^v^^<v>><<vv><vv><v<^>>^^v>^<<<v<vv<<^^>>v>>vv>^>>v<^>>>><<^>v<^v^<<v<^^v<>v^<^^^v>^^^^<<><v>^^^vv<>>vv^v>vv<<<<^v>vv>><<^<<>^^<v^>>v><<>v<<^^><<vv>^vv^>v^v^>^>>>v<>^^^vv<^v>^v<><<v<^<<^vv^vv>v<<>^>^>>>v^<^>>v>v<<^v^><v<<^>^><v^^>^<^vv<^><v<v<^>^<<<<<^^^<v<>v><<<v>>>^<vv<v<v^^^>v<v<^>^v<^>vv<vv^<v^>^v<^<<<^<^<^><>^^v<v<^^>><>>>>v^>^<v<v>^^<v>^^^^^<^>v>^^<<^^<v^<>>v><v>>^>>v<^^>^^<vv><<>^<>^><^<v<<>^<<<<^>^>>^<<^>>v^><v<>>^vv^>^<>v<<>^<^^v^><v<>v<>^v^v<v>v>^>v>v>>>^>>^<v<><<>^>>^v^><^^^v>>>>v^<<vvvvvv<>^<^>>^^v^^>>^<<vvv^<vv^>^<^v<v><vv<^v<><
|
||||
>^vvv^><v^<<<<><><<v<^^<>v><v^<>v^>^<><vv><<^<v^v<v>^^><>>>v<v^>v^v<^<><vvvv<^>>>><<^vv<^^>v<^^v<>>^^v^^><^^^<<vv>>vv^v>>>>^^^>v^v>^^^<<^<vv^v>^^>^v>>v<^vv>^>>vvv>v^<<^v>^>>^<>><<vv<<v^^^<^v<>>v^v^v>>^>v^^^^<<>v><^<<<^>^v>>v<>v^>>>>^vv><>><^^^><^>>v<^^<v<^<v<>><^>>vvv>vv^^^<^><><vv^>v>^v^^<<<v^<>^<>>^^>v^vv^>^>v>^<^><v>v>^><>^<^<v<><v<^><^^^vv^^>><^><v<v^<v<v<>><<^v>>>v<>>>>^<v>^vv<<>v>v^^vv^v<>>>v>^^>>^^>v<^^<^v>^v<<v><<>^>^v^<<v>>>^v<>^v^<<^<>v<v^<^vv<>>v>v><^v>>v>v^^<v<v<>v>><vv^vv^<vvvv<<>>>>>>^v^><<<<v<>^v^<v^v>><<^<<^v^^v><<>v>^>v>>^<>^<>^^><v<v>><>^vv<>vv^<^>^>v>v<^^>>^<^v^<vv^^<v^><^<<<^vv<vv>v<vv^<v>>^^<<>vv<v<^v>vv<v>^^^<^>^^v<^^^>^v<>vvv>^>><<v^^>v>v<v>v<><^^^>>><>^^><v<<<^^>>vv<><><<^^<<v>v>^>v>^^>^vvv<vv<v>v>v^>v<<>><<v>>v<v>><^^<^^v<>^<vvv^><>><><v^>>^<^<><>>v>vvv^<<>vv<^><^<<v<<<>vv^<v<v>v>>^vvv<^^<^v<<><<>^^v^<^v^<<^<^>vv>vv^^v>^v<v<^v>^<<^vv^<<<vv<v><>v^><<^>v>^^^<>v<v^vv>v>v^><v>v<^>>>^<^<<^<v<><v<^>^>^v<^<^^>vv^><>^^^<>>v^>^^^^v<v^><^<>^>v>^><^<^v>>v^<<^v^v^^<<v<>v>v
|
||||
>v^v^<>^<v><^>v>v>^^v^><v^<vv>>^v^<<>v<<^^<>v<<<<^>>vv<^><>><vvv>>v><>^><<<^><>>>v^>^vv^v<v^^<<^v>^v><^vv^>v>v<<<^^vvv>v<^v>^<<<^>^<v<><>v<vvv^><^^<vv^><^v<<>^v^v^^^^>>>><<<<<^^<^<^<v<<<>>v^>>v^v<<v^<^^vv<^<v>^<>v^v^>^>>>^<^<><^^^vv^v<^^^<^^>vv^v<^<<^^<v<^<^^^>v^vv><<^<>>^>^>^>><^vv<^v^^<v<<v>>v^v<^^^>v^<v<v^<v<<^<v^>v^<^>><<v<^<vv><>v<<<>>vvvv>v>v^vv^<<<^v<^vv^v>v^^>><^v>v><^>vvv>vvv^<>v^><>^<<^v>>><<<<^<v^<vv<v<<v>^^^><^v^<^<<><v<^^<><^>^^<vvvv^v<^^^^<^>v>>vv^<^v^vvv<^<<vv^>^<<<v^><>^^v>^<v^^^v<^^^^>>>v^^^v<<^<>vv>><<>>^<<vv^v^<^>>v>^><<<<^v^^<v^><v>v^^<<<>vvvv<<^v^>>>^v<v<^><v><^v<^<v^<<v<v^<^^v^<v><<^>v^^<><^<>vv>>>>>^<<^<v>v<>^v>^<<>v^<><vv>vv>^v^>><<>v<^vv^v>^v><^vvv>v<v>^>>v<<^^^<^v>^^><^^vv<^<^v<^^^^>>v>v<^>>>>><>vvv^<^vvv^<v<^<>vvv>^>^<^v^<<^>^v<<>vv>v^^<<>>v<>^^^^<>^>vvv><<^v>^vv>v<v^<v^<^<><<<>vv<^><vv<v^v<^^^>v<>>^vvv^vv^^>v>>v^^>vv><>^^v>>^vv<><v<v<^><^><<><^v<v<>v>^>vvv<^<>>^^<<^>>>^>v<><><^^><>>>^^vvvv<>^<v><v<<^<^^v<>>>>><^^<>vv<v^>><<v<^<v^v^<><<v^v>>>^^vvvvv<^<v><<<vv
|
||||
<<v^><<><^vv^^>^<>^<<v<>^<^^>><>v>>vv<^^>vvv<<>>v^<>^<<>v^vvv>vv^^>^><>><<v<<^>>>>^v^>v<<<v>v<<v>^>v>>^<<v^><^^>>v^v^^v^v<v^^<^vv>v<^^<><v^>><<<>^<v^^<<v<>v<^vv<^v^^^<^<v>v<<^^v<<>^<<^v>><^<v^^><^^><>^>v^v^^v>>>v^^><><><v^v^^^v<vv>^v<^v^>>^vv>v^<v<^v<v<v^^^>v<^<^<^^<^><><vv>vvvvv<>>^<vvvvvv><<>>^<<><>>^v>vvv<v<<^>>v<vv<v<^>^<vv>v<^^<v>v^>^v>>><vv<<>>>>>>>^<<>^vv^<v^<<v<^>v>^>v<>^<^v^><<>v>^<v^^^<>>>^^v^<v^^^^vv<v^^^>v^>v<><>^^<>^<>><v><><^<^<^v^<<^vvv^v><^^>>v^^vvvv><^v>>>^><v<>^vv>^>^<vv>>>v><><>>^vv^v<>^v<^<<v>>>><vv>>v^^>^^><<^<><>^<<v<>v^v^vvv^>v^>>>^v><<>^^v<v<v^><<>>>>^>>vv>><v<^>>^<>><>^<v>v^^^>vvv<<>v>^>^>^>v>^v>>v>^>v<>v^>^>>>v>>^><>^>>><^^><>^^v^<v>v^>v^v>>v<>v><>^<>^>^>>v>v>^<<<^^^>^<<^<<<<^><^vv>>>^><^<<<v>>^>v<>^vv^<^v^<<>^^v<<<vv<>^v>^<v<<>v<vv<^<^v<>^<<><<v<v><>^<<>v^^vv>><v<vv>^><<^<v^<v><<vvv>^^^<^^v>^>>^><>v^^><v^v^v^<<>vv>v^v>^><^>^>^^<^v^v<v>v>>^^^^>^<<^<^vv<^<v>v^>^>>vv>^<<<<^v^^vv>v^^<vv>>^<<v^v^vv<^>><v>>v><<^>v>^^v^vv<<>vvv><<v>v<><v^>>^>v<><v<<v^><<>v<<vv^><v<<
|
||||
<<^<v>>vv>v^v<>^>^>v<v><v<<<vv<>v<^^^^^^<<^^v>>>>^<^<><v^<vv>^>>>^^<>>^>><<^<<<<<>><v^>^><v<<>>>^v^<><^^^v>vv><<>><^v<<v>^^vvv>v^v^v<>><v^<^^<><v<><><<<<<<>><>v^<>v^^^>>vv^<>><^><^^v^v^^^^>^^><<v^^<<^>v^v^<vv<v<>v>v<^<><^><>>v><>v^vv<<<><>>vvv^^vv^v>>>>v<^vv>>vv<>>v^<>v^^^^<<^>^^>^>^^v<v<<><vv^v^<v^><v><<^^<^^v>^^^v<^^<>vv>vv>v^v>v<>^v>^<<v>>^<v<><<>v^^>>>^>^^<<vv<^^<^>>>><^vv><<v>v<>>v^v>^vv^>^^vv><^<>>v^<v<vv<^>^<>v><v<vv>><v>^<vv<^><<<^>^<^>^^^vv^v>><^<><^vvv>>>^<v>^>vv>>^<^v><>^>>^>><^<^^>><vv^^^v><^<^^<>>v<<^^>>><vvvvvv<vv^<>>><vv^><<^vv<^v><v><^^><^v<v^><<v<<v^vv^>^<>>>v><<<^><^<^<><>^>^>>v^v^^v^<^^v^>v^<^><>>^>^<><v>>>v^>^>>vvvv^>^>>v<^>vv<<>^v<><^<>>><>^<<vv^>^>>^v>v<<^^vv<^v<<v^v>v<^<><>v>v<<<<<^^vvv^^><>>vvv<^^v^>vvvv>^vvv^>v<v<<<v><^><<v<<^^<^<<vv<<v><<^vv>>>vv>>>^^v^vvv^<<<vvv^v^>^>^<^v<^^>^^v><v<v>^^v^vv><^<>^^^v><^v^v>^vv<^>><>^^^>^<^v>vvv><v^v^><<^<^<^^v>>v^vvv>v^v>>>>v^><v>v<<>^^>><>>^^v^<v^^^v>>^><^^<^vvvv^>v<<vv<<^>^><v>>>v^<^>>><^<^^^^>^<vvv<^><>>>v>^v<^<^v<<^<<^v>v^
|
||||
^>^><<<>><<<<>>vvvv^vv^^^v>><>^^>v<^^v<^>^v^<<^><^v<>v<v>>>^>>>v<^<>>>^<v<^<>vv><>v<v<v<v>v>v<v^vv^<>^<vvv<^^v<^>>>^vvv><v<>^<><>vvv<<<>^v>v>^^v<<^vvvv<v^<<>^<>><v>>><>^^>^v^^>^<>v^>^<>v^>v>>vv<<><^v<^vv>vv>^<>vvvv>>>>^^>v^v<^^<^<v<>^^^v<>><^^><^><>v^>^<>v^v^<v^><<^>>>^vv>>><>v<>>^v>^^<v<^<^^^^><^v<<^<v<v>>v^<<>v>>^<^^v>vvv<<v^>v><^>^>^>v>>^<>^^<>><>^vv><v<^v>v<vv>v^v<^><v^<<vvv>^^>^^^vv^<^>^v><^<^<<v>v><<^<<vv^>><<^^<v<^><>><^><<<<vvv^vv<>v^><<^^^<<<><<v^^<<<vv<v<>>>v<<v<<^v<<<v^<^^<v^>>^><<^^v>v>>>vv><v^vv<vv^^>v^^v^><vvvvv>^<^^<<>v<v^>>>^>>vv<^<<<^<^>>^v>^<>^>vv><>><<^<<v>>^<v<>v>^>^<v^v<<v>vv^<<^>^^<vv^<<><<>>>v><<vv<^^v<v<>v><v>v^^<<<v^vv><<<<^^<v<v>v^<>><><vv>>^>vv>^<>>v<>v^^<vv><>>^v>v><<>^^>vv^^v^^vvv><v><^v<v^<<v<><>v^>vv^^^^<^>^<v>^^>>>>><>>vv><>^><vv^^<v<<>v^<^^^>^>vv>>v<vvvv>^<v<>^^^^v><<^v^<<<<^>>><^<^^^<>^<>^^v>v^<^^vvv^^<vv<v>^>vv^>^v<^vv<>><<<^vvvv^>>v^^>^>><<>^v>vv>^^v<<<><v^^>^><<<^<v<^^v^^<^>^v<^<v>^>v>v<<><v>>>vv<<<v>^v>><v>>^^><<vvv><<>><^<<>^<vv^<>v<^<<^<v^<v>vv<<
|
||||
^v>v^<v>^vv^<vv^<vvv<^>^<<<><^<>v>vv<<>>v>^^v<^>>v<^^^^^v>><<v<^v^><>v<>v<<^<<vv<^vv^>^vv^^<^<>v<>^^>><^v>>^v<^^^^<^<><<v>^<^>><>><vv><<<<^^v<v<^v<^>v<<^><^v^<<<^^v>>v<v>><v>v^<<>v^<<^^^>>>vv^v<v<^v<vv<<>^><<vvvv^v^^v^>^^>>><^v>>>^<v>^><<>v<^vvv^<^^<<^<vvvv>^^v^^^<><<v<<^v^v^><v^^><>v^vv>^v<<v^^v^v<v>v^<<vv^<<<>>v>vv<vv^v<>^>><><v><^^^^v^v>^<^>^^^<<>><<<v<v<^>>^v>v<><<v<^^vv<>^vvv>v^^^vv^<v><<^>vv>>>^v<^^><v<^<vv^^^><>>^v^<^v<><v><v>v^>>^<v<^<v>><>v>v><^^v>v<v^vvv^v^<^<^>^><^><<>>v<^^^>>^^^<>^^>v><^<>v^><^<>v^>>^^^<vv<vvvvv^^>v^<vv>v<><><<^><v^v<>^><v<<^vv>v><^<<>><^>^v<v>^^<<>^v<v><vv>^<^>><^^v^>^v^^<^<^<>>>^v^<<<<v>^>v<vvvv>><<v>^vv<<<<v>>>vv>>>^^><><v>^^<^v^<v^^^>v>v>>>^><<^>^v<<<<^<vv>v<v<<^>^<<^^>v^v^><^v^^v>v>>^vvv<<v>>vvv^^^>v^^>^v<^<<^<>>>><^<^><>^>^<<<v<<>v>^v^>>>v^vv>^vvv<>vv>^>^^>v^^^<^>>^vv><<><^>v>^<^>><><v>><^v<<<vv<>vv>><^^^^v>^<><v<^>>>>vv<>v>>v^><>v^vv^vv^>><^^^<>v<>vv<<v<>^<^^^<>^vv><<<>>v<><<^>>vv<>^>>>^v^>v<>v><<^^v^<<>v^v<>^>v<^>^>^vvvv^>^<<<>>>><^>>^>^^v>^vvv<vv><
|
||||
>>v><^>>>v<>><^><v^v<>><<vv>>v<v>v<>^>^<<>v>><>v<<v><v^<<v><^^>vv^>v^v><>^>^v>v<<^<v<v<v^vv>^^>>>vv>>v<^v^^^<^<>>^>^<<^^>v<><^><v^>>><vv^^v>>>>>>^<v<<^v<v><v<v<v>>v>^><^><<v^>>>>^v<<<>><<v^^^v>>vv^<<^>><^v>vv>>^v<<><>>v>>>><vv><v><v^<>^>^vv^<<><<v^^><>^>v<vv<vv^vv^<^<<^<^vv<<<^>>><^^v^<v^^v^>^v><>^<>^^v>^>vv>><>^<^>^>^><>^^^<><<<^v^<vv<^<^^v^>v<vvv^>^>>>>^v>>>^>^^<v<^>>^><>v<>v>^<vv<^v<>v^^^>v<<<>^<<<vv^v^>vvv^<v^v^><><^vv^v<^^<v<^v^vv^<>>^<^<>><<<>v><^^^v^^>^<>>^<v^<<><v><>v>^v><v>^v<^^v<>v><v><^<v^^^v^>^^<<v>v<^v>v>v^vv>^<vv>^vv><^>vv>v>>v^>^<v^v>v<<>v><><>vv^>v>^vvvv>^v<v<^v^>^>v>>v^>v<v>v>v^^^>v>>>v>v^vv<<>^>><^<^v>v^<v>^<v^^^<v<><v^>v<^v<>^><^>^v<v<<>>>>v^<>^>vv^^vv>v>^>>^>^<^^><^v^<v<v^<^><^vv<vv^v>^v<><>vvv<>^^^>v><^<<vv><vvv>>v>><<^vvv<v^>><<<v^>^<^<vv>^vvv<<>^<<>^<^><><>>>>^>^>^^><<<^<^v^<<<>><>>><<v><^v><vv^v>>v^<<>^v<>^^<>v<>>^<<>^<<<>vv<^^v<^^<<>^v^><^^vv^<v><<<^><>>vv><^<>>vvvvv^<^<<^>>v<<^^v>><>^><<<vv^^v^^<>>v<v^<^^^^^^v><^<^>><^>>v>^>>vv^>^<^><v^^>^^>><vv^^<vv^<vvv<><v>
|
||||
vv^^v^<^>>v><^^><v<<v^^<vv>^v>v^>v^v<>>>><^<^v>v>>><>vvvv<<<><>^^v^^>v>>^><v^>^>^^>><v<^<>v^v<^<vv>v>^^v^^v<^v^>v><><>>^>vv^^<<v<^^^<^v<vv^vv^^<>>v<>vv>^<>^v>>v^><<^^v<^><<v^^^^<>>^^<<^>^<v>^v^^>>^^>^^^><><<<<<>^^<^v^^><^<>v^>>v^^>^<^<><>>^v<v<<<^^v><<v>^<<<<^<><v<^v<<<>^>>v^v<^v<<^>^^<>^v<<v^><vv^><>>^^>v^<>>v>^<v^>v<><>>>v><v>v><><>>^>vv<v^>^<<><>>^<<^^<<vv>v^<vv>><v^^>v>>^<>^>v<>>>^vv<<<<<^^>^<<<><<><^^^<v>v<><<<^v><^^^v<^<vv<^>>^^<><v^^<^^^v<v<<<<v^<<v^<v<><^^<^vv^^v<^<<><^^^^>v<vv<v>^<<<v>v^^>>v<v^>><>>>>>><v><v>^^<>><v^^><<vvvvvv>>>v^<v>v><><>v>v<><<v<<>v>v<>>>^^<<^v>v^v>v<>v><>vv^><vv^>vv>>>vvv<>^<v>^><<><<^<^^<>v<>^<v<><<<<><<><vv>v<vv<^v^<^^<<v>v<v<<^^<<>>vv^v>v^>^>v>>^<^^^<^<v^v^^v^^v^<<>^v<^vv<^<<>>^>>>v><^v^<v>v>^^^^<^v>><^<><^>^<^vvvv><>v^vv>vv^<v<v^^v^>v^<>v^>^^^^<^<<>^v<<>^^>>v<^><>^<<<^^^>>vv^^^><<v^<^v<v^^v<><vvv^^v^>^v<<>v^v^<><v^<v^^>v>^<<^<v^>^^<^^v^>v<v^^<<v>^v<>v^^>><^v<^>^v<v<>^>>^>v^vv^<v>^v^>>v^^<^v^^^<<vv^<><>^vvvv<>v<v^v^v^>>^<v>><>><vv<<>>v<>^<^>^^>^vv^<<<<>
|
||||
vv<^vv<^^^v>^>><>><^v><><v^>^^v^><>v>^v>^^v<>>>^^^>>^v^v>^<v>^^<>^<>>^<v>><^^v<><v^>^<v>>^^^vv<^^v<<^vvv^<^vv<<<^v^v<v><v<^<<<<v^<^^vvv^^<v^vv>vv>v<<^v<vv<<<<v>^vv>^^^^<<v^>^v^<><<><v^><<>>>><^><<^<v^v^<<^v<<>^>v>^^^>vvv^<v<<>>v>>>^vv>>^<<^><<^^<<v^v^<v<<<<^<v<><vvv^^^>^^><<v^v^v^^v^<v<^<vvv>>^^vv>>>v^^>>><>^<<^<><<v>>^^^v<^^<v<<v<<v^v<^^v><vv>^<>v<<^^^^>^<^^^v>^<<><><vv^^<<>>>^<vv>v^>vvv<<^>><^^<<<><<<><>>^<<v<v<^^>v>>^^v>^>^^v<^<<<v>v><^>^^^^>^^<>^<<<<>^^^vv<^<^^<v<<v^^<<<v<v<^>v^<>>>>^^<v>v<v^<<<<v<<>v<v>^v>^vvvv><vv>v>^<^<>^<>v^<v>>v^>v<^><<v^^v>^<<v<v^^^<><^>v><>v<v>>v<><>v^^^vv<>v>v^^<^<<^>>^<v<>>^<^>v^^^<>>^<vvv<v>v>>^vv>^^v>><><<<>^vvv<vv^>^v^vv>v><v><v><v><vv>v<<>>><<>>^v^>^v><v^>v<^v<v<vv>><^<<<v<^<^<><<^<<>^>vv^v^>^>v>>><^v<v^vv^>^^<v>vvv^^<<^<v<vv<^<<v<>vvv<^<v^v>v>>>vvvv^>>^v>^^>>>^v>v^^vv^v^^>><v<^<<><>^<<v^v>vvvv<^<^vvv>v^<<><>^><^vv<^^^><>v<^>v<v<v<v<v<>v>^<<>v<vv>>vv<>^^v>>>>^>>vv>v<<v<><^^^<<>>vv><<^<^><>^<v<>v<v>>>^^>v<^><^<<><<^v^>^<^<^>v^vvv^v<><^>vvv>^v<^^>>v<<v><
|
||||
v^v<^^>>>^>>>>v^>>^>vv><>^vv^v>vv^v>v<^^<<^<^<<>>^>^<^<vv^^>^<>vv>vv<<<>v^<^v>^^<v<<>v><v<v>>>><v>v^^v>^^v^v<<<<^v<^^^><vvv<v>^^v<><vv><^v<<<v><v<>^v<^v<><^<v<^<>><^>><^<v<v<^>>>>^><vv><^>>^^v><>v^vv<<^<>><^^<vvv>><>>>>v><><>^^<<^^^v<><<>^>v>>><^^<<<<<<vv^>>v^^vv<v>>v<<<v><>v^>vv<>>v<^v^>>>v<>^^><^^vvv^^<^<>><<<v^^v>vvvv^<<<vv^^^>>^><v>>>>><<^<^v^<<^v^>^>vv><^^><<<v<^^^v>vvv<<vvv>^>^<^^<v><<^<^vv<><>><^><v>^>^<^vvv^<<<v<>v^<v<^v<v<v<><<v^^<><<<v^v>^>>^v^^<<<^<v>v^^v<><v<>v>>v<>><>v<>^<v^<^<>v<^>vvv<^v^><<<><^v^^>>v<<v^>^<>^^>><^vv^^^^vv><<vvvv<>^>v^<^v<>vvv<<>^<v>v^v^v<>>^^vv<v^>v>v<<^>>><<^v^vv^>v>><>>^v<>>^^v<<>^^^<<^^^<^>^<<>>>^vv<v>><v^v<<vv<^v^>><>vvvvv^<^>>^v><>>^^<>^v<^v<<><<>v><<^^vv<<>vvvv<v>v^>>>>v^^<><^<>^><v^>v^v<<>>vvv<^v^v^<v<^><>>v<<v>^>v^^^vvv>>^>v>v><<<>^^vv^^v^>vvv^<^>>v>v<vv>v>^^<^^^v<v>^<^<v^><<<>>^<<v>><<<>>>>>v<^v<>vvv<<><<^<^^<><^<<vvv^<<^^>^>^^^<^<vv<v<<<<vv^^>v>v<v<^<<>vv<^v>v>v^<>v>>>v<v^^<^<<v^v<<^^>^^><v><>>><<v<<>>>>^><><<<>^<><>v^>>^><><<<<>^><<v>>vvvv>^v<
|
||||
<^vv<><<>v<<^^>^>>>>^<^>><>vvv><<v>vv^v><^>><^vv<vv^^>v>vv^^>^<v<^<<^^v><^>v<<v>^^vv^<<^vvv<>>^>>vv<>^vv<v^^^^>>^^<><vv>^><v<>>^^v^^>><<<>><<<v^<>^<^^^<>^><>^v<v<^<><^<^>>^v>v^<^<>v^v>vv<^vv^v<v<v>>^^^<v<<vv>v><><<^<><vvvv<vv<v^^vvvv<^>v<v^><v<>><v<vv^^<^^>><^vvv^<><>^>>><>v><>^>vv>^<>v<v<><>>>v<^<v>vv^^v<^<v><v>v<^<vv>>v<vv<>vv><^>><^^>><vvv<<><v<v<<<^v^^vv>>v>v^><<>v^>v<vv>v<><v^>v^<v<^v^<<v<<>v^<vv^>^<^v>>v>>^^<^v^><v^>><^^v<<<vvv<>v>^<><>vv^^<^^>v^>>^<vv^><<<v<>>^vv<><^>^^^v^>v>>v<^^<v<^v^>^<^>v^^v>v^v^<>v<<vv^v^v<<v>^>^^^<vvv<v^^>vvv<^>v>vv><<v><v^>v<v<^<>^<>>^><><v<<<^><v<<><^>vvvv>^vvvv^<>vv^<<^><^<v>^v^v^<vvvvv>v<v<<<^<v>><^>vv><^>v>><>^v^>^<>>v<v<<>^vv>v^^^<^vv^><<>v<v^v^^<<>^^>vv><<v><><^v^>>v>^>^<v^^<<^^^><<v><^v<^<>v^>vv^<^^>^<vvvv>^v<v<>v>><^^<v^<><^<<><>^v<<vv^vv^<^vv^v><v^<>v^<^<>vv>vvv>^vv^>^<><<^^^^>v>>^<>v>v^^<^>>v<<<^v>>>>>^<><<<vvv<v<v<v><v^^^^<^<<>vv<^<v<><v>^>>^v^<<>v^<v^<v^^><><<^vv<<<<^<^^^<<v<<^>^^>>vv>^^>^vvv>v^>^<<>vv>v<v><^^vv^v><<v>^^vv><^v<v>^v>v^<^vv^v^vv
|
||||
v<><<^^^v>^v^><^<><><>>^>^>v^<<>v<><^<>>v^^v<<vvv^^><^^>>v>^>^<^<^^^^<>vv<>^>^vv^^>^>v>^v<v>><v^>^<v<^><^>^vv<><>>v<<<^v<>vv<v>vv^>>vvv^<><^>>^^>>^>vvv>v><^><<^v<^>>v^^vvv^^<^v>v^vvv^>v>>>vv>v><^><><<^>><^v<<^>v<>^vv>>^^^^v<vvv<><>v>><v<v<><<<<^^^v^v>^v>vvv>><vvv>><^>^<>vv^^<>v^>^^<>>^vv><^^>vv^v<>^>>^v^<^<>^vv>^v^>>><^<>v<>^v<^>><<>><>v>>>^v^^^<^^<>>^^^<v>^v>^^vv>><v<^^^^>>vvv>vv>>>v<^v^v^^><^<>><v<v<>vv<>v^v<v<vv><><<<^vv^^^<^><<^^^^v>>^<v<^><><v^><<<v>>v<><><>v^<<>v^>><v<>>^>^^^<><>^>>>v^>v<v>>>v<^v^^>^^^^>>v^>>><<<>>><>>>^>v^v^v>v^v^<>>>vvv^vv^<vv><>^v<>v^^<<^><v<^<^<<vv^vv>^<>^<^>>v^v>>v^<<v>^>^^<^^^>^v>^^>vv<vvv^>>vv<v<v<>^v>v^v^<<vvv<v<<>>v^>vv^^^v<vv<<<><<^vv<>>^>^<>vv<^>>>><>^><v>^v<<^v>v<<v><^<v^v^^>>^<^^^>>v>v>v<^v><<><v<^>v<<^><><>><v>^^vv<^v<><<>^^v>^^^v^v^<<^v^<>^<^<^vv^^v><<^vv^<v<<^^<>v<<v<>^^<<v>^><^>^><^^><>>>^v<^<>^^>><<^v<^<<<<><vv>>v^>^v^v<>>^^<<v^><^^>>v>^><>^^^<^>>vv^><<<^<>>^v>>v<<>>^>^^><v>^^<v^^v>^<>v^vv><^^^^v>^>><>v<>v>^v^^^^^v^>^^v<<>>^<<<>v<<vv^^><><^<<v<v
|
||||
vvv><<^^<^>><^^^v^>v^>^v<v>>v<<<>>^<<>><vv<<<v^>^v><<<^<>>>>>^v<v><>><>^>>>>>>v<<^^^^v^vv<^^^>v^v<>^vvv^^v<><^v<^v<vv^v>>>^^^<^<v^>vv>>><^>>>v>^<><><<<>>^^^><v^<v>v<v>v<>>^><>><<vvvvv><vv<>v<><^>v>>v><>>>v^^>^><<<^<>^^^<<<<>vv<^vv<>>^><^><>v<vv^^^>^>^<<v<^v<>v>>^>^^>vv<>^v<^^<><<>^^<>^>^^^^^^<^^<<vv<^^^><<<<v<^v>>^^>^v^^^>vvvv<^v^<^<^^<^v>^^^^>^<>v>><<<vvv<<>^<><v><^^>v<v><v^<^vvv<<v<>>v^<<<vv^>>^>><^<^><<^v^^<v>>>>^<vv^<<^<<v^^^^v^<<^<><v^>><>><<<><vv<<<<^>^<<v<><><^>^>>v^^><^<^v^<>^vv<<v>^<<vv>^<^^<v^v^^^<<>v>vv>^>>v^<<v^v>^<^<>^<v><v<vv><vv><>^<v^v<^>vv^^vv>v>><^>>><<^^^vv^<^^<v^^<<^<^<><^<v>>^v>^<>^v><>^v^><>>^<<vv>vv<>vv<<<<^^vv<^<v^^><v>>^^>v^vv>^<<^v<^vv>v^^^^v^^v^vvvv>^><<^^>v^<^v<>>^^<>^v^<<<^>><>^vv^<v^^>v><v<<<^v><<>v<<v<^<vvv<^^^<>v><vv<<^>>>v^^v^<<vv<<>^><v^<^>v<^vvv<<v<v>^<<<><>>^<<<>v^vv^<^^^^>>>v^v<^vvvv>^<v>^^^^>vv^^v>vvvvv^<<<v<<v>^v^v<v>^<<<>^>^><^>>v^<v<>v^<><^<^vv>vv<v^vv^>>v<v<<><<<<<<>>>v^>^^>>^v<>v<v<>v^<><>^^^>v>v><<<<^<v^><<><v<><>>^v>>>v^v^^v<>><<vv^>><><v<^>
|
||||
141
Inputs/Day16.txt
141
Inputs/Day16.txt
@@ -1,141 +0,0 @@
|
||||
#############################################################################################################################################
|
||||
#.........#...........#.................#.......#.............#.....#.#...#...........#.....#.....#...#.......#.....#...........#.......#..E#
|
||||
#.#######.#.#.#######.###.#########.###.#######.#.#.#.###.#.#.###.#.#.#.#.#.#####.#.###.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#####.###.#.#####.###.#
|
||||
#.#.....#.#.#.#.....#...............#.#.#.....#...#...#.#.#.......#...#.#.#.....#.#.#...#.....#.#.#.#...#.#.....#.#.........................#
|
||||
#.#.###.#.#.#.###.#######.###########.#.#.###.#.#######.#.#.#########.#.#.#.#####.###.#####.###.#.#.#####.#######.#.#.#.#.#.#.#.###.#.#.#.###
|
||||
#...#.#.#...#...#...#.....#...........#.#...#.#.#.......#.#.........#.#.#.#.#.....#...#.........#.#.....#.......#.#.#.#.....#.......#...#...#
|
||||
#.#.#.#.#######.###.#.###.#.#########.#.###.#.#.#####.#.#.#.###.###.###.#.#.#.#.#.#.###.###.#####.#.#######.###.#.#.#####.#.#########.###.#.#
|
||||
#.#...#.......#...#...#...#...#.#.....#...#.#.#.....#.#.#...#...#...#...#...#...#.#.#...#.........#.#.....#.#...#.#...#...#...#.......#.....#
|
||||
#.#.#.#######.###.#####.#.###.#.#.#######.#.#.#####.###.###.#.###.###.#########.###.#.###.#.#######.#.###.###.###.###.#.#.#.#.#######.#.#.###
|
||||
#.#.#.......#.#.#.#...#.#.......#.......#.....#...#...#...#...#.#.....#...#.....#...#.#.....#...#...#...#...........#.#.#.#.#.#.....#...#...#
|
||||
#.#.###.#####.#.#.#.#.#.#.#########.###.#####.###.###.#.#.#####.#######.###.#####.###.#####.#.#.#######.#.#.#####.###.#.#.#.#.#.###.###.#.#.#
|
||||
#...#.#.........#...#.#...........#...#.....#...#...#...#.#.........#.....#.#.....#.#.....#.#.#.......#.#...#...#.......#.#.#...#.#.#.....#.#
|
||||
#.#.#.###############.#.#.#.#####.#####.###.###.#.#.#####.#######.#.#.###.#.#.#####.#####.#.#.#######.#.###.#.#.###.#####.#.#.###.#.#.#.#.#.#
|
||||
#.#...#.....#.#...#...#.#...#...#.....#...............................#...#.............#...#...#.................#.#...#...#.....#.....#...#
|
||||
#.#.#.###.#.#.#.#.#.#####.###.#.#####.#.#.#.###.###.#######.#.#####.###.#.#########.#####.#.###.#####.###.###.###.#.#.#.#.#.###########.#.#.#
|
||||
#.#.#...#.#.....#...#.....#...#.#...#.#...#.#...#...#.......#.#...#.....#...#.............#...#.....#.#...#...#...#.#.....#.......#.......#.#
|
||||
#.#.###.#.###.#.#####.#####.###.#.###.#####.#.###.#.#.#######.#.#.###.#######.#############.#.#.###.#.#.#.#.###.#.###.###.#.#####.#.###.#####
|
||||
#...#.#...#...#...#...#.....#...#.#...#...#.#.#...#.#.#.......#.#.#...#.......#.....#.........#...#.#...#.#.#.#.#.#...#.#.........#...#.#...#
|
||||
#.###.#####.#####.#.#######.#.#.#.#.###.#.#.#.###.###.#.#####.#.###.#.#.#######.###.#.###########.#.#######.#.#.#.#.###.#.#####.#.###.#.#.#.#
|
||||
#...#.......#...#.........#.#.....#.....#.#.#.#...#...#.#...#.#.....#...#.....#.#...#.#...#.....#.#.......#.#.#.#.#.....#.#.....#.#...#...#.#
|
||||
#.#.#.#######.###########.#.#####.#######.#.#.#.###.#####.#.#.#######.#.#.#.###.#.#.#.#.#.#.###.#.#.#####.#.#.#.#######.#.#.###.#.#.###.#.#.#
|
||||
#.#...........#...#.....#.#...#.......#...#...#...#.#.....#...#.......#...#.....#.#.#.....#.#.#...#...#...#...........#.#...#...#.#.......#.#
|
||||
#.###########.#.#.###.###.###.#########.#.#.###.#.#.#.###.#####.#######.#########.#####.#.#.#.#######.#.###.#####.###.#.#####.#.#.#.###.#.#.#
|
||||
#.......#.....#.#.............#.........#.#.#...#.#.#...#.#...#.....#.#.#...#...#.......#.#...#.....#.#.....#...#...#.....#...#...#.........#
|
||||
#.#####.#######.###.#.#######.#.#########.#.#.###.#.###.#.#.#.#.###.#.#.#.###.#.###.#.#.#.###.###.#.#.#######.#.#######.#.#.###.#######.#.#.#
|
||||
#...#.#...#.....#...#.....#.#.#...#...#...#.....#.......#.#.#.#...#.#...#.#...#...#.#...#...#.....#.......#...#.......#.....#.#.#.......#.#.#
|
||||
###.#.###.#.#####.#####.#.#.#.###.#.#.#.#######.#.#########.#.#.###.#.###.#.#####.###.#####.#############.#.#######.#.#####.#.#.#######.#.#.#
|
||||
#...#.......#...#...#...#.#.....#...#.#.....#...#.#.........#.#.#...#.#...#.#.........#.....#...........#.#.#.#.............#.#.....#.....#.#
|
||||
#.#.#####.#.###.###.#.###.#######.#.#.###.#.#.###.#.###.#####.#.#.###.###.#.###########.#####.#########.###.#.#.#############.#.###.#.#.#.#.#
|
||||
#.#.....#.........#...#.#.......#.#.#...#.#.#.#...#.....#.....#.#...#.....#...#.........#.....#.......#.....#...............#...#.#.#.....#.#
|
||||
#.#.###.#.###.#########.#######.#.#.###.###.#.###.#####.#.#########.###.#.###.#.###########.###.#.#######.#.#####.#.#.#####.#.#.#.#.#.#.#.#.#
|
||||
#...#...#...#.#...............#.#...#.#.#...#...#.....#.#.#.......#.#.......#.#...#.........#...#.#.......#.......#.#.#.#...#.#...#.#.#...#.#
|
||||
#####.###.#.###.#########.###.#.###.#.#.#.#####.#######.#.#.#####.#.#######.#.###.#####.#####.#####.#############.###.#.#.###.#.###.###.#.#.#
|
||||
#.....#...#.....#...#...#...#.#.#...#.#.#...............#...#...#.#.....#...#...#.........#...#.....#.......#.........#.#...#.........#...#.#
|
||||
#.#####.#.#######.#.###.###.#.#.#.###.#.#####.###############.###.#.###.###.#.#.#####.#.#.#.#.#.#####.#.#.#.#.###.#.###.###.###.#####.###.###
|
||||
#...#.#.......#...#.....#...#.#.#.#...#.#.............#.......#...#...#...#.#.#.#.#...#.#.#.#.#.#.....#...#...#...#.....#.#.................#
|
||||
###.#.###.###.#.#######.#.#.###.#.#.###.#.#####.#######.#.#####.###.###.#.#.#.#.#.#.###.#.#.#.#.###.#####.#####.#######.#.#########.###.###.#
|
||||
#...#.#.....#.#.#.......#.#.#...#...#...#.#.....#.......#...#...#.....#.#.#.#.....#.....#.#...#...#.....#...#...#...#...#...#.....#.#.......#
|
||||
#.###.#.#.#.#.#.#.#######.#.#.###.###.###.#.#####.#####.###.#.###.###.###.###.###.###.###.#.#.###.###.#####.#.###.#.#.###.#.#.#.###.#########
|
||||
#.........#.#...#.#.....#.#.#.#...#...#...#.#.....#.....#.#...#.#...#.....#...#.....#.....#.#...#...#.#.....#...#.#.#.#...#.#.#...#...#.....#
|
||||
#.#.#.#.#.#######.###.###.###.#####.###.#####.#####.#.#.#.#####.#.#.#######.###############.#.#.###.###.#######.#.#.#.#.###.#.###.###.#.###.#
|
||||
#.#.#...#.#.....#...#.#...#...#.....#.......#.....#...#.#.........#...#.................#...#.#...#...#.#...#.....#.#.#.#.#.#.#...#.#...#...#
|
||||
#.#.#####.#.#.#####.#.#.###.###.#####.#####.#####.#.###.#.###########.#.#####.#######.#.#####.###.###.#.#.#.#######.#.#.#.#.###.#.#.#####.#.#
|
||||
#.#.....#.#.#.....#.#.#.........#...#.#...#.....#...#.#.#.........#...#.#.......#...#.#.......#.#...#.#...#.#...#...#...#.#.....#.......#.#.#
|
||||
#.#####.#.#.###.###.#.#####.###.#.###.#.#######.#####.#.###########.###.###.###.#.#.#.#########.#.###.#.###.#.#.#.#######.#############.#.#.#
|
||||
#...#.#.#.#.#.#.#...#.#...#.....#...#.#.......#.#.....#.#...........#.#...#.#...#.#.#...#...#.....#...#...#...#.#.#.............#...#...#...#
|
||||
###.#.#.#.#.#.#.#.###.#.#.#########.#.###.###.#.#.###.#.#.#######.###.###.#.#.###.#.#.#.#.#.###.###.#########.#.###.#.#########.#.#.#.#####.#
|
||||
#.....#.#.#.#.#.#.....#.#...#.....#.#.#...#...#.....#.#...#.......#.........#.....#...#.#.#...#.#...#.......#.#.....#.#.......#...#.#.....#.#
|
||||
#.#####.#.#.#.#.#####.#.###.#.###.#.#.#.###.#########.#####.#####.#.###############.###.#.###.###.###.#####.#.#######.###.#########.#####.#.#
|
||||
#.#.....#.#...#.......#...#.#.#...........#.#...........#...#.#...#.#.#.......#...#.#...#.#.#.....#.....#.#.#.#...#...#...#.........#.....#.#
|
||||
#.#.#####.###.###########.#.#.#######.###.###.#.#########.###.#.###.#.#.#####.#.#.#.#.###.#.###########.#.#.#.#.#.#.###.#.#.#######.#.#####.#
|
||||
#.#...#.....#...#.........#.#.......#.....#...#.#.........#...#.......#.#...#.#.#...#.....#.........#...#...#.#.#...#...#.#.#.....#.#.#...#.#
|
||||
#.###.#####.#.###.#########.###.###.#####.#.###.#.#########.#.#######.#.#.###.#####.#.#.#.#####.###.#.###.#####.#####.#.###.#.###.###.###.#.#
|
||||
#...#.....#.......#.......#.#.....#.....#.#.#...#...#.......#.........#.#.....#...#.#.#.....#...#...#...#.#.....#...#.#...#.#.#.#.........#.#
|
||||
#.#####.#.#.#.#.###.#####.#.#.###.###.###.#.#######.#.#.#######.#####.#.#.#####.#.#.#.#####.#.###.###.#.#.###.###.###.###.#.#.#.###########.#
|
||||
#.#...#.#.#.#.#...#.#.....#.#.#.#...#.....#.......#.#...........#.....#.#.#.....#.#.#...#.#...#.#...#.#.#.....#.....#.#...#.#.#...#...#...#.#
|
||||
###.#.###.#.#.###.#.#.#####.#.#.###.#.###########.#.#######.#.###.###.#.#.#.#####.###.#.#.#####.###.###.###.#####.#.#.#.#.#.#.#.###.#.#.#.#.#
|
||||
#...#.....#.#...#...#...#.#...#.....#.........#.#.#.........#.#...#.#.#.#...#...#...#.#...#.....#.#...#.#.......#.#.#...#...#.......#.#.#.#.#
|
||||
#.#########.###.###.###.#.#######.#.#########.#.#.###.#.#####.###.#.#.#.#####.#####.#.###.#.#.#.#.###.#.#####.#.###.###.###.#.#.#.###.#.#.#.#
|
||||
#.....#.......#.#.....#...#.......#...#...#.....#...#.#.#...#...#.#.........#...#.....#...#.#.#.....#.#.#.....#...#.....#.......#.#.....#...#
|
||||
#####.#.###.###.#.###.#.#.###.###.###.#.#.#.#####.#.#.#.###.###.#.#######.#.#.#.#.#########.#.#######.#.#.#######.#######.#######.#########.#
|
||||
#.....#.#.#...#.#...#.........#.....#.#.#.#.#...#.#.....#...#.....#.....#.#...#.#...#...#...#.........#.#.#.....#.#.......#.#...#.#...#...#.#
|
||||
#.#####.#.###.#.#.#.###########.#####.#.#.#.#.#.#####.###.###.#####.###.#.###.#.#.###.#.#.#####.#######.#.#.#.#.#.#.#.#####.#.#.#.#.#.#.#.#.#
|
||||
#...#.......#.#.#.#.......#.....#.....#.#...#.#.#.....#.......#...#.....#...#.#...#...#.....#.........#...#.#.#.#...#.......#.#...#.#...#.#.#
|
||||
#.#.#####.###.#.#######.###.###.#.###########.#.#.###.#.#####.#.#.###.#.###.#.#####.###.###.#.#.#####.#.###.#.#.#######.###.#.#####.#####.###
|
||||
#.#...#.#.#...#...#...#...#.......#...........#.....#.#.#...#.#.#.....#.#...#.#.......#...#.#.#...#...#...#.#.#...#...#...#.................#
|
||||
#.###.#.#.#.#####.#.#.###.###.#.###.#####.###########.###.#.###.#######.#.#.###.#########.#.###.#.#######.#.#.###.#.#.#####.###########.###.#
|
||||
#.#...#...#.....#.#.#.#.....#.#.#...#.....#.....#...#...#.#.....#.....#...#.#...#...#.........#.#.#.....#.#.#...#.#.#.......#...........#...#
|
||||
#.#.#.#########.#.#.#.#.###.#.#.#.#####.###.###.#.#.###.#.#####.#.###.#.#.#.#.###.#.#.#######.#.#.#.###.#.#.###.#.#.###.###.#####.#.#####.#.#
|
||||
#.#.#.#.......#.....#...#.#.#.#.........#...#.#...#.....#...#...#...#...#.#.#...#.#.#.........#.#.....#.#.#.#...#.#.......#.......#.#.....#.#
|
||||
#.#.#.#.#####.###########.#.#.#########.#.###.#########.#.#.#.#.#.#.#.#.#.#####.###.#######.###########.#.###.###.#######.#########.#.#####.#
|
||||
#.#.......#...#.........#...#...#.#...#.#...#.#...........#...#.#.#.#.#.#.......#.......#...............#.....#...#.....#.#.............#...#
|
||||
#####.###.#.#.#.#######.#.###.#.#.#.#.#####.#.#.###.#######.#.#.###.###.#.#######.#####.###.#.###.#####.#######.###.###.#.#####.#######.#####
|
||||
#.....#.....#.#.....#...#.....#.#.#.#.......#...#.......#.....#...#.............#.....#.....#...#.#...#.#.....#...#...#.#.#...#.#...........#
|
||||
#.###.#.#.#########.#.#######.#.#.#.#############.#####.#.###.###.#############.#.###.#######.#.#.#.#.#.#.###.###.###.#.#.#.#.###.#.#.#.#.#.#
|
||||
#.#.#.#.............#.......#.#...#...............#...#...#.....#.#.........#...#...#.......#.#.#...#.....#.....#...#.#...#.#...#.#.#...#.#.#
|
||||
#.#.#.###.#################.#.###.###.#.#############.#####.###.#.#.#######.#.#############.#.#.###############.###.#.#####.###.#.#.###.#.#.#
|
||||
#.#...#.....................#...#...#.#.#.....#.......#.....#.#.#...#.....#.#.#.....#.......#.#...#...........#...#.#...#...#.#.#.#...#...#.#
|
||||
#.#.#.#.#.#######.###############.###.#.###.#.#####.#.#.#####.#.#####.#.###.#.###.#.#.#######.###.#.#########.#.###.#.#.#.###.#.#.###.#.###.#
|
||||
#.#.....#...#...#.#.......#.......#...#.#...#.#.....#.#.#...#...#...........#...#.#...#.......#...#.#.......#.#...#.#.#.#...#...#.#.#.......#
|
||||
#.###.#.#.#.###.#.#.#####.#.#######.###.#.###.#.#####.#.#.#.#####.#############.#.#####.###.###.#.#.###.###.#.#.#.#.###.#.#.#.###.#.###.###.#
|
||||
#.#...#.#.#.......#...#.#...#.....#.....#...#...#...#.#...#.......#.......#...#.#.#...#.#...#.#.#.#...#...#.#...#...#.....#.#.....#.#.......#
|
||||
#.#.#.###.#.#.###.###.#.#####.###.#########.#####.###.#############.#####.###.#.#.#.#.#.#.#.#.#.#.###.###.#.#########.#.#.#.#######.#.#.###.#
|
||||
#...#...#...#...#...#.#...#.....#.#.......#.....#.....#.....#.....#...#.#.....#.#...#.#.#.#.#.#.#...#.#...#.........#.#...#.#.....#...#.....#
|
||||
#.###.#.###.###.#####.###.#.###.#.#.###.#.#.###.#.#######.#.#.#.###.#.#.###.###.#.###.#.#.#.#.#.#####.#####.#####.#.#.#.###.#.#.###.###.#####
|
||||
#.#...#.....#...#.....#...#.#.#.#.#.#...#.#...#.#.#.......#.#.#.......#.....#...#.#.#.#.#.#...#.#...#.....#.....#.#.#.#.#...#.#.....#.......#
|
||||
###.#.#######.#.#.#####.###.#.#.###.#.###.#####.#.#####.#####.#######.#######.###.#.#.#.#.###.#.#.#.#####.###.###.#.#.#.###.#.#######.#.###.#
|
||||
#...#...#.....#.#.....#.#.....#.....#.#.........#...#...#.....#.....#.#.....#.#.....#.....#...#...#.....#...#.#.......#...#.....#.....#...#.#
|
||||
#.###.#.#.#####.#####.#.#.###.#######.#.###########.#.###.#####.#.###.#.###.#.#.#################.###.#.###.#.#.#####.###.#####.#.#####.#.#.#
|
||||
#.#.......#.#.......#...........#.#...#...#.......#.#...#.......#.....#.#.#...#.#.#.............#.#.#.#.#.#.#.#...#.#.#.#...#.#.#.....#...#.#
|
||||
#.###.#####.#.#####.#.#########.#.#.###.#.#.#######.###.#.#.#####.#####.#.#####.#.#.###.#######.#.#.#.#.#.#.#.###.#.#.#.###.#.#.#####.#.###.#
|
||||
#.#...#...#...#.....#...#...#.....#.....#.#...#.....#...#...#.....#.....#.....#.#.#...#.....#...#...#.#...#.#.#...#.......#.#.#...#...#...#.#
|
||||
#.#.#.#.###.###.#.#.###.#.#.#########.###.###.#.#####.###.###.#.###.#####.#####.#.###.#.#.#.#.#######.###.#.###.###.#######.#.###.###.###.#.#
|
||||
#...#.#.....#.#.#.#.#.#...#.....#...#.#.#...#...#.....#...#...#.....#.#.........#...#.#.#.#.#.....#...#.#.#.....#...#.....#.#...#...#.#...#.#
|
||||
#####.#.#####.#.#.#.#.#####.###.#.#.#.#.###.#.###.#####.###.###.#####.#.#########.#.#.#.#.#.#####.#.###.#.#######.###.###.#.#.#####.#.#.###.#
|
||||
#.....#.#.....#.#.#.......#...#.#.#.#...#...#.....#...#...#.....#.#...#.#.........#.#.#.#.#...#.#.#...#.........#...#.#.....#.#.....#.#...#.#
|
||||
#.#.###.#.#####.#.#####.###.#.#.#.#.###.#.#.#######.#.###.#######.#.#.#.#.#.#######.#.#.#.###.#.#.###.#############.#.#######.#.#######.#.###
|
||||
#.....#...#.....#.#.....#...#...#.#.#.....#.........#.....#...#.....#.#.#.#.#...#...#.#.#.#.#.#.#.#...#.............#.....#.......#...#.#...#
|
||||
#.#.#.#####.#####.#######.#######.#.#.###.###.#############.#.#.#####.#.#.###.#.#.###.###.#.#.#.#.#.#.#.###############.#.#######.#.#.###.#.#
|
||||
#...#.#.....#.#...#.......#.......#...#.#.#...#.#...#.......#.#.#...#...#.#...#.#...#...#.......#...#.#...#...........#.#...#...#...#...#.#.#
|
||||
###.#.#.#####.#.###.#######.###.#######.#.#.###.#.#.#.#.#####.#.###.#####.#.###.#######.#.#######.#######.#.#########.###.#.#.#.#######.###.#
|
||||
#.....#...#...#.#...#.....#.#.#.....#.....#.#.....#...#.#.....#...........#.#.#...#.....#.#.......#.......#...#.....#.....#...........#.....#
|
||||
#.#.#####.###.#.#.###.###.#.#.#####.#.#####.#.#########.#.#########.#.#.###.#.#.#.#.#.#.#.#.#######.#########.#####.###.###.#####.#.#.#####.#
|
||||
#.#.....#.....#.#.#...#.#.#...#.#...#.#.....#.#.........#...#.........#.#...#...#...#...#...#...#...#...#...#...#.....#...#.#...#.#.#.....#.#
|
||||
#.#.###.#####.#.#.#.###.#.###.#.#.#.###.#####.#.#.#.#######.###########.#.#####.###.#.#######.#.#.###.#.#.#.###.#.###.###.#.#.#.#.#.###.###.#
|
||||
#...#.............#...#...#...#...#.#...#.....#.#...#.....#.......#.....#.#.......#.#.......#.#.#.#...#.#.#...#.#...#.#...#.#.#...#...#.....#
|
||||
#.#.#.#####.#.#######.#.#####.#.#.#.#.#########.#######.#.#######.#.###.#.###.#.###.#.#####.#.#.#.#.###.#.#.###.#.#.#.#.###.#.#############.#
|
||||
#...#.#.....#...#.....#.....#...#.#.#.....#.....#.......#.#.....#.#.#...#...#.#.#...#.#...#...#...#.#.....#.#...#...#.#...#.#...#...#.....#.#
|
||||
#.#.#.#.#######.#.#########.#####.#.#####.#.#.###.###.#####.###.#.#.#.#.###.#.#.#.###.#.#.#########.###.###.#.###.#.#####.#####.#.#.#.###.#.#
|
||||
#.#...#.#.....#.#.......#.#.#.....#.#.......#.#.......#.....#.....#.#.#.#...#.#.#.#...#.#.#.......#.......#.#.#...#.......#.....#.#...#...#.#
|
||||
#.#.#.###.#.#.#.#######.#.#.#.#.#####.#.#####.#.#.###.#.#####.###.#.#.#.#.###.###.#.#####.#.#.###.###.#.#.#.#.#.###########.#####.#####.#####
|
||||
#.#...#...#.#.#.........#.....#.#.....#.........#...#.#.#...#...#.#.#.#...#...#...#.....#...#.#...#...#.#...#.#.#...........................#
|
||||
###.#.#.###.#########.#.#######.#.#################.###.#.#####.#.#.#.#####.###.#######.#####.#.###.#.#.#.###.#.#######.#.#################.#
|
||||
#.....#...#.......#...#.........#.#.#.............#.....#.....#.....#.#...#.....#.#.....#.........#.#.#.#.....#.....#...#.#...............#.#
|
||||
#.#.#.###.#######.#.#####.###.###.#.#.###.#.###############.#.#######.#.#.#####.#.#.#####.#######.#.###.###########.#.#.###.#############.#.#
|
||||
#.........#.....#.#.#...#...#.#.#.#.#.#...#.#...........#...#.........#.#.....#...#.....#.#.....#.#...#.#.#.......#.#.#...#...#...#.....#...#
|
||||
###.#.###.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#####.###.#####.#.#####.#######.#####.#########.#.#.#.#.#.###.#.#.#.###.#.#.#.###.###.###.#.###.###.#
|
||||
#...........#.#.#...#.#.#.#.#...#.#...#.....#.#...#...#.#.#.....#...........#.............#.#.........#.#.#...#.#.#...#.#.....#...#.#.#...#.#
|
||||
#.###.#.#.###.#.#.#.#.#.###.#.###.#.#######.#.#.###.#.#.#.#.#####.#########.#####.#########.#########.#.#.###.#.#######.#######.###.#.###.#.#
|
||||
#.#.......#.....#...#.#.....#.#...#...#...#...#...#.#.#...#...#...#...#...#.#...#.#.....#...#.....#...#.#.#...#.......#...#.....#...#.#...#.#
|
||||
#.#.#.#.#.#.#########.#######.#.#####.#.#.#######.#.#.###.#####.###.#.#.#.###.#.###.###.#.###.###.#####.#.#.#######.#.#.#.#.###.#.###.#.###.#
|
||||
#.#.....#...#.........#.....#.#...#.#...#.......#.#.#.#...#...#.#...#...#.#.........#...#...#...#.#.....#.#...#...#.#.#.#.#.#...#.....#.....#
|
||||
#.#####.#.###.###.#####.###.#.###.#.###.#.#######.#.#.#####.#.#.#.#######.#.#.#######.#####.###.#.#.###.#.###.#.#.#.#.###.#.#.###.###.#######
|
||||
#.#...#...#.....#.#.#.....#.#...#.#.....#.......#...#.#.....#.#.#...#.......#.......#...#.....#.#...#.........#.#.#.#...#.#.#.....#.....#...#
|
||||
#.###.#.#.#.#####.#.#.#####.###.#.#.#####.#.###.#####.#.#####.#.###.#####.###.#####.###.#######.#####.###.#####.#.#.###.#.#.#######.###.###.#
|
||||
#.....#.#...#.....#...#...#.....#.#.....#.#.............#...#.....#.#...#.#...#...#...#.....#...#...#.#...#.....#.#...#...#.#.....#.#.#.#...#
|
||||
#####.#.#.###.#####.###.#.#.#####.#####.###.###.#####.###.#########.#.#.#.#.#.###.#.#######.#.###.#.#.#.#.###.###.#.#.###.#.#.#.#.#.#.#.#.#.#
|
||||
#.#...........#.....#...#.#.#...#.#...#.#...#.........................#.#.........#.......#.#...#.#.#...#.#...#.....#.#...#.#.#.#...#.#.#.#.#
|
||||
#.#.#######.#.#.#####.###.#.#.#.#.#.#.#.#.#.#.###.#.#####.#.#########.#.#.#############.#.#.###.#.#.#####.#.#.#####.#.#.###.###.#####.#.#.###
|
||||
#.......................#.#...#.#...#.#...#.......#...#...#.........#.#.#.....#...#...#.#.#.....#.#...#.#.#...#.......#...#.....#...#...#...#
|
||||
#.#####.#####.#########.#.###.#.#####.###.#.#.#######.#####.#######.#.#.#.###.#.#.#.#.#.#.#.#####.###.#.#.###.#.###.#####.#######.#.#.###.#.#
|
||||
#.#.....#...#.#.......#.#...#.......#.#...#.#...#...#.............#...#...#.#...#...#.#.#...#...#...................#.....#.......#.#.#...#.#
|
||||
###.#.###.#.#.#.#####.#.###.#####.###.#.###.#.#.#.#.#####.#######.#######.#.#########.#.###.#.#.#.#.#####.#.#######.###.###.#####.###.#.###.#
|
||||
#...#.....#.#.#...#...#.#.#.#...#.#...#...#...#.#.#.....#.#...............#.........#.#...#...#...#.....#.#.......#.......#.#...#.....#.#...#
|
||||
#.#########.#.###.#.###.#.#.###.#.#.#####.###.#.#.###.###.#.#############.#######.###.###.#############.#.#.#.###.#.###.#.#.#.#.#######.#.###
|
||||
#.....#.........#.#...#...................#.....#...#...#.#...#.........#.......#...#.#...#.....#...#...#.#.#.#.#.......#...#.#.#...#...#...#
|
||||
#.###.#.#########.###.###.###.#.#####.#.#.#.#.#####.###.#.#####.#######.#.#####.###.#.#.###.###.###.#.###.###.#.###.###.#####.###.#.#.#####.#
|
||||
#...#.#.....#.....#...#...#...#...#...#...#...#.#...#.#...#.....#.....#...#...#.....#.#.......................#.....#...#.........#.........#
|
||||
#.#.#.#######.#####.###.###.#######.#########.#.#.###.#####.#####.#######.#.#.#######.#######.###.#.#####.#.###.###.#.#.###################.#
|
||||
#S..#.............#.......#...................#.............#...............#.........#...........#.........#...............................#
|
||||
#############################################################################################################################################
|
||||
@@ -1,5 +0,0 @@
|
||||
Register A: 44348299
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 2,4,1,5,7,5,1,6,0,3,4,2,5,5,3,0
|
||||
3450
Inputs/Day18.txt
3450
Inputs/Day18.txt
File diff suppressed because it is too large
Load Diff
402
Inputs/Day19.txt
402
Inputs/Day19.txt
@@ -1,402 +0,0 @@
|
||||
wugw, wrrbgr, rbgr, bgbrb, wuwb, bug, wubur, uwbuwbug, wruu, rbbr, wbgrrg, uuwr, bub, brbggggr, brgguw, gwwuu, uwrbggw, wuwrrr, wbuurww, wwwuwru, gubgr, gubu, ug, ubu, gggrgr, wg, wrgbggu, uwgwubw, bgrgb, uu, gbug, gwuwgr, bgwg, rurgb, rr, ubw, wrr, rggw, ubuu, ubr, ugrr, wrbwrruw, uw, ruggrb, urwwurg, gwr, rurwb, bu, uuu, bbuwb, urbu, ugb, uruub, gwgrrw, wbbw, rwgr, wur, bwbu, bbg, wrbugw, brgr, uurrwg, guruu, uurrrbw, bwwbrguw, gbbgu, bgg, bbwwgbw, rww, uurrr, bgubwb, wwgr, gw, wrgub, wgrg, rugwbb, bgwbuguw, brg, ggbw, bgbubb, wwgu, gwgb, grur, gubw, wbruug, rg, brubbgw, uuugr, rru, brbr, rwbuuu, ubuw, rgru, rwrwgb, wub, rwbu, bwwrr, bwrg, uggbur, gwb, gbugwb, br, rbwu, urubg, uuw, rbb, rgrwu, bguuw, w, www, wurgb, rwwu, rwg, uww, gbwurubb, uuugb, rbrurw, gggbwu, rbrwrgwr, bw, uwrw, bugw, brgguugb, brubw, bbrb, bru, urgr, urwu, bwbb, bur, rwrr, wrrbu, guu, ggugwuw, rwrurb, wbur, gbu, bbb, ur, brw, wrwbb, ugbuwgug, rrugbbru, wwggbw, gwgwgur, rgw, rwwr, wrg, wugrwru, ggwr, ggr, wug, ugu, gbbw, wgww, gwwwuw, gbr, rbwwru, bbru, ruw, gbrgw, gug, bwbuwrb, uwg, rbww, bbbrb, ub, rgrbr, ubg, wugwub, bgr, ru, bwr, bwbug, rgr, wwugr, grg, rwu, wbgg, rgwu, ubugubr, buggur, wwb, rub, wugbb, uubb, uwb, wbb, uwgbw, rubrg, rwubgu, wgwbb, bubrbrww, bg, wwrggu, gr, gggr, ggb, wuuuu, bggwb, ubgrwbr, rgubwu, rwr, gbww, wgbub, ubrb, ruu, rgg, wgrwurrw, ubwggr, uubr, wrwrbrr, ruguw, bwu, guwrug, bgggw, urubr, rruruuw, gur, wrgru, wb, rgwwg, rrguu, wwwugg, rgbg, uwwgg, urr, gwu, ruwb, buwbgur, bbwugb, bubu, rwurwg, wgrb, rrw, uwgwr, ugwu, rgrurg, ww, uwgrrrgb, wrub, bgb, grr, bgwbru, wr, brrbg, rurur, wgbbbur, brwgg, bwgwbw, uuurg, rw, uuwguu, guw, bwg, bwrrwrr, ugr, rbwrg, rwb, urw, uubg, bbwrugr, bgw, brb, rb, rbr, ubbwurb, gbw, buu, wgg, wbw, ugguubw, rurbr, rrwbuur, ubwuwr, urg, wwu, wrguwb, bbgbur, grb, gww, gb, buw, bwbg, grgb, bbu, rbw, rrbu, gruwbw, uur, wwbgr, bwbwu, bgug, uwu, wubbw, rgwr, rrgrr, gwg, bbbubu, wwgrbrw, wuuubb, gbg, uwbwbg, wgwbr, ububb, ubbb, rug, gwbbrb, ubrub, urb, ggrwrgg, rrg, wbr, uub, wbrwbb, ugg, wrgb, bbwu, grurwb, uwbr, ugug, grw, gru, rwgu, wrru, rwgggu, rrr, ugwb, rrrw, brr, buwb, rbwbrg, ugw, rwuuguw, bwgggwb, bugr, wggbrr, uwgrrbub, bgbuuwug, burrrbu, wubwuu, ubwur, ubgwb, uru, brrb, wgb, bwuwgbu, wwuwwbu, bgbbg, wwru, wgr, ggg, guwuu, brbg, gbrb, ugrg, wwgur, wbbu, rwug, gbb, wugr, wuur, ubwurrwg, gwruubgu, wrrw, wubwwg, gugur, urgwu, wrbu, wbg, grwb, ugrrrrb, grbg, ggbbu, gbru, wgw, ggug, ubuub, ggu, wuwrbugb, ugrrrr, gbbubrr, rbgbb, bwwbu, uwwu, wwgbbb, gbbu, b, brwgr, wrb, rwrrw, rubwugg, bbr, wwr, wu, bbgwgbb, rbg, rwwgbbu, bgu, wubuug, ubwww, uggr, rbbbw, rbwgwrbw, bbw, bbgr, rur, ubb, uurbg, wguwb, ubbrgug, wrwr, rwwugb, uwrubb, rrgbbru, bwb, gub, ggbu, wwg, bww, ruwrwg, gbwu, wuu, gbbur, wrubru, rgb, grugwbbw, r, rwww, rbbru, wbrrb, rwgub, ubbrr, wuw, uug, rgu, rggg, bb, g, wru, urgw, ggw, ugwwbrg, grrbw, rbu, bbgugrw, grguw
|
||||
|
||||
urwrggwgbrrwggwuubrrwwugbgbubwbuuugwbguggubrgwwrubub
|
||||
wuwguurugggwbbruubbruwbruugwbguuwrwbrbugurbgugrggb
|
||||
wrbgrwbwbgrrguwbwuugruugrwbugrwuuuuurrugrgggugwuububwrwbg
|
||||
bbbrbwrrwrgrwubbwgbbrbwbruuuwuuwwubbwwgwuwgguurbg
|
||||
bguuubgbwggwgurubuubgurruggbgubwrbrrgbbgugbbugruurggwr
|
||||
uwbbgwbrwubrwuwwbrbubbuggbbbbrugbbrwrubwrg
|
||||
rgrrgruwrrrgwwgrrrrwbuuugrgbbrgbwwruggwrwr
|
||||
wgwwuuruuwrbwbuwwwwbrgurgrgrgruwbrbugbbwggg
|
||||
guuuuwuwrwwrggggurwrugugbubrguwbrrwbwurbbrgwbwgu
|
||||
rrrugwggwgwwuugrgrggbbuwgwwrguubbbwuugbgrugwbbwwugrwgu
|
||||
urubuwwurwgurgwbggurrgrugrbwgrubbwwurbwubwgbgrgrb
|
||||
bbbwgwrbbwruubwwwwwbuubrrrguwguubbbugwrwwgugrbwugbubguwgu
|
||||
rurbwuwgugrrwbrgwrwwubgggbwugbbgbruwwbbwrggwbbgwgwgu
|
||||
ggbgbgwruwguwbwwgruwbbrbgburrwgubuwgbwrbwwwrggwgurwbw
|
||||
guwrwuwrrbwrbgugwguburrwbggurwbbrugwbgrbrwwwbwrrbbbubbw
|
||||
gwrgwrggwrgbbwuwbbwuwrgrggwgrbrwrbwbwuugrbubwwwbw
|
||||
bbwguwgwrggubrgbuuurwwwguubgbbuwbrgggguwbubrbwwrrrbwgu
|
||||
wrbwgbgwbbbwrubwbrgrwbrguguwrggbbwguwubgwbbbguu
|
||||
buwuuwurgbbuwgruwwrbbbrbrgggwwuwrubgrrbbbwwrrbwrwrbbwgu
|
||||
urbrbgugbrbgwbgwrwuuwguwgbgubrgguugbwwgbbbwrrrbubgwgu
|
||||
wgwbguwugbwguwburgbwuruuwwuwbgrbbruggbrwwruwwrugu
|
||||
ubburrrbwuwgubrwgrrbbwwrgugwgrwbugwuwrwwuwguru
|
||||
wwrbgugggrwwrbgbbbbuuurubrugrrurgbrrwrurwbwwggu
|
||||
grbuggwbruggrrrbrwbwgwubgwuubwgrwwugbwggrububgrbgrg
|
||||
brubwgubwrbrgruwwrbgruwrrguwuurwwrubrububrbgwrwrbgbbwrgwu
|
||||
wwrburrburbwbbbrrrggrbuwgubbbgwwbgbgwrububgg
|
||||
uurbgrwburugubguuwgbwruuwwubbugbgwbbggggrggrb
|
||||
uuuuurguwwurrbrrgrurwuwgbrwbggbrrugwguurgg
|
||||
rrgubrwbwwuwbbgrgbuuuwuuubgrubbgwrrgrbbrgwb
|
||||
uugwugrrgrbgrwubbrbuwugbrbgbubuubggbbgwguwwgu
|
||||
uruwwgurbrwrgwrggrgubburubrrurrwugrwbrrgbugbbwbgggwubbu
|
||||
rbbgguugrwgurwgguggggwwwwurbrgwbbbgwwruwrbuugwwgrrugurbb
|
||||
gruurgrrgrgubrugrubwugguugwbguugbrgbuuwrurruruggguwgwgu
|
||||
bguugrgrurgwggbbbrguwugbrrrggrwbguwwwrwwurrwuuwgwggbwubwgu
|
||||
gubgbwgbbruwrwwbbgubrwwrwwwgurrbububbwbwgbwuwbgbuwwgbgwgu
|
||||
wwwruwgubrbbgbburrwgwbgbrwgbrguwrbbbruuuwgrrg
|
||||
wuwbwurruwgbgurbgrwggwwwwrggbuuugbugrbwguggwggrr
|
||||
rrrwwwuwurggbbwuggruugwubgwwgbbgrrgwburwruurwugwuu
|
||||
uwwwuuugrbwbbwugrwrruuwrgurbbgbubuubgugbrurwr
|
||||
bbuurbggwuwbwbuurrrgrwbgrggggbwuwgwrwgrwgwg
|
||||
gbwrwwbwruguugwwbgbwbugwggbubgwugwbuwrrgbg
|
||||
wurbwgubrwubrrrgurgrwuguwgrgwuwwwgwguruwwurgwgu
|
||||
uuwgwuuruwuugrrrgugrubbuwgwugrbrgbgrgwwbubrubw
|
||||
wwbbgguwuwurugguugwggwrurguggburgbguruwbrbbgrbgwuwbw
|
||||
uwrgrbuwbrbgugrrbwuubrrbgbgrbbbguurugggurgrur
|
||||
wbbubggwuurugggbubwrrgbgrubggbggugwwgbggwwubugwbgrrwgb
|
||||
rgguwubwwrbwgbgggbwruwuwugrgrggbwrrwbbbugwbwg
|
||||
ubwrbbbbbbrbggbbgrwwuurwwggurrrbrbuwwuwbwrgruubuwuur
|
||||
bwuggrwwgwubbbwrggugwwrbwrrbubbugwggurgurwg
|
||||
bruugbgwbbwwbrguwrubggwwrggwgrrrrrrrruwgu
|
||||
gugbrugurbuwgrrugugbuugugrbbgwgguuuwggburgwubguuugrwggggr
|
||||
rbbrrbrbbwwgruwrwuwgggrbbbgbuwurgwgwggurrgbggubrrrugwubwru
|
||||
guurwbbubrbbrwgrggrbruubwgbuwgrugrggbbbbuubrwugburww
|
||||
bgrubggwwgwgggwuuggwgurbgggbuwurwbwbrgrguwuruwuwu
|
||||
bubwubbburbbggrwgbwurrwgbwuwrbugbwuuruwwgwubrbuburu
|
||||
brbbgrrbbuuggwbrrrwggwwugugwwbwuwgrbuwrurbuuggugbrgr
|
||||
bbuubwuubbgwwbbbgbbwbbbrgbuwwbbbburguwrgwgrbrbbbgrwrbbbr
|
||||
ggwrbwgggrrwbruubururgwruubbgurwbuwbwrwrbrrugguubrrw
|
||||
gwuguurrrwwgwwgwgwgrurgwuugrrugrbwubwrwrwwbubwwgugbbwgwgr
|
||||
rbgbbggrugwwuguuwggbugbrbgwgbbwggugruubbgugwgbb
|
||||
rrgubuubrbgrrubgguuwbrguwwubbubbububgbbgwgu
|
||||
gbgrgrwbwrugbgbgwwwwubwuwbwbwuwbwrwbgwbugwgu
|
||||
wrruguguguugwwwgwwgrrubbbgrgwgugbrbrwrrgbrubb
|
||||
brgbuwgbubgrurrgwrbubbbggbwruurwbrbbuwgrwuurbgrwrbugurbwbr
|
||||
uggrbrwwwbbrwububrrggrwrwubwuwwubgbuwgbrbbrg
|
||||
urgbggrwwwuruugrurgugrrbbbwwgrbuwuruugbbwrrurrwwwuguw
|
||||
brrgbuwwrurguggrrurbrgrgbbrbburgwwbuwuuuggguwbrwbbgb
|
||||
uwggwgrgrbbgwruwbrwubrbbrrurgrbrgwbwbuwgwgwrgubuuwrbgu
|
||||
brurrrruwrgurbgbwuwwwwrrrgwwuuggrwwgbbwgrbggubr
|
||||
ugrwbbwgbbbruggbgrwrgrguubbruuuwwwrrbguguwugurwgbggb
|
||||
ugwrubwrubuuubbbrurruwurgwgbuwbrgugwurrgwwburbubru
|
||||
wwgruuubggbgwbrbwgbuwwgbrubgggrrrwrugrggwrbrrwwuw
|
||||
bwrrrbwbbwrgwguuwubwruwgbbuugrugbggubwuubwwggrrwbrwrbwrgg
|
||||
rbbgrrwrgbrbuwwurbgwrggrbguuburubwbwbuuwguwrbrw
|
||||
ugrbubbugbrbwgbrgbuuuubrubbbrurwgurgbwuggbrurbrggugurruuwb
|
||||
wubuwurubwrrbrgrguwubuwruugugbubuwrrugbwrgwgwug
|
||||
uugurwrgwburwgbuuuwwwwrbgbgrubrrubbuguuuwbbuw
|
||||
gubuwruubgubwbrbrwwuuurwrurbrruuurrggwurwgw
|
||||
wggrbugwuuubbgrbgwuwbrwwbuuuubwurrwgubwuur
|
||||
wubugrubbrwurbuwbbgwubrgrwbubwwggwrbwggrgwbgrug
|
||||
rwwgwbwwbugrbgwbbbbwgwgbbuurrggwbrrgwgbbuwbrguwgu
|
||||
ruwwubrrrrbwrgruwrrgwrgwbwrguruwrgwubbbuggwrugwgur
|
||||
gwgubguwguwgurrruwbwgbubrwwrbggwguwbbrwwurubburwg
|
||||
ugruburuurgggwgbwugbuwgugrgbgrgbwuugruwbwwggugbwrguguuwgu
|
||||
ggubwuwwrbrubgrrrurrurwbugggrguggbwbgbwwuwwwgwggbggbwuuuw
|
||||
rgbggruubugbrurguurggurgwwrgrbubrrrubrwgbrggurguub
|
||||
rgguwwububrwgwgbguwgurbggrrwwrrbgwrgrubwugu
|
||||
burwurwrrgggwrwguburubgrrwrurgrbrrrwguguuwwburgwuuuruwgu
|
||||
wwuwurwrgggrurbbwgrrrrbwgrurrbggguuwuruuugruruuwburwgrwgur
|
||||
gwrrwruurbwgbuggbgbbgubggwwbuubgruugrwuurgbwuwwu
|
||||
bgggwrbrrrubbbbwrrrbburwgurbburwugubbggwuburbwbuwwgwwbuggwgu
|
||||
rgwuwgbbrugrwguguubwguuruubbgwugbguwurgrgbgruuwrwbg
|
||||
ggbrguguruuugwrgwrwbrbwwwgrwwrubbrwuuurbrwrrb
|
||||
bgruwubbbwrgwwbuuwrrwwuwubgrbwwurwbbugurgbgrbgggurrrw
|
||||
uurbugwuwuwwrrrwbbgwgwubwwbrguwuwrgggwuuruwrrgwbwrbbgrbb
|
||||
gwurwbbwurbbwurubbwwgwwwrrrbuwrgubbwbgrbwwbugrggwu
|
||||
wrwugwwugurwrwrurwurrgrugrubggwubwgbbguurbugrwubgwgww
|
||||
gbggrguuwuwgrwgbrgugbwwbbwuwrbwugrguuwururbbgrbwwggu
|
||||
ggruwrburubgubwurbbwbbwbwrbguubbuwwgwbbwrbbuwgrubrwg
|
||||
rbwrubrbgwwrgguwwgwrbwuurubbrguwbwrrrubbrrubbruwubwggw
|
||||
ubbrrubrbwrubbrwwgrbggbgurrwggwbggbrbrrbgurbrbur
|
||||
bwwurruwugubwrgwrwuwbwbwugurggwbwurruggggbbbrwbggbg
|
||||
wurgrugwugbuggbbrgrburgguwurgurrubguwrrgbuwwg
|
||||
buwuwrrurruuruugggggbwurubbggrgwrgrwgwgwgu
|
||||
bggrbbbgbubuuguwwgubgrgrburrrbwrbwrruwwbuwbwwbwgwgu
|
||||
gwurbugurwbbbrbburwggruwgrwburruruwuugggggwuuwbur
|
||||
rrbwgbbwrgwbwuwgwwuwbrubbwrrrubbgruggbggwgu
|
||||
wrrbruuwubugggbubbubwbgbwwbrwbbgguwrwwwwgugggggwurggggu
|
||||
gwgggbrrugrugbuugbbrugrbgugrwrbwbwrwbgwrubwubrwbbwguuruguw
|
||||
wwgbgwruubrbugrwrbuuurbrgwrrbgugugbbrwbubbrrubgrbugw
|
||||
rbbgwrgbgwgubwrguuugwgrbwurbwbbgwbrggurwugbgbbbuw
|
||||
brgbgburgbrugbwrwgrrbgugbrwugbgbgwbrgwwwwgg
|
||||
rgwbugburuwwrrgbgrbgbwrubrwwbgbubrubwurguwu
|
||||
rugurrgrgrrwgwrbbubrbrwwwuwwwwuurwwwwubbbguwuwggwgu
|
||||
ruggbwbgbbuwbugrubgugubgruggwrwwbbwgrwugwurwuuru
|
||||
wbrrwgbwbrbbbgwrgubuuuwwgrgwrbwbggwwwugbwuwwr
|
||||
rwbgwgwgrrbbbwgwurrrrbrugrbrgubrrwgwwwuwgwrwrbrwuwu
|
||||
wuwrbgwrbbuguuurubwrrurwwgrugbrurgbrgrubrurrwwur
|
||||
gugrurgugrwgwgwrwrrggrwgbwwuwurbrbbgbuwuubuggrwuuu
|
||||
brwwwguwbgrubgrgugruwwrbrugggbggbggbgwrrrguug
|
||||
buwuwugggwwwrgwrugubugbrugwrwuubgbbbwwbgrubb
|
||||
wbrguugwrbwgwgggrggbrgurbggrugubbwrbubbwggwrbuubgrrgrwr
|
||||
wrgrbwgwrbwrwgbrubwgwubbrgrguwrgrbuurgggggg
|
||||
wbuuggwurbwgwguugbuuuwugrwbwwuuuggwbuuwwbbruubwwu
|
||||
buwrgbruwbwwrgbbbuwrrrrrugbbrubbgwguuurbrrgrwuubgwguwbb
|
||||
urbuguubguwuwrwwurwwuuwwbwguugbgbgbububwwbwrwgwugwgu
|
||||
ggrgbrwrbwuurggbgbgrbugggwuubbwrgwrgbgwrrwgwgwuug
|
||||
uwwubwurrwgggwbgrbbruuwruuwbgbrgbgrbrubgbwgwwubwgu
|
||||
rrugububgrbwuguguwrrwwwrgwbwurggruwgbubbruwubuwgbgww
|
||||
uwgwgwbuwgrbgrgugwwwrwwwbuuwguwwgwuggrwbrrruwwbuuw
|
||||
bbrgwubwwuwbruuurguuwbgurwurgbgubgbrrbbwwur
|
||||
bubwrgbuwbuwugbbuburbuwggrrbuwuwrbugbbgrurbwgu
|
||||
ruubggwrgbubwbwugwrbubrrbrbrwgbwgbbuguwbrgurwgggbbbr
|
||||
brrggwurbgrrrruugbubruwrrwggugwgwwrbggrwrbguggbbbru
|
||||
buurwrwwuububbuwwuwwwbgwgubuugbrguugububbgggugbwgu
|
||||
brwuguwwggwbuggurwbuwubwgurwruuwbrurgurwuwurggbbwurruugwbg
|
||||
wrbrggrugurwgugwrggrguwrwugubwurwbrgrrbrbwgbrbuwuggbwbru
|
||||
bbbgrbwwwurubrgwwwbwbrrbbrgrruggbwubgwuwurbugrburwgguurwgwgu
|
||||
ggrrggwbrgguugbwbwugwrwuuruwubrbrbgwbbgrru
|
||||
bwggwrbgrgrrwrgwrubggwwrgwwurbwrururubwuwbruwurwgwwuwu
|
||||
urbrrugruuwbrwwrwurrwrrgbwgubuwwbwgggurrgugbwbrgbugwbggbwu
|
||||
gwugbwrugrgbbwrrbwbwgbguwggrrurbbbbugrggbgb
|
||||
brrgwrbwwbuurwuruwbwwwwrwbbbwggwgggugbguwuburr
|
||||
ruuuwgbguurwgwugwggrwwrbbbwugrbururbwburwwruuwwrugrur
|
||||
wrbuuwrwggwwrrbgwwrbuuggbgrugwrgugguruguwb
|
||||
rbrrwwbuubgrrbuwurwwuwgwguubgrgrbubrwgugwrbgruburbrrug
|
||||
gbwgugrbwbwgrwwbgbrrugwgruubwggbgruuwrwgbwrwrgbuw
|
||||
rwgrbbbgwgubrbwuubrrubbrguubbuwbgrbguggwugurgbguwrrgbb
|
||||
rwgbguwuuwgbrbrrgwgrrwuuuguuggbggggbwburugwurg
|
||||
wgrggbbrbrrruwgguwggrgugbrrbrbwbugbwwrubbbbuwu
|
||||
wrurbrubuuugugwggbugrubruwbburrrrwuuwgwuwggbbuguw
|
||||
gbrrwbwruwrrbrruguuwgbwwbugrwwugwbrgubgrur
|
||||
grrrgguwrrwwrwwgbbrgggwgbguwuuubbwugrrrugrggrb
|
||||
uurgrwubwbrrgurrguuwrbgwrbrurwrugrgubwwgwbwgbrugbgwbuguwgu
|
||||
bwbwwgbbgrwwbrbbbrgbrbwwwuruuubgrgguurbuuwgu
|
||||
grggrwbwgggbrgugrwguwrubwbuwgurrruuwbgbrrgb
|
||||
bbrruubuurbguubwuugrurbwrbgbwubwubwwrwguwug
|
||||
uugbrugbgrbugguugwbwbgrgbuurwwbuubgrgrgbrw
|
||||
wbgrbuuurbbruwwwgwrrbguugbuguggwwwuurruuurbbgwwrbgwg
|
||||
ggrrbggbbgbgwrbgggrbbbrububuwrrbuwbbwrbgrgbgrwbb
|
||||
bgwuguuubrwwuwgbbgbbbuurwwwrwwbrgbggrbbwguguwgu
|
||||
rrbgwruwbbuubbuubrbggbugwwwgbgrwgugbubwbgbbbgbbrgug
|
||||
rbwbrgbbggbburrrwguwwuwrugrgggggrwruuggrbrgubgwrwbrrubggwgu
|
||||
guburwgburrgurggurgbgrwwwbuubbwwruwrubbrbbwrgwwrruubbwbu
|
||||
uwbugwbuwrwurbrwrrrwrwwbrgrbbbwuwrrwrrrbbbwwrwrrbwgbrrgwg
|
||||
bruwrgwrugwggrgrwgrrrwwgwwugbwurggwbrrwbgwgrgurru
|
||||
gwuuruurwwguwugwurrgbuwuwwgrwgurgbbrgwurrwwg
|
||||
wgrbrgurburugugbguwwgwbwwgggbuuugwgwrwbrrrbruburwrwwgwbbrb
|
||||
uwggwbggwgggrgrbrubrbruubguuwgurggwbbrbbgrrbug
|
||||
rurbgwgbwuwuwuuubwuguwrbwgbbrururruwbgwwbuwbrrwrrurwgg
|
||||
ugwuuuurubbgbwrwgbuwrbbrwbwgwuugbrguggbubbggggubgrwuwrbbgg
|
||||
wbbugbrbgbrruwguuruwwgwgwrguwubguuwurbgwbbguwrrrwwwburguuu
|
||||
wuugrbbrrgurgbuuuruwbggrggbubwubbrgbuugrugwbgwguwrw
|
||||
guuwwrbuuurwrrwrwrwrbuugwwbuuuuugugrgbguubrrbggbgu
|
||||
rbwbbruuwwbwgwbwgugggbwwrwugguubrugubwgbbrgrbgu
|
||||
bgrgbuugggbugwbbgwurgwguuuruubrubwbubwgwgwgurrgbubrguubr
|
||||
rbggruugwbuwgugbuubugggwbrwuurgrrbwwbrurbgwbgguugbburgwgwg
|
||||
guwuurbbwwbbuwwuwwggurguwuubuwwwgrugwrubgruurwgbwggb
|
||||
gbrgbwwuggwuwgbgwbbgguwrwbwbwrwrwururbuwbgwgrrwrbuubwrrrbu
|
||||
ggbbwgbbbrbwruggurwguubbwbguwguwgbrwrrruwubrurbuguwgurgu
|
||||
bbwbwrugbwuwbwwbuugrgugugugrgwwuugwrurruwbgwwbwbwr
|
||||
gbwwwuwrwwguwburwuggwbruuwbbrubgrbrwrgwrgrgugwgu
|
||||
rrbwwbrrwgwruwwwrrgwubbugruwguggwwubrrbwwwwggg
|
||||
urrrgwgggrrrurubwurgurwgugwgrugwbbwbwwgbbrwgurgwgwbubgwgu
|
||||
rwgbwbrwwbgrbwggwbuuguuuwgbbubrgrggrwguwbrwrbrwrrwwurg
|
||||
grbrwgbrwgwbwubgrbbgwrgrwuugwbuwuuwbwugrrwg
|
||||
rgrurbbbggrrguburrwwugbgbbgbbbwuwbwrgwgwwbruuruww
|
||||
wubbgwgbggwwggwrwubbrbwrwrbruburbgwwwurgguwgr
|
||||
bbrbgbwrrbgwwwurggwgguwruwbuwbugbubbbbrwbggubuwuwgu
|
||||
uwubbwwbrurwrrrwwurbgwwrubgugrbbgwbbbrwrrrgrbruubbbburrgg
|
||||
rugwrbwugrgwwgwbbwguwbuwbugwwbugwwwurwbbguwgbgrwuwrggbgrr
|
||||
rgwgwwwuwbgwbuuwubbuwbruwgugbbugbbwrbwggwbgbwurubbrrgbrw
|
||||
urwwgrbbgbuwuubrubruburgugbgbwuurgguuwuwubwbuggbwbggwugwgw
|
||||
guugrwbbwwbwbwbuguurubuwwwrrbggbrruwwwurwbbbrbbb
|
||||
ggugbrwbgwrbrbbbrgguggwgrrggwgwrgruurgwurggwwgubgwgu
|
||||
wruugbgugwwrgbwbrbbbgrubrwbgwwguwbbgubwrguwuuwubgur
|
||||
bwuwubbugwgbrrwuuwrgbgbguwuurrbbwrwugwwwrbubgrrrwbw
|
||||
buwrbrgwbgwurrrwguuurbrrbuuurwrgwubbgwbgggguruwbgbggb
|
||||
uwbggrgwbubrbrwwwguguwrrugbbbugbbgwrrwwwgrwgbugurwrurr
|
||||
ggurbuwrwgurrgurgbuwrguwbwbrugbgburwuwuuwuubgggwruubgubwgu
|
||||
gwrrbbbgwbwuwgubbugguwurrwwbrugugwwrwbrgurrrwww
|
||||
gwruwggwrubugwgubrruruurwrggbwgrubbuubgrruwgrburwbgrrbuwgu
|
||||
gguugbgwrrbwwrrgrbrwuggrbwbgbgrwrbuwbbubwgubwuwubbg
|
||||
rruburrrwguwrrgwwuuwwbrgwgrurwurwubrubuurbgbbggrgb
|
||||
wbrgwrbgbrbwgwbuwurgrrruwbwrugwbbbgwbgwbruuuguwuwwbuguwrub
|
||||
wwrgrgbuwbbbwwurgugrruuwwwbrrwuwugwwurwgrwurubguwwg
|
||||
ruburgggurruugrubggwgugbuurgwbbrrggbwggwwrbbgrwb
|
||||
wwggruwuwwguuwwrrgubgwgbwwbrrrwwuuggugwbuurub
|
||||
gwrburbbgbrwugbwrbggrwwwwbrrgrrrurggwbbggbgbubgrrbuwrwu
|
||||
wbuubrwbrgwwubrgrrggrrurwbbwrrgwbrguggwuwwugruw
|
||||
ugbbuugguuwgwbubrwrwwrwgbbbwrwgburuwrbbuuwbw
|
||||
uuuuwbwggrrbbwwrwgrwwbwrurrbruubwwwgbgrgrrwggwwuugbgrrb
|
||||
gbbubwubwbgwubwwgruwbgrburbuwwbgwwgbwrwbwbrgwrrubwwbrug
|
||||
rwbwwruwwwgurgurrgbgubuuguwbwrugbggrwurbbrbbrbuwwrrwww
|
||||
wgwrubgwuubgwgwguguugggwwruurwwgguggbuugwbuuwrbr
|
||||
wwgrwrrgrbbwwwbgbgbubuwrwrbbbrwrgrgguwgwwugggbbgbrbwrgug
|
||||
urugwubwgubrwrbuubguggrbuuuuuwwurrgbrgbgbwwubruwuuwwwggugr
|
||||
buwuburbrgugrubggbgbrburgwrgwwgbuuuuuwgbwbrbuugrwbbbwb
|
||||
uuwgwwbwuurbbggbwrbwrbbruuururwgugwuuurwgrgrwbruwuwru
|
||||
ugubbwgubrgwgwwurbuurwwrbrwggubbguwrggrubrrbuwuubbwbrbrb
|
||||
grwwrrgwrubbwggwgwwuuuwwrwbbwbbguwubwgbrgbrgrgguugrrgrgw
|
||||
wrbrgrgwrwbruruwuwurrbwgwwbrrrwwwwrgrbwgurgrwugwuwgu
|
||||
uuguwwrbgguuwgubbwrwugbrwbbbrbugubbrbrgruugbggbwbrubwg
|
||||
wwbwbbwugbggwbguwggwbgrgubgrbrrrgbrugrgwuggubbrrr
|
||||
brgwbubggbrwbwuggububwbuuwgggrgggwgbwuwguwgwgu
|
||||
gwbwuwuuwurwguggbrbbrrwubbrbrwuuwrbbbgrgurggrrwrg
|
||||
ggugugbrgrrrwuurruuwrgbgbgugbbbrwuwbbgrggbwuggugugugb
|
||||
bgwwurubbguruuuwbuuguwwbbuuggwgbbgrbbubgubruwbgbuwwurgu
|
||||
uuguwgrrbubwrgruggubggwrgururbrruurwgrgbrgug
|
||||
ggwubwbwwbwggguugurbwrrbwrrgwrgrgbubuwuurwgbruubbwgu
|
||||
bwgbguwrgwubgrgbwuwgrggbwwrgbgwbruuwgguggu
|
||||
wbgbuwrrggwgbubgrbuugrrrwrrwguurubuurbgbrb
|
||||
wrbwbrurwrubugrrrbugrwugugrugbwuguubbrgrwwgbrruwbbwg
|
||||
gbuguwgwwgwuggrbggwbrruuwubwrgwbrwgwguwrgbwgu
|
||||
gggggbbururwbggwgwwrrguurwwgwugrrwuggbubrgrrugubgbugubwgu
|
||||
wurbgwbuguwbbgubbgwbburbbrwbbubwrbrubgugbbugwuw
|
||||
uugggbugbwwbrwuguwggrgwrbrgwwrugwgruruwgwubbbwwbbguuwugbr
|
||||
brugggrwruuuggbgwguuurwubgwuuwbruguwwrgwgbugrrwbbrug
|
||||
wurrrrbbbggrwurubbruurbrrbwwgrrrrgruubrrwwwr
|
||||
rugugrwbubrgrwbwwbuugwurrwuuguugrwurwrbbbwrbg
|
||||
rrurbgrgwrwuguggurbrbgwbgugwrbrugbggrugrrrggrw
|
||||
ubwwwwbbguugrurbgrwwgruubggbrrwgbgwrwbrgbugbbbbugwbwbb
|
||||
wwgubgrrruurgrguwrgwuwggbwbwruggrbgrbrbwgguruggwgwuurbbuu
|
||||
ggguurwuuruguggrrwgrwurbwwbwwbwrbrugbgwrwugbruugbgg
|
||||
urgbubgwbrwrgrbwgruguwugwbgrgugrgbwubrgrbwrr
|
||||
uwbwbbbbrwggwrrggwbgbwrgugbrggbwuwgubrwbgbuuwugg
|
||||
wwgbbgwrwrwrbgubgggbrbguguguubbrbbrurgbbgubbbbwgu
|
||||
burwbbguggbwwubrbugbrwwbrgwgruwrrbuggugwgu
|
||||
brrbrguwuwbrrrbuuubwwrbgbubugwwurwugrgrwurbugwwrbugbw
|
||||
gburrrgwuwrbwugugrrrurwrrrbuugruurbbguggugubwgb
|
||||
ruugrbbwbubuggbbuwgbbwgwurbrgrbgruwbrburggubrrwuburuugbur
|
||||
wwbwrbwuwguguuuurwubrwbrburbggrugurwbrrrwwbgurwuwg
|
||||
urggurrrgbbrgrwrwrbuuurbgwrugggrwbrwbgggrugg
|
||||
gurrbgbbrugbwrgwwggrururbbgwgwwbwubgwrrbubwbuubggbrbrr
|
||||
bbwwbgbrbwwrgwwrbgwbgugurugbugwubguwubruurru
|
||||
wuurbgrrgrwurrguuwuurwbwubrbgwbbbbugrwwwwbbbwwgwgwru
|
||||
uwgubbbwuwugwbrgwwguubwwugugwbubguugwgbuurgbrwbruuubuurruw
|
||||
bbruwrwuubwbugbbrbgggbwbwbuwuuubrgugugwbwwrbuwgwuwgu
|
||||
wgrgrbbgruwrgrwgbrwrwguggguwwwubgbwuwrgrbguwu
|
||||
bwbrbbwggwrruuguwgwwgubrbgurrgburuuguuguuwggwwbu
|
||||
ugrbrwugrwbwgbwbwbwrgbgugwurwwgrurrrugbwbggu
|
||||
grwrwbuuwbbrbbbuwrwubbugbbbwwgbwgruwbgrgbwguwwbwuww
|
||||
ugrgbwburbwbgrgubbuurwubrgrwubbrrruwubrugrwrwbggb
|
||||
wwrwwrwrgurgggbrubuuuuurbbrgwrgggwgrwbuwrggruru
|
||||
gwwbbrburbuuuguruubbbggwgrgrubwgruwwrbrgrgruugwrrww
|
||||
ugwrwguggubrrwwurwwwbwbwbbwwwwwguubbwwurrgwwgwbwubwb
|
||||
wburwbggrbgurbwubwubggubrwurguwbbbggbwrbbguwbwbwuurgbgg
|
||||
rwwgggwwwbubgugbubuuwwrbbuwrwwgwggbbbugwbrgbwuuuuw
|
||||
brggrwbbwrubburgwwrbburuwuugwrrwuuwgrrrbwwwgguubwwbbbbuwgu
|
||||
wuwrbwuwbwrugbrwubbbgugbgwgwbubwuurbggwwrrgrbggbw
|
||||
uwrrgrrwwugrburbbwbwbwbwuurgrgubbwwuwrgrwgbugg
|
||||
gbuwgwrwbgbgrruwrgugwuwbgwruwrbgbrrwububbrbrrbgugr
|
||||
bgbbbwwwwbbubwrgwbwrrbgggrwggwgwgbgrbbgggugwru
|
||||
wwgwwbguuwrbwuuwugwrwbgrwbururbugrrrgwbuuwrwwuuu
|
||||
brgruuuugrgwuuguwbbwgrwgbggbgrugrwwbbugrwwrrubwgu
|
||||
wburbrwbwrbwrbrrgggurruuguggwuwbrgwbgbwgbrwubgubugbur
|
||||
rgurgwgrubuuwwrugugbbggurbbgwwrrubgurwbwbbbrurburwrwwub
|
||||
wguuuubwubwgwrwuwwuururbggbgwgbubwwrwrwuuwgwbbbrgr
|
||||
uugubgbguwbggguuggrbwgwwrrguwuwbubwwrgggwgbwgrb
|
||||
gbubrbggrwwgurbbbbbuwbbwggbuwbuwurrgruwwgub
|
||||
buwrrwbuwwgwbuwuurguuwbwrbuugwwwuwgrrbubbrgrbubguruwgu
|
||||
ubruwgrwbwuurrruwbbwwwgrbbbburgwwbbuuwrgwrguburwbuggguw
|
||||
gwuuuuwgbbgbwgggubuugrbbwrrurbbrburrrgwgbwguwubwuww
|
||||
rugugrbbwuggrgbbubggubbggbrgwrbrbgubbwgu
|
||||
uuubbbggurgubgrbguuwwrgbrgrbbrbrubwguwbubwrgwwbugg
|
||||
gbwrrgubbrwgbugbrrruwubwgrwurrwwurwgwrwbrguwrgwwbrwwuwgu
|
||||
wwwbwugurwwguugrbwgruurwwrgguwuggwurugrggwguwg
|
||||
ugbrwwbwwwuwwrgrwuwbuwbgwurubwuwuuwguwubwbburwrwubuw
|
||||
grwgrggggbgwgbgbrwguugwrwbgrrurwbbwburgrwwbbwwgggrwwgugwgu
|
||||
gbrbbgbwgburbbbrwbgbuuguuurrrrwwbggbgrubuuwwwwrb
|
||||
brbugwubbrgbuubwbuguguwuugbrubgbrwwugbuwbgbwuwwbrgubrbwruu
|
||||
rbwrwurbbwubwrgrwrggrwugbbuwburwuggwgwbgbwrgwbgw
|
||||
brurwruuubwwruuwuwwwuggugrbruwbgwbugrrwurugrgubrggbwwr
|
||||
gugrwgubbwbuugwgrgrrrgwbbrguwubruwugbugrbbruuurwgbgur
|
||||
ggbrgubuwwururggrburuuguguurgubbrugurbwrggrrwbwgu
|
||||
rwuugubrrurrbguuugguwwwugrrgwgbrguubgrwbrrwguwbw
|
||||
uwuwrrruwrwwgrwgrbbwwwggwgubgrrrwggubuuuuuubrbbwgu
|
||||
ruurrrgrugrgrgwwugrwwgrbuuguurgrbrbgrwbwgwu
|
||||
buubbwwbwwrwbwwbgurgwbbrrgbwbwbuwwbwbggguburrbrrbwgurgu
|
||||
bgrurgbrrurwwbbrrwbrrrwrgrwbbrugrwbwrrgubbubrrbrgbuuwrgww
|
||||
rwbbwbgwbggwwgugrguwgbuwwubwuwwwwuwbugrwgrgguu
|
||||
bggbubgugwbbrurrubwgwbwwwuubbrguuurwruruwrwwubuurr
|
||||
buwuwbrrubbwuurwbrgwwwwrrgruwggruruggbrgwbwwwbwugrwgr
|
||||
ubbuguurburrrwggwgbwuwwrgwurgruwwwwbwwgruwbugbuugrrggbu
|
||||
ubuwrbwgwrbgugrwubbgrbwrggwrgrubbbbgurwrrwuubwbrgbbbbuggww
|
||||
uruwwuubrbgubrurwbguwrugbwruggbbwwuwuggbrwuwbuggbrbrgrbr
|
||||
uubuuruwrbbwguugwgubbwgwubbruggrgwrrgruuwuwbgwrrrgr
|
||||
gwbububbgwbwgggwrwurugrrruwuwurgbrwbgbwuwuggwgbwuwbur
|
||||
ruguuwwuurgwggbbwgggugugbbuuggwbwbbwgrruuubwrguwrruugwrbb
|
||||
bwwrugwwrgwruubbwwgbwwrwuwubbwurrrubrwwwubbubugugbuwb
|
||||
rrbwwggurwuuubgurbbwgbrbruuwbuuwwrbugggugw
|
||||
rwggguuuwbwuwwubwuuurrubgrguwuwbrgbuwbgugbbbbrwuruuurgrw
|
||||
uugubuwwwrwwuwguubgrrbrrrwrrgwubbwwbwrbgguguuguuwru
|
||||
rwugwruubgurrwrbgubuwrwuwugrwggrwwwugbubugwbbwgwburbbubwu
|
||||
bubbbrgrgbwgubwwruurgrbrbbwgbgrwgggwrbburubwb
|
||||
brwgbbwrbruggwrrbuuuuuuuuwrgbwuggrrrugwuwgr
|
||||
wggbubwgwruwrbgrguugwbruuggwbrrwbgwuwrgwwurgugwurbwbb
|
||||
gwwbrgrrrwrbgwubrwgwrwbgbburgrrwbuwgwgrgwgubbgr
|
||||
rurgrubwgwrrubburwurgrbrgurbrguwugwurrbbbbwwbbuw
|
||||
wgwugubruuugbrgrgwgbrurwbgbwbrbuwgrwurrgruwgu
|
||||
gguwggbrwwugugrbwrbrwgwwgruggurgurwrrrrwbwgu
|
||||
wwgbrrgwwuwubbuuuggbgwgrwbbrgubwwuwurwrbubggrgguurgw
|
||||
wrrrgwrubggugwgwburgbbwguguwwgurrwwgggrguguggrugwwwgu
|
||||
ruwwbrburrrrwgurruwbwgruggrbwuwuurrgbuuwbgbg
|
||||
rbugurbwgurwwrbwrruwgbgwwrwgwggrrguugrbrgwwgwwurubbrubrg
|
||||
bbbbguuuwwurwbwbggbrgwwugwbugrugubwuuwggwbwuwwrgbrguuwr
|
||||
buwubggbrwruburgbubwgbwwrwrgbwgwrwuuurrgrrwwbrrrgubb
|
||||
ggurrgbrbggggrbgwbuwurwbrguugrbuurwrgubwwubbbbwrwuwbur
|
||||
ubbwubgbrwwgrgbgrwbrruuurbwrwrgwbgrrgrbgrgwuuwwururrbr
|
||||
rrugruuwgbwuwgwuwruuwwuuguurrwbwrgugbgwwubbg
|
||||
gubuubrbbrrurrbrrwguguwrwgbbubrbuwwbuwwgubguburuggrgwr
|
||||
wguwrwrwruwbbbbwuubwbguuwurwbubgwwwwrbuugww
|
||||
bbggggggbuwgurgwurbubwubgbgburbwrrbrrrwbwubwwruwuwbggrrugg
|
||||
ggwrgbwruubwwuurgbbwrgbbgwrubwgbrbbbggbrurgugbbwgbgrugu
|
||||
ubuwugruwbrwwbbwbbuwwubgrbgbgggurrrrgbbgwbbwuu
|
||||
rrgwwggwgurgurbbbwubuugbbbgwwrrwrburubgwgu
|
||||
ugrgugbrgrwuugbuwgugrwrbwbugbwggwbwubgbruuuwbrrwrbwuu
|
||||
urgwwubwuubruguwwgurgbwgubgggbbwruwrurwwgbuwrrrbwwuw
|
||||
bgrgubruwrurggrbwuwbbwwugwburbubrrwurwubwrruuurgubrrgub
|
||||
rgbrrrwwbbuwrbruuurggurubggwbbrrbwbbrbgwrbuwgbgg
|
||||
rgguwggugruwwwbrbgrrbwugururguwuuubgruubbwwwu
|
||||
bwwbrrwuurgrruwgrguwwbgrrwrbwuuurgggbrwgbuwbguuuwggwbrrgwgu
|
||||
rbwwwrbubwggrugguugwwgwbuurburbrubuwgbururwgrgwwb
|
||||
wwwgubbwbwbgwubrrgbubuwbbbgrrgrwwrbbuwbubrrguuugruwwruwwb
|
||||
ubrbggrwgrwugwwgrugubrburgggbugwbggbburgugggwbugugguguguw
|
||||
rrrgrgrwgbgwgrgwrurwuwgurrbwwwgbgrgwwbwbubrrubrru
|
||||
wbwgrgbwbgwgbuugburrwburbuwrbwgburrgwuwrggwbwuwgbbbguwrbgr
|
||||
rwgburgwgubuugurwbwbwbuburrrbburgwwwwguwgwwbwbbwwwuwbwgwug
|
||||
rwbuuguuwrrgrwrrgruruuguwwwgbbruwbbwrbrguwgu
|
||||
guwbggbgrbbbbuwrwguwguwgrwurrwrbuurrrgruwwurrw
|
||||
wbwuuuggwbgrwggbrggwbwburgbbrwrrugbbrugurbgwgu
|
||||
wrrubbwrrwbruruwggugwwgrrwugugrgrguuggrubrggugggbrwu
|
||||
rugrgguuuubbuugbbrrwuuwgrbrgbgrbbrbugururrg
|
||||
ugggrgrwgbgwbwwrrgggbwwgbgbwrwwgwubbbrbbbuuwgwbbubbbwubw
|
||||
gwgwuwuuwgbuubbwwwrrurrbgbubuuguwwbrgwubuuwbgwwuwbg
|
||||
rurggguuubuuwrbrgwgguurwgrwugruugwwggrbuuugwbwgu
|
||||
gbburubbgbggrwubgrgrurbwgrrubuwrrbbgrgrwgg
|
||||
wgrrgwurbguwgbuwrbrurruwrbgrrbrgggguugrbwgwrbwwbrgwgu
|
||||
rgbwbrwguubrwwrwugbbbwugwurwwgurbbrgwwugbbbwgb
|
||||
ruwwgugrgrgrwgrwrbrrggwurrrwubrrbbrbwubrbwgu
|
||||
brbwrrrggrgrggbwbgubgrrugwgwuubrbwwurbwbru
|
||||
wrbrwgbwbbguburgrrgwrbrwwurugruggwgrrrurggur
|
||||
gggwrgwwbuwwbrbgbrbbgbbubbuggrgrggbwugugggrbub
|
||||
urgbwrgbgwwrgbwurgggrwgbbgwbwgrwwuuuguggbrbggw
|
||||
wwubrgbwrguwrbrurrwwwgrwrbrbrrbrrwwgbbuwwwbbbwbg
|
||||
rrgugrbrbuwwwuuwwurgubgwbbruuggbbbruuwubur
|
||||
urguwgrrrgbrrwbggbgurrrrrwggrggrrburrrgggbu
|
||||
ruwgguwurbbrgbgwgrrubwbwurwrbwgburrbbgrgburgubwwgb
|
||||
wggwubbrwwwububuugwbwbubrubuguwguwrbbrwbgwgurgu
|
||||
uubggrubwgrgbrurgbuwubgbuuwugwbuururrururgggrurwwrrgrrgbgwgu
|
||||
brrwrbrbggggrwrburbrurbuwuuguwbbrgrruwbugwwburuuugubwgu
|
||||
gbwrruugrgwbgrbruwwgrurbgwwubgwwbbggubgrwubrrburrgwuw
|
||||
uburgbbwrgrwurwbuwrrwbbbggrruwrugubruwbgwubggurbuwwbbuwgu
|
||||
wwrwguuwubrbbruguuruugbwwwrbbuubbuuubbbgrgr
|
||||
uuwgbbgguuggrwwrrrubbbbgurgrruuubwwugwgu
|
||||
guggrgrbrburubbugbugrgrggggugwgwggrrwwgbbwgu
|
||||
rbgbbwrbwggugurgubbwwwrggwgwuwgrbrrbgubbbbruw
|
||||
uuuwgrrrubbrwrbggwgguubbwbrbrwbgrgwbubwggwubgrub
|
||||
rurwruuwwgwrguwugruburbgbuugugwuubrbbwurgrbrbugwubr
|
||||
urrruurwuwbbbwububwrgguwbrgrbuubgrwuguwurwrbubrugu
|
||||
gugwgrrrbrrrgrrwwgrggbuggbwbwgbburbwwggguwrub
|
||||
wguwwwgwggwwurrrguwuwbgrgbrgwugbwbwwggbugbggr
|
||||
gwgrwrgwbbburggrbwwurrrgbguurrrgrbrugwgbwurwguwbgbgrbug
|
||||
rbbrrrbuuurgugwgrrbuwrbrrurwuwgrrrgbugbwgu
|
||||
urwgwbuuwrgwwrrggwwubbrbwguuwbwrggbbwwwwbwrrrwwgbwwurbrrg
|
||||
wwbguurugruuwuubugbgrwgwwggrbubrggwrwruubwrgwub
|
||||
ubgruruguugrwbwbuwbbwruubwgrrurwwruwugwbruuurrwwrrgruugw
|
||||
grbubwruwubgugggrrgrbwgurbgwugwwggrrbrgrbuwbbbrbwgu
|
||||
wrgrrubgggrurgwguurubwgggbwuwrrubrugbrgbrbggwgg
|
||||
gwgbrgrrbbrgubgrubrwrwrugrgubrgruuguwrwubwwwrgbubwwggbbwgu
|
||||
bwbwgbgwbwwbuuwbrubggggbugwgbgbuuwggrwuwrbr
|
||||
wugrwurwgrbugrwrwrwrrgwwuugrrwgrgbgbuwgu
|
||||
urbbubruuggrugwwrbrrguugguuwuuwuuubrbgbbggrgbug
|
||||
rrugubrbbgbwrbggguugrbrrrbruugruuggrbgwbuuwuururugwruug
|
||||
burwbgbgruwrurbrwuwrgurgrrbrbbguwwbbrwgbwbgwrwbruuwbgwgww
|
||||
wbubuuwbrwuwwruggbbugbrrrgbgwguwwgrgurgwrugrguurrrrbbgrbbwgu
|
||||
rbwrbubggwuubugbrubuurruguwrrwgubwrwwububwrgrguw
|
||||
gbrgubrugbwrgwwwwrbugwwgwgwrbrgwuuggrubwrbrugwbbruubwgu
|
||||
wbgrubbrgwgrbrbuuuubuugwubbugwbuggwrburgwugw
|
||||
grwgrbgwwrubruuubburwgbwgugwugwwrbwbwwrguwbbubuuwguwr
|
||||
1001
Inputs/Day2.txt
1001
Inputs/Day2.txt
File diff suppressed because it is too large
Load Diff
141
Inputs/Day20.txt
141
Inputs/Day20.txt
@@ -1,141 +0,0 @@
|
||||
#############################################################################################################################################
|
||||
#.......#...#.......#...#.....#...###...............###.......#...#...#...#.....#.......###.....#...................###.....................#
|
||||
#.#####.#.#.#.#####.#.#.#.###.#.#.###.#############.###.#####.#.#.#.#.#.#.#.###.#.#####.###.###.#.#################.###.###################.#
|
||||
#.#...#.#.#.#.....#.#.#.#...#.#.#.#...#...#...#...#...#.....#.#.#.#.#.#.#...#...#.#.....#...#...#.........#.........#...#.................#.#
|
||||
#.#.#.#.#.#.#####.#.#.#.###.#.#.#.#.###.#.#.#.#.#.###.#####.#.#.#.#.#.#.#####.###.#.#####.###.###########.#.#########.###.###############.#.#
|
||||
#...#.#.#.#.#...#.#.#.#.....#.#.#.#...#.#...#...#...#...#...#.#.#.#.#.#.....#...#.#...###...#...#.....###.#...#...#...#...###...........#...#
|
||||
#####.#.#.#.#.#.#.#.#.#######.#.#.###.#.###########.###.#.###.#.#.#.#.#####.###.#.###.#####.###.#.###.###.###.#.#.#.###.#####.#########.#####
|
||||
#.....#...#...#...#...#.......#.#.###.#.###...#...#.#...#...#.#.#.#.#.#.....#...#.#...#.....#...#.#...#...#...#.#.#.#...#.....#.....#...#...#
|
||||
#.#####################.#######.#.###.#.###.#.#.#.#.#.#####.#.#.#.#.#.#.#####.###.#.###.#####.###.#.###.###.###.#.#.#.###.#####.###.#.###.#.#
|
||||
#.....#.......#.....#...#...#...#...#...#...#...#...#.......#.#.#.#.#.#.#.....###.#...#.....#.###.#.#...#...#...#...#...#...#...###...###.#.#
|
||||
#####.#.#####.#.###.#.###.#.#.#####.#####.###################.#.#.#.#.#.#.#######.###.#####.#.###.#.#.###.###.#########.###.#.###########.#.#
|
||||
#.....#.#...#...#...#...#.#.#.#.....#...#...............#...#...#.#.#...#...#...#.#...#...#.#.#...#.#.#...###.......#...#...#...#...#...#.#.#
|
||||
#.#####.#.#.#####.#####.#.#.#.#.#####.#.###############.#.#.#####.#.#######.#.#.#.#.###.#.#.#.#.###.#.#.###########.#.###.#####.#.#.#.#.#.#.#
|
||||
#.#...#.#.#...#...#...#...#.#.#.#...#.#...#...#.....###...#...#...#.#.......#.#.#.#.#...#.#.#.#...#.#.#.###...#...#.#...#...#...#.#.#.#.#.#.#
|
||||
#.#.#.#.#.###.#.###.#.#####.#.#.#.#.#.###.#.#.#.###.#########.#.###.#.#######.#.#.#.#.###.#.#.###.#.#.#.###.#.#.#.#.###.###.#.###.#.#.#.#.#.#
|
||||
#...#...#...#.#.....#...#...#.#.#.#.#...#.#.#.#...#.#.....#...#.....#.......#.#...#...#...#.#...#.#...#...#.#.#.#.#.#...###.#.#...#...#...#.#
|
||||
###########.#.#########.#.###.#.#.#.###.#.#.#.###.#.#.###.#.###############.#.#########.###.###.#.#######.#.#.#.#.#.#.#####.#.#.###########.#
|
||||
###...#...#.#.###.......#...#.#...#.###.#.#.#.....#.#.#...#.....#.........#.#.#.......#.#...#...#...#.....#.#.#.#.#.#.#...#.#.#...#.........#
|
||||
###.#.#.#.#.#.###.#########.#.#####.###.#.#.#######.#.#.#######.#.#######.#.#.#.#####.#.#.###.#####.#.#####.#.#.#.#.#.#.#.#.#.###.#.#########
|
||||
#...#...#...#...#.........#...#.....#...#.#...#.....#.#.#...###.#.#.....#...#...#.....#...#...#...#.#.....#.#.#.#...#...#...#.#...#...#.....#
|
||||
#.#############.#########.#####.#####.###.###.#.#####.#.#.#.###.#.#.###.#########.#########.###.#.#.#####.#.#.#.#############.#.#####.#.###.#
|
||||
#.............#.#...#...#.....#.#...#...#.....#...#...#.#.#.....#.#.#...###.....#.........#...#.#.#.#.....#.#...#...#...#...#...#.....#...#.#
|
||||
#############.#.#.#.#.#.#####.#.#.#.###.#########.#.###.#.#######.#.#.#####.###.#########.###.#.#.#.#.#####.#####.#.#.#.#.#.#####.#######.#.#
|
||||
#.............#.#.#.#.#.#.....#...#.###.........#...#...#.....#...#.#.#...#.#...#.......#.#...#.#...#.#...#.#.....#...#...#.#.....#.....#.#.#
|
||||
#.#############.#.#.#.#.#.#########.###########.#####.#######.#.###.#.#.#.#.#.###.#####.#.#.###.#####.#.#.#.#.#############.#.#####.###.#.#.#
|
||||
#.............#...#.#.#.#.......#...#...#...###.....#...#.....#.#...#.#.#.#.#...#.#...#...#.###.....#...#...#.........#...#...#...#...#...#.#
|
||||
#############.#####.#.#.#######.#.###.#.#.#.#######.###.#.#####.#.###.#.#.#.###.#.#.#.#####.#######.#################.#.#.#####.#.###.#####.#
|
||||
#.........###.....#.#.#...#.....#.#...#...#.....###...#.#.....#.#...#.#.#...#S..#...#.....#.#...###.....#.............#.#.......#...#...#...#
|
||||
#.#######.#######.#.#.###.#.#####.#.###########.#####.#.#####.#.###.#.#.#################.#.#.#.#######.#.#############.###########.###.#.###
|
||||
#.#.....#...#.....#.#...#.#.....#.#.......#.....#...#.#...###.#.###.#.#.#######...#.......#.#.#.....#...#.....#...#...#.#...........#...#...#
|
||||
#.#.###.###.#.#####.###.#.#####.#.#######.#.#####.#.#.###.###.#.###.#.#.#######.#.#.#######.#.#####.#.#######.#.#.#.#.#.#.###########.#####.#
|
||||
#.#.###.#...#.....#.###.#.#.....#.#...#...#.#...#.#.#.#...#...#.#...#...###...#.#.#...#...#.#.#.....#...#.....#.#.#.#.#.#.....#.....#...#...#
|
||||
#.#.###.#.#######.#.###.#.#.#####.#.#.#.###.#.#.#.#.#.#.###.###.#.#########.#.#.#.###.#.#.#.#.#.#######.#.#####.#.#.#.#.#####.#.###.###.#.###
|
||||
#...#...#...#.....#.#...#.#.....#.#.#.#.#...#.#.#.#.#.#.###...#.#.#########.#.#.#.###...#.#.#.#.#...###.#.......#...#...#...#.#.#...#...#...#
|
||||
#####.#####.#.#####.#.###.#####.#.#.#.#.#.###.#.#.#.#.#.#####.#.#.#########.#.#.#.#######.#.#.#.#.#.###.#################.#.#.#.#.###.#####.#
|
||||
#...#.....#.#.....#.#...#.#.....#...#...#...#.#.#.#...#.#...#.#...#####.....#.#.#.#.....#.#.#.#...#...#.#.....#.....#.....#...#.#.....#.....#
|
||||
#.#.#####.#.#####.#.###.#.#.###############.#.#.#.#####.#.#.#.#########.#####.#.#.#.###.#.#.#.#######.#.#.###.#.###.#.#########.#######.#####
|
||||
#.#.#...#.#.#.....#.....#...#...........#...#.#.#...###.#.#.#.......###...###...#.#...#.#.#...#.......#.#...#.#.#...#.......###.#.......#...#
|
||||
#.#.#.#.#.#.#.###############.#########.#.###.#.###.###.#.#.#######.#####.#######.###.#.#.#####.#######.###.#.#.#.#########.###.#.#######.#.#
|
||||
#.#...#...#...#...#.....#.....#...#.....#.#...#.#...#...#.#.#.......#####.....###...#.#.#.....#.........#...#...#...........#...#.........#.#
|
||||
#.#############.#.#.###.#.#####.#.#.#####.#.###.#.###.###.#.#.###############.#####.#.#.#####.###########.###################.#############.#
|
||||
#...#.......#...#...###.#.#.....#...#...#.#.###.#.#...#...#.#.......#####.....#...#.#.#.#...#.....#.......#...#...###...#...#.#.....#.......#
|
||||
###.#.#####.#.#########.#.#.#########.#.#.#.###.#.#.###.###.#######.#####.#####.#.#.#.#.#.#.#####.#.#######.#.#.#.###.#.#.#.#.#.###.#.#######
|
||||
###...#.....#.###.......#.#.....#...#.#.#...#...#.#...#...#.#.....#.#####...#...#...#.#.#.#.#.....#...#...#.#.#.#.#...#...#...#...#.#.......#
|
||||
#######.#####.###.#######.#####.#.#.#.#.#####.###.###.###.#.#.###.#.#######.#.#######.#.#.#.#.#######.#.#.#.#.#.#.#.#############.#.#######.#
|
||||
###.....#...#.#...#.......#...#.#.#...#.....#.#...###...#.#.#.#...#...###...#.....#...#.#.#...###...#...#.#.#...#.#.#.............#.........#
|
||||
###.#####.#.#.#.###.#######.#.#.#.#########.#.#.#######.#.#.#.#.#####.###.#######.#.###.#.#######.#.#####.#.#####.#.#.#######################
|
||||
#...#.....#...#.....#...#...#...#.#.........#.#.###.....#.#.#.#...#...###.###.....#.#...#...#.....#.......#.#.....#.#.#.........#...........#
|
||||
#.###.###############.#.#.#######.#.#########.#.###.#####.#.#.###.#.#####.###.#####.#.#####.#.#############.#.#####.#.#.#######.#.#########.#
|
||||
#.#...###...#.........#.#.....#...#.....#...#.#...#.....#.#.#.###.#...#E#...#.....#.#.....#.#...............#.......#...#.......#.#.........#
|
||||
#.#.#####.#.#.#########.#####.#.#######.#.#.#.###.#####.#.#.#.###.###.#.###.#####.#.#####.#.#############################.#######.#.#########
|
||||
#...#.....#...#.......#.......#.#.......#.#.#.....#.....#.#.#.#...#...#.#...###...#.#.....#.#.................#...#.....#.........#.........#
|
||||
#####.#########.#####.#########.#.#######.#.#######.#####.#.#.#.###.###.#.#####.###.#.#####.#.###############.#.#.#.###.###################.#
|
||||
#...#...........#...#...#...#...#.........#.....###.....#.#.#.#...#...#...###...#...#.....#.#.#...#.........#.#.#.#...#...#.....#...........#
|
||||
#.#.#############.#.###.#.#.#.#################.#######.#.#.#.###.###.#######.###.#######.#.#.#.#.#.#######.#.#.#.###.###.#.###.#.###########
|
||||
#.#.....#.........#...#...#...#.........#.....#...#...#.#.#.#...#...#...###...#...#.......#.#.#.#...#...#...#...#.#...###...#...#...........#
|
||||
#.#####.#.###########.#########.#######.#.###.###.#.#.#.#.#.###.###.###.###.###.###.#######.#.#.#####.#.#.#######.#.#########.#############.#
|
||||
#.....#.#.........#...#...#...#.......#.#.###...#...#.#.#.#.#...###.#...#...#...#...#.....#.#.#.#.....#...#...###...#...#.....#...#...#.....#
|
||||
#####.#.#########.#.###.#.#.#.#######.#.#.#####.#####.#.#.#.#.#####.#.###.###.###.###.###.#.#.#.#.#########.#.#######.#.#.#####.#.#.#.#.#####
|
||||
#.....#...#...#...#.....#...#.###.....#...#...#...#...#.#.#.#.....#...###...#...#.#...###...#...#...........#.......#.#.#.#...#.#...#.#.....#
|
||||
#.#######.#.#.#.#############.###.#########.#.###.#.###.#.#.#####.#########.###.#.#.###############################.#.#.#.#.#.#.#####.#####.#
|
||||
#...#...#...#...#...#...#...#...#...#...#...#...#...###...#.#.....#...#...#.....#.#.#...###...#.....#...#.........#...#.#...#.#...###.#...#.#
|
||||
###.#.#.#########.#.#.#.#.#.###.###.#.#.#.#####.###########.#.#####.#.#.#.#######.#.#.#.###.#.#.###.#.#.#.#######.#####.#####.###.###.#.#.#.#
|
||||
###...#.......#...#...#.#.#...#...#...#.#.#.....#...#...###.#.....#.#...#.#.....#...#.#.#...#.#...#...#...###...#.......###...#...#...#.#...#
|
||||
#############.#.#######.#.###.###.#####.#.#.#####.#.#.#.###.#####.#.#####.#.###.#####.#.#.###.###.###########.#.###########.###.###.###.#####
|
||||
#...#...#.....#.###...#...###...#.....#...#.......#...#...#.#...#.#.#.....#.#...#...#.#.#...#...#.............#...#.......#.....#...#...#...#
|
||||
#.#.#.#.#.#####.###.#.#########.#####.###################.#.#.#.#.#.#.#####.#.###.#.#.#.###.###.#################.#.#####.#######.###.###.#.#
|
||||
#.#...#...#...#...#.#...#.....#.....#...#...#.....#.......#...#...#.#...#...#.#...#...#.....#...#...........#...#...#.....###...#.....###.#.#
|
||||
#.#########.#.###.#.###.#.###.#####.###.#.#.#.###.#.###############.###.#.###.#.#############.###.#########.#.#.#####.#######.#.#########.#.#
|
||||
#.....#...#.#...#.#...#.#...#.#...#...#.#.#.#...#...#.........###...#...#...#...#...........#.###.#.......#...#.......#...#...#.....#...#.#.#
|
||||
#####.#.#.#.###.#.###.#.###.#.#.#.###.#.#.#.###.#####.#######.###.###.#####.#####.#########.#.###.#.#####.#############.#.#.#######.#.#.#.#.#
|
||||
#.....#.#...###...###.#.....#...#.....#.#.#...#.###...#.....#.....#...#.....#.....#.......#.#...#.#.#.....#...#...###...#...#.......#.#...#.#
|
||||
#.#####.#############.#################.#.###.#.###.###.###.#######.###.#####.#####.#####.#.###.#.#.#.#####.#.#.#.###.#######.#######.#####.#
|
||||
#.....#.#...........#.......#...#...###...###.#.....#...#...#...#...###.......#...#...#...#...#.#...#.......#...#.....#.......###.....#.....#
|
||||
#####.#.#.#########.#######.#.#.#.#.#########.#######.###.###.#.#.#############.#.###.#.#####.#.#######################.#########.#####.#####
|
||||
#.....#.#.........#.........#.#.#.#.........#.....#...###.....#...#.........#...#.....#.......#.#...#...................#...#...#.....#.....#
|
||||
#.#####.#########.###########.#.#.#########.#####.#.###############.#######.#.#################.#.#.#.###################.#.#.#.#####.#####.#
|
||||
#.......#.........#.........#.#...#...#...#.....#.#.#.............#.......#.#.......#.....#...#...#...#...#...#...#...###.#.#.#.#...#.#.....#
|
||||
#########.#########.#######.#.#####.#.#.#.#####.#.#.#.###########.#######.#.#######.#.###.#.#.#########.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.#####
|
||||
###.......#...#...#.#.......#.#.....#...#.#...#.#...#.#.......#...#...#...#.........#.#...#.#.....#.....#...#...#...#.....#...#...#...#.....#
|
||||
###.#######.#.#.#.#.#.#######.#.#########.#.#.#.#####.#.#####.#.###.#.#.#############.#.###.#####.#.#######################################.#
|
||||
#...#.......#...#...#.........#.........#...#...#.....#.....#.#.#...#.#.........#...#.#...#...#...#.#.......#.....#.......#...#...#...#...#.#
|
||||
#.###.#################################.#########.#########.#.#.#.###.#########.#.#.#.###.###.#.###.#.#####.#.###.#.#####.#.#.#.#.#.#.#.#.#.#
|
||||
#.....#...#...#...#...#...#...#...#.....#.......#...#.......#...#.#...#.....###...#...###...#.#...#.#.#...#...###...#...#...#.#.#.#.#.#.#...#
|
||||
#######.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#####.#####.###.#.###########.#.###.###.###############.#.###.#.#.#.#.###########.#.#####.#.#.#.#.#.#####
|
||||
#.......#...#.#.#.#.#...#.#.#...#...#...#.#.....#...#.###.....#...#...#...#.#...#...#...###.#...#.#.#...#.#...........#.....#...#.#.#...#...#
|
||||
#.###########.#.#.#.#####.#.#########.#.#.#.#####.###.###.###.#.#####.###.#.#.#.#.#.#.#.###.###.#.#.#####.#.###############.#####.#.#####.#.#
|
||||
#...........#.#.#.#.....#.#.........#.#...#...#...#...#...#...#.....#.#...#.#.#...#.#.#.#...#...#...#.....#.#.......#.....#.....#...#...#.#.#
|
||||
###########.#.#.#.#####.#.#########.#.#######.#.###.###.###.#######.#.#.###.#.#####.#.#.#.###.#######.#####.#.#####.#.###.#####.#####.#.#.#.#
|
||||
#.....#...#.#.#.#.#...#.#.....#...#...#.......#...#.###.#...#.......#.#...#.#.....#...#.#...#.#.....#.......#.....#...###.......#.....#...#.#
|
||||
#.###.#.#.#.#.#.#.#.#.#.#####.#.#.#####.#########.#.###.#.###.#######.###.#.#####.#####.###.#.#.###.#############.###############.#########.#
|
||||
#...#.#.#...#...#...#...#...#...#.....#...#...#...#...#.#.###.......#.#...#.###...#.....###...#...#.............#...#...#.....#...#.........#
|
||||
###.#.#.#################.#.#########.###.#.#.#.#####.#.#.#########.#.#.###.###.###.#############.#############.###.#.#.#.###.#.###.#########
|
||||
#...#.#.........#.....#...#.#.......#...#...#.#.#.....#.#.#...#.....#.#...#.....#...#.....###...#.....#.......#...#...#...#...#.#...#.......#
|
||||
#.###.#########.#.###.#.###.#.#####.###.#####.#.#.#####.#.#.#.#.#####.###.#######.###.###.###.#.#####.#.#####.###.#########.###.#.###.#####.#
|
||||
#...#.#.........#.#...#...#...#...#...#.......#.#.###...#.#.#.#.....#.###.......#...#...#...#.#.......#.#.....###...........#...#.....#...#.#
|
||||
###.#.#.#########.#.#####.#####.#.###.#########.#.###.###.#.#.#####.#.#########.###.###.###.#.#########.#.###################.#########.#.#.#
|
||||
#...#...#...#...#.#...#...###...#.....###...###.#...#...#.#.#.###...#.#...#...#...#...#.#...#.........#.#.#...###...###.......#.....#...#...#
|
||||
#.#######.#.#.#.#.###.#.#####.###########.#.###.###.###.#.#.#.###.###.#.#.#.#.###.###.#.#.###########.#.#.#.#.###.#.###.#######.###.#.#######
|
||||
#.......#.#.#.#.#.#...#.#...#...........#.#...#...#...#.#.#.#...#...#...#...#.###...#...#.#.....#...#...#...#...#.#.#...#.......###.#.......#
|
||||
#######.#.#.#.#.#.#.###.#.#.###########.#.###.###.###.#.#.#.###.###.#########.#####.#####.#.###.#.#.###########.#.#.#.###.#########.#######.#
|
||||
#.......#.#...#.#.#.....#.#.###.......#.#...#.#...#...#.#.#...#...#.#.........#.....#.....#...#.#.#...#.........#.#.#.#...#...#...#.#...#...#
|
||||
#.#######.#####.#.#######.#.###.#####.#.###.#.#.###.###.#.###.###.#.#.#########.#####.#######.#.#.###.#.#########.#.#.#.###.#.#.#.#.#.#.#.###
|
||||
#...#...#.....#...###.....#.....#...#...###.#.#...#.###.#.###...#.#.#.#...#...#.....#.#...###.#.#...#.#.....###...#...#.....#...#.#.#.#.#...#
|
||||
###.#.#.#####.#######.###########.#.#######.#.###.#.###.#.#####.#.#.#.#.#.#.#.#####.#.#.#.###.#.###.#.#####.###.#################.#.#.#.###.#
|
||||
#...#.#...#...#.......#...........#.#...#...#.#...#.#...#.#...#.#...#...#.#.#.#...#.#.#.#...#.#.#...#.#...#...#.#.................#...#.#...#
|
||||
#.###.###.#.###.#######.###########.#.#.#.###.#.###.#.###.#.#.#.#########.#.#.#.#.#.#.#.###.#.#.#.###.#.#.###.#.#.#####################.#.###
|
||||
#...#...#...###.....#...#...........#.#.#...#.#.###.#...#...#.#.......#...#.#.#.#.#.#...###...#.#.###.#.#...#...#.###.................#.#...#
|
||||
###.###.###########.#.###.###########.#.###.#.#.###.###.#####.#######.#.###.#.#.#.#.###########.#.###.#.###.#####.###.###############.#.###.#
|
||||
###...#.#...........#.#...#...#.....#.#...#.#.#.#...#...###...#...#...#...#.#...#.#.....#.......#...#.#.#...#...#.....#...#...........#...#.#
|
||||
#####.#.#.###########.#.###.#.#.###.#.###.#.#.#.#.###.#####.###.#.#.#####.#.#####.#####.#.#########.#.#.#.###.#.#######.#.#.#############.#.#
|
||||
#.....#.#.....#.......#.....#.#.#...#.###.#.#.#.#...#.....#.#...#.#.....#.#...#...#.....#...#...#...#...#...#.#.....#...#.#...###...#...#...#
|
||||
#.#####.#####.#.#############.#.#.###.###.#.#.#.###.#####.#.#.###.#####.#.###.#.###.#######.#.#.#.#########.#.#####.#.###.###.###.#.#.#.#####
|
||||
#...#...#.....#...#...........#.#.#...#...#.#...#...#...#.#.#.###.....#.#.#...#...#.......#.#.#.#...#.......#.....#...###...#.....#...#.....#
|
||||
###.#.###.#######.#.###########.#.#.###.###.#####.###.#.#.#.#.#######.#.#.#.#####.#######.#.#.#.###.#.###########.#########.###############.#
|
||||
#...#...#.#.......#.........#...#.#...#...#...#...#...#.#.#.#.#.......#.#...#.....#.......#...#.....#.....#.....#.....#.....#...#...........#
|
||||
#.#####.#.#.###############.#.###.###.###.###.#.###.###.#.#.#.#.#######.#####.#####.#####################.#.###.#####.#.#####.#.#.###########
|
||||
#...#...#.#.#...............#.#...#...#...#...#...#...#...#.#.#...#...#...###.#...#.....#.......#.........#.#...#...#.#.....#.#.#.........###
|
||||
###.#.###.#.#.###############.#.###.###.###.#####.###.#####.#.###.#.#.###.###.#.#.#####.#.#####.#.#########.#.###.#.#.#####.#.#.#########.###
|
||||
#...#.#...#.#.....#.........#.#...#...#...#...###...#.#...#...#...#.#...#...#.#.#.#.....#.#.....#.........#.#...#.#...#...#...#.#...#...#...#
|
||||
#.###.#.###.#####.#.#######.#.###.###.###.###.#####.#.#.#.#####.###.###.###.#.#.#.#.#####.#.#############.#.###.#.#####.#.#####.#.#.#.#.###.#
|
||||
#...#.#.#...#.....#.###.....#.#...#...###...#.....#.#...#.....#.#...#...#...#.#.#.#.......#.....#.........#...#.#.......#...#...#.#.#.#...#.#
|
||||
###.#.#.#.###.#####.###.#####.#.###.#######.#####.#.#########.#.#.###.###.###.#.#.#############.#.###########.#.###########.#.###.#.#.###.#.#
|
||||
###.#.#.#...#.....#.#...#...#.#...#.#.......#...#.#...#.....#.#...###...#.###...#...#.....#.....#.#...#.....#.#.#.....#.....#.....#.#...#.#.#
|
||||
###.#.#.###.#####.#.#.###.#.#.###.#.#.#######.#.#.###.#.###.#.#########.#.#########.#.###.#.#####.#.#.#.###.#.#.#.###.#.###########.###.#.#.#
|
||||
#...#.#.....#...#.#.#.....#...###...#.#...#...#...###.#...#.#.#.........#...#.......#.###.#.....#...#.#.###...#.#...#.#...........#...#.#.#.#
|
||||
#.###.#######.#.#.#.#################.#.#.#.#########.###.#.#.#.###########.#.#######.###.#####.#####.#.#######.###.#.###########.###.#.#.#.#
|
||||
#...#.#.......#...#.#.................#.#.#.#.....#...#...#...#...#.....#...#...#.....#...#...#.###...#...#.....#...#.#...........###.#.#.#.#
|
||||
###.#.#.###########.#.#################.#.#.#.###.#.###.#########.#.###.#.#####.#.#####.###.#.#.###.#####.#.#####.###.#.#############.#.#.#.#
|
||||
###.#.#...#...#...#.#.........#...#...#.#...#...#.#...#.....#...#...#...#.....#.#.###...#...#.#...#.....#.#.#...#.###...#...###.....#...#...#
|
||||
###.#.###.#.#.#.#.#.#########.#.#.#.#.#.#######.#.###.#####.#.#.#####.#######.#.#.###.###.###.###.#####.#.#.#.#.#.#######.#.###.###.#########
|
||||
#...#.###...#...#...#.........#.#.#.#.#.....#...#.....#...#...#.....#...#...#.#.#.#...#...###...#.#.....#.#...#.#.........#.....#...#...#...#
|
||||
#.###.###############.#########.#.#.#.#####.#.#########.#.#########.###.#.#.#.#.#.#.###.#######.#.#.#####.#####.#################.###.#.#.#.#
|
||||
#.....#...#...........#.......#.#.#.#...#...#...#...#...#.#.........#...#.#.#.#...#...#.###...#...#.#.....#.....#...#...........#.....#...#.#
|
||||
#######.#.#.###########.#####.#.#.#.###.#.#####.#.#.#.###.#.#########.###.#.#.#######.#.###.#.#####.#.#####.#####.#.#.#########.###########.#
|
||||
#.....#.#.#...#...#...#.###...#.#.#.#...#.#.....#.#.#...#.#.....#...#.....#.#.#.......#.....#.#.....#.....#...#...#.#.........#...#.........#
|
||||
#.###.#.#.###.#.#.#.#.#.###.###.#.#.#.###.#.#####.#.###.#.#####.#.#.#######.#.#.#############.#.#########.###.#.###.#########.###.#.#########
|
||||
#...#...#.....#.#.#.#.#.#...#...#.#.#...#.#.#...#.#.#...#.#...#...#.......#.#.#...#...#...#...#...#...#...#...#.#...#...#...#...#.#.........#
|
||||
###.###########.#.#.#.#.#.###.###.#.###.#.#.#.#.#.#.#.###.#.#.###########.#.#.###.#.#.#.#.#.#####.#.#.#.###.###.#.###.#.#.#.###.#.#########.#
|
||||
###.............#...#...#.....###...###...#...#...#...###...#.............#...###...#...#...#####...#...###.....#.....#...#.....#...........#
|
||||
#############################################################################################################################################
|
||||
@@ -1,5 +0,0 @@
|
||||
029A
|
||||
980A
|
||||
179A
|
||||
456A
|
||||
379A
|
||||
2244
Inputs/Day22.txt
2244
Inputs/Day22.txt
File diff suppressed because it is too large
Load Diff
3380
Inputs/Day23.txt
3380
Inputs/Day23.txt
File diff suppressed because it is too large
Load Diff
313
Inputs/Day24.txt
313
Inputs/Day24.txt
@@ -1,313 +0,0 @@
|
||||
x00: 1
|
||||
x01: 0
|
||||
x02: 1
|
||||
x03: 1
|
||||
x04: 0
|
||||
x05: 0
|
||||
x06: 1
|
||||
x07: 1
|
||||
x08: 0
|
||||
x09: 1
|
||||
x10: 1
|
||||
x11: 1
|
||||
x12: 1
|
||||
x13: 1
|
||||
x14: 0
|
||||
x15: 1
|
||||
x16: 0
|
||||
x17: 1
|
||||
x18: 0
|
||||
x19: 1
|
||||
x20: 1
|
||||
x21: 0
|
||||
x22: 0
|
||||
x23: 0
|
||||
x24: 1
|
||||
x25: 1
|
||||
x26: 1
|
||||
x27: 0
|
||||
x28: 1
|
||||
x29: 1
|
||||
x30: 1
|
||||
x31: 0
|
||||
x32: 0
|
||||
x33: 1
|
||||
x34: 1
|
||||
x35: 0
|
||||
x36: 0
|
||||
x37: 0
|
||||
x38: 1
|
||||
x39: 0
|
||||
x40: 0
|
||||
x41: 0
|
||||
x42: 0
|
||||
x43: 1
|
||||
x44: 1
|
||||
y00: 1
|
||||
y01: 0
|
||||
y02: 0
|
||||
y03: 1
|
||||
y04: 1
|
||||
y05: 0
|
||||
y06: 0
|
||||
y07: 0
|
||||
y08: 0
|
||||
y09: 0
|
||||
y10: 0
|
||||
y11: 1
|
||||
y12: 0
|
||||
y13: 0
|
||||
y14: 0
|
||||
y15: 0
|
||||
y16: 1
|
||||
y17: 0
|
||||
y18: 0
|
||||
y19: 1
|
||||
y20: 0
|
||||
y21: 1
|
||||
y22: 0
|
||||
y23: 1
|
||||
y24: 0
|
||||
y25: 0
|
||||
y26: 1
|
||||
y27: 0
|
||||
y28: 0
|
||||
y29: 1
|
||||
y30: 0
|
||||
y31: 0
|
||||
y32: 0
|
||||
y33: 1
|
||||
y34: 0
|
||||
y35: 0
|
||||
y36: 0
|
||||
y37: 1
|
||||
y38: 0
|
||||
y39: 0
|
||||
y40: 1
|
||||
y41: 0
|
||||
y42: 1
|
||||
y43: 1
|
||||
y44: 1
|
||||
|
||||
x44 XOR y44 -> drc
|
||||
phq OR frm -> hjs
|
||||
vdh AND nwn -> gqd
|
||||
y40 XOR x40 -> vkn
|
||||
x21 XOR y21 -> cnb
|
||||
cnb AND wmb -> vvk
|
||||
dfb XOR bfn -> hbk
|
||||
bhd XOR mmh -> z06
|
||||
fkc XOR bwj -> z22
|
||||
gnj AND jfw -> spq
|
||||
dwh AND kqn -> fhp
|
||||
x19 AND y19 -> kkg
|
||||
drc XOR qqt -> z44
|
||||
fkc AND bwj -> jbb
|
||||
y32 XOR x32 -> qwt
|
||||
y37 AND x37 -> kgg
|
||||
x07 AND y07 -> dqn
|
||||
dsp AND bvp -> hff
|
||||
pmv OR pkn -> wmt
|
||||
cjf OR pfk -> z45
|
||||
hgq XOR phb -> z27
|
||||
qnq OR dpc -> djp
|
||||
x32 AND y32 -> nbb
|
||||
qwt AND jqm -> fdk
|
||||
x18 XOR y18 -> grp
|
||||
vkf OR hdm -> kqn
|
||||
cqv AND jss -> bwd
|
||||
x00 AND y00 -> jfw
|
||||
cjb XOR srm -> z19
|
||||
jss XOR cqv -> z35
|
||||
ntt OR spq -> ndd
|
||||
cqm XOR qqj -> z43
|
||||
x01 AND y01 -> ntt
|
||||
y14 XOR x14 -> dfb
|
||||
nbk XOR wrk -> z05
|
||||
dvw AND rpg -> z23
|
||||
vvc OR kcv -> qqj
|
||||
bqc XOR fwr -> z26
|
||||
dwh XOR kqn -> z41
|
||||
x15 XOR y15 -> bkb
|
||||
rjm XOR gjr -> z24
|
||||
x22 XOR y22 -> bwj
|
||||
y22 AND x22 -> hpj
|
||||
x08 XOR y08 -> hnf
|
||||
y27 AND x27 -> frm
|
||||
wrw OR swr -> fds
|
||||
gtm AND rmt -> mkv
|
||||
kdh AND qvq -> ghr
|
||||
fgv AND mfm -> kcv
|
||||
hnf AND gqs -> pmv
|
||||
kkg OR qvs -> vdh
|
||||
fdk OR nbb -> rmt
|
||||
y29 AND x29 -> cwd
|
||||
hjk OR bts -> vkg
|
||||
vtk AND npm -> tqb
|
||||
dvw XOR rpg -> dbb
|
||||
y39 XOR x39 -> mnm
|
||||
y05 XOR x05 -> wrk
|
||||
djd AND fds -> dqt
|
||||
tvh OR sqm -> npm
|
||||
cdr XOR cmt -> z10
|
||||
x28 XOR y28 -> hgd
|
||||
x33 XOR y33 -> gtm
|
||||
mnm XOR vhv -> z39
|
||||
fbv XOR bwg -> z38
|
||||
hqs AND nhr -> vbt
|
||||
kth OR qcp -> hgq
|
||||
wjj OR scs -> bfn
|
||||
bkv OR vvk -> fkc
|
||||
cmt AND cdr -> pph
|
||||
dqt OR gqb -> bqc
|
||||
y35 XOR x35 -> jss
|
||||
vkb OR krd -> cdr
|
||||
mqf AND cvh -> trj
|
||||
x36 XOR y36 -> dsp
|
||||
y41 XOR x41 -> dwh
|
||||
y38 XOR x38 -> bwg
|
||||
ghr OR tpc -> jqm
|
||||
ckn XOR hqq -> z07
|
||||
vkn AND vkg -> vkf
|
||||
y28 AND x28 -> wkc
|
||||
x31 XOR y31 -> qvq
|
||||
rjm AND gjr -> swr
|
||||
gcb OR dbb -> rjm
|
||||
y18 AND x18 -> z18
|
||||
y24 AND x24 -> wrw
|
||||
x17 XOR y17 -> kbh
|
||||
y24 XOR x24 -> gjr
|
||||
x26 XOR y26 -> fwr
|
||||
y43 AND x43 -> bvm
|
||||
y15 AND x15 -> sbt
|
||||
y12 XOR x12 -> fvh
|
||||
kvn OR ffb -> cjb
|
||||
y31 AND x31 -> tpc
|
||||
y37 XOR x37 -> bnh
|
||||
y11 AND x11 -> scv
|
||||
hgd AND hjs -> phr
|
||||
jfw XOR gnj -> z01
|
||||
fvh XOR sfk -> z12
|
||||
fds XOR djd -> z25
|
||||
qwt XOR jqm -> z32
|
||||
bvp XOR dsp -> z36
|
||||
phr OR wkc -> jdq
|
||||
y07 XOR x07 -> hqq
|
||||
y43 XOR x43 -> cqm
|
||||
bnh XOR kss -> z37
|
||||
trg OR vbt -> kdh
|
||||
cwd OR pkc -> nhr
|
||||
y19 XOR x19 -> srm
|
||||
dkd AND jdq -> pkc
|
||||
wrk AND nbk -> fnk
|
||||
hjs XOR hgd -> z28
|
||||
rnt AND qbs -> rcp
|
||||
djp XOR mft -> z03
|
||||
cht OR mkv -> mqf
|
||||
hbk XOR bkb -> z15
|
||||
x44 AND y44 -> pfk
|
||||
x26 AND y26 -> qcp
|
||||
ndd XOR jgw -> z02
|
||||
x06 AND y06 -> dhs
|
||||
ckn AND hqq -> cpt
|
||||
y13 AND x13 -> wjj
|
||||
x10 AND y10 -> tvr
|
||||
ffr OR gqd -> wmb
|
||||
y09 XOR x09 -> tjb
|
||||
nhr XOR hqs -> z30
|
||||
hgq AND phb -> phq
|
||||
x00 XOR y00 -> z00
|
||||
y16 AND x16 -> prt
|
||||
dqn OR cpt -> gqs
|
||||
x23 AND y23 -> gcb
|
||||
mft AND djp -> tvh
|
||||
bkb AND hbk -> qtw
|
||||
kfk AND chk -> vgb
|
||||
vhv AND mnm -> hjk
|
||||
y42 XOR x42 -> mfm
|
||||
x25 XOR y25 -> djd
|
||||
fgv XOR mfm -> z42
|
||||
grp XOR fgr -> kvn
|
||||
x16 XOR y16 -> chk
|
||||
x09 AND y09 -> krd
|
||||
cqb OR rmg -> mqm
|
||||
y30 XOR x30 -> hqs
|
||||
kss AND bnh -> dvf
|
||||
y11 XOR x11 -> rnt
|
||||
x04 AND y04 -> ptm
|
||||
y13 XOR x13 -> cbr
|
||||
rnt XOR qbs -> z11
|
||||
hff OR fjf -> kss
|
||||
x25 AND y25 -> gqb
|
||||
kdh XOR qvq -> z31
|
||||
y06 XOR x06 -> mmh
|
||||
cnb XOR wmb -> z21
|
||||
y02 XOR x02 -> jgw
|
||||
x17 AND y17 -> hkn
|
||||
y34 AND x34 -> cvh
|
||||
x27 XOR y27 -> phb
|
||||
x42 AND y42 -> vvc
|
||||
x03 XOR y03 -> mft
|
||||
y35 AND x35 -> nvg
|
||||
x10 XOR y10 -> cmt
|
||||
y20 AND x20 -> ffr
|
||||
x30 AND y30 -> trg
|
||||
ptm OR tqb -> nbk
|
||||
bfn AND dfb -> sjr
|
||||
jgw AND ndd -> qnq
|
||||
y39 AND x39 -> bts
|
||||
y38 AND x38 -> knq
|
||||
npm XOR vtk -> z04
|
||||
prt OR vgb -> jqc
|
||||
kfk XOR chk -> z16
|
||||
rvd OR dhs -> ckn
|
||||
fnk OR wkv -> bhd
|
||||
y03 AND x03 -> sqm
|
||||
x08 AND y08 -> pkn
|
||||
y02 AND x02 -> dpc
|
||||
bwg AND fbv -> pdw
|
||||
mqf XOR cvh -> z34
|
||||
tjb AND wmt -> vkb
|
||||
jdq XOR dkd -> z29
|
||||
x34 XOR y34 -> tfn
|
||||
y21 AND x21 -> bkv
|
||||
tfn OR trj -> cqv
|
||||
fgr AND grp -> ffb
|
||||
bwd OR nvg -> bvp
|
||||
cjv OR hkn -> fgr
|
||||
fhp OR rnc -> fgv
|
||||
sjr OR tck -> z14
|
||||
vkn XOR vkg -> z40
|
||||
kbh XOR jqc -> z17
|
||||
kgg OR dvf -> fbv
|
||||
tjb XOR wmt -> z09
|
||||
tvr OR pph -> qbs
|
||||
qqj AND cqm -> gsg
|
||||
pdw OR knq -> vhv
|
||||
gqs XOR hnf -> z08
|
||||
y20 XOR x20 -> nwn
|
||||
kbh AND jqc -> cjv
|
||||
bqc AND fwr -> kth
|
||||
rcp OR scv -> sfk
|
||||
sbt OR qtw -> kfk
|
||||
bhd AND mmh -> rvd
|
||||
nwn XOR vdh -> z20
|
||||
y29 XOR x29 -> dkd
|
||||
y23 XOR x23 -> rpg
|
||||
jbb OR hpj -> dvw
|
||||
cbr XOR mqm -> z13
|
||||
y33 AND x33 -> cht
|
||||
y12 AND x12 -> rmg
|
||||
mqm AND cbr -> scs
|
||||
sfk AND fvh -> cqb
|
||||
y14 AND x14 -> tck
|
||||
x04 XOR y04 -> vtk
|
||||
y05 AND x05 -> wkv
|
||||
rmt XOR gtm -> z33
|
||||
y01 XOR x01 -> gnj
|
||||
srm AND cjb -> qvs
|
||||
x36 AND y36 -> fjf
|
||||
drc AND qqt -> cjf
|
||||
y40 AND x40 -> hdm
|
||||
y41 AND x41 -> rnc
|
||||
gsg OR bvm -> qqt
|
||||
3999
Inputs/Day25.txt
3999
Inputs/Day25.txt
File diff suppressed because it is too large
Load Diff
206
Inputs/Day3.txt
206
Inputs/Day3.txt
@@ -1,6 +1,200 @@
|
||||
where())what()@)select()why()?mul(371,776)/%how()'~+:how()mul(977,266)@$@mul(749,170)how()<;$^#what()select()mul(338,975)>from()+,{select()!!mul(626,938)%/>^{((}]mul(733,977)>)() +$)mul(695,376)!%#how()mul(767,788)<(mul(876,501)mul(18,72)[*when(625,65)<mul(515,137)>*('what()mul(491,884)from()?{>how()mul(645,385)/[when(){what()why()mul(802,476)#'select()who(327,719)+-,##mul(103,807)#(mul(192,909):@'^where(247,392)!who()</mul(305,182)[@[;!;mul(553,402)<%mul(247,89)!mul(91,152)$@mul(502,543)+why()what()[when()@>^mul(875,344)why()mul(205,505)?;?when()!],mul(165,670),#$++'>)'mul(503,815):mul(483,302)~+*}!$where()why()&mul(785,794)/,{why();where(218,722)}when()don't();!mul(405,577)where()@mul(521,472){how()what()'what() where(55,484)mul(360,384)%mul(176,384)}%when()-$%what(436,501)mul(652,387)mul(758,52)-~@,*-@mul(343,835)when()select()](;#mul(76,425)from()>})]mul(720,464)#~)why()why()mul(619,682))mul(15,67)mul(569,569)]where()++&@:[#mul(844,620)select()+^*what()why(197,509) mul(280,807)%^mul(233,435)}?*:+^^what()!when()mul(69,464)& )]$mul(393,827)@]^mul(64,552):^)*<&where()?#mul(51,727)mul(159,242),+what())>+mul(140,116)do()~?mul(590,950)};[*;;when()mul(186,556)]&;#&##*!mul(806,651)^select()who()[mul(820,386);?from()mul(771,404)-$+#]&where()}mul(473,823)don't()when(874,250)'}mul(916,835)mul(432,92)how(), :mul(2,546)who(61,440), -mul(486,858)where(869,462)do()'select()&?+&why()where()>>mul(796,512){~(when():^>*&'mul(927,22)%;where()who()^$mul(203,851)%how()mul(820,954)from())~#<don't()select();@??]?mul(693,878)from()when()@/mul(202,438)mul(266,957)from()])[/how()select()don't()+>mul(741,967)select()what()+[[why()&]mul(42,517)>]why()<mul(577,659)&['<where()>,select(297,821):mul(324,191);%{->:!#mul(567,73)don't()?why():^{$*]why()mul(504,229)'mul(40,787)/select()?who();[who()where();$mul(537,42)[#@&*~<@mul(418,58);{}how()*-don't()[<'@from() mul(38,329)-*mul(381,685)what()</:)^(',when()mul(850,565)@,,%select(95,745)#mul(99,343),]^who()[mul(46,377)mul(788,562)?<mul(101,829)]$#-]select()mul(536,292)who(419,754)mul(933:[>?+,,*%)mul(740,7)#)<how()mul(44,988)mul(693,770)why()-;[mul(76,905)where()];mul(457,100)what()mul(63,750)where()!&who()$>#)?^mul(211,355){~#who()<]who()@>~mul(135,667)-^)]'mul(165,161)<;,mul(350,311);%?~}$how(768,325)*mul(773,359)~!(select()?{why()mul(269,149)when()}*who()}mul(536,90)don't()>$ &!where()*who()&mul(405,425)!+mul(304,694)'<#$<<,#select()<mulselect()<?mul(448,840)!]-;mul(79,274)>):%:* -why()#mul[who()when(918,883){ ^''mul(907,968)what()when()[who()>mul(81'how()+what()select()<mul(66,242)mul(32,790)why()why()mul(707,867);{+[@select()@,mul(183,895)~mul(570)],:select(),%{%from()mul(568,881)[{@/}*mul(989,413)^($who()!}<&;mul(380,574)+why()?select()#mul(812,587)why()when()mul(772,647)>;&'']+how()mul(745,379)]^-mul(403,82)mul(840,830)when()+what()how()[!select()mul(827,564)?:]mul(602,333){what()[[mul(606,272)
|
||||
,who()>}who():#from()mul(960,322)where()'<from()why()what()%where()mul(282,700)mul(591,113)<where()%, )mul(17}{')~!-mul(462,619)]mul(422,776)mul(250,987){((mul(880,386)(<>)?,+when() mul(59,855)'mul(308,433)~<how()>[;<why(98,720)@*mul(406,466)-what()when()'do()^mul(293,490)-@;{^why()who()mul(811,340)]^*what()[mul(705,73),:mul(557,31)mul(678,868)how()how()(when()mul:what(),how()where()when(354,851)who(418,214)when()where()mul(500,581)~what()how()mul(109,217)@>$;:mul(486@!>mul(508,605)what()from()mul(597,956)>#' *mul(834,240)}![{who(983,119)]#what()where()mul(533,711))}what()'/-mul(189,207)^*--$?mul(424,618)mul(407,288)why()<[+mul(170,906)&select()[,#who()+,mul(508,516)?who()!}+select()mul(963,397)*/]mul(129,895)$select()'when()^?mul(604,838)>mul(38,524)?why()~)[#*+:mul(793,697))what();}who())]mul(286,779)--where();mul(864,153)*mul(93,786)[$&&+mul(349,493,'~mul(161,724)~+$what():mul(326,607)what()select()mul(108,288)@(where(287,297)~how()<when()how()from()mul!^@->mul(15,832)select()!%( mul(233,322*;%],&@why(660,737)mul(47,778)?mul(68,311)}do()^/>[mul(572,909)^(,$,*~?mul(550,192){select()$${mul(949,906)?[^]@@^what()do()'<what()$mul(318,25)mul(406,742)'mul+['&{[^++@mul(550,647)'@)-mul(339,137),mul(412,523)(select()what()mul(234,64)!$[>mul(581,669)who()how()$~;(where())how()<mulwho()&?]%don't())~@~+mul(879,734)from()))*@#:$?where()mul(954,523)@what()<mul(481,127)]}<'/[who()why()+mul&%mul(244,792){[~mul(706,361)!;mul(658,168)$]mul(386,274)?what()* who()select()where(685,196)$what()mul(929,590)when()who()who()'mul(122,764)^%:@mul(315,523);~+;?/%&mul(97,566)~>what();<>^mul(859,756)mul(323,125%?}%where()mul(694,499),[mul(290,758)how()from()-/*<mul(179,392)how(930,981) ^())*}'$mul(446,657)*why()?]how()how()?from()mul(685,212)%when()' ;;from()?[mulwho(612,115)select()mul(56,213)[]}who()%,mul(241,98)^</%<&~from()mul(786,775) what()mul(748,183)'from()mul(388,111)where(){*}?&select()who()mul(108,115)mul(795,158) (~don't()*select()@:'!^mulselect()mul(838,249)@do() (~%[from()*)mul(327,71)what()%who(142,172)select()[!,what()}]do()>who()&'where()what()where()when()mul(286,592);: how(824,40)^mul(341,311)'&how()};^how()mul(479,155)-&when()%>!from() mul(743,297)/+% mul(785,803)~&/}#($?select()from()mul(378,606)/%when()mul(304,253)who())mul(19 mul(358,187)!/mul(61,423):%: )mul(773,349)select()mul(380,503)where()#%;do()who()$!(:&where()where()mul(25,688who()mul(539,689)?[/(>mul(915,247)how()@ when()why();;from()mul(192,625)?how()who()why()+<~where()!mul(922,457)how()@:+}[&{don't()mul(663,641)& :*]select()from()^>who(646,961)mul(302,499)mul(779,59)#+ /~;}mul(489]mul(883,556)from()#what()#:when():@$^mul(857,680)why(836,2)[mul(815,638)&why()~:why()~mul(960,833)<>from()where()where()$:who()mul(853,356)%;)+ where()from())do()<]mul(139,315){&+why(765,155),what()>@mul(281,247)mul(797,456) <>/:mul(785,173)when()$~-?:select()when()&mul(185,8)mul(510,671)%,when()how()where()from()who()mul(654,885)*who()mul(227,178)} !mul(256,394)
|
||||
mul(888,165);]~mul(93,961)do();where(449,598)*-& #mul(364,267)how()what()where()&@%mul(173,845)+?>({]^-}!mul(500,764)why() , ;where()}mul(509,958)~#when()&'^(#*}mul(567,675)!why()%:(~where(){mul(659,362/<@+mul(442,603)where(232,716)!how()!;)$what()mul(47,742)don't()&{ what()mul(201,59)-how()where()&select()mul(564,724)&when(){><{who(56,63)>#mul(750,782)$,mul(713,443)(^>*who()mul(255,743)+< what()mul(13,455^when()%';how()<<&'%mul(909,623)[?%when()~[$mul(647,666)+why()mul(303,514)mul(866,565)why()*@what()(mul(528,440)mul(580,935)mul(621,192)(from()?who(),!*-mul(834,426),!]/)how()]why()do()how()}!{why()'@~^who()mul(114,512[#^~ select()*who(){^;mul(813,830)+;[#/[do()select()}/^(@!;*mul(667,761;#why()!(+(mul(427,964)why()^where()!;mul(816,813)&select()what()why()$><do()where();)<mul(238~/]^&when()what()what(181,18)mul(755,285) from()how():mul(452,659)#!}]$/what()mul(64,590)%?where()}&}/'}mul(948,939)~what();^+'~mul(688,702)'mul(557,538):'why()(why()from()%mul(731,311)>from()mul(204,891)*#^[-how()how(275,54)mul(862,293)^^/~>,*)mul(858,212)[how()?>where()mul(45,936)select())select() <)where()how()mul(617,746)/ ~%from()~mul(466,629)mul(604,220)why(235,921)^what()^select()who(540,898)what()>mul(893,561),%~(who()how())#+#mul(845};mul(795,975)who(),',mul(988,400)/$+,!$~mul(931,322)( <:%+when()mul+%<&<where():$&where()mul(795,328)'+][{mul(466,329)^mul(190,896){mul(367,236){ --<{~#where()mul(181,169)how(833,790)[/who()mul(876,536)how()(%;/>mul#'mul(892,416)what()why()mul(369,579)''mul(384,303)when()where()[what()-?$[when()mul(179,420):?:select()}when()when();,mul(246,209)select()mul(966,243)[mul(153,599)when()mul(914,433)[from()when()[--#;'!mul(810,766)select()why()$>!when()mul(931,687);select()how()@&mul(98,464)]mul(652,409)#:mul(516,121){<{() @~;how()mul(123,360))^](mul(277,239)mul(840,613)what()%mul(586,205)^]@#/don't()'[;^,$ from()mul(628,557)<)>];+who()mul(878,975from()mul(143,987)+when()*])%what()mul(603,174-from()~?mul(943,847)where(170,904)&#%]who(888,776)mul(302,183)mul(443,591),why():]~:%mul(77,426)when()where()mul(950,995)&mul(274,396)?[from()where()from()mul(409,518)$do()#^{why()mul(613,963)&^ >>;^how()mul(925,923);}mul(852,446*;& mul(743,312)do()%/who()*$]?mul(475,555)(>select();when()[mul(976,68)select()]what() +when()from()><mul(389,991)select(),mul(309,286)who(),where()why()^what(),^mul(400,11){/what()mul(152,74)/why():<*#++^mul(345,21)]who()}!'how()%(mul(679,89)>why()mul(976#>>how():''%what()mul(828,766)!@(mul(798,719)$]*<how()where()[mul(296,310)mul(681,531[>mul(646,954)@why()}from():$why()%/select()mul(741,161)+mul(91,115)^-}when()%++mul(933,749)from()<{when()(mul(909,579)#>;where()mul(211,740)$where()from()who()&mul(255,95)mul(511,373)&@!who()when()$@$?select()mul(2,521)^{)#mul(294,886)why()(!@mul(7,438)%*~(#{'$mul(234,87){+,how()how()mul(890,233)mul(801,729),;&(&mul(421@/+/from()when()/don't()/mul(672,498)what()mul(14,796)^![*what()when()# mul{!where()$where(871,580)}mul(717,476)&)'%?why(905,632)when()what()mul(815,617),how()mul(827,71)>?mul(837,520)*how()select()what())select(),how()$from()mul(952,273 &@mul(106,964)-[where()mul(778,265)}$'mul(947,970)who()<mul(832,154)}{}%[@mul(78,394)#select()[do()^select(){}#!/usr/bin/perl[@'/?~&>?>mul(780,897)
|
||||
/,mul(904,917)how()from()] :%where()why(824,519)$}mul(433,689)-/{where()%>how()mul(232,555)&'@mul(170,145)?-{#?[mul(130<select(954,54)why():when() mul(152,582);{+?%,mul(911,198)+(}why()^!>?from()mul(575,167;~,${;-/)what()when()mul(688,24)&)#^*mul(251,895)(>from()#}]select()?}%mul(583,40)@what()!-mul(396',)!>%%when()}mul(127,975)#mul(986,310)what();from() <{'<mul(818,513))-[^&[mul(788,658who()*who(180,634)what()mul(183,781)mul(973,625)%how()mul(163,168)#%select())()mul/<mul(995,378)>?from()[&who()when()when()[mul(910,515)$mul(261,324)~</-'where(39,447)mul(872,74)mul(622,70)select() mul(648,514)[who(242,434)]<;?+>-mul(124,305)~select()mul(323,359)*~~mul(524}(;mul(145,708) %}what(487,689)%from()mul(371,88)~!)mul(883,681)why(621,555)from()-mul(175,888)&{];-what(569,630):?mul(229,850)&>'where()'mul(269,654]-why()//from()select()}mul(545,830)[?:}mul(849,642)/;(:)}<~mul(928,739)mul(216,77)select():;(when()@(}*]mul(113,497)(!~~;^[!mul(447,997);select()~[>]}~who()don't());}#why(326,879)+)-<(mul(581,152)> ;mul+how(771,784)+&why(582,346)'select()~what()<,mul(239,575)<(]+*from()]~'<mul(828,834)'mul(58,537)}]<mul(116-**><}@who()<-mul(473,971),:($when()from(41,290)what()];do())@^[@ from()mul(603,541)}mul(811,508)*?/!what()[-{mul(994,800 ?/!where()<why(104,314)mul(281,392)who();{who() ;(]when(133,642)mul(207,843)/%'mul(354,644)mulwhen()*;{mul(300,946)>who()where()what()}:what(){^[do()when(284,569)}>mul(150,172,]/<mul(972,952)~]do()how()>when()^mul(231,419)/do()select() }-#mul(671,892)<>/how(789,349)from()@what()#@)mul(315,222)from()}when()/}mul(930,682)>'where()?who()mul(132,978);;:@/#^}do()+mul(447,390): mul(723,622)?(how();$select()mul(980,864);>^why()[?#mul(734,179)# where(),@how()mul(838,788)/{++%mul(272,849):*%/^</$from()mul(453,461))mul(962,132)mul(375,359)!)%how()(?select()who()mul(142,910)?how()from()<$!mul(298,364)#who()+*who()!don't()mul(816,177)+mul(702,924)}(what()mul(989,523)<,,mul(735,588)how(489,394)mul(484,416)+#do()from()^^ $mul(123,782)mul(853,914)mul(203,868){'mul(909,468)why()/?where()$what()who(401,657)mul(786,343)mul(961,300)]{(!<do()^mul(936~mul(793,152)where()from()'-from()<+do()where(){+:mul(859,728)-where()%select()(mulwhat()mul(806,696)@<-mul(684,756),}who()how()~?:select()select()mul(471,727)from()<<why()what()how() }how()]mul(623,35)when():mul(871,956)mul(400,531)]where(), ;select()from()@select()don't()$/{[mul(519,781)[*mul(746,603 -from(112,309)]+ who()mul(217,136)-{+?select()#@%/mul(899,418)*!$+ *mul(154,146) +~where()mul(859,846)!<~%[{do():!(!{~mul(408,608)},/who()!, -mul(744,613)mul(829,465);~}/,'#+#mul(674,197)what()>%mul(466,441how()who()who()<why()where()select()mul(427,642)where();@+where()how(610,397))^mul(731,688)}())~why(29,145)do()(^{select(),<>'@(mul(692,669)#&mul(39,354)-where()from()who()~don't()*( {where();what()#mul(526,300)select(552,879), when()where()select()&-mul(283,140)&&?^ mul(243,254)how()/}who()mul(282,199)select()!](?'what()@&+mul(31,366)}who()mul(640,530)mul(565,470)mul(290,665){what(445,299)}<#%~ ][mul(320,303)-~from()(who()>[('why()don't()~&{)]mul(720,131)#~!!select()mul(3,408)-[where()from()who()}&}mul(558,189)!?[&(do()-^>mul(429,22)$!:>how()<,select()select(629,810)mul(748,450)(/<]?select()!//mul(679,551)how()who();?what()from()-mul(225,868)@{why()mul(177,830),{?^what())mul(229,827)~what()]'how(958,802)?who() (mul(676,215)[)mul(999,210)?]$*,?]-$,mul(661,825)
|
||||
from()<#from()[@>?$(mul(631,608),+mul(946,420),( (^[^+/{mul(569,409),what()who()~mul(702,265);mul(88,623)}who()what()&mul(676,744)from() !+[do():who()^?mul(336,740)?mulwhy()from()!}where()%%mul(571,353)>$,& }>{*mul(276,415)><-do()~(]}mul(308,489)/from()when(579,867)what()~when()?&mul(633,256)how(){?~mul^why()who()>mul(223,473);why()when(),mul(722,306)from()^mul(200,701)!select()?,mul(711,878)how()where())##'+}#@mul(56,894)@[what()mul&-who()when()when()[%>?mul(281,311)where()where()how(){select()'%mul(949#[?:mul(895,313)/mul(25,736)mul*&):-/%who())mul(301,39)what()(mul(767,317)&!what()mul(271,721)(:where() :*&/mul(881,552)mul(117,678)> #),where()%)&$mul(394,101)<)>&who()what()'+mul(496,283)mul*]@+mul(331,181)select()'?:how()!what()-how()]mul(629,183){{(mul(980,656)! when()@{'-,what(),mul(93,847)++where();@select()when()mul(544,305)'#'<,from()>why()>mul(219,755)what(){ ~]}don't()-when();^^when())?~how()mul(590,547)(!from()when()[?}where()mul(930,301)where()^+when()what(733,168){>mul(899,94);:?mul(928,368)mul'what()how() >($mul(625,960)%'&where()select()~mul(584,72)^!mul(55,527);mul(492,224)?($:,',*select()mul(180,326)<what() mul(268,667)?+mul(235,375) *!]!mul(141,332);mul(356,884)from(695,588){{when()*&mul(711,131)*select()-*&mul(143,130)[select()[from(204,615) what()(mul(653,542)>select():{where()mul(824,130)what()mul(683,478)from(918,839)what()mul(582,660)<@*how()*(mul(681,373)(~~>@::]$mul(873,698)<@+when()-^mul(100,128)[^+:where()how(542,879)&{mul(327,603) $+!when()$mul(505,966) ,$~)>mul(193,642){!/,}* mul(784,245)}?what()when()#mul(4,692)<+&%!)mul(184,826)+mul(469,907)from()how(601,83)mul(307,230),@}where(318,472)from()}:})-mul(898,829?$^@where();what()(mul(258,499)mul(212,108){{!&<who()where()mul(38,864) :'#mul#where()mul(119,346)when()from()how()mul(979,593)~when()who()mulwho()where()from()*?who()])!)mul(941,717)what()from(){select()mul(29,799){{({;$don't()&/mul(321,8)mul(593,740)&:when()>what()who()who()mul(983,25)*);who()!, [don't()select();-%*@mul(798,455)when()$>from()where():do()mul(707,598)how())!:select()how()#do()mul(81,685)who()+where()mul(292,774)?/mul(80,716who()*{#;;*do()&%why()+mul(554,30)!select()],{%/what()mul(600,514)#when())do()@what()'%when()mul(955,368)[#/>:?-how() select()mul(170@?)mul(584,682)what()^,?]#@mul(623,37) ;mul(650,391)/%mul(535,768)how()when()mulwhere()when()when()*(mul(193,547)$)[why()'select()$$who()]mul(446,367),what()~@%*mul(675,581)mul(637,187){mul(727,146)}where()<how() mul(800,526)where()from(970,555)+when(),who()##mul(331,931)+[when()mul(604,25)who(265,522)select(330,185)when(){mul(893,602)select()#'(mul(280,461)-what()'-?)?mul(711,860)%&$^;]mul(389,793) }~from();from(233,583)&#)^mul(502,146)where()[mul(66,348):who()-?mul(511,100)+]@mul(329,746)<+how()$}how()/#where()don't(){~how()when()@where()'mul(479,879)why()who()who()who()}when()!from()+^mul(290,234)where()do(),how()mul(740,873):@who()mul(315where(744,335)(->)mul(896,767)select()'-mul(980,725)select()[ *#mul(159,247)!what()who(560,832){-why()what()~&#mul(567,372)-:!]?/why()+:{mul(277,161)-where()'-who()$how()<what(203,370)]do()/??:#[mul(524,458)why()*@!-}$$<:mul(903,579)&why()-$from()!()mul(102,88)-/]~mul(311,176)who(707,558)where(){what()^]mul(410,763)*&how()~;from():%@%mul(606,429<>who()from()'how(),$$when()mul(429,870):@;<#mul(587,942*&;*do()$$select()mul(3,25)when(),-%+:# from(872,943)}mul(782,821)
|
||||
!>mul(851,461)+!where()$!{@!:)mul(93,494):!mul(951,143)+>)why()-{from()what()mul(988,791)mul(931,510)(:where(245,25){'mul(117,354)'what(); [[<don't()what())]:~#who()+mul(225,504%{]who();why()where()@<$<mul(639,292)&(from(),^ mul(104,198)&~ don't();&&[*when()?mul(181,83){why();>@how()select()do()when()?:from()mul(778,261):,+,mul(314,222);<?;who()what(){+mul(816,477)why()from()'where()^+<mul(199,340){-select()&mul(950,14){how()who()<don't()$}%mul(101,370)mul(615,41)how()>,^what(190,985)select() ?<mul(116,361)!@>*,[who()+:-mul(796,495)~/>do()<,}who()^mul(187,492)>'*$!what()mul(991,172)^&}:-mul(458,567)?mul(883,842)mul(755,150),!:%why()}mul(428,866)why()%why()where() (~:mul(352,708)what(370,596)$mul(898select()$why()~from()select()-when()mul(160,761)who(700,128)*mul(944,190)*#}^}from()where()mul(530,978):,+where()[?>mul(553,289)*$@/mul(286,141)what()@':~mulhow(116,291)%[mul(151,627)mul(362,891)~ %-<?;~mul(440,308)from()?<])mul(721,908)mul(45,682)*where(549,565)?~why()how()when()# mul(283,656)#!$when()~what()how()(mul(645,350),what()~^:select()-mul^<)what()what()do();$$when()mul(174,89)^mul(316,811)<~;:<select(619,564)mul(265,577)&why();why()where()&+ 'mul(365,604)?@&*,~what()$mul(568,621){+select():'[/select()mul(765,39!what())+mul(571,963)-:<+who()why()>/:%mul(275,35)@?&mul(276,797)who()/;who())why()when() ~)mul(400,219)where(757,508)}+'+>do()~?from()]~?why()${mul(674,313)]/!#select()^>how()&[do()mul(763,291)[?}><mul(424,631)#:]]mul(283,356)#/mul(999,277)[;;]mul(475,763)>$:;]/ @]mul(923,77)+:/,mul(974,68)}^<}*?(mul(573,391)?^mul(882,854)what()(from(){%!@+when()mul(263,665)'%/<[who(257,651)mul(131,306)#+[why()&,@{who()!mul(378,207)mul(830,423)how(180,743)[<$-)}-don't()mul(104,63)'$~+)/!(do()(?*when()/<:mul(184,312)-mul(457,714)?how()&where():!<(who()mul(832,385)?;&>select(),'[}-mul(409,111)<'who()who()}what(39,120)!<(@mul(466,625))from()'{:;what(),mul(833,127)$+!]mul(107,815)/ {what()what()mul(37,91)[-, what(812,83)?&mul(376,103)};-mul(640,727)select()[$-mul(64,181)mul(734,97)&@why()<#select()/?/mul(164,82)mul(786,473)@{'}mul(206,560)&~mul(784,62)@*^+what():!from()^[mul(206,626)what()[(,{where()from()why()?who()mul(533,212)#where()+how()']}where()((mul(301,424):what()#what()@ >'!do()@what()<what()when()'mul(89,449)select(871,600)+mul(438,837)-('mul(382,10)mul(547,112)mul(27,677)&]/<!#mul(141,36) where()select()$<why()!+mul(333,145)who()!)>mul(965,812)mul(3,550)from()who()!mul(965,728)#>#!)where()*)mul(497,530):when()#mul(352,808)!~{how()*!&mul(552,920)/where()+where()@-#/?mul(896,130)mul(347,579)~@ /^mul(727,709)#-how()&!&&@why()]mul(475,103)*how()/)~who()mul(542,160)mul(743,692)mul(561,997)why()mul(124,866)+}{why() mul(278,696)how()'what()$;?//where()when()mul(17,188)-+where()why();don't()--%<@why()+mul(356,107)%what()^,select()select(607,736):how()-mul(633,572)who()from()/;}select()mul(772,944)]@+/<]select()*?where()mul(858,850)(select()select()where()mul(181,712)~mul(979,178)#?}%?%do():who(268,689)*mul(941,59))-{&&(mul(296,702):@)where()don't()why()when(),mul(405,639)~$),who(575,232),%mul(671,828)
|
||||
2232212212212222211221231124224222213132222133122224222123222112324122222122221322222225222342243112
|
||||
2222312114222314322223142323251122424322142244122212213222222222242526225232262212234353242222112242
|
||||
3325444446453345434534234244443254434533443354443344424431124344542134454433534353443542455544444483
|
||||
2334235313232232645234524223233333333323323333233334323332325633143222333322242333132233233132212325
|
||||
2234311224123424222222224432222333212224412234223312244413252153222112433222334322772215422121224273
|
||||
4522445145543645454343253542221455532354534564325445322522535254222337733425252243221532745237255133
|
||||
2214225223121214462323123283942523226421423233325342644222213411423272383842222442422213122912324522
|
||||
2122242232325524322242212232524425223232232233432221122322233512432222441122422314222122221222212225
|
||||
8222353391373332335354222456125222358233122233316323355352531234333527222223352436381343533536331244
|
||||
2127632636444323427265228625582625772229446462233352433587748742382622354425852874557228522772714265
|
||||
5764566853423796763449339447557566366572334553648326634466376656683936736543746865667784426952852681
|
||||
2121232232222322211232122232213212117222223222221652221222212242222222222333321322222222222122522223
|
||||
3311487326434675433324437437335526732665253343574234535363333477334461753847265314545424442324747728
|
||||
6252536321432743472244167342323675732726575412571775613245775732227775657226312524123527567671676189
|
||||
7533722333717216436553422342221352632923463174227273634221314835124324462631282462922324654573644336
|
||||
3334347211322211322233222241233221232124212322322224423224253425525344442212222284312232222324322414
|
||||
8767635775767537537775596426945666564695551577422716939227657554649562833366674365266155727577774737
|
||||
7775767466374676353856676436275545371656656638858776373448786645468766554726777677755355577244574383
|
||||
4124457552243552342355664445373255223422339335535644524442445657442153557545543453354343433643267753
|
||||
6124333457242323425527522653254242224232423232264274434422411227635523364224422236253335315116127532
|
||||
3843363244543644643446444336332633352434545244436626634545444448444432343456656564456736353434435763
|
||||
2422221722221518823422211232528222221322741422521112323225722252542221222152231123242126243222522576
|
||||
1622233224223242225223226253345331335142347122554523313243535325924223222222332241922222221423233121
|
||||
4422161223245313242212152356523252352332114532131212331132322223662325121132255222245126112324622222
|
||||
4233231332312314222233333341133332452443423443134344332243234243444423443533423343333244354382332434
|
||||
6412258431772524433228362126666441227873942928375972932224772779977239924896932962725678357742792757
|
||||
2227271234224232322222332222221223242222336232222321222123332221232363322222123232311223225321123324
|
||||
7589939488935898867996484599788786867736849995938599889798476788896676459989897766888896597487889955
|
||||
3454654452545325445345241613354242541353364444436354434433222254535434343434244433352454491236544424
|
||||
3555422223544453332243232524152235232432234321322225424353448233244453333633454744244242322633235544
|
||||
2124222224441239425244322954112523572245362622825554225282222736532822246252222222625122321847223735
|
||||
3236336542322621344455252325253252236337264153213264532252332554223524342132622262555624217132225523
|
||||
2526592122123332422822131141234342452222223213126221224262242336444543224251621223527425633635432422
|
||||
4627434275335624743842223367643372773416353388754337724725344333445735354575952356357743428124523423
|
||||
5131323342333323332333223333231343333533322133333351233343323326353222332223323323355332223125436611
|
||||
3267823353225414622752883222125222822288682231242712212212222312622262222232262239152212766233622742
|
||||
3233632122333233633333333331713131221283512363322533235333333353253232423232232312332336353232511333
|
||||
7537335633333332333257451533743636333336344234383233638333825643833324862326234334536343333337341534
|
||||
7374226635593315434733244453342226646737436272495334563847314623624832636243233334512322529283445263
|
||||
4332232521223522524213221234143433214242236352238234234145322342235343223263631624558153124433322263
|
||||
2522212625442322522232213336422222244225234213335226232232544223291312422512225122122152452522284222
|
||||
3223121222448242222232124324212222232372344252326235832228322247122222322232422122282212222221222334
|
||||
3532267229665572922222236676865635148363573285411561725352232854345323542463955323228643283411566268
|
||||
3357562156445382573453552434624343344555753334452344275353435433233343545435554553531442333343545323
|
||||
4432285342325163234221332435222123365325322323334325472242261325439248524244352229353255664624222332
|
||||
5431252222458374243642592224346445254352332235374424452555534438625129442442434335415312335582323233
|
||||
4323424443537342215451244432322222322262445334343422342225131243343242422312542126413331246233333414
|
||||
4364214533233224324343345333333332333523353333324214315243433333323413413343433343343135333312343333
|
||||
3223134252331264234231223413332384833323311111472333258232326331233453222123283532162132322222213123
|
||||
2122322222222332222212412222421222212222335322222123213121232223222355331222241212232223222122212222
|
||||
2224234336222923229631122212222612332523531322272232233123322223442324123313256323423442722216232512
|
||||
3333324326462443643324233235432334632354333323332336163232334253342523333223351246225324332353535564
|
||||
2652435323434322222223325242213225213233122223236242225241342232234132526222345232157223522552124332
|
||||
3411222222226222221122322113222221223126312216224221122212222122242222222312122212727221212242231221
|
||||
4456532435443334732561536454334463553353556454575452634335511435653443333455255235435445465545553134
|
||||
2228332566243332533533252323335332231316214213243333232133434226343943323352214232213322333433335212
|
||||
3365426738758286223813946783465373375236837736556379353363573387385397747575645375432373453243373298
|
||||
2374464353232333237353476246233321127232426742236472547323234324246433373336253442412444322493272472
|
||||
3433823214282232422432246132534272631326662712841823232362422314263262437186423322512121721222764782
|
||||
2212221325332253132322215232314222142112221124222235222233333213232243132233223322232175233332233222
|
||||
1322232332221132111122231322312233222432221422243222233423433133225222224321322322323233327224222232
|
||||
1646353222222366621126365622131123313224423236214524422434321352522352211643433222432424454255232342
|
||||
3361246654224456345614565445236613412443442534524666655261365666531522166125553226265651516625126789
|
||||
4324334643744332474343444449444636345744136484654443344354443433464531343444454463434747785437245447
|
||||
5452122332323323125222212232221332222222222222222231232312182222123242331122112231122421221323232422
|
||||
2211251211252222622253221332252222212922232222322322221222422124228552222312622122221221222212274322
|
||||
6312233221334343211331335223232235222532314222232223323423323343132222221133225123323476243233223114
|
||||
6365746667644366678673776345675677645664653459445634735635562465556549961355736666746565734664645547
|
||||
3221223222222332212221322122324222122122122211112214222322122122222121222222112112232222231433222122
|
||||
1422361231254154455327225426522633323223321223545452553224325226628412212635854242361124447216543452
|
||||
3666233524341323332235392765343263455725455245627253316134426537127422852162423422242634754221114822
|
||||
3932433363332433232333726333333322334331332636223844223125733237523322343253323322253713213222333332
|
||||
4493744344343834344443452343336344428436454332433425458644535434483442554494443454624254346454444533
|
||||
5699934925565955456654646643377577254475687546547848667996565655157229655448156642565884755556349397
|
||||
2412344544333346124443433363233223333343333344336734136233423334433433343143232333143233365933334343
|
||||
1629643246222715451822963326475635412213424375224242216415646222713289214241172435222575212224121736
|
||||
2252522432412549512366312275222222373242325416522265412221721226556221122252235273275426642122427522
|
||||
1413222233624135145593211616522426244254844452521552272422254536455622433271358325522434313343224463
|
||||
3224423212432442132244433242415322342232432332224213224242231424233421323324222242444232222443422223
|
||||
3422233231433314333231233333233333333423333433332331343321233243133333323331342324322433343233423333
|
||||
4245333537332234633432342332323328332232224343333343334353514454433722242233353641212333285343631332
|
||||
5223226432542535334272221623443313523443252332624714433827453354551322323276223543323322425214216561
|
||||
9797352317238959996855458878658559627886527272323796576749782735857222478979158267967842734532637298
|
||||
2233315472222233225323231342221225322534411322222222252221323222211243442321411412233132323235245223
|
||||
3242242512222224434221246355113123221214231222336222222262323212273222434232324213712221324222532544
|
||||
5232232112233212221222742221224212221222222132222221222213222521351152131361223222222221231121122122
|
||||
2322322121321222222221241222222222222221211222223124142212222222123212322212222122222421122222252222
|
||||
4334454542453614443324434444464344564545444424444454554444454443434343364344354444434442344253434444
|
||||
2212322523313311222122522623343141322313342331212442222412224524322223244452231316412252262323322222
|
||||
2222212272212222122122222522113122242221222222222212222224122222221222122221224121212222212212412221
|
||||
2262337146893946174873662226535147545374544263382266265526568543452839587616544643126292665282936624
|
||||
3632252333332333333443223232262335313333233332314333343233345243313243233365363313235323332251334333
|
||||
3221232222222231322523223221226228231232223121521222423642122221212222322222122223241211231231323322
|
||||
2221222222211221222321222222321111241222212221223224222111226222222222127221122321122322222222223222
|
||||
6124144523332424733744135412344413421242123443515845332333352381548533242422427444334537433335322574
|
||||
7453758454284755866546827436558875877536562985475866626748436685734445624337877296528474836188782753
|
||||
5725733623574543384332644163741436413538624353353125322413732535252354534676342533233443636764346533
|
||||
3724543433444425433433334324347463344832345544343464234456334442253444343934444232343544352344734343
|
||||
6573566365455442255555524262564564545162457584866572865548453564655536755528442528355355335274452555
|
||||
3222221223313472322312322223112362322312222112321321222323333422212221332242211232332234312422322226
|
||||
6684364344445364343623423527355342443365534744737476345423442431424363432387333644234536114334313743
|
||||
3233322323622333233224331231516231133322322232233222222232342523213345323243332215613222522443353132
|
||||
5233232142321234421331321222222312221211123133132324142229222222223223232222223422232222224362224341
|
||||
1623812226295322222452341223423224244822222244262222226522254322222354323823234622623342833422134243
|
||||
8333332232332233233122333321222322323322223212332226112423223216223222223321223122433232322322133323
|
||||
1445455125545213412322444525223256423451342852266534614222242224134464414322623543351274434232725426
|
||||
5573546354364544548532342646434444554247464434444334464533335544555447424544744345433465422444335345
|
||||
4562565676457555226566266835565649635546563647665517725942797526353315545955559436375764268749645898
|
||||
6575389545666586355556557655258454466366756659655667656556582566555465559455532256575635466765755551
|
||||
2522372325223285372377443342324824613332232726232122334317271432643232352312841322424762333233395233
|
||||
2325212222222422242642232311222421214211222221222214422221222242131222122222521362214232321222124221
|
||||
3443334344363536646652475343315326533663446343345554247337628331336572334445334673738533443665543342
|
||||
2132212222231122223244212212222212228222233272341222122222242352251212322325222212211922122624222222
|
||||
9575468865546956387974456933636335313545532835783785683744589494443434344565445464834553577825488995
|
||||
2232221523232232222252336212562321222122411723311522222422216223221222621222176222222111614122221252
|
||||
2411324543243436234332382332234214435321523422313323444432433242322423134133444241124142332331234444
|
||||
3433433334352343225433321342331324334324436434454253433254434433232322423433335424444433233323343334
|
||||
3223422232335211433544355441333533324324224521343345431633342323623234437234243141342447733332355443
|
||||
2411332212121252533343422283442212322133324233124822321255297222331282432222722222422225234551324542
|
||||
1212122312232223236244132211522422335231321321233311413522332233123232243232312123322221522432333223
|
||||
7334732333343334432153322533242333342334333433542333323344232343333631333134333324341334323332233321
|
||||
4223522232212222331134221222522114354221215211122143472242233151322215324333435221222111222125242222
|
||||
3222333222332132352223221213322232222113211132322232323223262222322232231433522222332222122315322222
|
||||
4241254433142142123222423422312231234332242212342422234142423232314242344322144224343422223212435253
|
||||
4435124394543415434351654321444434453344533554424428337244554533353443435545332645235353543553624434
|
||||
4953545494325476235384273555532639985727583622585542734352939855234464949436494654347624427975335752
|
||||
1232253544413221381621112135437813322644122432322123133243121211252322135345213422232223825116322142
|
||||
7176762571577351467326138773541464454587645184235842236622256247346688118431458431258687874365414659
|
||||
2234232222222322322227532122582522122332422321222223222212152215325222223321221223223281421221322272
|
||||
2425383136529333525526333212772263633723248433642255323553412633172463436577851421236523265744234522
|
||||
3424262253652335642215242324645354215251762247525283223142532441334534261222436332322215452368293294
|
||||
3525625641636442423534235631325866434443266454611324526226469346631344363145685421462455233735624345
|
||||
5276763684237376172166382633667247437378333539246423364394367744953897395676234326742766684349243562
|
||||
4233422424444222242434315214323442396243233222224442344444422342234344623323212323224426342442427234
|
||||
2455654832635651757551426372442144653642514347558494583127222312332291665422754344255247559626765126
|
||||
2423243424113222233244222221234543212222174224434222112321343222222321212333423144422255222222413122
|
||||
3323333236543227312763323323522323831924221328237333782233235623233343431243535322223335382353122133
|
||||
2642453233833326882633337743646383422483273534435314347233322527835732448264631373443364128368335834
|
||||
6321247133126761767527423261476422264542629276752248335262214216629211627473621659671535368222612669
|
||||
5343777868459585575482665644767666773655757774767864755776477544456869665597555737746565466765544456
|
||||
1561262334141223245665535412224136232446722652331362425423161246335221246455132554556132262625222555
|
||||
5725416122222431321214232245422252241221232124234422112421223522241233231222223232253322412111224464
|
||||
1342634245353479774636277557464349166649866286327455463463636677272756383566156564766367664434525544
|
||||
2222214123614223121322332318514242112223523113141382142232142142233231421222362222233262322213343743
|
||||
6232323432322254643333225193233343333423321243245225332132242323632264522322336122232231212351212223
|
||||
3134444244333433225323244553224323233233323334332322233334131123434334332263343643354324333333333333
|
||||
5532268321431422223343232322352234537313226334376242424454322432374463252213326577332252837226334641
|
||||
5454844649566486677668957445459426468556946465673647773845366434343566647393767866654877854729566655
|
||||
2422261322545145375223322644442555224434132222357432123332514282554322645316424122242235533345325354
|
||||
3453712694444284286643414431362435383471343775542345353323626357143668234121858535252933816335326432
|
||||
2692252814322492259236385535955522425425223342262252322174535732822419432644742213257343242222582643
|
||||
6224333313434321343237423443742234422322332352563424433343233254324214252234443222233353343243333445
|
||||
4341454432233455223475433475834433424452531334443432434434543434324144237344441424343324333441646255
|
||||
7434464744476424675745843545587323486545535756479535344455254523223337565676533355416635334549535976
|
||||
3553356443855549413244624436535286254385433334226234338534135565231251535244343542565554226235635334
|
||||
6573451149567373447735352333764555854832677437453435454465844374557267983453554498384334844362354649
|
||||
3222254452422632224342325232542722451421242426521244243425424432222231324222222222222224444132543462
|
||||
2122421222232412322232411222341132211222815512622251621622322425233342126123321222212233532357222222
|
||||
2212232521412331133232455327233262332232323333233232141422322434333231222732323462221323232213222211
|
||||
3232332221511232236313222373234232352363332233522423133221423342323322222133322133333332222243322362
|
||||
2336422223291359222423422723843312323142222422352222453222313423325226423333532343317321422225321142
|
||||
4343335344372513234535342343343331535336323543354634443324332253537437441345145433453334416434323352
|
||||
3237453244334333332544534453434432432453435333343236534453223333433262234443423444431235133845232333
|
||||
6456227863763242255472623627231646622542245446515545363156162236672662444622442685215534225266296642
|
||||
2221332422312223552533253124222143223432222123213232331623267323322312232362544423433242224434255212
|
||||
6223465529466236233843281262333513534533347144636335524465365425322223373826446133535333335936553663
|
||||
2422522232222332132222436342244222212125223234334411321232322424384243222245362244243432424231222224
|
||||
2455326555464433825522411753425666565575612655266536636523455355543744564462384354365164425355735543
|
||||
2222222223222222111222222222212213221233232222222332113222221222262222132221221212122223112222122132
|
||||
3757772733244484433471354299755673837533632373346333735764325326263332933364634336225349447642767347
|
||||
6437333932233533335653243853723337632339355633363334344352325433234631533434522225121233842335623366
|
||||
1522322353333243423526152523222341222216322522631222136252125432232222422232211222322636312253262237
|
||||
3244925232233442334453242444241423433222233234323483133314262243244121333332323242321254222333333331
|
||||
2353223342323312327232322421224232123221132271242314335221333242245322142323223222134422332222223313
|
||||
2232223222152322222221221121232212124133322431112342321232222222321222211232233311232221222232222123
|
||||
3453545474334436473443566463435375435867524354646246572375445332562455654454447265633425553447415546
|
||||
8325538754433525383334434495321546255334334349823332443333244294334243537453573399238389554251532513
|
||||
7656246667563266466285456546456634856666957366663567458366756667648824545698465586644656686567376793
|
||||
4215351543432113323415311324225123133123142113334411255112542454441323515215512232515424352535536789
|
||||
1111223223122222222212222222222121222121222222225422222222212322222222233211242234122121222221222213
|
||||
5678874659337973585843437281459576744742867132948467828423979842756986437335768649266634535646384756
|
||||
3321432323333214232334221532121112433224263223323333735223333142518214311333551312233337431332222331
|
||||
3221122322355421122222453222425223221222442312325124432242254223232322354422311511222231212225272322
|
||||
3326243721153143233313222221442134142337593334337525233226413533524382451233373863723253915332223322
|
||||
4323922223241324233114233242234372243132523323224232522234672222932332123232522413335233242223326132
|
||||
4322523121353121333322532434134233233114242224344533323351233542365523264233431435614923234534264343
|
||||
2413439321538222312223262451523242222223422221322414424312213143162222233225243213124234222242234342
|
||||
3342122215245575225214522336225122222452225452142422442322242424233553522122474675551126222332423412
|
||||
2233212232112143223212212231131212212233232223222231322122222122333332123123222222332132432232232322
|
||||
3123343334341232234231322243134412132113314413424131312441443333224114142441423243344314242144456789
|
||||
5385554234435342844722553342162686427245123565484553455665282646565214247314425653986444256446243726
|
||||
1423322322142322343222211212322232222242323233132433232122324221321213111311232212131253212246222322
|
||||
2251232221222126122123211222231232221222262212221122111222221232222322212212212223221222222222222242
|
||||
4433211425222435344223312275476734164333243421521257332731712552245523223432413345313534272123232531
|
||||
5374861454518743534536288564523325333536745576255527655233661778769564756756829149877383953443336824
|
||||
3313122322343331253323335333343224231126233223221243331333312332333332332332233322123323223253233333
|
||||
4413524351244212524255443427242452242444414252125243353241535255256425423353123331432285522243215864
|
||||
4233233624553534233334344223842653442554363333343434314464443234333354472933333443314632434634254324
|
||||
3553898859594653737688866779538897656477718999867897996545698835748668695853929454638293454775739576
|
||||
3616433333424364342231322772322273742562435322524343222733733633315231217432253332344435423437477333
|
||||
276
Inputs/Day4.txt
276
Inputs/Day4.txt
@@ -1,140 +1,136 @@
|
||||
MSAMXXMASXSXMMSASXMASMXMASXSXSSMSSSMMMSSSSMSAMXASAMXXAXMSMMMAXMAMSAMXAMXMXXMXMASMXSAXMXMAMXSXSXXMSSXMSSMMSSMMMMXSXAXMXMAMMASMSXSXSSXMSSMSSMM
|
||||
MSASASAAXSMAMMSAMXSXXMAMXSASAAAASMSASAASAAAMMMSXXMMMSMMXAAASMMMMSAMXSAXASMMSSMMXAXXMSSXXMSMMASMXMASXAAXAAAAAAMAASXSAMAXSMSMMASAXAXAAAAAMAAAS
|
||||
ASAMASMMMASXMAMAMXXAXSMSAMAMMMMMMAMMMMXXMMMMSASXXMAXAASXSSMSASAMXMSAMXSASAMAASAMXMAAAMXMASAMAMXMMASMMMSMMSSMMMMMSAAASMSMAAMSAMAMXMXMMXSMXXMM
|
||||
MMAMAMAAAMAMMASMMXMMMXAAMMXMMXXXMXSXASXSMSXXMASAMSSSMSMAAMASXMASAAMASXSAMXMSSMMXSMMMXSAXAXAMSSMAMASXMASXMAMMSMMASAMXMMAMMMMMXSXMSMXMASMXSASA
|
||||
XSAMAXSMSXAMSASASXMAAXSSMXXXAXMXSAAXXSAAASASMAMAXAXAMXMSMMMMMSAMMMSXMMMAMXAXAAAAMXMSAXMSSMSMASASMAMXMASXMAXAAAMMSAXXSSXMXSXMXXAMXMMMSMAASMMS
|
||||
MSXMMXMXXMMMMASAMMSMXXAAXXSASMMAMAMMXMMMMMAMMASAMMSAMSXMASXXXSAXSXSMSAMASXMSSMMSXAXMASMXMAXMMXSAMSSSMXSASAMXSSMXSASAMXMAXMASMSSMASAXAMMMSMAM
|
||||
XMAMSAMMSAMXMMMMMAASMMSAMXXMMAMASMXSAMASXMXMXASASXAAASASAMMMASXMSXMASXSASAMAMXAMMSMMXMXAMAMAMSMMSAMAAMSAMXSAAXMASAMXMXMASMXMASASASXSMAXAXMAS
|
||||
SMAMXASAMAMXMMXAMSSSXAMASXXXXXSASAAXASASXMAXMXXXMMXMXSAMXSXAXSMMMAMAMAMMSXMMSMASAAAMXSSMMXSXMAAXMASMMMMAMAMMMMMXSXXAAASAMXAXXSAMXSAMXSMMXSAS
|
||||
XSXSSMMXSAMXMMMMMMAMMXSAMMMMSXMAMMMSAMASASMSSSXAXMAMXMMMMMXSAMAAXAMASXSAMXXSAMXMMSMMAXASAAMASXSMSMMMAAXAMSMSAMSASXSMSMSAMSMMMMMMSMMMAMASXMAS
|
||||
MAMXAAAAXMMAMAAMAMSMSXMASAAAAAMXMAASXMMMMMAAAXSXASAXMXMAXSAMXSSMSSSXSXMXSAXXMSAMXXXMXSAMMMSAMAAAAMASXMXMMMAMAMSAMAXAMASMMAMASAMXAAAMAMAMAMAM
|
||||
SAAMSMMSSXXAXSMSAXXASXMXSXMMSAMXMMMSXSXSAMMMSMMSMMAXSASASMAMAXAAAAAAMMSXMXSXASMSAMAMAMAMXAMAXXXMAMASAMASAMAMMAMAMSMMMAMASXSASASAMSMSMSSSSMAM
|
||||
SXMAAXXAAMSXXAASMMMMMAXMSAMXXAMXXMXMXXAXAXXMAAMXXMSMSASXXMSMMSAMMSMAMAMAMAMMXMXMAXAMASAMMMXSMXMASMMSASASASXSMMMMAAAXMASMSAMXXAMMXAXAMXMAMSAS
|
||||
SAASAXSMXMAMMMMMMAXASXMASMMMSAMMSMAMSMSMSMAMSXXASMMAMMMMSMMAMSXXAXXXMMSAMASASXSXMMXMAMASAMAAMMMAAAASXMASMMXXXXAASXXMXAAXMMMSMMSAMXSMSSMAMSXS
|
||||
SAMAAMSXSMMSMAAXMMSMMMAMSXAAXSMSASASXAAAMSSMMMSXSAMXMAMASASAMXMMMSAMXAMASXXASMSAMSSMSSXMAMSSSXMXSMMSXXXSAMXAXMMMMASXSMMXXSAMXAAAMAAXAXMAXXAM
|
||||
MAXXSXSAMMXAXMSSMMMXMMSMMMSSXXXSAXXXMXMXMAXXAXMASMMSSSMASMMAMAAMAXAMMSSMMXMMMAMAMAAAAXAMMMXAMMMMXXAMXMMSAMMMMAMSMAMAAAMMMMAMMXSMMMXMASMMSMAM
|
||||
XMMMXMMAMSSMSXAXMAASMAXAXAAXMMMMSMASXXSAMAMSMSMAMXSXAAMAMMXMSSMSMSAMAAXAAXMASMSAMSMMMXMMAXMAMAAMMMXXAAAXXMAMMAXXMASMMMMAMMAMSMMAAXSAMXXAAMXM
|
||||
AMAXAMSMMMAASMMSXMXMMAMMMSXMAAAAMMMMAASASAAAAAMXXXMMMMMSMSAMXMAAXSAMMSSMMSSMMAXXMAMASAXMMMSAXMSSMAAXSXMSASXSMMXSAMXMXSXSMMAMXASXMSXXMAMXXSXM
|
||||
XXAMXMAAASMMMAMAMSMSMSSXAXMASXMSMMXMXMXASASMSMSSXSMSXSAXXXASAMXMMMAMAMXAXAMXMASXSMSASXSAAXSMSMXAMMSXMAXXMAMAAAMAMXASXSAXAMMSMXMAXXMSMSSSSMAX
|
||||
MXSXMMSSMSAMXSMMMAASAXMMXSAMAAMAXSAMXXMAMAXAXAAXAXAAAMXSMSMMASAMXSXMASXSMSMXMMSAAAMASASMMMMAAXMXMMMAMXMASMSSMSSSMSXSAMAMMXMAMXXMMSMSAAAMXSMM
|
||||
SAMAAAAAXSXMAXAXSMSMXMASMSXSXXMAXSASMSXMMSMAMMMMMMMMSMMXMAMXAMASAAXSSSMMAMAAMXMMMMMAMXMAAASXMMXMMXMXMSMXAAAAAXAMXXAMAMAMXXSASMMXAMAMAMSAAAMA
|
||||
MASXMMXSMMMMMSXMASXMMAAXASAMXSXSASAMMXXAAAASXMMXMXMAXAAASASMASXMXSXXAXAMAMSSSSSXMAMAMAXSMXXAASMASAXMXAXAXXMXSMSMXMSMASXSAXMASAAASMXMXXXMSSMS
|
||||
MAMMXSAMASXAMXASMMMASMSMMMXMMMAMMMAMAMSMSSXXAXSAMMSMMSSMSASXXSMSAMMMMMSSXXAMMAXMMMXAXXXXMMSMMAASMXXAXMSMSXSAMMXSXXXSMSAMMSMAMMMSMAMXXMSXMAXA
|
||||
MMSMAMXMXMMMMMAMAXMAXMAMXSXSAMMMXSAMAMXAMXASAMSASAMXAXAMXXMASMAMMMMAXXXMMMASMSMMXMASMSXSAAXASMSMSMMXAXAXMXMASXAAMXMMMMXMSXMXMMXXXXSXASMASMMM
|
||||
MSAMMSMSSSXSAAAXXMMAMSAMASASAMMSXMXSAMMAMMMMMXSAMXAMXSAMXMXXXMSMXXMMSMSMXSSMAXAXAMAMAXAXMMSXMXAMAMASASMXSAXMMMMSMASAMXAXXAMASMMSMMSXMXSXMXAX
|
||||
MXASAAAXAAASXXMXSAMXAMASXMMMXSSMMSASAXSSMSXASMMXMMXMMSAMMXSMMMXMAXSAAAAAAMAMMMMSASXMSMSMMAXXXMXSAXMAMXMASMMMXAMAXXSXSXMASAMASAAAAAMAMMMMMSSM
|
||||
SSMMXXSMMMMMAMSASXSMMSASXMAMMMXAASMMSMAAXASAXASXSMSXASASAMXAMSAXAMMSMSMSXXAAMXXMAXAAMMMAMXSSSSMSMXMAMAMMMXAXSXSASMSAMXXAMAXASMMMSMXAMAAAXAAS
|
||||
XAMXMMMAXXXMXMMASAXAAMXMASMSASMMMSXAXMSMMMAXSAMXSAXMXSAMMMSXMXMXASAXXAAAXSSSMXXXMMMMMASAMXAAMSASASXSSSSMSMMXAAMASXSAXAMMSSMMSMSXMMSSSSSSMMSM
|
||||
SAMXSASXSXSMMXMAMAMMMSASXMASMSAAAMMSSMXAMXAAMAMAMXMMMXXMAMXSAAMSXMASXMSMMMMAMXMMMASXSMSASXMXMMXMAMAAXAAAAASMXMMXMASXMMSMAMAXMAMAXMAMXMAMXXAM
|
||||
MMSMMMSASAMXAXMASXSXSAMXAMMMXSXMMXAXAAXMAXMXMAMASAMMASASXXAAXMMASMAMAXXXAASAMASASASAXXXXMAXSMSMMMMMMMSMMMAMAAXMSAMXMXAAMMSSMMAXMMMASMMSMSMMS
|
||||
MAAXAXMAMXMASXMXMMXMAXXSAMXSMSMMMMXXMMMSSSMXXASAXXXAMXAXAMSSMSXASMXSXMXASMXASMSASAMXMMSMSXMMAAXAXXXMAXXXMASMMSAMMMAXMASMMMASXAASASASMAMASAMX
|
||||
MSSMMSXXAAMXXXMAAMMSSXMMXXMSAXMAASMSMXXAAAASMMMMSMSSSMXMMMMAAXMASXMAMXMMMXMAMXMMMMXMSXAASXSMSMSMSSMMSMMXMAXMASASXSMSXAXAASAMXXSAAMASMXMASAMM
|
||||
XAMAXMMXSXSASMMSSMAAMXMAASAMMMMSXMAAXAMMSMMMAXMXAAXAAXMAMASMMMMXMASXSXXSAXXAMXSXASAAMMMMMASAMASAAAMMAAMSSMMAMSXMAMSSXMMSMMASMMMMAMXMXAMAMASX
|
||||
MAXSASXAMAMMSSMXAMMSSXMAMMAMXXAXAMSMSXXAMAXSXMASMSMSMMMXSASASAXASXMAMAMMASAAMAXSAMMSMMAAXAMAMAMMSSMSMSMAAAXSXSAMMMASASAXXSAMXSASMSAMSMSMSAMX
|
||||
MMMMAXMMMAMASAXSAMAMMMMXSSSMMMMSMMAAMAMASMMMMMXXAMAMAMSAMMSASMSASAMAMAMXAMMSMAMSMSMXASMSMASXMAMMAMAXAAXSSMMMASMMXMASXMASAMSSMSASASAMSXAMMASX
|
||||
SASMSMAAMXMXSAMSAMXXAAAMMAMMMAMAASMMMAAXMAMAAXMMXMASAMMASAMMMAXAMAMXSMSMSSXMMXXMAAASAMAAMAXXSXXMAMSMSMXMMMAMXMXMXMASAMAMAMMXMMXMMSAMMMSXSMMM
|
||||
MASAXSSMXSMAMMMMXAXSSXXAMAMXSSSSMMAMSMSSSXSSSSMSASXSASMXMMSAMSMMSASASXAXAMAXMMMMSMXMSMSMSMSASAXSXMMMMMMSXSASXXAMSMMSAMXMXMMMSXSAXMAMAAXMMSAS
|
||||
MSMMMMMSAAMXXAAMAMXXMAXSSMSMMMAMXMAMAMAAXAMXAXAMMSXSXMASXXMAAMAMSAMASXMMMMMMMAXAXXSAMXXAMAMAMXMMAMXAASAAASASAMASXAXMXXSXSMSAMAMXMSSMMMSAMMXM
|
||||
SAAXXAAMSSMMSSSSSMXMMMMMAMXAMMSMASXSSSSMMSMMSMSMXMAXASAMMASAMMAMMAMAMAMAXAAMXXMASAMXMXMAMSMAMMMSAMXSSSMMMMXMMSMXXMMASMSAMAAXMSMAMAXAMAMAMAAM
|
||||
ASMMSMXMAMXAAAAAMXAMAXASXMMSXAAMXSAAAAMXAXASXAAXMASXXMASMMMSMSMXSAMXXAMXMSMSASMMSAMXSXSXMXSAXAMSXMXMAMAMSMSSXAMMMSMMMAMSMAMSMAXAMMSMMAMXMSAS
|
||||
MMMXXXXAASMSMMMMMMXSMSASAAAMMSMSAMMMMMMMSXMMMSMSMAMXMXXMAAAMMAAXMMXXXASAMMASMXAASXMXSAMAMAMMMSMMMSMMAMAAAAXASASAASAMMMAAXAMAMMSMMXAXMSSMXMAA
|
||||
XMMXMASMXSAXMXMXSAMAAMXSXMXSAXAMMXXASXSAXAMXAAMAMXMAMMSMSMMXSMMMAMAXMMMMXSASXMMMMAMAMAMAMSSMAAAAAXXMASMSMMMMSXMAMSAMAMSSSXSXXXAXASMSMMAMAMXM
|
||||
AMXMSAAXAMXMSXSASAXXXXXXMSMMMMAMSSMXSAMASAMSSMSXSASASAXAASMMSAXSSMSMXAAXAMXMAXSXSAMMSMSMSXAMSSSMSSXAMAMXAMSXMASXMSAMXMXAXASAMSAMXSXAMSAMAMMX
|
||||
SAAMMSSMMSASXSMASMMSSMMSAMXAMSSMMAMAMXMASAMAXXAMSASASMMSMXSAMXMMAAAASXMMMSAMXMAASXSXAAAMMMAMXMMAXMAXSAMXSAXMAMXMASXMXXMMMMMAMMMMMMMAXMXMAMXM
|
||||
MXMMAMXAXSXSXAMAMAXAAAAASMMAXAXXXAMXSXSASXMASXSMMAMAMXAAAXMMMAAXMMMMMAAMASXSMAMXMMMXMSMSAMMSMSMMMSAXSASAMMMSAMAAMMMMXMMMSMMMMMAAASXMMSMMAMAA
|
||||
SAMMSMXAMXMMXAMASMMSXMXSMMMSMASMSMSASMMASMSAMXMAMSMMMMASAMXSMXSXSMXXXSMMASXMAXMXMAAAXMAMXSAAMMASAMXMSAMXSXAXAMSSXAASAAAASAAAAXMXMMAAAAMMSSXS
|
||||
SAMMAASXMSAXSXXXAMAXXMMXASAAMAMMAXMASAMAMMXXMASAMAAAXMAMAXAXSAXMASXMAXAMXMAXXASXSMSSSMAMAMXXSSMMXSXMMMMMSMMSSXMXMSSXMMMXSAMSASXSSSSMMXXMXAMX
|
||||
SAMMMMMAASMMXASMXMASAMXXAMSMMSXSXSMMMXMXSSSMSASMXSSMAMASMMSSMXXAMXMAMXAXSSSMMMAAXMAXXMAMMXSXAAXAXSMMAAAMXAAAMXAMMMAMMASAMXMMXXAAAMXXSMSXMASX
|
||||
SMMXSASMMMAMMMMXAMAXAMXMSMMXAXAXAMXSAXXSMAMAMXMAAXAMXSXSXAMAXSMSXXXASMSMAAMXASMAMMMSSSXMSASMSMMMSMASXSSSSMMSSMMMAXMASASASMXXMMMMMMMAAAAXSAMM
|
||||
SAMXSAXAASAMAMASXMASXSSXAASMMMXMASAMXSMMMAMSMAMMMXAMASASMSSMMSAMASMAMAAMMMMSASAAMAMMAMAAMAMAAAMMMMMMAAAMAASXMAXSMSXAMASAMAAXXAAAAAXXMXMMMASA
|
||||
SAMXMAMSMSSXXMMAMXXMAAASMSMASAMSMMASMMXMAMMXMXSASXMMMMMXAXMAAMAMAMMSMSMMMAASXSXMMAXSAMXMMMMSSMMMAMXMXXSXSMMASMMMASXMMAMAMSMSMMMXXSSXMXSASAMX
|
||||
SSMXMAMAAXAXSMSMSMMMMMMXMXMAMMMAAXXMAXMAASMSXMXXMASMSMXMSMXMMSAMXSAAAAXMXMXMAMXSSSXSASMSASAAAAMMAXXXMXMAMXMXMAMMAMAXMAXXMAMSASMSMAMXMAXMXMAS
|
||||
SAXMMMSXSMMMXAAAAAASXSASMAMMMASXSMSSSMASMSAMASXMSMMAAMAMAMXXMXASMMMSSMXSAMXMSMAXAMASAMAAAMMSSMMSSSMASAMXMSSMSMMMASMMSASAMXXSAMAAMAMMMASMXSSM
|
||||
SMMSAMXMMAXAMSMSMSMSASAMMXSASMSAXAXXXAXXAMMSAMMAAMMSMSXXAXXMSSMMAMMMAXAMAXMMMAMMMMMMAMMMMMAMXXMAMAAMMASMAAAAAAASXMXMXMAXMMASMMXMSMXSMASMAMAM
|
||||
SXASMSAMSSMSAMAMAXAMXMAMAXSXSAMMMXMXMSMMMMAMASXMASAXXAASMSMAAXMASAASXMMSAMSASAMAAAXSAMASXMASMMAMMMMXMAMMMMMSMSMSAMXMAMAAXSASMSMXMMAXMXMMAXMM
|
||||
XMAMXMAMAXAXMMAMXSAXXAMMMXMASASMSAAXAAXAXMXSMMAMMMXSXMAMAAMMMMXAASAMXAMMMMSASMMXMXXSASAMASXSAMMMASXMSSXXAXXXMMASAMAMAMXMMMAXAASAAMMSSMMSSSXS
|
||||
SSMMSSSMMSXMASXMASAMSSMAXASASAMAMXXXSSSMXAMXXMMSAAAXAXMMSAMXSMMMMMSSMSAXAAMMMAASXMMSMMXSXMASMMASMSAMAMASMSMAMMMMSSMSMSAXMMSMSMSMSAAMAAXAASMS
|
||||
AAAXAAXMAXAAXXAMXMAMAAXXMAMXMMMAMMMMAAAMMSASAMAMMSMMMMXAMASAMXAMXAAXXAMMMMXAMXAAAAMXMAXXAMAMASAMXSAMAMXMAAMAMAMMASMAASAMXAMXMAXAMMXSSMMMSMXX
|
||||
SXMMMMMMMSSSXSXXXMAMMSMXAAMAAAXAXSAAXMAMAAMSAMASXMXAMXMAMAMASMSSMMSSSMXAAMSMSMSMSXMAMMMSMMASXMMSMMXMAMAXXMSSSMSMAXSMXMMMMAMAMMMMMAXMASASAMMS
|
||||
MASAMXAXXAAXXAMXSMMMAAAXMASMXMSMSAMMMXMMSSMSAMXXAAMMSAXXMSSMMAMXMAMXMXAXMXAAXXXAXMMXSAAAASASMSMAASMSSSSMMXMXAAAMSMXXMASXXAMSMSAMMSMMASXSASAX
|
||||
SAMASXMMMMSMSXMASAAMSSSMSMXMXXAMAMSXSAXAAAAXXAMSMMMXMASXXAAAMSSSSSSSSXSSSSMSXMMSMMSAMMMSMMASAAXMXMAAXSAASMXSMMMAMASXMXAAMMMXASXSAAMMXSMSMMXS
|
||||
MXSAMMSAAXMAMXMAXAMXXAXAXXAMXMASAXAAMAMMSMMMSXMAMASXMASXMMSXMMAAXAAAXAXAAXMMAMMAASXSMAXXAMXMMMXSAMMMMSSMMMASXMXASMMAMXMMAAAMXMMMMSSMXSAMAMAS
|
||||
MMMMSASXSMMAMMMMSSXSSMMMMMSMSSMMMMXMMAXMAXSAXAMMSASAMSMMAXAAMMMMMMMMMXMMSMASAMSMSMAMMXMXAMMMMSAMMXXMXMAXAMASASMMSXXAMAXXSMMSMMXSAMXMAMSMAMAS
|
||||
AAAMMASXXASAMMAMXMAXAXAXSAAAAMSAXMMMSXSMXMMMSSMMMMXAMAAXSMMSMMASAMAXAMXXXMASXMAXAMXMSSSSSMAAAMAXSAMSMMMSMMASMMAMSMMMMXMMXMXXAMASAMXMMMAXSXMS
|
||||
SMSSMSXMMAMAXSXSAMSMXMMMAXMXMMSMMSAMAMXMAMXMAMAXAMSSSMSMAMAAMMASASXMXAXSXMASASAXMAMXSAXAAXXMXXXMMASAAAAAAMAXMSSMMAASMMXSAMXSSMASMSMMMMMSMAAX
|
||||
XAMXMMAMSSXMAAASMXAAASXSSSSXXXXAASXSSSMSSSMMASMMSAAAMAMXAMSSSMASAMXXASAMAMAMMMMSXAASMMMSMMSMSMAMSMMXSMSSSMSSXAXMMMMMAAAMASMAXMASAAAAAASAMAMS
|
||||
MAMAMSMMAXAMXMXMASMSMSAXMAMMMSMMMSAXXAMXAAAMAMAAMMSMSMSSXXXAMMAMASAXMMASAMMMSAASMSMMAXAXMXAAASXMAXMAMMMAMAMAMMSMMSMSMMMSAMMMMMAMMMSMSXSAXSSM
|
||||
AXSAMAMMMMXMMMMSMMXAAMMMMAMAAXAASMMMSMMMSMMMASMXMAMASAAMXMMMMMMSAMMMXSAMASXAXMXSAXAMXMMSSSMMMSXMMMMMMXMAMSMXMXAMXAAAAMXMMMAMXMSXXMAXXMMMMXAX
|
||||
SASMSXSAAMSMMAASXSSMSMSXSXSMSSSMSAAMMAMMMMXSXSXXMMSAMMMMAMMXSAMMASXMAMMSXMMXSXMMMMMASMMAAAASXMAMAASXMASXMAMMXMAMSMSMMSAMSSSXMAMAAASAMXASXSSM
|
||||
XXSXMMSMSMSAXMMXAAAAAAMXXMSAMAAAMXMMSAMMAMASAMAXSMMASXMXMSAASAMSAMAMASAAXSMXAXMAXSMAAAMMSMMMAAXMAMSAXXSASXSAAMXMSXMAAMXXAXMAMAMSMMMXSSSSXAXX
|
||||
MMSAMASMMAMAMSMMSMMSMSMAXAMAMSMMMAMMSXMMAXAMAMMMSASAMXSAMMMXSAMMSSXMXSMMMAMMMXXAAXMAXXXAXMASMMMAMSMXMAMASAMMXSAMXAMMMSMSMSSXMAXAAASAMMMMMMMM
|
||||
AAMXMASAMMMSMMAAXAXXAMAMXSMMMMXAMAXAXSSSSMSXMMMXSAMASAMMSXMMMXMAMMMSAMXXSAMAAMASXMSSMMMSSSMMMASXMAAAMXMSMAMAMSASMSMSXAAAXAAXSSSSSMSAMXAMAAAX
|
||||
SSMAMAMMXSAXAMMMSMMMSMMXAXAXXXMMMSMMMMMAXAMXSAMMMMSXMASAMXSSXMMMSAAMAXXASMSMMSAMAMAAAAXAAXAXSASXSMSMSXMAMXMAXSAMAAAMAMXMMMMMAMXXMASAMXMXSSSX
|
||||
AAXSMXMXXMASXMSXSXMAXAMMMSSMMAASAXASXAAAMXMAXASMAAAAMAMMSAAMSMAAMMMSAMSXMXAXMMASXMMSMMMMSMMMMASXMXXAMMXAMMSXMXMMSMSMXMAAAAXXXXAMXASXMASAMAMX
|
||||
SSMMAMSMSMAMAMSAMXSASAMSMAMXASMSASAMXMMXMAMMSMXMMXSAMASXMMMMASMSSMAMAXMASXMSXSAMXSXXXAXXAAXXXMSAMAMASMSXMAXSXAMXXAXMASXSMSSSMMSSMXMASASAMAMM
|
||||
MMAMXMAASMSXSMMAMAMXSXMXMASMXXAXAMAMXSAXSAMXAMSMMMXMXMXAXSXSAMSAXMXMXAXXMAAAXMASAASMSSSMMSMSAMXAMMSAMMAXASMMSXMAMMMMXAMXMXAAXAAAXSMMSMMMMMSS
|
||||
MMMMSSMSMAXSMASXMXSASAASMXSAMMMMMMXXXAAXMMSSMXAAAAMAAMXMMMAMASAMXASXMMSSSMMMSXAXXAMXAASAAMASMASAMXMASMSMMXAMSMSXSASXSMSASASMMMSSMSAMMAXMSAAA
|
||||
MAAAAXXMMAMAXXMXAAMASXMAXMXXMAXMSAMXSMMMMAAMMSSSMSSSMXAAAXSMMMMXXMASAAAAMMMXXMMSMXAMMSSSMMAMMMAAXAXXMAXXXSAMXASXSASXAASMSAAXMAMAASMXMSMAXMAS
|
||||
SSSMMSSMMSSMMSMXMXMAMASXSSSMSSSXMASAXXSXMSSMAAMXAAAAAXSXMSMMSAXSASASMMMMMASASXAAASMSMAMAMMXMASMMMSMAMMMMMSXMASMAMMMMMMMAMMMMMMSMMMXMSMAMAXSM
|
||||
XAAXXAMAAXAXAAXAMSMMSAMMAAAAAAMXSAMXSAMXAAAMMSXXMMXMMMMASAMAMASXXMASXSXXMAXMXMMXMAAAMAMAXXMMXMAMAXMASAAAMXMAMAMXMASAMMMMMMXAAMXXXMAMAASXMSAS
|
||||
MSMMMASMMSMMSSSXSAAXMASAMSMMMXMAMXMAMXAMMMSMMAXXASXAMSSMMAMXMMSAMXXMASMMMSSMAMSSMXMMSSSXSAXXASAMXXSASMSSSMXMMSMXSASMSAAMAXSXMSASMSSSSSMAMAMX
|
||||
AAXMAMMXMAXAXXMXAXXMMXMXMXMXMAMAMAMSSSXSAAXMMSSMAMXSXAAXSAMXSMMMSSMMXMSXAAAXASAAXSXXMAAASMMMXSXSAAMXSAMAAAASXXAAMMSXSXSSMXSASMAMAXMAMXMXMMXX
|
||||
XSAMXMXSMMSMMMXXMAMMMXXAMAMASASASAMAAXAMMMMAAAAMAMMMMSSMSASXSAAAXMAMXXAMMSXMMMXSMMASMMMMMXSXMMMSXXXAMXMSMSMSASMMSXMASXMAMAMMMAMMSMMSAMXMXXXX
|
||||
MXXMASASAMMMAMMMXSAASMSASASMSXSMSASMSMMMSMSMMSMSASXAAXAMXXMASMMMSSSMSSMSAMMSXAAMAMAMAXXXXAXAAAAXAXMXSAAXAXXMXMASXASAMASXMASAMXMAXXXMMMAMXMMM
|
||||
MMSMXMASXMSMXSASAMSMAASASASASAMASAMAXXXXAAAXXMASASXMSSMSAAMXMASXMAAAMMXMAMASMMXSAMASXMSXMASXMMSMMXMASMSMSMXXASMMSXMAMXMAMXMXXSMXXSXMASAMXASX
|
||||
AAAAAMXMMXSAASMMXMASMAMAMXMXMMMAMMMSMMMAMSMMAMXMAMAMXMASXXSASAMAMSMMMXMMAMMMAAAXASASAMXAMASASMXAXASAMAAAAXMXXMSAMXMSSMMSMMMSMMMMMSASASAXSAMX
|
||||
MMSSXSMMSAMMMMMSMXMSXAMSMSMSMXMXSXAAAAXXXMMSSSMMXSAMXMXMMMSXMASAMAMSMAXSAMXSMMSSMMASMMASMASMMAMMXMMAXSMSMMMSMMMMSAMAAXAAMAAAAAAAXSAMAMXXMASX
|
||||
SXMMASAXMMSMXAXXASMMXSSXAXAAMASMMMSSSMSXAXAAAAXSASASXMMAAAXMAMXMXMXAMAMSASXSXAMAXMMMASAXXXMMMSMSSMMSMXAMXSASAAAASAMXSMSSXMSSXSSSMMMMMMSXMMSA
|
||||
XAASAMSXXXMXSMSMXMXAAXMMMMSMSASAXXAAXAMMMMMMMSMSASAMASMXMXSAMXXMASXMXSASAMAMMMSMMMXSAMMSMMSMXMAMAAAMAXXMXMAXSMMMSAMXXAXAAXAMAMAMAMXMSAMASAMM
|
||||
SXMMAMMMMSXAMSAXASMXMMXAAXXAMMSXMMMXMXMAXAXMMXASXMAMAMMMSAMXMXMMAXAXXMAMAMAMSAAMASAMSSMAMMAMMMAMXMMSSMXAXMSMXMSAXMSSMMMSMMASXMAMASAXMASXMASX
|
||||
AMSXSMAAAAMXSAMSXSAAMMMSMSMAMASASXXXAASASXSXAMAMAMXMAXAMXXMASAAMXSSMSMAMXSSXMSAXAMASAXXASXASXSMMXSAMAMMXSAMXAXMMMMSXASAMXMMMMSMSAMXSXAXASAMA
|
||||
SASAXXSMSXAXAXMAAXXSAAAAXMMMMMSAMAMMSMMMAMMMXMAMAMXXMSMSMMSASMSMMXMAMSASAMXAMMXMASMMMMMMMMAMXAMXAMXSAMMMSAMMMSASXMXXAMXAAXAAXAAMMSMMMMSMMMSS
|
||||
MAMAMAXAMXSASXMSSMMXAMSSSMSMMMMMMXMAAXMMMXAMAXSMSMSMAAMAAAMASAXXAAMAMMXSAMSMMAAXMMXAAAASXSASXSAMXSAMASAAXAMXAXAXMASMSSMSMSMSSSSMAAAXAMAMAXAA
|
||||
MXMSMSMSAAXSMAXAAAXSSXAMMAAAAAMMSXMSSXMASMSSSXMAXASMSMSMMMSASASASMXMXSXMXMAMMMXAAASXMSAXXMAMAMMXMXMSMSMSSSMXMMSSMXMAMAMXXXXAXAMMXXXXMMMMXSSM
|
||||
MXMXAXAMMMSASMMSSMMMMMXSMSMXMXXASAMXAMSSMAAAMAMXMXMAXAXXXXSAXAAMXMASAAAAMSXMAAMMMMSAMMMMMMSMMMMSMMXAMXAAAAAXXAAAAXMMSSMXXSMSSMXMSSSSMXSAMXAX
|
||||
MXMMMMXMMXMMAMXAXAMXXMMMAMAMSSMMSAMMMMXAMXMAMMMXAXMXMXMMSMMMMMMXMSXMASXMAMMSMXSXAAMMXAAMMAAAASAAAXSMSMMMSMXSMMSSMMSAAXMXMMAAXXXMAAAXAAMAMXMX
|
||||
SXMAMSMXXMMMSAMXSXMXAMXSMMAMAAAMMAMMXMSXMASMXAMXSAMASAXMAXAMXAXAXXAMAMXAXXAAXAXXMMMXXMMMMSMSMSXSMMXXAAAAXAAAMAMAAASMSMSAMMMMSSSMMSMMMMMAAAMM
|
||||
AMMAMMXXASMAMXSXMASMMAAXMSXMSSMMSSMSAMXAMASAMXAMXMSASMSSMXXSSSSMASAMSSMSMMSSMMMAMXXSXXAXMMMMASAXMSSSXSMSSMMXMASMMMXAAMMAMXMASMAAAAXXXAXSSMSA
|
||||
MSSMSAAMSMMMSMMASAMASAMXMMMMAAAXAMASXSXSMMSMAMAXAXMXSAXAMSMXMMAMMAMMMAAMXXAMXXAMXSMSASMMMAAMAMAXMAAMMMXMXMSXSASXSMMMMSSSMMMSSSSMMMXAMMXMAMAX
|
||||
XMAMXMASXAAAAAXXMASXMMMAAXSSSMXSAMXMASAMAMXXMASMMXSAMXMAMAAAMSXMMMXAXAMXXMSMASXMMXAMAMAASMMSAMXMMMSMASAXMXMAMAMAAXMAXXAAAMSMMXXAXXMXXMAMAMMS
|
||||
SMMMSXMAXXMMXMXSSMMASASXSMAAAXASAMXAASASMMSXMAMAMXMMSXSAMMSSXMASXXSXXSAMXSAMXXAAMXMMAMXMMAASAMXSMMMXAMAXXSMMMXMSMSXMXMXMMMMAMXSXMXMASMMSMSAS
|
||||
MAAAXMAMAMSXSMXMAASMMAAAMMMMMMASAMXMAMAMAXXAMASAMMSXXAXAXXMAXSAMMXMASMAAXSMSXSSMMMASXSASMXMSAMAAAAAMMXSASAAXXMAMAAXAMSAMXMXAMMMSAXMXXAAXAMAM
|
||||
SAMSSXXXMAMAAXAMMMMXMSMAMAAMXSASXXXXXXSSMMMXMASAMASAMXMMMSAMXXSXXAMXMSMSMMXAAXMASXMMASASAMASXMASMMSSMAMXAXMMMSAMXMXXAXMXASMXSAXXSXSMSMMMMMSM
|
||||
MXAAMMMXMAMXMSXSXMASAMXXMXMSASAMXSMMMMMAMMSAMXSAMSXMXAXMAXXXMMMMSSSSXMXAAMMMMMSXMAXMAMASAMXMXMAXAAAXMXMSXXSXMASAXSMSSXMMMXAASXMXMXMAAXMXSAMX
|
||||
MMMASXSSSSSSXAASXSAMASXSSMAMAXAMAMMAAAXXMASASASXMAMXSMSMSSXXMASASAAMMSMSXMAAAAXMMXMMXSASXMSSMXAXMMSMMSXMAXXAMXMMSXAAXAMASMMMMXMASAMXMSAXMASA
|
||||
XASAMAMAAXAAMMSMAMXSAMAAAMAMMXMMXXASMMSAMXXMMMMXSSMXAAXXMXMXMSSSMMMMAXMMMMSSMSSSMSAXAMAMAAAAAMSSXAMAAXAMXMSSMMAXMMMMSXSAMAAMXSMMSASAAMMMMXMX
|
||||
SXMMMAMMMMMMXSAMXMMMXMMSMMMSMXSASAAXAXMASAXSASXMAMASXAMXAAAXMAMMMMMMSSXSAXAXXAAAASXMMSSSMMMMMMMAMSSMMSSMXMAMASXXAAAXXMMMSSMSAAMAXAMMXMXASAMX
|
||||
MMSASXSAMXMMXMXXXSXMXSAMXSAXAAMAMMXMMMSAMXMMASMMAXAAXAAMSMSMMASAAMAMXMASXMMSAMMMMMXSXAAAAMXMAXXAXXAAXAMXXMXXMSMSSSSSMXAMAXXMASMSSMMMMMSXXASX
|
||||
AAXAMASMSMSMMMSSMMAMASAMXMMMMMSASXXMXAMXSSSMAMXSMMSSSMSMMMAASMSMSMSSMMAMAMAXMXSXXXSAMSSXMMXXAMSXMSXMMSSMMMSXXMAXAAXAXSSSMSMSXXAMXXAXAAMXSAMA
|
||||
MMSAMXMXAAAXXAAAASXMASAMXXAAAASXSASAMXSXMAAMMMXAXAMAMXAAXSSXMMSXMAXXAMXSAMXXXASXMMXMAXMASMSMXXMAMAASAMAAAAXXAMXMMMMSMMXAXSAMXMAMXSSSXSAAMAMX
|
||||
XXAXXXMSMSMSMMSSMMAMXXXAMXSMMMSMMAMSAMXAMXMMMSSMMMMMAXXMMXXXMASAMMMSMMXSMSMSMMMAXAAXMXMASAAXMASXMSSMASMMMSSXSMMXXXAAAXSXMMSMXSAMXMXSAMXXSAMM
|
||||
XMASMAMMXMXXXAXXMSXSMSXMXAAMMAMAMXMXXMXAMAXAXAAASASXSSSSXMAXSXMMMAAAAAAMXMAAMXSMMSMMSASAMXMMSAMXXXAMXMXMSAMAXASXSMSSSMXASAMXMSXSMSAMXMSASASM
|
||||
MXAXMAMMMSXMMMMMXXAAXMASMSSXMASXMMSXXMASXMSMSSSMMASAAAAXMXSXMAXAMXMMSMXXAMSMSMMSAAMAXXXASXMAMMSSXXMMSMAMMAMMXAMMAAMMXMSSMMSSMMXMAMAXSAMXSAMX
|
||||
SXMSSMXSAAAAASASMMMMAMXMAAAASXMXMASXMASXAXAAMMMAMSMMMMMMAAXASMSMSXSAXXXXMXAMXMAASXMASMSMMAMXSXAXASAMXMASMXMXMSMMMXMMAMXMASAMAXSMASMMXXSAMXMX
|
||||
SASAMXAMMXXMAMASMAAXSSSMSMSMMASXMASMAXMSMMMMMASAMAMSMMMSMMSAMAAXAAMMMXSAMSAMAMXMXXMAMXAMXXSSMMXSMAAMXSMSAASXMAAXXMASASMSMMMSMMAXAXXAMMMXSMSS
|
||||
SXMASMMXXXSXSMAMMSSMMAMAAXMASAMAAXSMMMMXXAAASXXMMAXMAAAAAXMXMMMMMSMSAMXAMAASMSMSSXMXSSMMSMMAAMAMXAAXMSAMMMSASMXMSSMMAMMAXAAAXAMMSXSAAASXMMAS
|
||||
SMSAMAXMSMMAMMXMAXXASAMMMMSAMMSMMMMXAAMSMXSMSAMXMMSMMMXXSMMASXSAXAAMSSMSMMXMAAAXMXSAAAXAAAMSXMXSMSSXAXXXXXSMMSAAAMXMSMSSMMSXSSXAMMSXSMSASMAM
|
||||
SAMXSSMMSAMXMASMMSSXMAMXAMMASASMSMAXMSMAMMMAMMMAASAMXXSAMXSXSAASXMXMMXAXMAXMSMMMMAMMSMMSSMMMSMMXMAMMSMSMSMXSAXMMMSAMXASAAAAXSXMXSAMMXASAMMSS
|
||||
MAMXAXMASMMMAMMAAXMMSAMSSMMAMXMAXMMSMAXXSAMAMAMSSMASAAMMMXMMMMMMMMMXMMSMAXXMXXMXMASAMXXMAASAMXAAMASMAXAAAXMMSSMSXSASXMMSMMSSMAMAMMMAMMMXMAMX
|
||||
SAMMMXMAMAMMAMSMMSAAMAXMAAMSSSMSMMAAXMASMMSSMMXMAMAMMSMAMSASXSXAAAXMMAXXASMMAXAASXMASMSMSMMASMSXSAXXMMMSMMSAAMXMASMMAMXXXXXXMAMASXMXSXMSMSMM
|
||||
XAXASXMASAMSAXAAMMMMSMMMMXMAAXAMAMSMSMMAMXAAXXASXMXSXAXAXSAMAMXMSMSASAMSXSASAMSASAMXXAXXMASAMXMAMMSMSAAAAAMMMSAMMMAMAMAMMASMXXSAXAMAMAAMAAMA
|
||||
SMSMSASASAMSXSMSMXAAXAAXXSAMXMAMSMMAAXXMMMMSMSXSAMXMXMMMXMSMSMAMAMSXMAMAAMMMXXXAMMSSMMMMXMAMXAMAMSAASMSMMMSAXSXSMSSMASASXASASXMMSMMASAMMMMSS
|
||||
AXAAXAMXSXMSAXMMMMMSSSMSAMAXMMXMAAMSMMXXAAMXAMXMAMASAXASAMXMAXMMAMMXSXMMMMASXSMSMAAXAAASAMMMMMXAMMMMMAAXXXMMXMXSXAXXXMAAMAMXAXSAAASASXXSAAXX
|
||||
MSMSMXMXSMMMXMAMSASAMXAAASAMXSASMSMMXMSMSMSMSMSSMSASASASASXSMSXSXMXAMMMSXSAMAMAMMMMSSMXXASXMASMMSXMAMMMXSMMSXMASMMMMMMSMMASAMXMMSXMASXAXMXMX
|
||||
XAXAAXMASAXAMMXAAMMSSMMSMMMMXSASAMXMAMAMMAMAXXMAMSXSXMASMMAAAAXAXSMSXSAAXMASAMAMASMMMSMSMMMMXSAAAASXSMXAAAAXAMASXXAAMAXXMASAXAXMMMMXMMMXMAAX
|
||||
SSSMSXSAXXMMMSAMMXMAXAXMASXSMMAXXAAMSSSXSAMAMXSXMMAMXMXMXMSMMMSMSMAMAMMSSMXAMSASASASAMXAXAMSASMMMMMMAAMSSMMSAMXSMMMSMASXSMSMSMSMAAAAXAXAXXSA
|
||||
MAMAMMMAXSAMASXXAAMXXSASMXAAXMAMMSXAAAMASASMMASMMMAMMMMSAMXMAMAXAMAMXMAXAXMAXAXXXSAMXSSMXMSMASASXXAMMMMXAXAAASAMASAAMXMASAMAMXAMMMXMMMMAASMX
|
||||
MAMAMAMAMXAMASXMSXSMMMASXMSMMXXMMAAMMSMASMMAMAXAASASAASMMMXSAXSSSMSSSMSSSMSAMXMXMMMMXMXXAMAMXMASMSSSXXSXMMXXXMAMAMSSSSMMMAMAMMSSMSAMSSSMMXAX
|
||||
SXMAXMMASXMMMXMAAAXAAMAMAXXAAAMSXMMSAXMASMSASMSSMSASMSMMXSAXMSMAAAXAMAMAMAXMAAMAAAAMSMSAMMAMXSAXMAXMAMSXSASMSSSMAMAMAAASMXMXSXAAAMASAAAXXMXM
|
||||
SMSMSASAMAMAMSXXMSMMSSMSSMMSXXAAAAAMXXMXSASXMAXMASXXMMXXSMAXSAMMMMMAMXMAMMMMMSSMSSXSAAXASXSMMMASMMXSMMMXMASAAAMAXMASMXMMAAXAMMMMMSSMMSMASMMM
|
||||
MAAAAAMMMASASAAMXMAXAAXAMXAXMASXSMMSMSMXMAMAMXMMMMMSXMASMMMMMASMMSMSMMSAMMASAMAXAAMMMXMAMAAMSMMMMMASAXSAMAMMMMSSMSMMXSMXXMMASAXXAXAAMAMAXXAX
|
||||
MXMSMMMSSXMXXMXAAXXMSSMSSMMSSMXAMMMAAAAMMXMMSMAMMAAXAAXAMASXSMMAMSAAAASAMSAMASXMMSSMASAMMSMMXAXSAMMSAMMAMXSAMXAAAXXSAMSAAMSAXMSMMXMXSASMSSSS
|
||||
XSXXXXAXMMSSSXSSSSMMXMAMAXMAASMMMMXMSMSAMXMAAXMMSMSSSMSMSASAAXMAMMMMMMSAMMASAMAAXAMXMMMSAMAXSMMSASAMAMSXMAXAMXSMMXXMAMXSSMMMSXAASAXMSXSAAXAA
|
||||
MAAMAMXXAXAAAAAXMAMMAMMMAXMSMMXMASAMXMAXXAMXMMSAAXXAMAAXMASMMMSSSMSSSMXAMSMMMXSXMMSMSMXMASMMMAASXMMSMMAMMSSMMMXAMAMSSMAMXMASAMXMMASAMXMMMMMM
|
||||
AMXSMMXSMMMSMMMMMAMXAMAMASXMAAMMASASAMXMSMSSXAMXSSMMMMMMSASASAXAAMAAMASAMXMAMMMASXMAAAASMMXAXSMSMMAMAXMXAAXAAASAMXAAXXXMASXMXSSSSXMXXMMAXASX
|
||||
SXAAXMAAAAMAAAXAMSSSXSXSSMMSMMSMASAMXMAMXAAXMMMXXMAXAXSXMASXMAMMMMSSMMMXMASASMSAMMMMMSMMSASMMXAXAMAXMMXMMSXXMXSMASMSXMMMMMSMXAAXAXAXMMSAMXSS
|
||||
MMXMAMSSSMSSSMXSXXAMAAXSAMAXAAXMAMXMASXMMMMXSAAMSSMMMXMAMXMASXMSXAAXAXMASMSASAMXMASXMMAAMMMMSMSMSSMSAMXAAMMSMMMXAXXMASASAAMXMMXMMMXSXAMXMMXX
|
||||
MSMSMAAXAXMXMMSMMMAMXMXSAMSMMMMMAMXXAMAXXMAASAAXXAXMMASAMASAMAASMMSSMAXASAMXMAMXSAMXSSMMMSAAAAAAAAXSAMXMXSAXAAAMMSMXMMASMXMAXXASXSMAMXMSAMXM
|
||||
SAAAAMMSMMSAMXAAASAMAXAXXMAMASASMSSMSSMMSMMXSMSXSAMXSASASMSAMMMMAMMAMAMSMMMXSXMMMXSMXASAAMMSSSMSMSMMAMAMMMASMMMMSAAAMSASASMSMMASAMAMSMAMXMSM
|
||||
SMSMSMAAXAMASXSSMSASXMMSMSMSASXSAAMAMAXAAASAXAAXXMAMMASAMXSAMXAASMXAMASAAAMAMAAASAMXSAMMMSAAAAAXMAXSASASAMXMMAAXSMSMXAAXASAMXMAMAMSXXMASAXAX
|
||||
XMAXXMMSMMSXMXMAXSXMXXXAXSXMXSXMMMMASXMASAMXMXMMAXSAMXMXMASAMSSSXASXSXSMSMMXSMMSMXSAMXMSAAMMSMMMXAASXSXSXSMMSMMMMXAXAMXMXMAMXMASAMAXXMASXSAS
|
||||
@..@@.@@.@@@@@....@.@@.....@@@@.@.@@@@@.@.@.@@@@@@@@...@@..@..@@.@@@..@.@@@@.@@@@.@..@@....@.@.@.@@@...@@@.@@...@@..@@@..@@.@@.@..@.@@@.
|
||||
@@@..@@@.@@@@@@@@@@..@@.@@@.@@@@@@@@@..@.@@@@....@.@.@@@@.@@@@.@@.@@.@@@.@.@@@.@@...@@@@.@@@@@@@@@@@.@@@@@@@@@@.@@@@@@@.@@@@..@@@@@...@.
|
||||
@.@@@@..@@@@@....@@@@@@..@@@.@..@.@.@@@.@@..@.@.@@@.@@.@@@@@@@.@@@..@@@@@..@.@@.@@.@.@.@@.@.@@.@@@@@@@@.@@@@@@.@.@@.@@.@@@@..@.@@@@@...@
|
||||
@@@@@@@.@.@@@.@.@@@.@.@@@.@@.@@...@@@@@.@.@.@@@.....@@.@@@@.@@@.@.@.@@@@@@.@@@@@.@@@@.@..@@.@@@@@.@@.@@@@.@.@@@@@@@.@@@@.@@@@@@.@.@@@.@.
|
||||
@.@@@@.@@@.@@@..@...@@@@..@..@..@@@@....@@@@.@@@@@@@.@.@@@.@@@@..@@@@..@@...@.@@@@@@@@@@@@@@@.....@@...@@@.@.@@...@@@..@@.@@@@@@@@..@@..
|
||||
@@@@.@..@@@@..@@...@.@..@@@.@@..@@@@@...@@@.@@@.@....@.@.@.@@..@@..@..@@.@@@...@@@...@@@@....@@@..@..@....@@......@@..@@..@@@@@@..@@.@@.
|
||||
.@@@@.@@@@.@@.@@@.@.@@@@@@.@..@@..@@@@.@@.@@..@.@@.@..@@@@@@.@@.@@@..@.@@....@@@@@.@@..@..@.@@@@.@....@@@.@....@.@@@@@@@@@@.@.@@@@...@@@
|
||||
@.@@...@.@@@.@.@.@@.@@@@@..@.@@@@@.@@.@@@.@..@@@@..@.@@@..@@@@.@@.@.@@.@@.@@.@.@.@@@@@@@@@.@@@@.@@@@@@.@...@..@..@@.@@.@@@@@@@@@.@.@..@@
|
||||
@..@.@.@@.@@@@@@@@@@@@..@@..@@.@@@..@@@.@..@@...@.@.@@.@@..@..@@@@.@@@.@@@@.@..@.@..@@@@@@.@.@@.@@@@.@..@@@@@.@@@..@@....@@@.@@.@.@@@...
|
||||
@@.@@@@.@..@@.@.@.@@.@@@..@@..@@@@@..@@.@.@@@@@..@..@.....@...@@@@@@@@@@..@@@@@@@@.@@@.@..@@@@@@@.@@......@@@...@...@...@@@.@.@.@@@@@@@@
|
||||
@@@@@....@@@@@.@@.@@@@@@..@.@.@...@@@@@.@.@@@@........@.@.@@@@.@..@@@@..@@@@.@@.@@@.@...@@@@@@..@@@@@@.@@@@@@.@.@..@@@@...@@.@@...@..@.@
|
||||
.@@@@@@@@@.@..@@@..@@@@@@@@.....@..@@@@@@.@...@.@@@@@.@.@@@.@.@@@@.@.@.@.@..@.@@@.@@@@..@.@..@@@@@@@@@@@@..@@@.@.@@@@@@@@@.@..@.@.@@@@@@
|
||||
@@@@@@@@...@@.@@.@@@@..@@@.@@@@@@@@@@.@@@..@@@.@@@..@@..@..@@@@.@.@.@@@@.@@....@@@@.@.@.@@@@@@.@@@@..@@@.@@@.@@@..@@@@.....@@.@..@.@@.@@
|
||||
@.@.@@@@....@....@@@@@@@.@@@.@.@@@@@.@.@..@@@.@@@@@.@@@@..@@.....@@@@.@@.@@@..@.@@...@@@.@@.@@@@.@.@@@.@@...@@@.@@@..@..@@@..@@.@@..@@@.
|
||||
@.@@@@@@...@.@@@@@@@..@..@@.@@.@.@..@@.@.@@..@.@@@.@@@@@@.@@@@.@...@@@@@.@@@.@.@@@@..@@@..@@.@@@.@@.@@@..@@@.@.@@@@@@@..@@.@@.@@@.@.@@..
|
||||
@@....@@@..@@@@@.@@.@@@@@.@.@@.@@@@@@@@@.@@@@@@..@@@@.@@.@.@@...@@..@.@@@@@@@@@@@@@@@@..@@@@@@...@@@@@@@@@..@@@@@@@@@..@@@@.@@.@.@.@@@@.
|
||||
..@.@@@@.@@@@.@..@@@@...@@.@@...@@..@@@@@@.@@....@@..@@@@@@.@@@@@..@..@@@.@@....@@.@@@..@.@..@.@.@@@@.@@@@@.@@...@@@@.@@..@@@@@@.@@@.@..
|
||||
@.@...@@@@.....@@@@..@@.@@@@@@@.@...@@@.@@@@@@.@.@@@@.@@@...@.@@@@@@@..@@@@@@.@@@@@@@.@.@@...@@@@@.@..@@@@@..@@@.@@@@...@@@@@.@.@.@...@@
|
||||
.@@@@@..@@@@@@@.@@@.@.@.@.@@@....@@@@@@.@@@@@.@..@.@@@@.@@..@@@@@.@@@@..@.@@@@@@.@@@@@@....@@@@.@@@@@@@@@..@.@..@@@@.@@@@@@...@@@@..@@@@
|
||||
@@.@@@@@.@@.@@@@@@.@@@.@.@@..@@@@.@@.@@@.....@.@@.@@@@@@.@@@...@@@@@.@@@.@@..@@@@@@@@@@@@@.@@.@....@@@.@.@@@@@@@@.@.@.@@.@@@@.@@@@..@@..
|
||||
@.@@@..@@.@.@.@@@@@..@@@@.@....@.@@@.@@@.@@.@.@@.@@.@@.@@..@@@.@@@@..@@@.@@.@@@@@@@@@@.@.@..@@@@@@.@@@@@@@.@..@.@@@.@@.@@.@..@.@@@.@.@@@
|
||||
@@.@.@@@@@@.@....@@@@@@@.@@.@@@@@@@@@@.@@.@.@@@..@@@@@@..@@..@.@.@@@@..@@@.@@..@@@@@@@@@...@@.@@@@@.@@@@@..@..@@.....@@.@@@@..@@@.@@@..@
|
||||
@@@@.@.@@.@@@@@@@@@..@.@@@@..@.@@..@@@@@@@.@@.@..@@@@@...@@@@@@@@@.@.@.@@@@@.@@...@@.@.....@@@.@@@@@.@.@@.@@.@.@@@..@.@..@@@@.@@@...@@@@
|
||||
@@@...@.@@@.@@@.@@@@@@....@@.@@.@.@@@@.@@@@@.@@@@.@.@.@@.@@....@.@@@@..@@......@@.@@@@@@@@@@..@@.@@.@@@@.@@@.@@@..@.@.@..@@..@.@@@..@..@
|
||||
@.@@@@@@.@@@.@@..@.@@@@@.@@@@@...@..@..@@@@@.@..@@@.@..@@@@.@@.@@@@@@.@@.@@@.@@.@.@..@...@@@@@.@@@@@@@@@...@@.@.@...@...@@...@..@@@.@..@
|
||||
.@@@..@@....@...@@.@..@....@@@@@@.@.@...@@.@@@.@@@.@.@.@@@...@.@@@.@@@.@@.@@@..@@@..@....@.@@@@.@@@@.@.@.@@..@..@..@@...@.@.....@@@@@@@@
|
||||
.@@..@@@.@@...@@@@.@@@@@@.@@@@@@@.@@.@@.@@@@@@....@@.@.@.@@@@.@.@.@...@@@@@@.@.@@.@@@.@..@@@@.@@@@@.@..@@.@.@..@.@.@@..@@@@.@.@@@@.@.@.@
|
||||
@@@.@@@@@@..@..@@.@.@@@..@@@@@@.@@@.@.@@@@@@@@@@@@@@.@.@@@.@@.@@@@@.@.@.@....@.@@@@..@..@@.@@@@@@@@@@@.@@@@...@..@.@@@...@@@.@@@..@..@@@
|
||||
@@.@@@@@@..@@.@@@@@..@@@@@@@@.@@@@@@@@..@.@@@@.@@@@.@@@@@.@@@@@@@.@@..@@@@@@@@@@@.@@@@...@.@..@.@..@.@..@@@@...@@@@@@.@@@.@@@@@.@.@@@@.@
|
||||
@.@@@...@@.@@.@@@.@@@.@@...@.@@@@@@..@@.@@@.@@@.@.@@@@@..@@@@@@.@.@.@.@@@@@..@@..@@.@@.@..@.@@.@@@..@...@@@..@@...@@..@@@..@@@@@@@@@@.@@
|
||||
@..@..@@.....@@..@.@.@@@@@.@@.@@.@@@@@@@@..@..@@.@..@@....@@.@@@..@@@@.@@...@@@@@.@@@.@@..@.@@@.@@@@.@@..@@@@@..@.@...@.@@@@.@.....@@@@@
|
||||
@.@@@.@@@@@@.@@..@.@@@@@@@..@@.@@.@...@.@@....@@....@.@@@@@@@@.@@@@.@@@@@@@..@@@@.@@@@@.@@.@.@@@.@@@@@.@.@@@@.@...@@.@.@..@..@@@@@@.@..@
|
||||
.@..@..@.@.@@@@@@.@@@.@@@@@@..@.@.@@@.@@@@@@@@.@@@@.@@@.@@@.@.@@.@..@.@@.@@@@@@@.@...@@@@.@@@@@@@.@.@.@@@.@@@...@@@.@@@@@@@@.@...@.@@@@@
|
||||
.@@@@.@@@.@.@@@@.@...@@@@@..@@.@.@@@@.@@@@@@@..@.@..@@@@.@@@@@@@.@@..@@@@..@@.@.@.@@@@@@@@@@.@@.@@@@@.@@@@@@.@..@.@...@@@@.@..@@@..@@@.@
|
||||
@....@..@.@@.@..@...@..@@@.@@@.@..@@....@@@.@@.@@@@@@.@@..@@@.@@...@@@@@.@.@@@..@..@.@@.@@@.@@@.@@@.@@@@@@@@@.@@@@@@@.@@@.@.@.@@@..@@@.@
|
||||
@@@@@@...@@@@@..@@.@@@@@@@.@@.@@@@.@@@@@@@@@@....@@@@@@@.@@@.@@.....@@@.@@@@..@..@@@@..@@..@@@@.@.@@..@.@@.@..@...@@@@@@.@.@..@@.@@..@.@
|
||||
@@@@@@@.@@@@@@@@@..@@.@.@.@@@.@@@@@.@@@.@@@.@.@@@.@..@.@@@.@.@...@@@@@.@@@.@@..@..@.@@@@@.@@@@@.@.@@.@@...@.@@@@@....@@@..@.@.@@.@@.@@@@
|
||||
@@@@....@.@@@@.@@..@@@@@..@@.@@@.@@@...@@@.@@@@@....@@@@.@@..@.@.@.@.@@.@...@@@@@@@.@..@...@@...@@@@@@..@.@@@.@.@@....@@@.@@@@@@.@.@@.@@
|
||||
....@.@@@..@.@@@..@@@@@..@...@.@@@.@@@@@@@..@@@@.@.@...@@@..@@@@..@@..@.@.@@@.@.@@..@.@..@@.@@.@@.@.@.@.@..@@@@@@.@@@@.@.@@@@@..@@@@@@.@
|
||||
..@.@@@..@...@@...@..@@.@.@@@@.@@.@@..@.@@@@..@@...@@@.@@.@.@@@@@@@.@@.@@.@@..@.@@@@.@@.@@@@..@@@..@@@@@@@...@@..@@@@..@@.@@@.@@@..@@.@.
|
||||
@@@@@.@.@@.....@@@.@@@@@@@.@@@@@.....@@.@@@.@@.@..@@@@@@@@.@@@.@@.@@.@@@.@@@@@@@@.@.@@.@@@.@@@.@@.@.@@.@@@@.@@..@@@@@@@..@@@.@@@@@.@@@.@
|
||||
..@.@@@@@.@.@@.@@@@.@@@@@@.@.@...@....@@@@@..@..@@@@.@.@@@.@.@....@@.@@@@@...@@..@@.@@@@.@@@..@.@@@@@@@.@.@.@@@..@@@.@@..@....@..@@@@...
|
||||
@.@.@@@@.@@..@@.@.@@.@@@@..@@@.@@@.@@@@@@.@@@@@@@.@@.@@@@.@@.@.@.@@@@@..@@@@.@@.@.@@@@...@@@.@.@@.@@@@@@@.@.@@@.@@@@.@@@......@.@@@@.@@@
|
||||
@..@@@.@@@..@@@..@@@@@@@.@@@@@@.@.@@@@@@.@.@@.@.@...@....@..@@@@@@@@@.@...@@@....@@@@@@@@.@..@@@.@.@.@@.@.@.@@@.@@@@@..@@@.....@.@@.@...
|
||||
@.@.@.@..@@@..@@....@@..@.@@.@.@@@@.@@@@@.@@.@@.@@@@@@.@.@.@@.@..@.@.@@@@.@@.@.@.@@@@.@.@@..@@@@@..@@@.@....@@.@.@@@@.@...@@@..@@@@.@@..
|
||||
@.@.@@@.@..@@@@.@.@@..@.@@@@@.@@....@.@@..@..@..@@@@@@.@@.@@@.@..@@@@@@..@.@@.@.@@.@@.@@.@@.@@.@@@@@@@@@@@.@.@@@@@..@@@@@@@.@....@@@...@
|
||||
@@.@@@@..@@@@@@..@.@@@@@@@@..@..@@@.@.@@@@@..@@@@@.@..@@@@@@@..@.@@@@@@@@...@.@.@@@@..@@@@@@.@@..@@.@@@@@@@.@@@@@..@.@@.@@.@@.@@..@.@.@@
|
||||
.@@@...@@@@@@@@..@.@@@@@...@.@@@@@@@@@@@.@@@@@@@.@.@@@@@@.@@@@.@@.@@@.@@@@.@@@@@@@@@@@@.@@@@@@@.@@.@.@.@@.@@@@.@.@.@@@@.@@@@@..@@@...@..
|
||||
@@..@@@@.@@.@@@@@.@.@@.@.@@.@@@@..@@@.@.@.@@@@@@@@@..@@@@@.@@@@.@.@..@@.@@@..@.@.@@@...@@@.@.@..@@@..@@@.@..@@@.@@@@.@@.@@.@@..@.@@@@@@.
|
||||
.@.@@..@.@@@.@...@@.@@@@@@@@@@@.@@@@@.@@@@@@@@..@@.@.@@@.@@.@.....@@...@@@@@@@.@@@@.@.@@..@@.@@@.@@@@.@@@.@@.@@.@@..@..@.@@.@@@@@.@@@@@.
|
||||
@@@@.@@@@.@@..@@....@@@@..@.@@.@.@..@.@@@@@..@@@.@@..@.@.@...@....@.@..@@.@..@@.@@@@@@@@.@.@.@.@@@.@@..@@@.@.@@@...@@@@@.@@@@.@..@@@@@@.
|
||||
...@.@@@@@@@@@@@@@.@@@@@@.@@@@@@@@@@@.@@@@.@.....@@@..@.@@.@@.@@@.@@@@@.@@.@@@.@@...@.@@..@.@@.@@@@@.@@@@@.@@@@.@@@.@@.@@.@@.@..@.@@.@@@
|
||||
@@...@@@@..@.@..@..@@.@@@.@@.@.@..@@@.@@.@@.@...@.@.@@@..@@@.@@@@.@@.@..@@@.@@@.@@..@@@@@.@@@.@.....@@@@.@@@..@.@@@@@.@.@@@...@@@@@..@..
|
||||
..@@.@..@@@@...@..@@@.......@@@.@@.@@@.@@@.@@@@.@.@...@@@.@@@@...@@...@@.@@.@@@@@@@@@@.@@@@@...@...@@@@@.@..@.@@@.@@@@@@.@@...@@@..@.@@.
|
||||
@@@@@...@@.@@.@@.....@@@@...@...@@@@.@@@@@.@@@@.@@@@.@@.@@@..@@@@@@@@.@@@.@@@@..@.@@@@@.@.@.@@..@@.@@@.@@.@@@@@@.....@.@.@.@@...@.@@@@@.
|
||||
@@..@@@@@@@.@@.@@...@@@@..@@.@.@.@.@@@.@.@...@@..@@@@@@@.@...@@@.@@@@@.@@.@.@@@@.@.@.@.@@.@@@@@@@@@@@.@.@@..@..@...@@..@.@.@.@@@.@@@@@..
|
||||
.@.@..@@@@@@@@.@..@@@.@@@@..@.@@..@@@@.@@@@...@@..@..@.@@@@...@.@@@@.@..@@.@..@.@@@@@.@@@@.@.@@@@@.@....@.@@@.@@@.@@@@...@.@@@..@....@@@
|
||||
.@@@@@..@...@@@@@@@@@@@@@@@.@@..@@@..@@@@....@.@@@.@..@@..@@....@@@@...@@@.@.@@@@.@.@@.@....@..@@..@@@.@..@@..@@.@..@@.@.@..@.@@...@@.@@
|
||||
@@@@@.@@@@.@..@.@@.@@@@@@.@@@@@@@@@@.@@@@.@@@...@@@.@@@@@..@@.@@@..@@@.@@.@@.@@.@@@..@@@@.@@.@@@@.@@@@.@@.@@@.@..@@..@@@..@@@.@..@@@@@@.
|
||||
......@@@@@@@@@@.@@@@@@@.@@@@@@..@.@.@@@@@@@@@@@@..@@@@.@@@@@@@@@@@@@.@@@@@@@@@@@@.@@@@@.@@....@@..@.@.@..@@...@@.@@@@@@@@@@@@.@...@@@@.
|
||||
@@@.@.@.@..@@@@.@....@@@.@@@@.@..@@@..@@@@....@@.@@.@@@@.@@@@.@@.@@@@@@@@@.@.@@.@.@.@..@@@..@@@.@..@..@..@.@@@@.@@@@@@...@.@@@@@.@@@.@@@
|
||||
.@@.@@@@..@.@..@@@.@@@.@...@@@.@@@@.@.@@@@@@.@@@..@@.....@@@@..@.@.@@@@...@@@@@@@...@@@..@@..@@@@@@@@.@@...@@..@@@.@.@@@.@@@.@@@.@..@@@@
|
||||
@@...@@@@@.@@..@@@..@@@@@.@..@@@@@@.@.@..@.@@@@.@@@@..@@...@..@@@.@@@.@.....@@@@@@@.@...@.@..@.@@...@..@@..@@@.@.@@@.@@@...@@@@.@@.@@.@@
|
||||
@@@@@.....@.@@.@@@@.@@@@.@@@@@..@@.....@..@@.@@@@.@@@@..@@@.@.@@.@.@@..@.@@@.@.@.@..@@...@@.@@@@@@@.@@@..@@.@@@@@@@.@.@@@@..@..@@.@@.@..
|
||||
.@@@@...@.@@.@@@..@@@@@.@.@@@@.@....@.@.@@@@.@@@.@@..@@..@@@@.@@.@@@..@....@@..@@@.@@@@@.@@@.@.@.@@...@.@...@@.@@@.@..@@@@@.@..@@@..@.@@
|
||||
..@.@@@.@@.@@@.@@@@@.@@@@@@.@@@@.@@.@@@.@@@.@..@@..@.@@@.@.@.@@@...@@.@@.@.@@@.@@@.@.@@@@@@@@.@..@@@@@.@..@.@@@@@@@..@@..@.@@.@@@..@.@@@
|
||||
.@.@@.@@@@@.@@.@@.@@@.....@@@@@@....@@@@@@@@@@@@@..@..@.@@@@@@@.@.@..@..@@.@@.@.@@.@@.@@.@.@..@...@@@.@@@.@..@@...@@@@@..@@@.@.@@@.@..@@
|
||||
@@@@@.@.@@@..@@@.@@.@..@@@.@@@.@..@@@@@@@.@@.@@@@@@.@@@.@..@@.@@.@@..@@@@....@..@@.@@@@@@@@..@@.@@@.@@....@@@.@@.@@.@.@@@@@@.@.@.@@@..@@
|
||||
...@@@@..@@@@.@@..@@.@...@..@@@@@..@.@@@..@.@.@@..@...@.@@@.@.@.@@@@@.@@.@.@@@@@@..@@..@.@@@.@.@.@.@@@.@@@@.@.@@@@...@.@@...@@@@@.@..@.@
|
||||
@.@@@.@@..@@..@.@..@.@@@@@...@@@..@@..@@@@@@@@@@....@.@@@@.@@.@@@@@@@@@@@...@@@@.@@@.@.@@@@@@@@@@@@@@.@@....@@@@@.@...@@.@..@.@.@@@..@@.
|
||||
@@@@.@@.@@@@@.@.@@@@.@@@.@@@@.@@@@@..@.@@.@...@@........@@@.@@@@@@@@@.@@.@@@@.@@.@@@@@@@....@@@@@@.@...@.@@.@@.@@.@.@@..@@@.@@@.@@@@@@@@
|
||||
@....@.@.@@@@....@@@@@.@.@@.@@@.@@@@.@..@.@.@.@.@.@@@....@@@@@@.@@@@@..@@@@@.@@@@@@..@@@@@@.@@..@.@.@@.@@....@@.@@@@@@..@@@.@.@...@@...@
|
||||
@@.@@..@..@.@@@@@@@@..@@@@@.@.@@...@@@@@@..@@@.@@@@.@@@@@@...@.@@@.@@.@@.@@.@@@..@..@.@@.@..@@@.@@@@.@@@@@@@.@@@@@@@@.@.@@.@@@@.....@@@.
|
||||
.....@@@@..@.@@@.@@.@@@.@.@..@@..@@.@@.@@@@@@@.@@@@@.@.@@@@...@..@..@.@@@@.@@@.@@@.@@@@@@@@@.@@@@.@@@@.@@@@..@.@.@.@@@@@@@@..@@@@..@@@..
|
||||
@@@@@..@@@@.@@@@@@@@..@@@.@...@@@@@@@@@..@..@....@@@@.@.@@@.@.@.@.@.@@@@@@.@@@.@.@@.@@@@@@@.@@@@.@@.@@@.@@@..@@@.@....@......@@@@@@.@.@@
|
||||
....@.@@@@..@@@@@@@@@..@@@@.@@@.@@.@.@@@@@@@@@.@@@@@@....@.@@@@.@.@@..@.@.@@@@.@..@@@.@.@@..@.@@@@.@@@@@@@@@.@@...@@..@@@@.@.@@.@@.@@@@@
|
||||
.@@.@@@..@@.@@@@..@.@@@@@@.@.@...@@@@...@@@.@.@..@@@@@.@@@@.@@@.@@@.@@@@@@@..@@@@.@@@.@@@@@@@@@@@@@.@.@@@.@@.....@@.@@@.@@.@@@@@@@.@@.@@
|
||||
@.@..@@@@@@@@@..@@@...@.@...@@@@.@@@@..@@@@@@@@@.@@@@@@@@.@..@@@...@@@@..@@@@@.@....@@@..@@@@.@@@.@@@@.@@@.@@@@@.@.@@@@@@..@@@@..@@....@
|
||||
...@..@@@.@.@@@@.@.@@@.@..@.@@..@.@@...@@..@@@@.@...@@.@@..@@@@@@.@...@@@....@@.@@@@.@.@.@@@.@.@.@.@.@@@.@@@@@@..@@@@@...@@...@.@@@.@@@.
|
||||
.@.@...@@@.@@@...@@..@@@.@@@@@@@@@..@....@@@.@@.@@@..@@@@@.@@@.@.@.@@@.@@.@@.@...@@@@...@@@..@@@@@@@.@.@@.@@@@@@@.@@..@.@.@@@@@.....@@@@
|
||||
@.@.@@..@.@....@.@@@@.@.@@@.@@@@.@@.@.@..@@.@@@@@@@@.@.@.@..@@@@.@@...@..@@@@.@@@...@.@@..@@..@.@..@..@@@..@@@@.@@@@@..@.@@@@@...@@.@@@@
|
||||
@@@...@@@.@.@..@...@@@@..@@@@@..@@@@@@.@@@....@@.@.@@.@.@@@.@@@@.@..@@.....@@@@@.@@@@@@.@.@@@@.@.@.@@@@@@@@@@@@@@@@@@@@...@@.@@@.@..@..@
|
||||
@@@@@@..@@@@@@@@..@@@.@.@@@.@@@@@@@....@@....@@..@..@@@@@@.@.@@.@@.@..@@@....@@.@@@.@.@@.@@..@@@@@@.@.@@..@.@@.@.@@..@@@.@@@@@@.@...@@@.
|
||||
@.@..@@..@@@.@@@@@.@.@.@@@@.@@@.@.@.@@@@@...@@@.@.@@.@.@@.@@...@.@@..@@@@@..@@@.@@@@@.@.@@@@@@@@@.@@.@@@@@@@@@..@@..@.@@@@@@@@@@....@@@@
|
||||
.@@.@@..@@@.@@@@@....@@@.@@@@@@.......@@..@.@....@@.@@@@@@..@.@@@.@@@@@.@@.@@@@@....@@.@.@..@@@..@.@...@@.@@@.@@@@..@@.@..@.@@@..@@@@@.@
|
||||
@@@@.@@@.@@.@@@@@@@@@.@.@..@@@.@..@@.@@..@@@.@@.@@@@....@.@@.@.@@.@.@@@@@@@.@@@@@@@@@...@.@.@@@@@@@.@@..@..@@@.@.@@@@@@@@.@.@@.@@@@.@..@
|
||||
@@@@.@.@@@@@..@@.@@@@@@@@.@@@.@.@.@@@@@.@@@@@@@@@..@@....@..@@@.@.@.@@@@@@.@@@..@@..@@...@@..@@@.@@...@@.@@@.@@@@@@@.@@.@@@@.@@@.@@.@@.@
|
||||
@......@..@@@@@.@..@.@@@@.@.@@@.@@@@.@.@@@@@@@.@@..@.@@..@.@.@@.@@@.@.@.@@@.@@.@@@@@@....@@@@..@@@@@@...@@@@@@@..@@@@.@@@.@@.@@..@@.@@.@
|
||||
@@@@@@@@@@@.@...@@@@@@@@@@@@@@@@@@@@@@@@...@@@@@@@@.@.@.@@@@@@@@@@@@@@@.@@@.@..@.@@@.@.@@@@@@@@.@.....@..@@.@@@@@@@@..@@@..@@@@@@@@@@...
|
||||
.@@.@@.@@.@@@@@.@@@@@@@@@@@@.@@@@@@@.@@@@..@@@...@@@..@@@.@.@@@@@.@.@@@@@@..@@...@@.@.@@@@@@.@@..@..@..@@@.@@..@.@@@@.@@@.@@@@@@....@.@@
|
||||
@..@....@.@@.@..@@..@@@@.@..@@@.@..@@@..@.@@@..@..@.@.@@@@.@.@.@@@@@@@@@@@@.@@@@@@.@@@.@@@.@.@..@@@.@@@@.@.@@@......@@.@.@@.@@.@..@@...@
|
||||
@..@@@@@@@..@@@.@@@@@@.@.@@@@@@@..@@@@@@@..@@@@@@.@@.@@.@@.@.@@@@@@.@..@@@@..@.@.@@@..@.@.@.@..@.@.@@..@@.@.@@@@@@.@.@.@@.@.@.@@@@@.@@@@
|
||||
.@.@...@@@@.@.@@@@@@@..@@.@..@@.@@.@..@@@@.@@@@@@.@...@.@...@@@@@@.@..@@@@..@.@..@.@.@.@@@..@..@..@.@@..@@@@.@@.@@.@@@@@@@..@.@.@@..@.@.
|
||||
@@...@@@.@@.@@@@@@@@@.@.@@@@.@@..@.@.@.@@.@.@@@@@@@.@.@@@@@@..@@.@.@.@@@.@@@@@@@@@@.@@@@.@@..@@.@@@@@....@@@@@.@@@..@@.@...@@@@@@.@@@.@@
|
||||
...@...@.@@.@.@@@@@..@@.@@@.@.@@@.@@@@@.@@.@..@.@@.@@@.@@@..@.@@@@@@@@@.@@.@@.@@@.@@@.@@@.@@.@@.@.@@..@.@@@@@@@@.@@@@.@.@..@@.@@@...@.@.
|
||||
.@....@@@@.@.@@@@@.@@@..@.@..@@@@..@@@..@@@.@@@.@@@..@..@..@@...@@.@@@@@@.@.@@@.@@@@@@@@.@@@@@@@@.@@@@@.@@.@@@..@.@@@@.@.@@.@@@@.@@.@@@.
|
||||
.......@...@@@@@@@@@@@@..@@@@@@@@@@@@@@.@.@.@..@.@@@@...@.@@@.@@@@...@@.@@@@.@@@@@@@@.@@.@.@.@@@@@..@@.@@@.@@.@@@.@..@..@@@@@@.@@@..@.@.
|
||||
@@@@.@.@@@@@@...@@..@@@@@@@@@.@@.@@@..@@@@@@..@@@@..@.@..@@.@.@@@@.@..@@.@...@.@@@@@@@@@@@@@.@@.@@@@.@@@...@@.@@@@@.@@.@@@..@@.@@@@@@.@.
|
||||
@@@.@@@..@@@@@@@@@@@@@.@@@@.@..@@@@@@.@....@@@@@@@.@@@..@@@@..@...@@..@@.@@@@.....@@.@.@@@@@@@@@@..@@@.@@@..@@@@..@@@.@@@@@@@.@@@...@@@@
|
||||
@@@.@@.@.@@@@@@@@..@.@@..@..@@@..@...@.@@@..@.@@@@@..@@@.@@@@@@@@...@@@@.@@@.@..@@@.@.@@...@@.@@@@@@@.@@@.@@.@.@@@@@@@@.@.@@..@@@@@.@@@.
|
||||
.@..@.@@@@@..@@@.@..@@@@@.@@@.@@@@@...@.....@@..@@@@.@@@.@.@@@.@.@.@..@@.@@...@@@@.@@@@.@@@.@.@@@@@@.@@@.@..@.@@.@@@@.@.@..@@@@@@@..@.@.
|
||||
.@@.@@.@..@.@.@@...@@@.@..@..@.@.@@@..@.@@.@@@@@@@.@@@@@@..@@...@.@@@@@@@@@...@@.@@@@.@@@@@@@@@@.@@@.@.@..@@..@.@.@@@@@.@@@@@@@.@@@@.@..
|
||||
@@@.@.@@@@@.@@..@.@@@@@@.@..@.@@@@..@@@@.@@...@@.@.....@@....@@.@@.@@.@@@@.@..@@.@@@@@.@@..@@@.@@...@@.@@@@@@@@@...@@@..@@@@@@@.@@@@...@
|
||||
@@@@@@@@@@..@@.@@....@.@..@@...@@@@@@.@@@...@@@@.@@.@.@@.@@@@@.@.@@@@@@..@.@@@.@@@@.@@...@@.@@@.@.@@@..@@.@@@.@@@@@@@.@@@.@.@@@..@@..@@.
|
||||
@@.@..@@@@..@@.@@@@..@@..@@@@@@@@@.@.@.@.@@@@@.@@@@@@.@.@@@@@.@.@@@@.@@.@....@.@@@@@@@@@@.@@@@......@@@@@.@@@@.@@@@@.@@@@@.@@.@@@@@@@@@@
|
||||
.@@.@@@@@.@@.@@@@.@.....@@...@..@.@@@@..@@....@..@...@.@@@.@..@..@@@@@@..@@.@...@.@@@.@@...@..@@@@@@@@.@@..@..@@@@@@@@.@@.@@@.@.@@.@@.@@
|
||||
@@..@..@.@@@.@@.@@@.@@@@..@.@@....@@@@@@.@.@@@@....@@@@.@.@@..@..@..@@@.@@.@...@.@@@@@@.@@@@.@@@@@@@@@@..@..@@.@..@.@@@@@..@@@..@.@@@@.@
|
||||
@.@@.@@@@.@.@..@@@@@..@.@@.@@@...@@@@.@@.@@@@@...@..@@@@@.@@@@@@@@@@..@@..@@@.@.@@@.@@...@@....@@@.@.@..@.@@.....@@@@@.@@..@@@.@.@.@...@
|
||||
@..@.@@.@.@@...@@@.@@.@@..@.@@@..@@@.....@@...@@@.@.@@@@@@@@.@@..@@...@@.@@.@@..@@@@.@...@@.@.@@@@...@@@@.@@..@.@@@.@@@@@@..@@@.@@@@.@@@
|
||||
@.@@@@@@@.@..@@@@@@@@@@@@@@@@.@@@@@..@@..@.@@@@@..@@@@@@@.@.@.@@...@..@@@.@@@@.@@.@.@@...@.@..@.@@.@.@@@...@@@@@@@.@@@@.@@@@.@@@@@.@.@..
|
||||
@@.@@.@@@@@..@.@.@@@@@@@@@@.@@..@@@.@.@@.@@@.@@@..@@...@.@@@.@.@..@..@@@.@.@@@@@.@@@@@@..@.@@@@@.@.@.@@@.@@.@...@@@.@@@@@@@.@@@.@.@@@@@.
|
||||
...@@@@@@@.@@..@..@@@@@..@@.@@@@@@@@..@..@@@@.@@@@@.@@@.@@@@...@@.@@.@@@@@@@@..@@@@..@@...@@@@@@.@@...@@@@@@.@@...@@.@@@@@@..@@@..@.@@..
|
||||
@@...@@@.@@@@.@@@@..@@.@.@@..@.@@@@.@.@@@@@@...@@@.@@..@@.@@@...@@@@.@@.@@@.@@@@@@@..@@@@@@@@.@..@@@@@@@@@@.@..@@.@@@..@.@@.@@@@@@.....@
|
||||
@@...@@@@@......@@@@.@@@.@@.@.@@..@@@.@.@@@.@@@..@@@...@.@@@@@@@@@.@.@@@.@.@@..@.@@..@.@@@.@@.@@@.@@@@.@@@.@.@@.@@.@.@@.@..@@..@.@@...@.
|
||||
@@.@@@@@..@@@@.@@@.@@@..@@@..@.@.@@@@@@@@@.@..@@@@@@..@@...@@.....@@@@@@@@.@@@@@.@@@@...@@...@@@@@@@.@.@.@@..@@.@.@@.@@@@.@@@@@@@@.@@@@@
|
||||
.@@..@@.@@@.@@.@@@@..@.....@@@....@.@@@@@@@.@.@..@@@@@.@.@@.@.@..@..@@@.@.@@...@@@@@....@@.@@@@.@@@@@@@.@..@@.@.@@@@@@.@@@.@@@.@@.@@..@.
|
||||
@.@.@@@@.....@.@.@@.@.@@@@@@@..@@@@@..@.@@@@@.@.@@@@..@.@@@..@.@@@.@@@@.@@..@@@@.@@.@..@@..@.@@@@@@@@@..@@..@.@@@.@@@@.@@@.@@@@@@@@.@@@@
|
||||
@.@@@.@.@@..@@...@.@@@.@@@.@@.@.@.@@@@@.@.@@@@@@@@@@@@.@@...@.@.@.@.@...@@@....@.@@@.@@.@@@@@@@..@@.@...@...@.@@@@@@@..@@@.@@@..@@@@@@@@
|
||||
@@.@.@.@@.@@@.@@@@@.@@.@.@@@@@@@.@@@@@@@.@@.@@@@@.@@@...@@.@@@@.@..@@.@@.@@@@.@@@.@@@.@.@@@@@@@@@..@@@@@@@.@@..@@@.@@.@@@.@@.@@.@@@@@@@@
|
||||
@...@....@@@@..@.@..@.@..@@@@.@.@@...@.@@@@@.@.@...@@@@@@@@..@.@.@@.@@@.@@.@@@@..@@@.@@@@.@@@@@@@..@@@@.@.@@@@.@.@@@@@@.@@.@.@@.@@@.@@..
|
||||
.@@@@...@@@@@@....@@@...@.@..@@@@@@@@@@.@.@@@@@..@@@..@...@..@@@.@@.@@@.@@@@..@@@.@@@.@@@@@@.@.@@.@@@.@.@@@@@@.@@@.@@@@@@.@@@@.@@@@.@@@@
|
||||
@@@@..@@@.@.@..@...@.@@@...@..@....@@@..@@@@@@...@.@@@@@.@@@.@@@...@@@@@@.@.@@@..@@@@@..@@.@.@.@.@.@...@@..@.@...@@@@@.@@@..@@.@@.@@@@..
|
||||
@@@@.@@@@.@@@.@@@@@@@@@@@@@@@@.@@@@@@@@.@@@.@@..@@@.@@.@@@@@@@@@@@@@.@@@...@......@@@..@@@.@..@@@@@@@.@..@@@@...@@@.@@@@@@@.@@@@@......@
|
||||
.@@@@.@@@@@@@@.@@.@@@..@@.@@.@@..@..@...@.@@@@@@.@..@@.@.@@@.@@@.@@@@@@@@@@@..@@@..@@@@@@@..@@.@.@.@@@.@.@@.@@..@@@@@@@.@.@.@.@.@@@.@...
|
||||
.@@.@@@@@@@.@@.@@@@@@..@@@@@.@@@.....@@@@@.@@.@@@@@@@@@@@@@@@@.@@@@@.......@@@@@.@@@@..@@....@@.@@@@@..@@.@@@@.@.@@....@@.@@.@..@@@@@@@.
|
||||
...@.@@.@.@.@@@@@.@@@..@@@@@.@@@@@@@@@@.@@..@@@@@@@...@..@.@@@@.@@..@@@@@@@@@.@@@@@@@@@@.@.@.@@..@@@@.@..@.@@..@.@@@@@@@@@.@.@@@@@@.@@@@
|
||||
@@.@@..@@.@.@....@.@...@@@@.@@@@@.@..@....@....@@..@@@@@..@...@..@..@@@...@@.@@..@...@@@...@@..@@@@@.@.@@..@.@@.....@@..@@@@......@@.@@.
|
||||
@..@@@@@@@@.@.@.....@@.@@@@@@@@@@@.@@..@.@..@.@@@.@@@@@@@@@@@.@.@...@@.@@@@.@...@@@.@..@@@.@..@.@@..@@@.@@@...@@@@@.@@.@@..@.@@.@@@.@.@@
|
||||
..@@..@.@.@.@..@@.@..@.@.@.@@.@@@@@.@@@@@@@@@@..@@@@@@...@@@@...@.@@.@@@@@.@@@@@.@@.@..@..@@@@@@....@@...@@@@...@@@..@.@..@@@.@@@.@@..@@
|
||||
.@@@@..@@.@@@@@.@.@@.@@.@@@@@@@.@@@..@..@..@@@.@@@@..@@.@.@@@@@...@@.@@@@@.@@.@@@@@@..@@@@@.@.@.@@@@..@..@...@@@.@..@@@@@@@.@@@.@.@@.@.@
|
||||
@@@@@@@@.@.@@.@@@.@@..@@@@..@..@@@@@@@.@@...@@@@@..@.@@@@@@.@@@@@@..@@..@@.@@.@@@@...@@.@@@...@@@.@..@@@@.@@@@.@@.@@@@@....@@@@@@.@@@@.@
|
||||
@@@@@...@.@..@@@..@@@..@@@...@@..@.@@@@.@...@.@@@@.@@@...@..@@.@.@@@@@@@@@@..@@@@.@@@@@.@..@.@@@.@.@.@@.@..@@@@..@@..@@.@@@.@..@@@@@..@.
|
||||
@@..@.@@@..@@@@..@.@@@@...@...@@@@.@@.@.@@.@@@@@.@@.@.@@@@@.@.@@@@.@@@@.@@.@@.@@@@@@.@.@@@..@.@@@.@@@@@@@@@@@@@@..@@@@@.@@@@@@.@@.@.@.@.
|
||||
@@@@@.@@@@.@@@..@@.@@.@@@@...@@..@@@.@@@..@@.@..@.@@@.@.@@.@@@@@@.@@@@.@.@@@@@@@@.@@..@@@@@@@@@@..@@@@.@@@@@@@@@@@@@@.@@@.@@@@@...@.@.@@
|
||||
..@@...@@@..@@@@..@@.@@.@@@@@....@.@.@@@@@@.@@@.@@.@.@@@.@@.@.@.@@@@@@.@@@.@@@@.@.@@@@@.@@...@@.@@...@@.@@..@@@@@@@..@.@.@@@..@@..@@@@.@
|
||||
@.@@@@@@@@@@@@@@@.@..@@@@@.@@.@@@@.@.@.@..@@@@@@@.@@@.@.@@@@@..@@@@@@@@@@.@@@@@..@@@...@@.@.@.@.@@.@....@@@@@.@...@@.@@.@@@@...@@@.@..@@
|
||||
2557
Inputs/Day5.txt
2557
Inputs/Day5.txt
File diff suppressed because it is too large
Load Diff
135
Inputs/Day6.txt
135
Inputs/Day6.txt
@@ -1,130 +1,5 @@
|
||||
........#...........................#...........#............................................................................#....
|
||||
...........#..............................................##.#....................##.......#.............##..............#........
|
||||
...................#..#........#..#..##.................#......##..................#.....#....#.............#...........#...##....
|
||||
..........#......#..................................................#...................#........#..#.....#.......................
|
||||
.........#...#......#...................................#............#...#........#.............#..#........................#.....
|
||||
..##.#...........#......#.....#.#...#..............#.#......#.......#..............#.............#..................#.......#.....
|
||||
...#.................................####...........#..........#..#.....#........#...........................................#....
|
||||
..........#......................#............................#....................#..............#......#....#.................#.
|
||||
...#.................#.........#.........#.#.....#....#.................................................................#.#.......
|
||||
.......#.......................#...........#..................................#.............#..................#......#.#.........
|
||||
....................#.#.........#.........#................................#........#.#.........................#..#....#.........
|
||||
........#.............#....#.....#................................##.....#..................#.....................#...............
|
||||
..............#...................#..........................................#..........#........................#................
|
||||
...........#...................................................................................#..........#.........##.#..........
|
||||
............#....................#...................#.................................#.......#............#.......#.............
|
||||
..........................................#.....#.............#.#.......................##......#.....#...........................
|
||||
........................#...#..................#......................................................#.#..#......................
|
||||
...#.....#.....................#..........................................#................................................#.....#
|
||||
..##....................................#.....................#.............#.......#.............................................
|
||||
........#..................#......#................................#.......................................................#......
|
||||
.........#................#...............................##.#.....................#...........................#...........#.#....
|
||||
............#.....#..................................#.....#........#................#............................................
|
||||
.....................................................##..............#.....#.....#.......#........................................
|
||||
..........#..#..............#..#...#.......................#..........................................#...........................
|
||||
...............#.............................................................#..#......#.......#..#....................#..........
|
||||
.#......................#....##.#....................#..#...#............................#............................#....#....#.
|
||||
...#...................................................................................................................#.......#..
|
||||
.#....#..............#....................#......................................#.......................#....#..#................
|
||||
........#.....................#............................................#...............#......................................
|
||||
....#........#..........................................................................#..............................###.......#
|
||||
........#..#.....................#..................#..................##..........#..............................................
|
||||
..........................#...#................#....................................................#..#............#.............
|
||||
......#..............#................................#.....................#.................................#............#......
|
||||
...................................................#....................#.................#.....#................................#
|
||||
..........................#...............#....#........................#.............................................#...........
|
||||
##..............#..............................#....#.......................#.................................................#...
|
||||
...........................#.............................................................#.#................#......#........#.##..
|
||||
........#..................#...#..............#..............................#.....#..........#...................................
|
||||
..........#......#.##..#.....#.......##.....#......................................................#..................#...........
|
||||
....#.........#................#............................................#..#...#............#.....#..#........................
|
||||
#.......#..............#.....................#..........#....#......#......................................#........#.............
|
||||
.........#..........................................................................#.........#............................#......
|
||||
..........................#...#.......#...............#..............#.......................#...#................................
|
||||
.......................................................................#.........................................#...............#
|
||||
...................#.....#.......................................................#.............................................#..
|
||||
...##.....................#....#................................#........#...#....#.......##......................................
|
||||
.................................................................#.......#................................#.........#.............
|
||||
#..........................#.#........................#............................................#...#.........#................
|
||||
................#.#........#...................#...............................#.........#............#.........#.................
|
||||
...#...................................#.....................................................................#..#......#..........
|
||||
.................................................#..........................................#....#................................
|
||||
..............##.#...............................................#......................................................##........
|
||||
...........#..............................................#.....................................##.....#.........#................
|
||||
#.......................#..........................#......#...................#.#.................................................
|
||||
..............##..........................#............................................................#................#.........
|
||||
.......................#...#.........#....................................................................#............#..........
|
||||
.....#.................##.................................................#...........#..............#....#.................#.....
|
||||
.........#................................................#....................#.......#.........................##.#.............
|
||||
...........#............#...#...................#.........#....................................................#..................
|
||||
....................#.....................................................................#..........#.#..........................
|
||||
............................##..#.......................#.......#...................#.#..........#..........................#...#.
|
||||
..................#...........#.......#.............................................................#.............................
|
||||
...##......................#....##..................................#...............#.#..#........................................
|
||||
..#..............................##..................................................................#.......#....................
|
||||
...#.......#..........#.#.................................................##....#...............#...............#..........#.....#
|
||||
.....................................................##....................#..#..#...........................#....................
|
||||
...#......................#........#..................#.##..............#..............#....................................#.....
|
||||
...............#..........................#..........................................................#.#..#..............#........
|
||||
....................##....................#..#...................................#................................................
|
||||
...........................#..............#.....................................#.........................##......................
|
||||
...............#.................................................................#.....................#..........................
|
||||
......#..........#...#...........#................................................#...#.................................#..#......
|
||||
..........#............................#.............#.....................#........#............#.........#......................
|
||||
...........#...........#..........#....#......................................................................#........#.........#
|
||||
......................#...............##.................................................................................#.....#..
|
||||
...#................#........#..........#...................#............^...........#.................#.#......##.#.............#
|
||||
.......................##..............#......#.....................................#.....#.........................#.#.#.........
|
||||
.................#..#..........................................#...................#...#.........#................................
|
||||
..#.#.....#.............................................................#.#.......................................................
|
||||
..............................#...............###...............#..........##..........................#...#..#..........##.......
|
||||
.................................#.....#.........#......................................................#................#........
|
||||
...............##.#..................................................#........................#...................#.........#..##.
|
||||
.........#.................................#......#...............................................................................
|
||||
..................#......................#.#.........................................................#.....#......................
|
||||
.#..................#.............................#...............................................................................
|
||||
...................#...................#.#........#......#...........................#......................#..........#..........
|
||||
.............#...................................................................................................#................
|
||||
..........................#................................................#........#..#..........................................
|
||||
.#........................................................#.......#......#..#.....................................................
|
||||
..................##..............#.............#................#...............................#......#......#........#....#.#..
|
||||
#.............#....................................#.....................................................#........................
|
||||
............................#................................................................#....#.....#................#........
|
||||
.........#.......................................................................................................................#
|
||||
..#.........................................................................................#........#.#...........#..............
|
||||
...........#......................#.......#................................#...#.......#...............#..........................
|
||||
.......................#...#..#.......#..................#........#.....#.........#...............................................
|
||||
..#..##...................#..........#................................................#.........#...................#.............
|
||||
........................##..........................#.......#..........................#...#.#....................................
|
||||
..........................................................................................#.............#...........#............#
|
||||
..............................#.............................................................................................#.#..#
|
||||
.............#..........#...........................#.........................#........#.....................#............#......#
|
||||
....................................#..........................................................................................#..
|
||||
.........#.................................#...........................................................................#..........
|
||||
.#..............................#......#......#.#................................#.................#......#....#..#..#...........#
|
||||
.#...#................#.......#............#.........#...#..........#......#.........................#....................#.......
|
||||
..............#........................#................................................................................#.........
|
||||
.........#........#..#.........#........#......#..#..............................................#................#...............
|
||||
...........#......................#.......#..................................#....#...#......#..........#.........................
|
||||
...........#........................................................#.#...........#................#..............................
|
||||
.#...........................#...................#...#..................................................................#........#
|
||||
....................................................................#...................#.....#......#...........................#
|
||||
...#..#..............#......................#......#..#...............#..............#..............#..............#..............
|
||||
...........#........................#............#.#...........#..................................................................
|
||||
............#........................#.................................................#..............#.#....................#....
|
||||
............................#...........................#............................#........#..........................#........
|
||||
#................................................................#...........................#.............#.#........#.#.......#.
|
||||
............#..........#..............#.......#...#................................#.........#.#................#........#....#...
|
||||
...#.....................#..........#.............#....................................................#.#........................
|
||||
...............#..................................................#......................#...............#........................
|
||||
......#............................#..................#.....#...........................................................#...#.#...
|
||||
#................#..........................................................................................#..........#.......#..
|
||||
.................................................................#..............#...................#...................#.#.......
|
||||
...............#..............................................#.................#...............#...........................#.....
|
||||
.............................#...#........................#....................#........#.....................................#.##
|
||||
...............##..#.....#..#....#.#...#...........................................#.#........#........#.......#..................
|
||||
.......#........................#....#..#............................................................#.......#....................
|
||||
........#....................#........#....#.................#........................#.............#.............................
|
||||
#...#...........#......................................................#...............#...........#..#..#....#................#..
|
||||
................................#........................................................#...#..#......#....#.....#....#...#......
|
||||
..#..............#............................#........#....#......#.................................................#............
|
||||
2477 92 399 956 8 44 3 989 459 11 858 93 6 832 9 92 69 53 44 43 3 75 2 2 88 6 988 7 8 8171 71 1 6 2986 41 137 84 158 62 676 584 9765 49 723 33 1 38 65 96 53 181 541 29 781 5843 3636 278 57 719 619 9 79 82 227 3 68 3 43 76 3594 42 88 29 4 46 75 77 36 55 43 763 2588 775 86 949 48 5 59 2237 94 9 953 924 6 6 753 4 4 96 691 8 1 51 5174 6 196 1 744 52 35 45 84 2 45 515 325 3 2 31 859 17 569 747 3 6 117 83 9 52 7786 25 6278 7 168 61 3 647 75 817 74 5 34 1 15 691 42 75 33 45 54 5 914 78 47 98 876 5 685 52 25 7 6 758 463 4 39 544 25 62 7 145 374 899 78 8 54 1555 922 65 8736 6 1136 59 4749 187 69 97 469 3 698 844 26 3 23 92 32 7772 19 849 5774 77 46 98 65 39 686 1818 9 6489 217 835 78 629 149 2 6 47 571 9748 64 69 3 69 7 268 5 14 8 23 472 9 453 89 731 1 672 4 94 547 58 912 2793 56 35 261 7662 72 532 52 2 25 2 41 4 422 957 333 75 86 2 173 46 99 9436 78 34 433 267 26 324 246 5 144 243 234 91 7542 52 98 81 91 86 57 293 464 6931 5 594 8 96 23 3 166 77 99 453 73 469 98 2 342 74 8764 562 23 638 125 57 661 994 393 42 531 2 59 378 76 1 7 86 961 32 9 469 458 47 22 83 7 36 45 4 519 5128 74 11 15 38 2 497 59 1 54 3617 174 8323 7 73 4896 579 33 1 8 825 24 6622 95 69 35 26 84 463 16 6 92 6 644 387 79 41 4 4723 576 4 74 921 78 7 5134 447 741 61 3 92 469 2187 965 79 7 86 21 18 83 558 5 5792 294 26 86 3 6219 16 13 799 11 592 59 9375 526 97 14 6349 4 286 1 628 2 192 449 52 9 55 3761 221 9 3 124 1 1 59 75 15 922 1 561 3 13 91 66 85 315 68 8 59 58 87 137 7 226 27 19 926 527 9 45 619 73 72 812 12 449 16 172 45 925 7922 414 931 87 257 232 177 16 98 59 74 3 92 62 946 8 52 894 78 35 878 29 48 2642 82 98 91 59 79 76 2174 1628 1 61 63 981 6 33 193 494 6 78 92 46 54 83 9 36 7 923 59 644 7 68 6976 42 82 68 83 81 19 18 35 669 13 18 83 282 364 8 2 463 1471 21 687 3 4833 4797 37 379 3 67 65 52 75 777 1 5 43 24 583 54 15 68 75 351 6576 36 1 9951 42 25 267 94 81 13 214 6 828 538 78 5 92 229 92 32 9476 51 825 367 9 978 32 5 171 3867 48 179 634 617 5 96 978 4999 44 75 14 396 3 92 17 8865 23 644 75 79 91 161 343 35 273 96 46 48 83 19 346 141 269 75 516 19 894 155 95 8 421 86 62 91 86 4861 35 899 17 6 75 2 81 43 168 81 33 6664 36 78 63 491 9594 9987 722 435 879 48 267 56 68 92 33 15 86 17 946 74 876 667 8 729 829 72 93 256 56 552 99 238 927 384 142 9942 558 362 6 713 1 9 14 75 38 962 662 12 49 9736 68 8 71 923 85 31 546 62 49 82 31 37 33 61 566 42 733 4934 271 79 4 99 699 8 44 63 414 41 44 39 916 79 16 8 224 2 83 74 286 7 674 23 39 83 34 3 574 8285 112 8624 487 38 3 5 1 247 12 21 414 666 66 4 642 79 941 17 942 82 65 6165 9518 29 668 82 13 26 6492 445 5 63 25 494 357 8 17 6 47 32 1919 28 146 416 7 983 25 3538 67 11 85 3 21 129 37 67 58 733 1991 11 25 7 43 358 73 3244 872 67 145 5 1 32 2 49 4 769 1887 15 585 912 76 59 95 5 68 18 7 63 689 594 45 526 6 569 1 1 4 34 62 71 6478 4 81 2 68 7934 42 77 48 3219 596 414 992 983 331 8 68 29 249 6 86 247 257 81 97 7 587 4 58 512 129 55 5582 41 21 27 2 41 26 832 76 13 9763 928 91 495 78 5 176 396 97 64 35 99 89 21 4 7492 9 1 847 4 34 1529 2 28 6 44 983 36 88 3 3 5 921 144 3 273 52 34 435 4 9 48 54 5438 73 8121 345 2 27 36 57 538 46 19 75 9 7989 882 96 388 67 82 79 7 6 693 481 12 61 317 9 32 59 17 27 6 3292 9 7 5 15 8312 1 9 774 7 3 8 29 61 35 64 73 8977 733 37 88 6981 48 8 8 55 29 2 7 78 13 4373 74 54 4
|
||||
3524 4 525 936 5 11 8 756 85 278 593 15 318 363 28 36 66 53 28 24 31 19 75 51 15 54 438 83 2 7698 68 8 5827 7972 11 942 67 5874 45 349 832 9364 3 744 64 19 22 53 5 33 4683 639 27 489 8517 8716 219 45 833 315 39 17 62 419 1 49 31 14 94 6865 62 69 63 4 48 77 81 33 13 789 545 4349 657 94 689 69 42 156 6321 863 96 263 3256 48 21 497 48 42 56 831 52 7 8936 6662 74 623 5 239 22 42 21 17 514 41 877 231 79 56 74 975 53 681 5769 6 93 962 917 9 76 7181 75 7626 27 498 272 48 571 93 883 786 8 72 5 52 692 12 25 59 37 57 71 785 97 81 54 152 54 358 47 97 39 939 619 449 48 18 262 865 18 57 578 695 178 68 47 35 729 397 62 4373 9 4865 599 6275 756 76 91 798 8 272 647 76 48 47 64 29 5815 855 12 8982 66 28 13 6 1 525 9547 49 5782 243 291 557 148 24 1 1 32 242 8593 39 165 63 236 294 973 51 62 64 76 268 55 573 26 936 11 344 29 42 114 56 318 1236 816 59 193 7522 68 617 22 62 51 27 78 98 345 137 333 57 19 53 833 59 11 7893 424 55 792 168 86 759 538 91 681 791 639 88 722 32 34 99 71 99 97 518 775 4816 3 726 6 17 37 728 453 67 353 846 55 936 6 439 546 42 3252 664 19 453 57 91 329 629 646 2 1523 494 82 386 363 89 9 561 67 248 41 248 742 18 83 66 82 31 24 16 824 345 58 255 62 16 11 671 83 3 75 8843 538 2398 1 92 8284 68 99 235 1 117 65 4614 254 52 25 65 16 649 86 52 62 96 183 815 81 88 28 1154 641 51 13 454 74 6 1655 329 4994 13 11 6918 871 1446 499 18 92 42 23 89 38 172 8 6774 875 33 19 25 8339 72 73 774 38 8426 41 1162 87 38 53 3822 25 927 58 567 55 225 298 81 25 33 6243 575 52 9 714 7 74 74 22 53 142 7 275 5 72 94 21 52 498 89 5 99 23 24 177 5 889 28 11 687 777 31 35 983 39 45 578 81 924 29 557 85 149 6725 868 158 54 277 78 259 84 79 22 832 43 45 93 818 3 46 688 81 72 962 57 49 585 45 33 78 35 92 55 7254 9999 7 5758 15 599 9 84 921 784 61 23 39 188 72 86 7 87 394 3729 726 472 3 59 6657 96 234 84 21 425 46 37 61 561 857 82 5961 7837 619 5 24 996 9647 47 224 9 2828 4863 83 189 11 5 67 83 99 765 58 21 171 69 498 18 786 711 174 221 9588 27 57 6556 756 75 387 72 35 133 758 86 641 723 245 1 95 116 61 69 535 71 646 878 48 111 44 76 213 9698 125 543 316 882 8 53 212 5191 14 32 79 78 925 11 75 9226 13 639 65 65 913 448 114 2224 754 262 63 23 27 25 32 135 574 29 1295 28 844 441 54 473 789 57 65 88 76 8335 9124 5163 718 5 42 62 29 41 481 11 623 3458 66 47 38 194 2492 4658 558 362 3914 61 372 82 17 62 6 752 768 821 2731 1 993 164 54 687 221 89 55 292 1 291 252 371 564 814 582 131 938 786 833 781 6 2 21 611 55 927 556 43 559 6367 29 629 22 295 78 51 8697 8 38 54 42 57 852 947 93 57 376 3884 812 531 479 99 687 75 23 53 558 93 314 74 396 62 85 996 93 37 57 59 187 5 868 91 97 226 48 87 113 2366 962 3969 565 921 91 55 3 423 78 48 41 84 81 997 948 83 957 82 5721 78 19 9556 8782 52 728 48 85 31 9827 964 679 72 8 46 336 7 18 8 612 13 44 135 753 624 88 145 66 9781 31 97 15 6 94 85 52 61 86 881 1697 43 28 8 35 664 27 7275 339 18 713 181 735 39 894 26 43 794 8772 49 861 69 54 574 38 547 547 45 64 26 822 783 89 492 4 2297 7 38 36 97 33 91 3312 73 57 98 38 4598 33 21 65 8971 2793 538 169 827 966 5 871 91 514 4 13 9839 918 62 32 97 648 12 31 8 678 9 2872 35 259 26 976 565 97 644 72 91 6271 571 9317 734 39 74 778 498 24 75 57 95 11 43 4 7566 4 639 936 76 38 5512 3999 94 4 294 792 51 64 899 64 7 836 857 46 842 559 898 352 46 85 87 31 6861 76 4421 947 91 62 92 776 633 42 82 884 76 9929 79 84 398 9 71 81 89 59 838 944 393 54 326 6 21 79 571 284 68 4797 3 97 5 85 3634 1 675 482 25 4 57 57 44 38 59 11 8745 263 85 672 8866 46 572 192 81 54 9 25 8996 78 3141 76 91 37
|
||||
6243 4 595 999 5 61 389 48 35 289 956 63 563 77 84 57 7 22 75 941 56 46 61 64 91 442 318 57 45 1474 71 697 2699 1527 62 151 69 7235 94 161 698 6125 9 513 33 86 28 18 1 58 2346 622 54 826 767 6511 732 4 357 1987 78 112 1 799 6 9 12 13 79 9383 816 21 14 33 385 35 44 5 51 791 118 377 886 7 55 93 343 912 49 694 89 648 3334 71 338 546 66 721 98 986 56 88 7824 6928 22 892 33 549 8 62 9 11 326 66 595 27 39 43 15 89 61 254 2272 83 58 5467 1419 12 66 581 23 394 94 473 636 211 239 82 993 752 56 41 737 23 51 16 15 36 93 253 599 64 93 38 36 958 93 439 83 93 27 6434 569 42 85 49 51 237 32 95 894 753 265 76 74 918 245 516 29 19 9 1897 277 724 247 78 93 121 89 87 872 66 75 48 56 82 9358 567 65 3414 771 969 66 7 2 968 223 18 8492 257 789 986 7753 49 529 4 852 282 696 24 972 63 5189 351 12 596 5 877 52 751 757 385 96 66 544 685 35 66 831 31 422 9237 913 27 441 3594 95 765 99 35 67 611 22 97 79 821 251 934 617 917 248 91 29 3667 293 4 776 874 21 234 47 39 136 538 8 74 294 59 27 71 68 98 52 2 172 625 95 1352 44 47 67 311 986 22 748 855 58 163 1 6116 986 94 1449 223 35 452 82 41 85 725 74 4 8719 2177 66 655 329 62 8 924 66 413 324 182 956 6 44 54 244 71 491 64 376 217 96 977 85 71 45 185 64 79 1 751 922 2697 76 93 9675 22 56 711 85 724 93 151 771 9 55 11 897 832 63 982 27 46 976 622 82 842 972 2292 546 44 53 347 25 53 6122 199 3665 77 48 9248 155 1416 396 41 65 97 2 52 79 478 81 734 958 284 14 436 8783 38 58 723 82 8164 12 6122 92 82 87 1963 91 415 75 35 52 635 894 55 76 315 5868 988 99 72 991 83 612 99 76 39 429 269 91 86 56 68 56 69 923 4 94 44 39 3 963 25 33 91 43 53 389 65 4 421 8 9 194 36 687 24 516 87 347 657 23 99 86 397 44 691 55 66 24 781 14 37 91 576 197 32 856 43 34 694 53 79 169 48 76 88 3 67 24 672 8537 132 4486 27 925 575 33 948 793 164 96 51 266 18 68 829 6 114 4438 176 5 16 32 81 93 751 58 67 7663 61 5 153 38 938 73 3387 4737 814 68 19 654 76 84 461 9 1438 652 25 364 69 3 75 2 35 784 32 891 271 48 611 55 874 596 721 388 7995 94 386 8146 741 5 499 51 26 498 255 78 1587 262 152 77 28 347 99 18 754 71 83 753 67 24 46 263 59 9758 326 799 213 611 492 691 993 669 28 81 1 34 9976 71 3 1472 28 787 63 998 897 867 86 3867 437 9776 75 53 57 83 47 841 81 41 8854 72 734 628 15 949 275 2 97 91 45 31 1713 3573 722 29 913 34 68 9 159 79 557 589 4 63 67 137 325 2452 7 99 7318 66 39 68 69 67 6 315 772 117 1594 2 197 984 182 695 741 538 86 526 8 637 419 486 772 354 199 11 471 8 8789 92 16 368 35 479 92 355 236 25 588 5914 583 144 6 452 6 8 5849 2 73 64 53 29 741 2754 66 1 497 818 559 913 885 53 191 43 272 89 975 11 2156 97 682 74 32 759 1 37 96 82 995 6 696 866 41 681 55 3227 34 8466 743 221 27 164 51 16 6 91 512 38 5 61 71 789 4858 837 772 58 1999 75 8 8891 6 667 99 5 89 29 9769 717 254 45 3 88 749 84 22 36 327 46 2 887 5914 473 41 33 42 348 682 41 24 16 17 51 47 47 19 2797 798 54 2 94 19 97 78 6427 383 1251 38 887 263 42 111 15 87 929 2439 9 171 82 66 138 27 687 431 18 13 574 749 816 66 285 16 9695 56 79 53 6 93 4624 824 79 26 76 68 147 86 69 42 844 9751 1961 64 3743 28 7 151 4 563 23 9 6196 624 212 81 94 84 86 92 9 174 4 7889 75 121 8 521 666 2 68 49 9 261 211 5289 86 74 96 462 757 26 4 597 9 33 119 62 784 4 4252 933 92 54 8423 9562 32 74 425 42 18 13 535 559 43 149 858 83 525 951 944 775 641 87 664 23 4543 64 9193 459 69 49 381 158 24 53 52 172 512 1841 66 89 26 3 4 853 18 63 914 537 589 6 85 5 41 47 434 351 531 461 48 76 1 3 2789 11 276 637 92 17 43 53 494 83 42 3 477 44 98 2948 277 66 9569 816 26 57 34 794 9725 51 858 15 828 17
|
||||
44 4 677 9 75 13 526 28 68 189 537 572 232 3 23 31 8 71 23 719 15 161 21 94 18 648 939 791 53 9839 46 954 4137 835 28 67 6 4633 24 348 217 136 2 378 28 57 55 96 3 17 9319 879 4 266 541 1633 6 9 142 9496 18 524 2 17 54 8 51 4 55 753 463 85 89 43 758 94 9 2 77 232 374 498 946 9 7 5 234 561 23 212 1225 413 5363 93 1275 112 21 515 91 86 73 388 5887 57 54 32 69 298 2 84 3 78 272 28 44 79 46 11 62 34 57 892 5485 27 52 4894 5922 694 59 376 23 5 18 28 262 153 813 28 38 212 96 1 348 32 2 63 26 79 23 621 192 57 89 87 88 2781 51 84 8 49 17 5145 57 75 82 3 22 689 97 71 488 39 2 9 49 486 732 7331 937 65 13 558 126 6 68 91 92 942 346 2 145 94 653 91 96 11 9495 763 3 758 756 363 2 3 1 119 65 43 165 48 13 5993 4351 2 895 68 412 1 581 496 517 29 4451 236 39 736 8 623 2 253 928 8 92 5 379 511 69 25 674 59 733 257 452 2 63 668 1 418 85 37 12 772 62 82 9 93 5 5682 457 813 827 31 56 4 478 7 91 2 59 862 9 18 737 56 6 28 2 93 69 62 26 48 31 6 138 77 99 5487 13 27 28 467 65 96 867 82 42 929 4 4216 98 43 1685 49 45 13 9 85 49 79 51 2 7321 6454 13 148 396 54 28 648 27 452 445 1397 518 6 57 9 296 5 367 32 77 22 89 273 41 31 88 416 91 46 2 13 2 856 18 472 122 96 1544 788 75 837 53 1 598 5 84 78 728 29 81 593 8 99 949 762 91 868 273 18 51 234 23 51 83 51 386 1 6372 47 32 7821 63 39 868 95 77 7 1 9 924 653 91 439 163 442 2 441 4828 59 6 113 99 6543 46 674 71 9 59 2 75 356 259 2 11 3737 938 61 828 983 988 16 84 37 742 51 243 266 3 99 386 626 47 47 41 49 6 71 75 3 982 77 77 6 213 47 13 4 16 13 442 21 6 875 7 1 2 58 233 59 586 35 79 1 52 6 57 34 64 37 17 12 81 622 14 76 17 31 254 9 379 68 58 55 24 3 88 15 2 54 8 5 26 623 7 396 6156 92 664 473 56 83 165 218 1 4 776 25 87 278 6 844 4416 924 1 48 2 3 28 866 28 5 4248 88 1 756 99 636 26 2438 1483 11 54 979 72 59 17 121 13 94 48 52 256 37 2 14 6 3 118 69 2839 721 61 682 75 982 514 531 69 4178 8 255 9521 234 9 36 882 36 173 982 76 3564 737 762 11 69 66 332 52 175 63 9 556 64 87 44 5488 9 424 895 864 7 262 986 4665 8 964 21 15 5 75 5275 85 5 691 75 47 87 282 869 14 2 5566 768 4994 957 1 24 82 5 78 8 3 5628 89 216 1 36 987 99 9 65 59 89 5 7342 1876 832 63 997 19 72 5 82 12 685 4 2 17 1 27 63 7676 2 23 9748 75 74 46 42 97 7 2581 438 731 5298 2 5 448 582 315 677 425 88 912 4 829 485 1 54 37 47 1 854 2 6817 83 38 733 66 654 5 33 213 18 5471 749 398 956 3 413 5 2 6372 3 76 61 461 18 678 3947 9 6 17 784 73 742 584 48 98 62 371 7 8 73 3475 83 857 3 8 266 7 98 96 64 27 69 876 772 4 535 3 6662 3 824 487 586 97 961 17 36 63 12 761 94 1 6 8 8459 5463 877 561 17 1295 67 2 25 4 959 1 6 39 5 837 61 439 22 7 9 4 84 2 96 617 362 4 447 2422 715 26 1 43 792 482 6 5 96 52 49 82 9 15 9332 42 57 1 82 7 6 39 828 47 2865 33 514 371 14 871 63 41 1 87 7 442 66 54 863 471 225 668 23 17 777 16 27 35 6 771 4416 48 94 19 6 19 7595 9 38 47 62 45 61 4 42 572 66 9496 3978 6 8437 87 89 874 6 354 58 6 6218 543 719 64 95 3 22 18 7 77 9 48 6 934 7 918 139 5 7 84 2 1 39 2633 86 9 39 378 624 53 4 378 5 99 1252 62 654 65 7241 81 63 6 744 3881 9 81 342 23 33 79 978 779 62 69 769 56 988 673 938 964 333 72 655 64 52 13 9738 16 711 5 641 476 68 3 92 594 832 99 58 56 31 7 1 232 29 15 151 26 199 8 8 49 65 9 498 712 485 555 82 88 58 6 5747 35 257 668 84 27 91 4 832 69 36 2 462 4 81 1656 19 3 1118 694 93 52 288 456 3738 63 78 974 968 34
|
||||
+ * * * * * + + + * + * + + * + * + + * * + * * * * * + + + * * + + + + * + + * * + * * * + * * + * + * + * + + * * + + * * * * * + + + * + * * * * + * + + * + + + + * + + * + + * + * + * + + * * + + * * + + + + + * * * * + * * * * * + + * * * + * * + + * * + * + * + * * * * * + + + * * + + * * * + * + * + + + * + * * * + + + * * * + * + * * * * * + + + + + * + * + * * * + * + * * * * + * + * + + * * + * * + + * + * * + + * + * + + + + + + + * + * * + * * + + * * * * + + * * * + + * * + * * + * + * * + * + * + + + * + * + * + + * + + + * + * * * + * + + * + * * + + + + + * * * + * + * + + * + * * + * + + * + + + * + + + * + + * * + * + + + * * + * * * * + + + + * + * + * * * * + + + + + + + + + + * + + * + + * + * * * * + + + * + + + + * * * * + + + + * * + * + * * * + * + + * * + + * + * + * + + * + + + + * * + + * + + + + * + + * + * + * * * * + + * + + * + * * + + + + + + + * + + * * * + * + * + + * * + + * + + * + + * * + + * + * + * + + + * * + + + + + + + + * * + * * + + + + + * + * + * + + * * * * + * + * + * * + * + * * + + + * + + * + * + + * * * * + * * * + + * * * + + + + * * + + * * * + + + * + + * + + * * + + * + * + * + * + * + * + + * * + * + + * + * * * * * + + + * + * + + * * + * + + + * * * + + + * * * + * + * + + + + * * * * + + + + + + + + + * * + + + + + + * + * * + + * * + + + + + + + + + * + + + + * + * + * + + * * * + + * + + * + * + * * * * * + + + + * * * * * * + * * * * + + + * * * + + * * + + * * * + + + + + * * * * * * + + * + + * * * + + + + + * * * * + * * * * * + + + * * * + * + + + + + * + + + * * + + * * + + + + * + * + + * * * + + + * + * + + + * + + * * * * * + + * + * * + + * + * + + * + + * * + * * + * + + * * * * + + + + * * + + * * * * + * * * + + + * + + * * * * * * + + + + + + + + + * * + * + + + + + * * * + * + * * * * * + + + * * + * + * + + + + + + * + * * * + * * * * + * + + + * * + * * + + + * * + * * + + * * * + + * * * * + * * + + + * * + + * + + * + + * + * + * + * * * * * + * * + + + * + + * + * * + + + + + + * * *
|
||||
992
Inputs/Day7.txt
992
Inputs/Day7.txt
@@ -1,850 +1,142 @@
|
||||
453693978: 7 219 8 44 2 9 3 2 6 4 1 6
|
||||
61192589: 81 8 83 9 879 6 4 2 6 7 9
|
||||
6066: 65 29 87 9 14 5 21 3
|
||||
1957116: 171 37 224 6 42
|
||||
198050: 342 577 3 2 711
|
||||
41665119255: 7 7 8 124 371 3 6 2 51 5
|
||||
3166026: 5 33 9 66 6
|
||||
1662321: 5 4 7 622 17 6 1 52 43 2
|
||||
265653132: 630 1 4 9 22 8 498 8 5 7
|
||||
1060: 88 9 55 4 39 73
|
||||
157494755: 3 1 4 98 951 5
|
||||
1952833595452: 7 234 5 550 3 483 3 82
|
||||
467: 2 71 5 251 5 64
|
||||
7316189440: 6 2 6 443 1 512 7 4 8 8 7
|
||||
33138: 4 8 8 8 7 1 49 99 2 6 5 1
|
||||
913284: 2 89 585 39 270 2 1 3 6
|
||||
1215195700: 81 4 79 913 52 4
|
||||
298632108: 6 6 3 6 15 73 210 5
|
||||
318936618: 150 160 832 403 693
|
||||
2102812: 3 323 434 5 82
|
||||
3848880609: 716 5 82 59 651
|
||||
4940008: 658 1 935 55 31
|
||||
311641: 23 9 1 6 8 7 6 7 3 5 1 586
|
||||
722421: 81 9 30 3 8
|
||||
33606277360: 672 5 6 277 36 1
|
||||
13106566: 2 73 2 1 24 38 63 66
|
||||
54290459591: 4 9 7 1 554 6 7 2 62 859
|
||||
4886125: 1 56 5 829 2 7 5 1 1 4 9 2
|
||||
274540788: 6 3 715 6 3 68 51 3 3 2 3
|
||||
34447941395840: 3 1 852 309 9 70 2 4 7 5
|
||||
4575402861600: 15 153 1 35 5 6 68 740
|
||||
13778598989: 459 3 85 989 89
|
||||
105779: 3 6 584 993 7
|
||||
146019901569: 1 460 1 98 94 1 5 6 9 69
|
||||
1993182: 51 58 924 451 460
|
||||
6265483638730: 9 93 62 2 98 7 570 89
|
||||
196996630250: 7 2 76 3 3 1 3 8 57 56 3 4
|
||||
3944294: 2 21 4 7 4 996 1 5 7 3
|
||||
1427032798: 13 9 65 228 823 178 1
|
||||
480: 7 4 5 30
|
||||
356848870313: 574 635 862 9 69 8
|
||||
4991679: 9 6 6 59 9 79 1 1 29 81 2
|
||||
96014924: 2 899 48 230 3 10 34
|
||||
530314220: 68 99 15 786 18
|
||||
27235017: 353 75 890 751
|
||||
28227685247: 1 8 889 21 8 8 5 6 3 7 8
|
||||
23386943686: 7 5 3 54 2 9 12 7 5 5 3 49
|
||||
4671109: 7 7 85 18 6
|
||||
65643: 8 55 6 9 449 1 6 3
|
||||
28442705797959: 9 2 8 7 507 6 579 795 9
|
||||
604412418874: 85 90 73 6 79 8 8 62 8 6
|
||||
142652179: 24 680 578 6 82 82 7 9
|
||||
318206557831966: 3 24 7 98 55 7 83 1 966
|
||||
940: 1 33 4 93 6 9 2 2 79 1 67
|
||||
5659883: 5 285 2 661 9 5 6 310 7
|
||||
462378: 66 6 319 910 244
|
||||
16578901: 69 8 624 6 3 1
|
||||
58541640192: 4 9 4 7 92 907 8 6 9 1 8
|
||||
7340642493: 67 5 39 72 39 8 7 95
|
||||
452912147: 461 214 982
|
||||
48011225806: 4 80 112 25 556 249
|
||||
994133176: 5 7 9 7 3 5 696 3 31 68 5
|
||||
1671942: 6 5 943 3 41 4 59
|
||||
2011: 854 1 663 74 419
|
||||
2350244: 39 17 3 2 2 2
|
||||
599522955: 1 6 3 192 1 733 89 298
|
||||
150499563: 3 660 5 348 118
|
||||
1974967: 405 9 758 5 82
|
||||
1526491271: 309 9 717 22 817 4 6
|
||||
291350: 32 91 81 72 1
|
||||
2331564579753: 4 208 7 8 5 6 542 4 7 7 6
|
||||
9094800: 3 50 44 53 26
|
||||
8558953: 3 82 5 89 50
|
||||
5818: 578 3 8
|
||||
101507885: 3 65 33 89 9 10 5 77 5
|
||||
234179567: 8 3 993 765 301 62
|
||||
13394703: 4 615 99 55 3
|
||||
12726838: 50 6 7 8 3 4 2 936 83 2 9
|
||||
159408: 4 908 174 1 720
|
||||
257838: 444 5 58 28
|
||||
134142820: 6 8 99 1 9 7 28 3 4 3 4 7
|
||||
99344148: 2 1 788 29 5 9 6 544 7 9
|
||||
2522113308: 5 331 6 9 1 6 3 4 39 99 2
|
||||
140321: 4 3 5 4 31 9
|
||||
20942125931928: 68 562 429 219 8 89
|
||||
253357107: 361 41 7 341 2 19 7 58
|
||||
2576029514834: 5 1 3 605 83 1 4 834
|
||||
3812481: 8 507 2 74 1
|
||||
38667377388: 3 5 77 23 47 73 32 6 47
|
||||
154599952490: 3 2 3 671 64 6 87 8 3 1
|
||||
6771960: 3 9 66 3 3 337 6 90 3 1 8
|
||||
43692: 90 7 45 4 2
|
||||
318124: 1 8 497 80 44
|
||||
172874771: 2 8 9 1 3 9 7 63 2 7 63 8
|
||||
4129352: 502 4 4 8 511 4 2 469 1
|
||||
30132480: 4 148 672 59 5
|
||||
390439859: 29 8 6 4 6 9 81 9 9 27 2 7
|
||||
65515806624: 5 663 155 373 639 98
|
||||
5014677: 2 758 9 202 633
|
||||
1490: 81 7 16 78 3
|
||||
23528003: 4 9 8 6 6 7 5 7 83 13 5 1
|
||||
7929094: 23 407 7 2 121 85
|
||||
276945: 37 5 91 94 5
|
||||
561691819: 1 6 7 682 5 5 7 9 86 17
|
||||
12070408538: 9 163 43 3 5 1 1 8 7 5 38
|
||||
14816: 4 37 3 6 54 16 544
|
||||
9301982: 903 906 6 857 18 89
|
||||
236: 7 8 131 90
|
||||
924816: 14 66 8 16
|
||||
94248002483: 6 8 22 816 165 247 8 3
|
||||
775651572420: 98 383 3 6 3 73 210 2
|
||||
31344: 4 4 8 5 821 6 8 59 4 388
|
||||
30930: 6 15 50 119 62
|
||||
154217932: 22 13 1 719 67 6 8 498
|
||||
23474981: 3 65 250 41 18 65 81
|
||||
178893876: 3 7 7 8 96 9 33 33 4 7 2 6
|
||||
618737127839: 39 61 312 801 195
|
||||
4517: 6 3 1 1 5 236 925 52
|
||||
1014255: 7 727 51 99 9 3 1 856 7
|
||||
1588: 87 7 32 9 671
|
||||
112938355813: 21 9 573 9 5 580 4 3 5
|
||||
12794721648: 3 99 764 6 65 2 8 8 2 48
|
||||
784111270947: 4 542 47 29 35 9 970
|
||||
133997465978: 4 69 2 4 4 31 3 2 1 5 97 5
|
||||
16625917453: 222 5 591 66 8 6 2 4 13
|
||||
145: 70 69 4
|
||||
1756138126: 20 15 121 1 5 7 81 126
|
||||
928811: 7 190 65 680 986
|
||||
21408695: 2 9 5 690 8 6 1 3 47 2 2 5
|
||||
368451: 66 302 4 4 8
|
||||
27863124: 3 19 5 1 995 89 216 7 4
|
||||
957338381: 354 2 3 9 6 3 823 7 8 1 1
|
||||
44521661: 48 680 341 4 1 76 625
|
||||
10437926: 148 585 4 89 10 2 3 2
|
||||
88019880: 3 312 7 30 884
|
||||
791624: 8 79 5 8 9
|
||||
89138231364: 274 609 3 533 609
|
||||
4293432: 3 6 4 5 9 5 8 9 528 72 39
|
||||
6358683: 4 1 6 21 5 8 31 37 4
|
||||
3764592: 51 1 324 4 591
|
||||
19530679599: 882 5 415 5 2 26 53 3 6
|
||||
87417: 3 280 24 19 99
|
||||
533489: 4 9 37 4 1 5 90
|
||||
5011: 3 6 5 22 490
|
||||
73338720: 293 93 52 23 91 80
|
||||
126: 9 1 1 1 13 1 93 9
|
||||
3615788: 90 4 1 57 85
|
||||
147888: 4 79 17 485 78
|
||||
193516984: 487 87 2 76 6 65 8 68
|
||||
2589283728: 2 58 9 2 19 5 46 9 4 730
|
||||
64553362: 645 533 60
|
||||
22331998272: 2 642 77 7 845 4 23 2
|
||||
8657594: 778 86 6 6 5 5 9 4
|
||||
5562082: 2 88 21 180 82
|
||||
44600739: 88 9 78 223 3 25 2 89
|
||||
1175: 8 2 6 68 87
|
||||
77262: 97 784 353 4 857
|
||||
1958152581: 847 682 3 1 231
|
||||
89632318: 9 7 56 145 172 6 20
|
||||
29470: 459 49 58 4 5
|
||||
5458120200000: 4 6 815 6 65 36 90 530
|
||||
683299: 7 276 8 5 59 44 419
|
||||
7405744: 25 715 574 2 1
|
||||
15815402: 3 546 7 1 7 8 7 4 5 4 9 9
|
||||
4153776591: 13 577 8 2 88 320 271
|
||||
5994590716: 99 787 8 926 1 73
|
||||
1905139223188: 945 8 6 457 6 95 42
|
||||
154417: 193 8 17
|
||||
168145522524: 957 766 7 66 38 96 7
|
||||
4795006: 2 21 5 204 9 59 47
|
||||
7043070062: 6 8 1 6 85 8 33 7 4 2 9 2
|
||||
62697036236: 28 3 70 82 722 3 236
|
||||
12178755: 8 8 77 4 3 558 5 3 81 5
|
||||
32779766156: 693 473 93 773 156
|
||||
115249713: 90 243 4 29 2 596
|
||||
68054: 73 4 951 2 1 4 52 2 1 9
|
||||
802077409221: 92 7 3 17 848 2 2 3 1 5 3
|
||||
142074998208: 640 71 85 7 8 44 719
|
||||
8632: 5 9 7 58 4
|
||||
2624715: 4 1 5 8 619 8 1 1 4 3 4 8
|
||||
4759740: 937 8 357 79 9 60
|
||||
4635323000: 9 8 284 8 368 2 7 79 77
|
||||
248375402756: 2 34 2 32 3 910 68 9 4
|
||||
125065077: 8 41 531 78 6 35 79 4 7
|
||||
182358: 4 182 3 855 30 8 1 2
|
||||
3812369: 77 29 2 2 493
|
||||
1609831: 218 737 251 7 654
|
||||
2024734: 756 4 8 37 9 94
|
||||
552808080: 8 72 93 12 626 22 5
|
||||
52118327: 2 161 674 6 790 4 9
|
||||
160697381: 2 89 8 7 39 16 10 2 6 53
|
||||
275832: 26 8 34 39 24
|
||||
144618480: 398 5 757 8 3 8 11 3 3 4
|
||||
2550199: 6 8 7 8 41 137 79
|
||||
212959799662: 2 660 8 15 979 9 661
|
||||
173540566353: 22 8 3 9 180 6 2 1 8 7 51
|
||||
4867527232: 4 46 54 108 9 7 9 6 4 8 2
|
||||
30630: 6 36 258 6 30
|
||||
912202863: 5 86 2 15 1 5 286 1
|
||||
400914580: 371 29 914 5 80
|
||||
43596216103: 768 89 2 2 2 3 7 9 9 5 9
|
||||
8946096736: 4 2 710 32 23 3 4 5
|
||||
15609768411359: 9 707 567 4 4 8 67 60
|
||||
4122784380: 280 748 89 165
|
||||
10977874: 68 6 1 16 3 7 2 81 91
|
||||
2908919: 99 976 2 315 30 1 689
|
||||
29609: 1 4 19 17 3 86 681 28 4
|
||||
245700: 12 1 351 5 3 45
|
||||
367: 1 3 3 55 37
|
||||
62951499517: 9 32 5 73 8 364 520
|
||||
734005: 73 39 74 24 6
|
||||
124853195948528: 88 69 9 482 698 6 79 9
|
||||
3636750240572: 5 6 5 9 5 5 210 6 6 4 5 74
|
||||
112035399: 651 10 169 326 3 99
|
||||
84854: 9 4 8 831 89 3
|
||||
233936125149: 9 6 811 648 97 261 44
|
||||
5809: 5 5 7 17 5 62 2
|
||||
87092610443: 9 9 84 1 8 78 4 14 4 4 3 1
|
||||
15382371424083: 9 6 3 8 919 69 92 95 85
|
||||
117071: 291 4 1 57 1 2 90
|
||||
487732407: 6 4 63 10 8 973 4 406 1
|
||||
1157798799: 5 82 8 78 383 798 799
|
||||
11910216899: 5 69 842 1 7 13 6 8 6 3 9
|
||||
906: 4 5 6 87 803
|
||||
7607716138743: 73 89 98 986 911 486
|
||||
8026454: 2 91 49 28 9
|
||||
987004: 1 8 2 274 5 8 26 474 44
|
||||
402628876: 5 7 82 2 409 833 77 76
|
||||
30661956: 8 6 491 5 81 9 20 9 3 13
|
||||
33657773: 4 7 13 803 39 770
|
||||
23941915: 73 49 5 4 3 98 5 12
|
||||
19880498446: 763 46 620 1 7 2 2 3
|
||||
1382284: 91 83 9 7 79 24
|
||||
20366858: 45 1 5 731 84 102 4 5 6
|
||||
93755256: 30 71 7 1 44 5 7
|
||||
164884487835: 850 4 722 4 4 487 835
|
||||
1341603775: 52 860 1 3 775
|
||||
1072: 16 225 1 88 742
|
||||
7246685: 74 704 4 97 9
|
||||
1427830680364: 48 392 9 5 2 590 358 6
|
||||
47410058: 39 84 17 2 4 5 7
|
||||
428546912: 2 9 3 971 6 4 6 7 3 3 5 12
|
||||
9674801499: 276 42 29 4 875
|
||||
33994953: 679 868 31 5 3
|
||||
10034366578321: 4 3 6 27 6 80 7 753 23
|
||||
21580: 8 37 695 90 26
|
||||
2831604330: 7 831 8 39 3 9 3 6 5 56
|
||||
103563266: 6 9 7 7 5 6 2 4 1 98 64 8
|
||||
34404349: 1 772 7 1 40 9 8 9 7 4 4 7
|
||||
59764: 1 66 90 1 32 34 569 67
|
||||
3837946112: 4 1 7 9 320 9 7 884 308
|
||||
392845: 490 4 80 59 467
|
||||
2237: 354 6 6 93 3 2 11
|
||||
530442: 22 1 6 4 41
|
||||
667875343107: 1 9 540 5 5 76 3 28 2 1 7
|
||||
27334270016: 77 6 74 857 80 68 1 7
|
||||
9133: 64 4 493 8 34
|
||||
1093: 1 6 63 471 184
|
||||
2345410: 2 3 45 407 3
|
||||
698287110552: 775 867 7 5 672 9 2 70
|
||||
18068437: 4 104 61 20 956 37
|
||||
368540: 2 606 3 43 6 41
|
||||
864: 9 6 9
|
||||
1418: 75 9 1 16 74
|
||||
30118881: 6 5 1 4 4 9 992 1 3 88 5 1
|
||||
311278809: 432 33 2 4 9 4 1 9 3 4 3
|
||||
46589936700: 88 21 8 9 58 5 7 75 4
|
||||
8569194: 4 15 54 8 3 58 7 2 3
|
||||
481417: 937 5 73 8 1 7
|
||||
2397863: 6 80 45 286 8 2 8 23
|
||||
24256960: 5 28 442 4 98
|
||||
22569840: 94 68 6 36 645
|
||||
42699365540: 6 70 4 37 656 6 554 10
|
||||
38737384769: 8 5 392 5 2 863 7 8 94
|
||||
2389502926: 95 2 805 6 2 60 24 52 7
|
||||
5752: 86 9 3 579 82 4
|
||||
63029652680: 1 7 3 3 50 701 5 7 6 683
|
||||
3090035: 3 7 5 618 35
|
||||
1373: 28 1 4 6 247
|
||||
2919: 7 6 3 9 34 385
|
||||
67269: 9 4 5 6 6 5 9 680 7 157 5
|
||||
6172980: 6 1 944 59 9 2 55
|
||||
161860638588: 3 56 58 473 38 5 89
|
||||
664801: 1 3 8 9 490 979 60
|
||||
3317827: 8 42 394 1 348
|
||||
187757: 872 5 43 220 57
|
||||
12552562: 5 25 525 62
|
||||
29106: 4 4 6 10 9 5 2 4 12 4 62 7
|
||||
202769: 18 2 25 2 65 4
|
||||
481787: 489 31 82 23 8
|
||||
243818: 72 72 815 43 9 9 3 9 3 8
|
||||
255915710: 365 584 9 8 4 7 6 18
|
||||
649896756: 40 922 81 675 6
|
||||
90209784: 86 4 8 4 8 2 9 41 7 553 4
|
||||
1938043461875: 585 2 316 1 60 6 6 46
|
||||
344395030560: 68 321 1 8 570 346
|
||||
68445524: 58 9 95 45 5 24
|
||||
101817063790: 29 7 5 5 1 74 9 1 2 758 5
|
||||
8208761: 5 5 5 5 8 5 6 617 69 7 1
|
||||
120768: 98 9 6 8 17
|
||||
3116048: 3 3 11 4 1 7 1 7 8 6 253 6
|
||||
2514187687609: 251 41 876 87 607 2
|
||||
816971: 99 6 3 82 3
|
||||
1132216: 92 246 837 148 4
|
||||
22172: 7 6 3 37 633 31 7
|
||||
2749313: 6 218 82 3 1 112 7
|
||||
4280: 385 42 2 5 5
|
||||
2653814829: 9 3 9 176 3 37 7 19 54
|
||||
2862201: 9 7 5 80 67 6 133 3 4 4 9
|
||||
3370: 5 3 21 85 560 5
|
||||
33510727: 5 336 55 7 745 4 8 3 5 2
|
||||
8542478027: 7 9 6 423 8 1 96 973 54
|
||||
625114645518: 598 7 791 132 1 51 7
|
||||
94520255: 14 36 8 9 30 8 7 603 5 3
|
||||
269825453: 8 5 54 424 5 94 333
|
||||
8990: 54 35 90
|
||||
1939417840: 58 41 62 83 40
|
||||
25841539: 82 340 8 764 8
|
||||
5583873650: 5 3 508 2 6 4 3 1 3 4 9 48
|
||||
2487933: 8 69 8 5 3 11 1 3
|
||||
1270416845906: 973 680 98 91 1 211
|
||||
46166671264: 4 54 5 8 601 4 83 871
|
||||
115632308: 472 81 410 51 8
|
||||
206282: 293 1 6 9 7
|
||||
21933071: 57 5 579 1 846 35 775
|
||||
1729624: 4 27 1 1 1 328 9 5 4 6 5 6
|
||||
75757: 941 8 2 60 412
|
||||
1352210: 1 598 3 777 83 7 6 8 1 2
|
||||
347983: 5 8 4 832 9 2 53 4
|
||||
53321843: 8 9 1 555 117 69 5 7 40
|
||||
509941350: 8 160 89 2 5 73 4 510
|
||||
16749548152: 933 6 735 9 548 152 2
|
||||
182715414753: 653 6 6 453 7 658 7 53
|
||||
22751389220402: 34 82 726 135 6 90 2
|
||||
7477875: 53 6 73 255 75
|
||||
17145951: 557 66 95 16 465 6
|
||||
29997394: 688 436 5 93 1
|
||||
830276218: 88 468 801 8 93 99 21
|
||||
413822746: 4 902 530 227 46
|
||||
8475989: 61 731 55 523 5 3 751
|
||||
213173385: 7 419 5 82 91 143 244
|
||||
8476: 315 34 6 16 9 1 4
|
||||
215132022208: 651 865 7 571 33 382
|
||||
1737558: 5 8 9 328 1 3 4 42 2 6 3 9
|
||||
7212898: 98 8 92 74 27
|
||||
3376916: 422 8 323 579 9 7
|
||||
21912156: 22 6 166 15 7 2
|
||||
2424528990: 7 4 84 7 410 39
|
||||
399686: 7 4 27 2 84
|
||||
479369: 51 9 87 6 6 2 34 1 68
|
||||
5366794: 3 264 201 94 2
|
||||
24942: 917 2 938 9 9 3 4 766 7
|
||||
45408317: 82 66 264 8 318
|
||||
955693: 41 3 911 6 93
|
||||
1763: 11 7 8 32 5 2
|
||||
7137940: 7 8 86 68 6 46 50 123 4
|
||||
375924: 644 6 5 97 631
|
||||
51789: 970 83 5 409 9 1 724
|
||||
4633540: 927 4 891 1 336 8 3 5 5
|
||||
3827074: 2 4 7 5 3 3 9 6 234 8 53 3
|
||||
174783: 8 76 5 59 7 525 798
|
||||
18220965653: 3 5 796 308 2 6 6 929
|
||||
450081: 923 64 456 1 8
|
||||
1580629050: 6 907 7 60 4 7 8 975 7 6
|
||||
53908033: 71 857 9 97 8 90 883
|
||||
200570582525: 8 532 2 2 6 6 770 3 34 8
|
||||
2049329780118: 75 90 11 9 2 667 3 10 9
|
||||
335240782: 85 493 8 78 5
|
||||
515973: 2 7 3 30 63
|
||||
491045376: 520 8 93 5 378
|
||||
52900144900: 730 2 89 93 37 22
|
||||
411113430: 485 53 6 4 9 1 5 909 7
|
||||
428079459263: 850 1 6 5 7 945 8 9 3 6 3
|
||||
10267334400: 2 8 1 1 29 879 4 6 911 8
|
||||
1148385886: 4 2 5 3 9 8 8 49 4 3 91 8
|
||||
5042966021: 6 59 634 1 4 8 955 6 2 9
|
||||
153826991: 64 742 8 3 99
|
||||
84651: 1 84 54 6 5 1
|
||||
38009515: 36 7 791 6 328 743 6
|
||||
10646: 5 20 4 361 98 82
|
||||
58142385: 3 6 4 8 6 4 1 4 1 8 7 63
|
||||
11447010: 899 6 590 85 82 32 90
|
||||
148080024328: 16 411 9 662 417 1 6
|
||||
415528025: 1 29 2 8 3 7 7 117 7 178
|
||||
940546890: 3 62 7 237 68 183 31 3
|
||||
9075990043624: 8 9 28 76 525 41 2 626
|
||||
424464: 424 459 5
|
||||
8532951: 73 18 762 29 51
|
||||
9591544: 83 491 557 30 4
|
||||
34543862: 6 864 32 5 1 9 1 537 6 2
|
||||
335: 23 11 82
|
||||
30000: 5 561 53
|
||||
228530406544: 5 2 952 2 1 4 60 65 4 7
|
||||
117821: 34 38 9 9 4 730
|
||||
294451: 985 78 277
|
||||
67315140: 54 2 1 4 6 963 188 4 2
|
||||
767382521: 1 5 3 186 1 5 385 6 4 1 8
|
||||
72: 5 1 2 9
|
||||
4199365273188: 5 307 59 92 758 86
|
||||
36909183: 9 205 3 5 3 6 91 6 6 3 7 3
|
||||
4228426: 86 9 2 3 79 44 3 351 6
|
||||
3101601: 5 1 31 88 1 5 6 594 5 2
|
||||
14125920447: 5 92 1 8 3 3 397 7 771
|
||||
74256718132: 9 9 44 403 5 8 939 423
|
||||
14732109: 8 501 4 408 9 3 42
|
||||
881310249: 979 9 2 10 251 1
|
||||
126469: 9 45 4 715 98 471
|
||||
674696887: 2 4 842 4 55 7 88 26 5 2
|
||||
1665232268: 1 6 65 2 3 138 8 6 802
|
||||
2499735: 51 574 42 56 5 2 95
|
||||
134637242: 138 8 97 503 739
|
||||
18438: 15 82 960 391 53 7
|
||||
121068: 158 1 3 76
|
||||
139306754996: 5 4 62 6 25 283 4 9 1 9 6
|
||||
12209400: 8 2 3 9 48 918 95 2
|
||||
6913282747: 864 5 7 1 5 8 52 9 6 4 6 7
|
||||
18079451: 451 8 9 8 9 4 316 7 7
|
||||
358746938735: 7 751 8 51 6 29 6 8 2 6 2
|
||||
354669920028: 510 3 31 715 84 972
|
||||
38034: 607 48 58 1 44
|
||||
349019647: 2 2 974 479 2 8 64 32
|
||||
15031: 6 74 619 5 5 21 8 64 70
|
||||
31157828: 519 2 587 4 68 3
|
||||
121029120588: 29 1 4 824 4 85 5 7 8 9 9
|
||||
5203105: 518 2 30 65 38
|
||||
1787278: 102 584 5 6 235
|
||||
1818: 51 327 53 2 956
|
||||
23589640: 24 54 2 91 9 5 5 5 38 2
|
||||
11185866008155: 3 54 5 984 659 3 81 5 4
|
||||
5159414: 12 8 8 1 258 37 26
|
||||
943: 27 4 6 8 5 26
|
||||
1507815: 218 56 55 3 68 10 5
|
||||
781435: 2 6 3 1 436
|
||||
404002479853: 4 8 5 6 6 9 921 8 6 1 1 74
|
||||
117808: 7 3 1 90 119
|
||||
13344: 76 61 1 1 96
|
||||
29321: 291 1 40 69 9
|
||||
8616607: 2 78 583 60 86 524
|
||||
7794317578: 9 2 3 9 9 5 8 43 4 6 35
|
||||
2845227: 2 2 845 809 78 22 9 90
|
||||
415532023: 9 50 35 9 3 41 7 8 75 1
|
||||
24380364: 405 3 3 7 394 6
|
||||
5561933: 2 64 71 612 77
|
||||
43868704: 69 4 3 3 27 538 3 4 88 8
|
||||
2030282568: 6 2 7 5 9 43 5 7 7 680 24
|
||||
27749412203: 360 5 76 9 408 3 1 201
|
||||
27842: 64 7 5 60 662
|
||||
767760: 457 20 4 7 3
|
||||
58361: 88 829 4 500 7 2 9
|
||||
817389: 28 193 15 1 2 36 95 9
|
||||
696008: 26 73 83 239 2 5 8
|
||||
1586875: 9 90 30 110 65 225
|
||||
22312441922: 8 3 4 60 2 488 3 75 5 45
|
||||
153426394832: 27 4 311 1 4 7 2 4 4 7 3 2
|
||||
205905: 25 9 795
|
||||
55771301: 94 593 6 23 301
|
||||
76140038424: 47 2 300 5 9 62 5 6 92 4
|
||||
19026558: 2 27 9 9 639 2 3 4 5 4 12
|
||||
10591093: 7 3 6 5 5 1 82 6 7 4 65 4
|
||||
34476157: 8 38 67 38 86 156
|
||||
236957826051: 383 42 690 3 618
|
||||
41953947120: 6 962 46 6 57 8 95
|
||||
91726: 9 364 4 7
|
||||
103501474: 5 906 6 136 28 25 8
|
||||
2306986833: 233 33 95 610 3
|
||||
5183417876687: 4 89 106 178 766 85
|
||||
1613979: 1 160 3 9 80
|
||||
6211199231: 97 252 8 63 21 192
|
||||
1075782: 2 8 30 1 78 20 452 22
|
||||
97694735: 3 2 370 47 96 72 5 7 7 5
|
||||
137890590151: 1 3 9 7 67 7 6 489 6 80 9
|
||||
2910853: 3 2 292 60 5 178 9 10 9
|
||||
231046: 19 16 660 5 43
|
||||
3745: 89 2 5 4 2 5
|
||||
1244: 7 438 68 9 6 223 493
|
||||
1590: 55 908 46 581 1
|
||||
9887612034: 318 619 910 5 1 203 4
|
||||
648753846: 700 57 89 856 6
|
||||
69616: 1 69 6 41 102 4 7 304
|
||||
726504624: 72 6 504 607 14
|
||||
7366176: 9 9 1 7 938 7 8 8 43 7 5
|
||||
961848: 957 9 39 51
|
||||
1207774165: 6 6 3 93 5 3 83 7 416 1 4
|
||||
2179548541632: 21 7 426 173 56 264
|
||||
2520: 21 19 3 21 1
|
||||
1360262: 90 7 2 182 80 48 7 90
|
||||
1927043167: 29 662 72 43 167
|
||||
10689713431: 9 6 4 83 6 57 4 83 923 7
|
||||
946187: 1 38 24 10 185
|
||||
8362219: 96 26 19 867 4
|
||||
264: 13 2 4
|
||||
2784905: 5 8 5 44 388 552 905
|
||||
78379479: 38 5 9 3 2 456 7 6 2 8 79
|
||||
76: 4 6 3 60 5
|
||||
10715175424869: 855 4 225 17 66 84 71
|
||||
1509802788: 2 7 6 4 9 64 70 7 7 83 4
|
||||
132789652: 9 154 89 44 9 5 2
|
||||
17956425: 46 399 387 5 8
|
||||
660210: 4 2 1 3 22 22 631 961
|
||||
192932438388: 304 366 382 3 578
|
||||
239253759: 4 8 136 13 4 5 8 757
|
||||
732994: 739 16 97 64 7
|
||||
26087: 4 62 72 814 401
|
||||
160480426: 89 15 579 18 1
|
||||
379310: 35 31 30 4 34 74
|
||||
207366390: 5 898 893 46 268 385
|
||||
15765: 1 7 563 4
|
||||
2266789870: 4 341 73 557 997 9 3 6
|
||||
96665484: 2 964 43 13 9 484
|
||||
365768: 79 3 7 121 768
|
||||
142963608282: 2 6 9 5 7 8 22 380 8 2 83
|
||||
2498: 2 850 2 729 37 30
|
||||
11935499: 3 6 323 852 5 4 54 43
|
||||
71923: 222 576 3 9 77
|
||||
3431484: 240 3 68 21
|
||||
100190754049: 555 31 52 42 41 992
|
||||
5751501: 5 7 51 223 275
|
||||
122835227404: 89 1 373 37 63 27 404
|
||||
4837305: 432 8 95 3 454 5 9 829
|
||||
3649109600: 4 7 2 21 9 3 365 20 152
|
||||
655120053: 27 478 2 84 5 129 2
|
||||
3576368741749: 946 7 8 1 6 3 9 4 175 1 1
|
||||
2893325: 78 22 2 42 177 40 5
|
||||
1924937835: 20 3 2 5 4 307 9 5 66 5 4
|
||||
643751: 650 99 24 7 4
|
||||
45: 3 3 26 9 3
|
||||
660: 2 4 87 559 8
|
||||
2539: 4 403 892 35 1
|
||||
3674: 362 8 46
|
||||
1162251792: 62 6 5 7 36 39 474 542
|
||||
2368091154: 3 2 8 575 13 858
|
||||
66120: 64 4 5 8 10 19
|
||||
7486826365: 4 5 4 7 31 205 3 4 3 7 2 7
|
||||
386307741: 9 1 70 7 1 63 675 4 7 9 6
|
||||
10230561458: 8 9 14 10 69 5 8 9 7 821
|
||||
154794180: 85 6 226 79 17
|
||||
159148110: 81 246 4 235 93 22
|
||||
984556511: 62 9 27 1 97 4 18 978
|
||||
23606766469: 389 4 446 5 5 25 3 42 4
|
||||
5939892044: 54 700 81 2 970 3 41
|
||||
32603669: 649 9 21 5 3 200 2 470
|
||||
980: 58 7 512 60 4
|
||||
140631198724: 2 5 7 4 92 39 217 8 724
|
||||
122630144587: 4 41 1 589 3 28 94 590
|
||||
28426054754: 61 237 9 10 699 951 3
|
||||
26993694: 9 260 1 8 36 94
|
||||
5508: 56 4 83 37 491
|
||||
2566794: 47 946 3 1 83 838
|
||||
730292037: 9 5 3 89 783 725 5 4 37
|
||||
7719: 4 61 95 388 738
|
||||
1371461493: 150 71 91 4 79 2 9
|
||||
305217: 8 54 1 66 26 91 3
|
||||
33935249: 5 75 1 9 2 6 95 3 459 1 4
|
||||
16749: 8 7 937 712 98
|
||||
151413850: 1 6 650 7 3 13 4 745 5 1
|
||||
8008143: 773 5 3 7 5 69
|
||||
121022047: 3 2 6 3 3 702 4 3 4 3 60 6
|
||||
3488486358: 329 31 654 1 523
|
||||
184688494: 1 1 3 1 6 89 2 127 4 2 9 5
|
||||
1711196664021: 63 980 41 26 328 5 22
|
||||
6581064: 76 10 5 24 86
|
||||
137584: 5 10 98 4 7 384
|
||||
3890756: 1 29 363 1 99 57
|
||||
24153773792: 8 69 616 19 752 2 8 3 6
|
||||
16858296: 6 738 83 39 7
|
||||
12071831817: 9 5 9 2 5 210 5 7 5 384 7
|
||||
1675: 96 335 312 8 2 173
|
||||
713182: 701 5 7 18 2
|
||||
1462: 2 2 7 1 30 6 7 9 2 8 2 993
|
||||
4012: 434 9 66 6 1 5 1 3 8 4 5 7
|
||||
2509636115739: 883 3 449 211 573 8
|
||||
441509: 734 2 9 282 251
|
||||
1587801154: 494 29 6 3 801 1 52 1
|
||||
423094: 6 389 3 89 27 31 251 4
|
||||
1757133170: 872 31 764 54 65
|
||||
247757499: 147 3 8 3 4 4 9 88 42 1 1
|
||||
1727313: 65 11 28 5 2 809 98
|
||||
70450601: 99 3 4 89 20 372 5 55 2
|
||||
4541108057: 805 161 564 1 8
|
||||
24042847: 9 5 9 3 243 4 7 9 2 9 83 6
|
||||
2108110977: 398 1 23 93 1 999 23
|
||||
5610241: 6 935 2 39
|
||||
72098: 1 60 19 9 99
|
||||
1197518856112: 9 9 8 84 8 3 76 6 10 1 4
|
||||
158774: 7 3 97 37 3 711 62
|
||||
11060285775: 8 1 4 836 3 7 10 7 7 25 3
|
||||
8140: 27 96 1 3 3 2 95 7 3 727
|
||||
10121438: 1 436 9 92 70
|
||||
860403: 710 4 3 6 302 5
|
||||
927083: 542 74 7 5 43
|
||||
16882215034: 57 894 9 5 5 9 1 4 9 6 3 1
|
||||
63578: 7 2 1 563 77
|
||||
4088249760043: 32 12 234 760 70 20 2
|
||||
31374736: 6 5 364 6 2 8 1
|
||||
4399214: 936 47 13
|
||||
23925060150: 53 16 68 60 2 75
|
||||
2543: 6 547 3 5 871 8
|
||||
122579998: 3 78 11 7 748
|
||||
291594: 444 470 57 97 3
|
||||
2409360: 343 3 3 3 9 824 7 4 5
|
||||
1238038362: 5 5 509 92 5 36 9 7 97
|
||||
525001557: 8 4 1 7 7 140 3 5 1 434 3
|
||||
390649328: 477 8 1 90 44 5 328
|
||||
17363355: 77 26 6 289 3 7 806
|
||||
19956: 97 24 2 20 486
|
||||
91153855713: 2 3 1 3 6 6 7 7 989 7 34 3
|
||||
5739997: 951 603 4 418 59 65 4
|
||||
626980232: 6 202 67 80 18 5 2
|
||||
4747733: 47 321 8 147 95 38
|
||||
107928: 5 9 3 170 2 6 4 61 508 4
|
||||
23558102: 7 2 16 4 7 5 6 6 5 9 1 99
|
||||
3185485154: 88 48 4 6 6 1 2 593 6 55
|
||||
23136: 238 3 96 1
|
||||
638: 1 4 6 487 5
|
||||
1708208892: 2 9 45 187 58 43 1 2
|
||||
14968528167: 8 579 51 5 28 167
|
||||
9945460932: 6 9 5 6 8 5 916 360 4 33
|
||||
5557436: 4 1 3 63 44 7 73 1 2 1 6 9
|
||||
862: 674 190 1
|
||||
250758036025: 3 330 120 753 27
|
||||
3525594141: 71 8 8 6 1 1 2 8 9 49 44
|
||||
7239: 721 2 9 1
|
||||
9508: 479 638 2 36 4 421 7
|
||||
103: 3 1 1 5 98
|
||||
390780: 49 452 4 195 1
|
||||
363428: 790 17 41 116 377
|
||||
155757666973: 7 2 2 8 8 44 9 6 66 9 7 5
|
||||
7060895263377: 38 393 7 47 43 559 7
|
||||
691906033: 3 6 48 49 33 6 247 7 8
|
||||
34158764: 853 835 4 536 4
|
||||
80088635: 23 201 42 96 2 1 3 5
|
||||
13013: 18 7 77 3 332
|
||||
50774459: 837 8 35 80 5 2 91 6 2
|
||||
327169: 390 7 824 33 8
|
||||
376192: 43 970 80 9 79 3
|
||||
730012804: 78 709 2 165 8 1
|
||||
4787861: 477 823 956 7 1
|
||||
2115126258: 787 5 79 756 9 789 9
|
||||
10684275841: 9 98 3 1 4 79 6 7 48 40 9
|
||||
8744258566: 152 1 94 34 6 82 3 4 1 3
|
||||
57560529: 5 49 985 234 40
|
||||
91086832317: 3 7 91 8 68 318 4 6 5 4 1
|
||||
10313078819: 515 650 2 7 875 6 6
|
||||
134021197048: 40 67 423 94 5 45
|
||||
3004143: 6 9 8 43 5 269 3
|
||||
29492: 6 649 28 696 4
|
||||
2597274: 6 4 395 9 9 626
|
||||
68091255: 6 714 82 12 5 5 3 9 86 5
|
||||
2845: 7 4 44 1
|
||||
104652062010: 95 153 72 620 10
|
||||
1170739907: 282 106 415 2 5
|
||||
1267124: 2 239 86 545
|
||||
73548167869: 5 8 41 3 762 2 7 742 4 8
|
||||
97610: 536 45 168
|
||||
30385962006: 5 45 2 157 5 4 6 9 5 5 5 6
|
||||
34136389: 1 453 7 836 9
|
||||
2859663: 6 641 303 7 83 4 4 9 3
|
||||
831006074: 220 4 26 58 65 54
|
||||
5595: 3 78 66 3 246
|
||||
19003371840: 39 10 44 2 9 5 895 192
|
||||
1551347724: 2 5 950 622 9 3 3 1 1 3 6
|
||||
13541596: 728 186 7 93 2
|
||||
649502: 76 4 3 468 4 6 24 9 2 1
|
||||
19761: 9 12 941
|
||||
795078: 107 4 894 2 9 6 9 6 2 6
|
||||
837304819: 6 834 6 4 83 4 5 3 4 3 4
|
||||
5986344: 2 36 8 25 8 2 9 7 6 8 78
|
||||
88505841: 436 3 5 9 7 2 9 816 8 41
|
||||
24532: 82 32 8 94 9
|
||||
467483: 9 13 512 25 2
|
||||
6636537605: 3 53 1 8 1 56 5 40 4 33 5
|
||||
8150: 56 25 53
|
||||
689417616: 2 334 21 41 7 616
|
||||
639347: 63 90 3 38 9
|
||||
3941: 16 7 16 4 3
|
||||
55039: 417 64 8 7 54 39
|
||||
46002735: 89 813 51 718 17
|
||||
456590: 43 6 1 34 47 37 587 7 8
|
||||
1991724104: 18 3 2 1 4 1 136 4 1 10 4
|
||||
59472469157: 3 33 12 6 469 157
|
||||
714290736: 868 1 991 1 8 9 9 7 7 8 6
|
||||
3612781652: 2 7 3 3 73 274 427 410
|
||||
15855368368: 3 321 62 77 914 368
|
||||
1785304: 1 3 4 9 7 3 9 339 56 6 3 8
|
||||
248248: 1 409 22 33 8
|
||||
85008: 73 2 408 8 22
|
||||
275270328357: 9 6 8 9 9 2 6 930 54 6 34
|
||||
5663910: 79 34 7 500 671
|
||||
11127: 79 967 3 4 630
|
||||
179132250: 9 5 3 3 69 909 2 7 8 962
|
||||
4158095: 7 9 35 58 93 8 62 499
|
||||
3554470140: 6 5 2 73 324 99 4 3 23
|
||||
24449671: 8 7 5 8 83 29 4 2 1 4 70 1
|
||||
13718997648: 507 762 349 27 650
|
||||
1149: 3 51 11 406 149
|
||||
364809367069: 4 2 5 95 4 3 9 4 117 7 6 7
|
||||
78161431493: 76 2 161 35 3 2 49 495
|
||||
149614581: 149 60 78 1 66 84
|
||||
147777: 829 5 602 20 31
|
||||
767044338: 451 3 9 345 9 632 6 79
|
||||
36147907: 3 6 14 76 72 238
|
||||
3552: 8 8 5 1 32 960 1
|
||||
127596066: 3 7 20 343 66
|
||||
525466393: 3 93 4 82 45 8 6 66 394
|
||||
67036412837: 6 6 9 321 543 161 645
|
||||
49566812: 486 9 620 47 6 5 49 1
|
||||
36941: 2 4 614 8 92
|
||||
232740: 7 13 69 7 2 4 56 8 4 6 36
|
||||
103981615845: 259 984 9 8 51 6 38 6 1
|
||||
192070: 305 15 2 22 3 1 3
|
||||
668719800: 41 7 906 13 3 2 611 5 8
|
||||
93386: 2 25 79 881
|
||||
4979436: 65 5 9 415 714
|
||||
1514021: 16 43 1 1 2 858 365
|
||||
6538594: 90 8 9 2 7 4 9 54 6 9 11 4
|
||||
23056640: 9 70 2 74 493 5 8 1
|
||||
1530672212: 1 78 4 2 3 6 663 9 1 4 7 2
|
||||
4062698: 577 89 61 90 3 8
|
||||
28841858187: 331 51 87 48 8 18 7
|
||||
267849863: 666 3 62 464 4 5
|
||||
50616209: 7 1 6 666 209
|
||||
51813: 5 17 6 9 44
|
||||
43065: 69 12 6 96 74
|
||||
1265168131485: 8 6 8 4 41 9 95 5 8 8 9 9
|
||||
277830795: 1 371 7 735 795
|
||||
670242195: 1 69 551 81 95
|
||||
351738: 878 88 6 41 4 1
|
||||
60511327: 9 160 6 4 5 6 7 25 876 3
|
||||
8723027848: 3 49 34 74 62 481 8
|
||||
376702259433: 76 970 413 109 429 8
|
||||
981338733: 3 845 75 9 387
|
||||
332372089: 217 4 14 4 93 7 65 6 7 7
|
||||
13062184: 32 55 7 55 35 4 28 5 85
|
||||
555428252: 8 226 8 48 5 7 2 4 7 8 1 9
|
||||
153435: 6 11 35 84 778 387 3
|
||||
8052295745: 67 6 44 705 48 8 63
|
||||
9637546: 23 1 419 470 73
|
||||
235413707139: 8 7 89 17 2 326 64 71
|
||||
152664989: 9 2 6 861 5 54 2 2 67 8 9
|
||||
10599157: 47 425 401 7 520
|
||||
321048168: 437 4 8 91 168
|
||||
6133466570: 613 338 4 82 570
|
||||
364395: 2 670 5 3 4 4 71 9 9 651
|
||||
96144271: 93 41 273 426 6 3
|
||||
296100266: 7 416 700 262 7
|
||||
12: 3 4 5
|
||||
316640576: 765 5 3 80 3 8 10 69 64
|
||||
3742903512: 440 341 55 4 85
|
||||
2424885: 999 485 97 365 5
|
||||
1109686976: 3 564 542 680 6 9 73
|
||||
130649102: 87 2 180 48 2 813 2
|
||||
351996258059: 1 841 90 8 12 3 31 5 56
|
||||
19712180: 69 7 5 3 2 42 952 6 1 61
|
||||
161820433: 174 6 500 62 85 5 6
|
||||
1751: 893 698 6 11 7 136
|
||||
865218480617: 7 3 564 5 4 7 840 3 1 5 4
|
||||
29024: 56 2 173 5 24
|
||||
137761920: 77 281 755 384
|
||||
234: 18 2 6 9
|
||||
85892: 8 749 98 99 249 5 39
|
||||
6668277571: 6 9 7 140 8 20 139 986
|
||||
58381: 138 21 556 4 872
|
||||
39749790: 2 659 9 5 2 6 5 2 8 331 3
|
||||
16910718: 54 86 5 73 726
|
||||
196244: 2 301 436 924 44
|
||||
680: 3 1 76 7 46 3 5
|
||||
24098: 21 3 8 5 651 9
|
||||
72406081: 76 1 987 9 964 4 2 7
|
||||
401310: 9 4 69 824 4 441
|
||||
482255395: 9 533 25 55 395
|
||||
336753: 86 5 76 995 3
|
||||
2009631: 2 7 488 4 70 6 1 50 878
|
||||
39840: 7 32 108 6 20
|
||||
5677304803: 3 8 989 803 48 8 759 7
|
||||
109641032174: 3 61 289 561 76 40 14
|
||||
509254455841: 4 26 69 895 172 461
|
||||
30807424: 1 489 63 42 4
|
||||
1305895444: 65 557 83 24 6
|
||||
36122860: 7 665 97 80 60
|
||||
432561944: 465 50 6 465 1 6 5 8 8
|
||||
1598755: 13 2 1 1 6 8 5 3 6 7 295 5
|
||||
214270585186: 5 2 479 31 90 3 8 497
|
||||
820817: 5 250 3 227 94 11 9 2
|
||||
87935: 6 8 8 81 5 34 384 5 4 8 1
|
||||
3181124: 4 2 356 6 5 79 45
|
||||
57558: 9 306 260 55 1
|
||||
469698: 3 376 14 76 698
|
||||
427158: 348 601 75 18 6
|
||||
259325: 47 42 9 54 99 8 32 3
|
||||
1854090496: 3 7 6 2 7 70 27 3 1 48 1 6
|
||||
951: 8 7 21 93 109 4
|
||||
805719131: 6 7 8 2 6 3 102 7 23 9 7 7
|
||||
3719908556832: 499 91 4 1 2 4 640 8 8 4
|
||||
144066: 29 108 3 559 39
|
||||
258758334: 2 586 1 58 1 334
|
||||
12025: 665 7 2 662 9
|
||||
87559383: 9 179 7 2 32 7 6 90 3
|
||||
288550536146: 5 476 74 4 2 606 145
|
||||
275093262: 4 430 760 7 834 860 4
|
||||
6227179152: 5 496 7 872 73 17
|
||||
254426: 31 350 1 453 8
|
||||
28668: 6 3 3 6 246 317 4 5 3 4
|
||||
204246: 7 8 1 34 2 460 5 3 7 6 1
|
||||
966451: 533 5 8 36 933 5 43 3
|
||||
1000614359: 1 8 794 8 4 2 908 7 3
|
||||
54277578: 180 4 5 252 6 3
|
||||
960344059020: 8 5 1 745 7 4 1 47 5 4 9 8
|
||||
1794254145263: 84 471 547 987 84
|
||||
61238: 3 50 359 7 96 38
|
||||
262072: 1 76 9 4 7 34 238
|
||||
163767141: 35 56 9 1 9 4 178 1 8 1
|
||||
4278695529: 62 69 695 526 3 1
|
||||
657492404523: 491 13 72 355 65 2 62
|
||||
12144984: 121 3 5 9 986
|
||||
2877557499: 57 484 9 129 531
|
||||
588122: 5 6 3 48 65
|
||||
6876603: 176 5 719 1 21 43
|
||||
1275198662: 2 83 751 6 662
|
||||
12739432716: 53 290 76 543 6 5 9 5 9
|
||||
412298231633: 9 34 9 4 5 3 3 25 5 63 1 7
|
||||
277472967211: 41 445 9 5 4 76 4 7 209
|
||||
20790: 45 7 15 9 7
|
||||
48961044215: 8 5 8 80 4 7 6 9 1 26 84 5
|
||||
270911: 2 83 25 215 518
|
||||
1640: 795 3 8 7 6 805 2 3 1 7 3
|
||||
111034: 33 35 5 37 7 41 6
|
||||
72864: 61 91 55 4 11 8
|
||||
5341448448: 1 88 5 8 7 4 9 3 7 6 4 392
|
||||
849: 801 3 1 45
|
||||
1677855061: 414 49 9 919 1
|
||||
1954728: 839 9 384 93 52 6 60 6
|
||||
3579938: 8 838 89 6 2
|
||||
54951093321: 5 495 109 332 3
|
||||
779284807: 9 463 784 5 234 5 2 65
|
||||
295479: 2 312 5 47 4 4 297 6
|
||||
86113396: 5 877 30 976 5 908
|
||||
417248766: 6 6 84 542 8 26 14 61 6
|
||||
7928: 7 925 6
|
||||
2561662: 88 3 24 3 76 39 90 676
|
||||
17824: 126 3 9 947 45 62 4
|
||||
474147901: 10 53 1 4 2 5 30 90 5 9
|
||||
332807: 61 5 135 318 6 6 599
|
||||
248428: 9 46 15 7 4
|
||||
5058558453: 35 239 55 261 2
|
||||
203986: 44 83 9 124 161
|
||||
5566: 602 8 1 9 8 5 29 4 7 3 6 5
|
||||
71442: 904 36 38 2
|
||||
52410: 5 2 90 6 3 9
|
||||
9126793: 39 2 520 67 93
|
||||
285020268: 315 28 3 59 358 39
|
||||
......................................................................S......................................................................
|
||||
.............................................................................................................................................
|
||||
......................................................................^......................................................................
|
||||
.............................................................................................................................................
|
||||
.....................................................................^.^.....................................................................
|
||||
.............................................................................................................................................
|
||||
....................................................................^...^....................................................................
|
||||
.............................................................................................................................................
|
||||
...................................................................^.^...^...................................................................
|
||||
.............................................................................................................................................
|
||||
..................................................................^.^...^.^..................................................................
|
||||
.............................................................................................................................................
|
||||
.................................................................^...^...^.^.................................................................
|
||||
.............................................................................................................................................
|
||||
................................................................^.^.^.^...^.^................................................................
|
||||
.............................................................................................................................................
|
||||
...............................................................^...^.^.^.^.^.^...............................................................
|
||||
.............................................................................................................................................
|
||||
..............................................................^.^.^...^.^...^.^..............................................................
|
||||
.............................................................................................................................................
|
||||
.............................................................^.^.^.^.^.^.^.^.^.^.............................................................
|
||||
.............................................................................................................................................
|
||||
............................................................^...^...........^...^............................................................
|
||||
.............................................................................................................................................
|
||||
...........................................................^.^...^.^.^.^.^.^...^.^...........................................................
|
||||
.............................................................................................................................................
|
||||
..........................................................^.^.^.^.^...^.^.^.^...^.^..........................................................
|
||||
.............................................................................................................................................
|
||||
.........................................................^...^...^.^.^.^.^...^.^.^.^.........................................................
|
||||
.............................................................................................................................................
|
||||
........................................................^.^.^...^.^.^.......^.^...^.^........................................................
|
||||
.............................................................................................................................................
|
||||
.......................................................^.^.^.^.^.^.......^.^.^.......^.......................................................
|
||||
.............................................................................................................................................
|
||||
......................................................^.^.^.^.^.^...^.^.^.^.^...^.....^......................................................
|
||||
.............................................................................................................................................
|
||||
.....................................................^.....^.^.^.....^.^.^.^.^.......^.^.....................................................
|
||||
.............................................................................................................................................
|
||||
....................................................^.^.....^.^.^.^.^.^.^.^.....^.^...^.^....................................................
|
||||
.............................................................................................................................................
|
||||
...................................................^.^.....^.^.^...^...^.^.^.^.^...^.^.^.^...................................................
|
||||
.............................................................................................................................................
|
||||
..................................................^.^.^.....^.^...^.^.^.........^.^.^.^.^.^..................................................
|
||||
.............................................................................................................................................
|
||||
.................................................^...^...^.....^...^.^.^.^.^.....^.^.^.^.^.^.................................................
|
||||
.............................................................................................................................................
|
||||
................................................^.^.^.^.^...^.^.^.^.^.^.^.^...^.....^.^.^.^.^................................................
|
||||
.............................................................................................................................................
|
||||
...............................................^...^...^.^.......^...^.^.^.^.^.^.....^.^.....^...............................................
|
||||
.............................................................................................................................................
|
||||
..............................................^.^.....^.^.^.....^.^.^.....^.....^.^.......^.^.^..............................................
|
||||
.............................................................................................................................................
|
||||
.............................................^.^.^.^...^.......^...^.^.^...^.^.......^.^.^...^.^.............................................
|
||||
.............................................................................................................................................
|
||||
............................................^.....^...^.^.^...^.^...^.^...^.^...^.^.^.^.^.^.^.^.^............................................
|
||||
.............................................................................................................................................
|
||||
...........................................^.^...^.^.^...^.^...^.^.^.^...^...^.^.^.^.^...^.^.....^...........................................
|
||||
.............................................................................................................................................
|
||||
..........................................^...^.^.....^.^.......^...^...^...^.......^...^.^.......^..........................................
|
||||
.............................................................................................................................................
|
||||
.........................................^.......^...^.^.^.....^.^.^.^...^.^...^.^...^.^.^.^.^.^...^.........................................
|
||||
.............................................................................................................................................
|
||||
........................................^.^.^.^...^.^.^.^.^.....^...^...^.^.....^...^.^.^.^...^.^...^........................................
|
||||
.............................................................................................................................................
|
||||
.......................................^.^.^.^.^.^.......^.^.^...^.......^.^.^...^.^.^.^...^.^.....^.^.......................................
|
||||
.............................................................................................................................................
|
||||
......................................^...^.....^.^...^.........^.^.^...^.^.^.^.^...^...^.....^.^.^.^.^......................................
|
||||
.............................................................................................................................................
|
||||
.....................................^...^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.....^.^.^.^...^...^.^.^.....^.....................................
|
||||
.............................................................................................................................................
|
||||
....................................^.^.^.^.^.^.......^.^.^.^.....^.^.^.^.^.^.....^.^.....^.^.^.^...^.^.^....................................
|
||||
.............................................................................................................................................
|
||||
...................................^...^.^.^.^...^...^.^.........^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^.....^...................................
|
||||
.............................................................................................................................................
|
||||
..................................^.^...^.^.^.^.^...^...^.^.^.........^.^.^.^.^.^...^.^.^.^.^.^.....^.^.^.^..................................
|
||||
.............................................................................................................................................
|
||||
.................................^.^.....^...^.^.^.^...^...^.^.^.^.^.^...^.^.^.^.....^.^...^.^.^...^.^.^...^.................................
|
||||
.............................................................................................................................................
|
||||
................................^.^.^.^.^.^.....^.^...^...^.^.^.^.^.^...^.^...^.^...^.^.^.^...^.^.^.^.^.^...^................................
|
||||
.............................................................................................................................................
|
||||
...............................^...^...^...^.^.^.^.^...^.^.^...^.^...^.^.^.^.....^...^.^...^.......^.......^.^...............................
|
||||
.............................................................................................................................................
|
||||
..............................^.^.^.....^...^.^.^.^.^.^.^.^.^.^.^...^.......^...^.^.^.^.^...^.......^.^.^.^.^.^..............................
|
||||
.............................................................................................................................................
|
||||
.............................^.^.^.....^.^.^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^...^...^.^...^...^.^.....^...^...^.............................
|
||||
.............................................................................................................................................
|
||||
............................^.^...^.^.^.^.^.^.^.^...^.^...^.....^.^.^.^.^...^.^.^.^...^...^.^.^.^.^.^.^...^...^.^............................
|
||||
.............................................................................................................................................
|
||||
...........................^.^...^.^.....^...^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^...^...^.....^.^.^...^...^.^.^.^.^.^...........................
|
||||
.............................................................................................................................................
|
||||
..........................^.^.^.^.^.^.^...^.^.^.^...^.^.......^.^...^.^...^...^.....^.^.^...^.....^...^.^.^.^.^.^.^..........................
|
||||
.............................................................................................................................................
|
||||
.........................^.^.^.^.^.^.^.....^...^.^.^.^.^.^...^.^.^.^.^.^...^.........^.....^.^.^.^.^...^...^.....^.^.........................
|
||||
.............................................................................................................................................
|
||||
........................^...^.^...^.^.^.^.^.^.^...^.^.^.^.^.....^.^.^.^.^.^.^.....^...^.^.^.^.^.^...^.^.^.^...^...^.^........................
|
||||
.............................................................................................................................................
|
||||
.......................^.^.^.^.^...^...^.^...^.^.^.^.^.^...^...^.^...^.^.^.^.........^.^.^.^.....^.^.^.^.^...^.^...^.^.......................
|
||||
.............................................................................................................................................
|
||||
......................^.^.^.^.^.^.^.^.....^.....^.^.^.^.^.^.^.^.^.^.....^.^.^...^...^.^.^.^.....^.^.^.....^.^.^...^.^.^......................
|
||||
.............................................................................................................................................
|
||||
.....................^.^...^...^.^.^.^.^.^.^...^.^...^...^.^...^.^...^.....^.^.^.....^.^.^...^.^.^.^.^.^.^.^.^...^...^.^.....................
|
||||
.............................................................................................................................................
|
||||
....................^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^.^...^.^.^.^...^.^.^.^.^...^.^.^...^.^.^...^...^.^.^.......^.^.^...^....................
|
||||
.............................................................................................................................................
|
||||
...................^...^...^.^.^.^.^...^.^.^.^.....^.^.^...^.....^.^.^.^...^.^...^.^...^...^.^.^.^...^.^.^.^.^.^.^...^.^.^...................
|
||||
.............................................................................................................................................
|
||||
..................^...^.^...^.^.^...^.^...^.^.^...^.^.^...........^...^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^.^.^.^.^..................
|
||||
.............................................................................................................................................
|
||||
.................^.^.....^.^.^...^.^...^.^.^...^...^.^...^.^.^...^.....^.^.^.^.^.^.^...^...^...^...^.^...^.^.^.^.^.^...^...^.................
|
||||
.............................................................................................................................................
|
||||
................^.^.^...^.^.^.^.^.^.^.^...^.^...^.^...^.^.^.^.^.^.^.^.^.^.^...^...^.^.^.^.^.^.^.^.^...^.^.^.^...^.^.^.^.^.^.^................
|
||||
.............................................................................................................................................
|
||||
...............^.^.^.^.......^.^.^.^...^.^.^.^.^...^...^.......^.^.^.^.^.^.^.^.^...^.^.^.....^.^.^...^.....^.^.^...^...^.^...^...............
|
||||
.............................................................................................................................................
|
||||
..............^...^.^...^.^...^.^.^...^.^.^...^...^.^...^...^.........^.^.^.^.^...^...^.^...^.^...^.^.^...^...^.^.....^.^...^.^..............
|
||||
.............................................................................................................................................
|
||||
.............^.......^.....^...^.^.^.^.^.....^...^...^.^.^.^.^.^...^.......^.^.^.....^.^.^.^.^.^.^.^.....^.^...^...^.^.^...^.^.^.............
|
||||
.............................................................................................................................................
|
||||
............^.^...^...^.......^.....^...^.^.^...^.^.^.^.^.^.^.....^...^.^.....^.^.^.^.^.^.^...^...^.^.....^.^.^.^.^.^.^.^.^.^.^.^............
|
||||
.............................................................................................................................................
|
||||
...........^.^...^.....^...^...^.^.^.^.^.^.^...^...^.....^.^.^.^.^...^...^.^.^.^.^...^.^.^...^.^.....^...^.......^...^...^.^...^.^...........
|
||||
.............................................................................................................................................
|
||||
..........^...^...^.^...^.^.^...........^...^...^.^.^.^.^.^...^.^.^...^...^.^...^.^.^.^.^.^...^.^.^.^.^.^.^...^.^.....^.^.^.^.^.^.^..........
|
||||
.............................................................................................................................................
|
||||
.........^.^.^.....^.....^.^.^.^.^.^...^...^...^.^...^...^.^.^.^.^...^.^.^.^...^...^.^.^.^.^.^...^.....^.....^.^.^.^.^.^.^.^...^...^.........
|
||||
.............................................................................................................................................
|
||||
........^.^.^...^.^...^.^.^.^.^.^.^.^.^.^...^.^...^.....^.^.......^.^.......^...^...^.^.^.^.^.^.^...^...^.^.^.^...^.^.^.^.^.^.^.^...^........
|
||||
.............................................................................................................................................
|
||||
.......^...^.^.^.^.^.^...^...^.^...^.....^...^...^...^.^.........^.^.^.^.^.^.^.^.^.^...^...^.^.^...^.^...^.^.^.^...^.^...^.^.^...^.^.^.......
|
||||
.............................................................................................................................................
|
||||
......^.^.......^.^.^...^.^.^.^...^.^.^.^.^.^...^.^.....^.^.^.......^.^.^.^.^.....^.^...^.^.^.^.^.....^.^.^.^.^.^.^.....^...^...^.^.^.^......
|
||||
.............................................................................................................................................
|
||||
.....^...^.^.^.....^.^...^...^.....^.^...^.^...^.^.^...^.....^.^.^...^.^.^.^.^.^...^.^.^.......^.^.....^.^.^.........^...^.^.^.^.^.^.^.^.....
|
||||
.............................................................................................................................................
|
||||
....^.^...^.....^.^.....^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.....^...^.^...^.^...^...^...^.^.^.^.^.^.^.^.^.^...^.^.^...^.^...^.^.^...^.^...^....
|
||||
.............................................................................................................................................
|
||||
...^.^.^.^.^...^...^.^.^.^.....^...^.^.^.^.....^...^.....^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^...^.^.^.^.^.^.^...^.^.......^.....^...^.^...
|
||||
.............................................................................................................................................
|
||||
..^...^.^...^.^...^.^.^.^.^...^...^.^.^.....^.^.^.^...^.^.^...^.^...^.^.^.^.^.^.....^.^.^.^.^.^.^.^.^...^...^...^...^.^.......^.^.^.^.^.^.^..
|
||||
.............................................................................................................................................
|
||||
.^.^...^.^.....^...^.^.^.^...^.^.^...^...^.^.^.^.^.....^...^...^.^...^.^...^.^...^.^...^.^.^.^.^.^.....^.^.^.^.^.^.^.^...^.^.^.^.^...^.^.^.^.
|
||||
.............................................................................................................................................
|
||||
1050
Inputs/Day8.txt
1050
Inputs/Day8.txt
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user