9 Commits
2k24 ... master

Author SHA1 Message Date
ded4631c3b [2k25] Add day 8 2025-12-13 17:55:37 +01:00
6cf07be0c6 [2k25] Add day 7 2025-12-07 20:04:48 +01:00
e7afab8c99 [2k25] Add day 6 2025-12-07 15:32:02 +01:00
f100c7596b [2k25] Add day 5 2025-12-06 23:15:01 +01:00
04102d1fec [2k25] Add day 4 2025-12-04 21:35:12 +01:00
a805b5b96a [2k25] Add day 3 2025-12-03 20:56:17 +01:00
533c7437dc [2k25] Add day 2 2025-12-03 20:20:28 +01:00
0c3a8478d4 [2k25] Add day 1 2025-12-01 22:14:56 +01:00
f8843866ca Migrato to .Net 10 2025-12-01 22:13:17 +01:00
52 changed files with 8390 additions and 24630 deletions

View File

@@ -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>

View File

@@ -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()

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}
}

View File

@@ -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);
}
}

View File

@@ -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)..])
);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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}[/][/]");
}
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -1 +0,0 @@
0 7 6618216 26481 885 42 202642 8791

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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<^>

View File

@@ -1,141 +0,0 @@
#############################################################################################################################################
#.........#...........#.................#.......#.............#.....#.#...#...........#.....#.....#...#.......#.....#...........#.......#..E#
#.#######.#.#.#######.###.#########.###.#######.#.#.#.###.#.#.###.#.#.#.#.#.#####.#.###.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#####.###.#.#####.###.#
#.#.....#.#.#.#.....#...............#.#.#.....#...#...#.#.#.......#...#.#.#.....#.#.#...#.....#.#.#.#...#.#.....#.#.........................#
#.#.###.#.#.#.###.#######.###########.#.#.###.#.#######.#.#.#########.#.#.#.#####.###.#####.###.#.#.#####.#######.#.#.#.#.#.#.#.###.#.#.#.###
#...#.#.#...#...#...#.....#...........#.#...#.#.#.......#.#.........#.#.#.#.#.....#...#.........#.#.....#.......#.#.#.#.....#.......#...#...#
#.#.#.#.#######.###.#.###.#.#########.#.###.#.#.#####.#.#.#.###.###.###.#.#.#.#.#.#.###.###.#####.#.#######.###.#.#.#####.#.#########.###.#.#
#.#...#.......#...#...#...#...#.#.....#...#.#.#.....#.#.#...#...#...#...#...#...#.#.#...#.........#.#.....#.#...#.#...#...#...#.......#.....#
#.#.#.#######.###.#####.#.###.#.#.#######.#.#.#####.###.###.#.###.###.#########.###.#.###.#.#######.#.###.###.###.###.#.#.#.#.#######.#.#.###
#.#.#.......#.#.#.#...#.#.......#.......#.....#...#...#...#...#.#.....#...#.....#...#.#.....#...#...#...#...........#.#.#.#.#.#.....#...#...#
#.#.###.#####.#.#.#.#.#.#.#########.###.#####.###.###.#.#.#####.#######.###.#####.###.#####.#.#.#######.#.#.#####.###.#.#.#.#.#.###.###.#.#.#
#...#.#.........#...#.#...........#...#.....#...#...#...#.#.........#.....#.#.....#.#.....#.#.#.......#.#...#...#.......#.#.#...#.#.#.....#.#
#.#.#.###############.#.#.#.#####.#####.###.###.#.#.#####.#######.#.#.###.#.#.#####.#####.#.#.#######.#.###.#.#.###.#####.#.#.###.#.#.#.#.#.#
#.#...#.....#.#...#...#.#...#...#.....#...............................#...#.............#...#...#.................#.#...#...#.....#.....#...#
#.#.#.###.#.#.#.#.#.#####.###.#.#####.#.#.#.###.###.#######.#.#####.###.#.#########.#####.#.###.#####.###.###.###.#.#.#.#.#.###########.#.#.#
#.#.#...#.#.....#...#.....#...#.#...#.#...#.#...#...#.......#.#...#.....#...#.............#...#.....#.#...#...#...#.#.....#.......#.......#.#
#.#.###.#.###.#.#####.#####.###.#.###.#####.#.###.#.#.#######.#.#.###.#######.#############.#.#.###.#.#.#.#.###.#.###.###.#.#####.#.###.#####
#...#.#...#...#...#...#.....#...#.#...#...#.#.#...#.#.#.......#.#.#...#.......#.....#.........#...#.#...#.#.#.#.#.#...#.#.........#...#.#...#
#.###.#####.#####.#.#######.#.#.#.#.###.#.#.#.###.###.#.#####.#.###.#.#.#######.###.#.###########.#.#######.#.#.#.#.###.#.#####.#.###.#.#.#.#
#...#.......#...#.........#.#.....#.....#.#.#.#...#...#.#...#.#.....#...#.....#.#...#.#...#.....#.#.......#.#.#.#.#.....#.#.....#.#...#...#.#
#.#.#.#######.###########.#.#####.#######.#.#.#.###.#####.#.#.#######.#.#.#.###.#.#.#.#.#.#.###.#.#.#####.#.#.#.#######.#.#.###.#.#.###.#.#.#
#.#...........#...#.....#.#...#.......#...#...#...#.#.....#...#.......#...#.....#.#.#.....#.#.#...#...#...#...........#.#...#...#.#.......#.#
#.###########.#.#.###.###.###.#########.#.#.###.#.#.#.###.#####.#######.#########.#####.#.#.#.#######.#.###.#####.###.#.#####.#.#.#.###.#.#.#
#.......#.....#.#.............#.........#.#.#...#.#.#...#.#...#.....#.#.#...#...#.......#.#...#.....#.#.....#...#...#.....#...#...#.........#
#.#####.#######.###.#.#######.#.#########.#.#.###.#.###.#.#.#.#.###.#.#.#.###.#.###.#.#.#.###.###.#.#.#######.#.#######.#.#.###.#######.#.#.#
#...#.#...#.....#...#.....#.#.#...#...#...#.....#.......#.#.#.#...#.#...#.#...#...#.#...#...#.....#.......#...#.......#.....#.#.#.......#.#.#
###.#.###.#.#####.#####.#.#.#.###.#.#.#.#######.#.#########.#.#.###.#.###.#.#####.###.#####.#############.#.#######.#.#####.#.#.#######.#.#.#
#...#.......#...#...#...#.#.....#...#.#.....#...#.#.........#.#.#...#.#...#.#.........#.....#...........#.#.#.#.............#.#.....#.....#.#
#.#.#####.#.###.###.#.###.#######.#.#.###.#.#.###.#.###.#####.#.#.###.###.#.###########.#####.#########.###.#.#.#############.#.###.#.#.#.#.#
#.#.....#.........#...#.#.......#.#.#...#.#.#.#...#.....#.....#.#...#.....#...#.........#.....#.......#.....#...............#...#.#.#.....#.#
#.#.###.#.###.#########.#######.#.#.###.###.#.###.#####.#.#########.###.#.###.#.###########.###.#.#######.#.#####.#.#.#####.#.#.#.#.#.#.#.#.#
#...#...#...#.#...............#.#...#.#.#...#...#.....#.#.#.......#.#.......#.#...#.........#...#.#.......#.......#.#.#.#...#.#...#.#.#...#.#
#####.###.#.###.#########.###.#.###.#.#.#.#####.#######.#.#.#####.#.#######.#.###.#####.#####.#####.#############.###.#.#.###.#.###.###.#.#.#
#.....#...#.....#...#...#...#.#.#...#.#.#...............#...#...#.#.....#...#...#.........#...#.....#.......#.........#.#...#.........#...#.#
#.#####.#.#######.#.###.###.#.#.#.###.#.#####.###############.###.#.###.###.#.#.#####.#.#.#.#.#.#####.#.#.#.#.###.#.###.###.###.#####.###.###
#...#.#.......#...#.....#...#.#.#.#...#.#.............#.......#...#...#...#.#.#.#.#...#.#.#.#.#.#.....#...#...#...#.....#.#.................#
###.#.###.###.#.#######.#.#.###.#.#.###.#.#####.#######.#.#####.###.###.#.#.#.#.#.#.###.#.#.#.#.###.#####.#####.#######.#.#########.###.###.#
#...#.#.....#.#.#.......#.#.#...#...#...#.#.....#.......#...#...#.....#.#.#.#.....#.....#.#...#...#.....#...#...#...#...#...#.....#.#.......#
#.###.#.#.#.#.#.#.#######.#.#.###.###.###.#.#####.#####.###.#.###.###.###.###.###.###.###.#.#.###.###.#####.#.###.#.#.###.#.#.#.###.#########
#.........#.#...#.#.....#.#.#.#...#...#...#.#.....#.....#.#...#.#...#.....#...#.....#.....#.#...#...#.#.....#...#.#.#.#...#.#.#...#...#.....#
#.#.#.#.#.#######.###.###.###.#####.###.#####.#####.#.#.#.#####.#.#.#######.###############.#.#.###.###.#######.#.#.#.#.###.#.###.###.#.###.#
#.#.#...#.#.....#...#.#...#...#.....#.......#.....#...#.#.........#...#.................#...#.#...#...#.#...#.....#.#.#.#.#.#.#...#.#...#...#
#.#.#####.#.#.#####.#.#.###.###.#####.#####.#####.#.###.#.###########.#.#####.#######.#.#####.###.###.#.#.#.#######.#.#.#.#.###.#.#.#####.#.#
#.#.....#.#.#.....#.#.#.........#...#.#...#.....#...#.#.#.........#...#.#.......#...#.#.......#.#...#.#...#.#...#...#...#.#.....#.......#.#.#
#.#####.#.#.###.###.#.#####.###.#.###.#.#######.#####.#.###########.###.###.###.#.#.#.#########.#.###.#.###.#.#.#.#######.#############.#.#.#
#...#.#.#.#.#.#.#...#.#...#.....#...#.#.......#.#.....#.#...........#.#...#.#...#.#.#...#...#.....#...#...#...#.#.#.............#...#...#...#
###.#.#.#.#.#.#.#.###.#.#.#########.#.###.###.#.#.###.#.#.#######.###.###.#.#.###.#.#.#.#.#.###.###.#########.#.###.#.#########.#.#.#.#####.#
#.....#.#.#.#.#.#.....#.#...#.....#.#.#...#...#.....#.#...#.......#.........#.....#...#.#.#...#.#...#.......#.#.....#.#.......#...#.#.....#.#
#.#####.#.#.#.#.#####.#.###.#.###.#.#.#.###.#########.#####.#####.#.###############.###.#.###.###.###.#####.#.#######.###.#########.#####.#.#
#.#.....#.#...#.......#...#.#.#...........#.#...........#...#.#...#.#.#.......#...#.#...#.#.#.....#.....#.#.#.#...#...#...#.........#.....#.#
#.#.#####.###.###########.#.#.#######.###.###.#.#########.###.#.###.#.#.#####.#.#.#.#.###.#.###########.#.#.#.#.#.#.###.#.#.#######.#.#####.#
#.#...#.....#...#.........#.#.......#.....#...#.#.........#...#.......#.#...#.#.#...#.....#.........#...#...#.#.#...#...#.#.#.....#.#.#...#.#
#.###.#####.#.###.#########.###.###.#####.#.###.#.#########.#.#######.#.#.###.#####.#.#.#.#####.###.#.###.#####.#####.#.###.#.###.###.###.#.#
#...#.....#.......#.......#.#.....#.....#.#.#...#...#.......#.........#.#.....#...#.#.#.....#...#...#...#.#.....#...#.#...#.#.#.#.........#.#
#.#####.#.#.#.#.###.#####.#.#.###.###.###.#.#######.#.#.#######.#####.#.#.#####.#.#.#.#####.#.###.###.#.#.###.###.###.###.#.#.#.###########.#
#.#...#.#.#.#.#...#.#.....#.#.#.#...#.....#.......#.#...........#.....#.#.#.....#.#.#...#.#...#.#...#.#.#.....#.....#.#...#.#.#...#...#...#.#
###.#.###.#.#.###.#.#.#####.#.#.###.#.###########.#.#######.#.###.###.#.#.#.#####.###.#.#.#####.###.###.###.#####.#.#.#.#.#.#.#.###.#.#.#.#.#
#...#.....#.#...#...#...#.#...#.....#.........#.#.#.........#.#...#.#.#.#...#...#...#.#...#.....#.#...#.#.......#.#.#...#...#.......#.#.#.#.#
#.#########.###.###.###.#.#######.#.#########.#.#.###.#.#####.###.#.#.#.#####.#####.#.###.#.#.#.#.###.#.#####.#.###.###.###.#.#.#.###.#.#.#.#
#.....#.......#.#.....#...#.......#...#...#.....#...#.#.#...#...#.#.........#...#.....#...#.#.#.....#.#.#.....#...#.....#.......#.#.....#...#
#####.#.###.###.#.###.#.#.###.###.###.#.#.#.#####.#.#.#.###.###.#.#######.#.#.#.#.#########.#.#######.#.#.#######.#######.#######.#########.#
#.....#.#.#...#.#...#.........#.....#.#.#.#.#...#.#.....#...#.....#.....#.#...#.#...#...#...#.........#.#.#.....#.#.......#.#...#.#...#...#.#
#.#####.#.###.#.#.#.###########.#####.#.#.#.#.#.#####.###.###.#####.###.#.###.#.#.###.#.#.#####.#######.#.#.#.#.#.#.#.#####.#.#.#.#.#.#.#.#.#
#...#.......#.#.#.#.......#.....#.....#.#...#.#.#.....#.......#...#.....#...#.#...#...#.....#.........#...#.#.#.#...#.......#.#...#.#...#.#.#
#.#.#####.###.#.#######.###.###.#.###########.#.#.###.#.#####.#.#.###.#.###.#.#####.###.###.#.#.#####.#.###.#.#.#######.###.#.#####.#####.###
#.#...#.#.#...#...#...#...#.......#...........#.....#.#.#...#.#.#.....#.#...#.#.......#...#.#.#...#...#...#.#.#...#...#...#.................#
#.###.#.#.#.#####.#.#.###.###.#.###.#####.###########.###.#.###.#######.#.#.###.#########.#.###.#.#######.#.#.###.#.#.#####.###########.###.#
#.#...#...#.....#.#.#.#.....#.#.#...#.....#.....#...#...#.#.....#.....#...#.#...#...#.........#.#.#.....#.#.#...#.#.#.......#...........#...#
#.#.#.#########.#.#.#.#.###.#.#.#.#####.###.###.#.#.###.#.#####.#.###.#.#.#.#.###.#.#.#######.#.#.#.###.#.#.###.#.#.###.###.#####.#.#####.#.#
#.#.#.#.......#.....#...#.#.#.#.........#...#.#...#.....#...#...#...#...#.#.#...#.#.#.........#.#.....#.#.#.#...#.#.......#.......#.#.....#.#
#.#.#.#.#####.###########.#.#.#########.#.###.#########.#.#.#.#.#.#.#.#.#.#####.###.#######.###########.#.###.###.#######.#########.#.#####.#
#.#.......#...#.........#...#...#.#...#.#...#.#...........#...#.#.#.#.#.#.......#.......#...............#.....#...#.....#.#.............#...#
#####.###.#.#.#.#######.#.###.#.#.#.#.#####.#.#.###.#######.#.#.###.###.#.#######.#####.###.#.###.#####.#######.###.###.#.#####.#######.#####
#.....#.....#.#.....#...#.....#.#.#.#.......#...#.......#.....#...#.............#.....#.....#...#.#...#.#.....#...#...#.#.#...#.#...........#
#.###.#.#.#########.#.#######.#.#.#.#############.#####.#.###.###.#############.#.###.#######.#.#.#.#.#.#.###.###.###.#.#.#.#.###.#.#.#.#.#.#
#.#.#.#.............#.......#.#...#...............#...#...#.....#.#.........#...#...#.......#.#.#...#.....#.....#...#.#...#.#...#.#.#...#.#.#
#.#.#.###.#################.#.###.###.#.#############.#####.###.#.#.#######.#.#############.#.#.###############.###.#.#####.###.#.#.###.#.#.#
#.#...#.....................#...#...#.#.#.....#.......#.....#.#.#...#.....#.#.#.....#.......#.#...#...........#...#.#...#...#.#.#.#...#...#.#
#.#.#.#.#.#######.###############.###.#.###.#.#####.#.#.#####.#.#####.#.###.#.###.#.#.#######.###.#.#########.#.###.#.#.#.###.#.#.###.#.###.#
#.#.....#...#...#.#.......#.......#...#.#...#.#.....#.#.#...#...#...........#...#.#...#.......#...#.#.......#.#...#.#.#.#...#...#.#.#.......#
#.###.#.#.#.###.#.#.#####.#.#######.###.#.###.#.#####.#.#.#.#####.#############.#.#####.###.###.#.#.###.###.#.#.#.#.###.#.#.#.###.#.###.###.#
#.#...#.#.#.......#...#.#...#.....#.....#...#...#...#.#...#.......#.......#...#.#.#...#.#...#.#.#.#...#...#.#...#...#.....#.#.....#.#.......#
#.#.#.###.#.#.###.###.#.#####.###.#########.#####.###.#############.#####.###.#.#.#.#.#.#.#.#.#.#.###.###.#.#########.#.#.#.#######.#.#.###.#
#...#...#...#...#...#.#...#.....#.#.......#.....#.....#.....#.....#...#.#.....#.#...#.#.#.#.#.#.#...#.#...#.........#.#...#.#.....#...#.....#
#.###.#.###.###.#####.###.#.###.#.#.###.#.#.###.#.#######.#.#.#.###.#.#.###.###.#.###.#.#.#.#.#.#####.#####.#####.#.#.#.###.#.#.###.###.#####
#.#...#.....#...#.....#...#.#.#.#.#.#...#.#...#.#.#.......#.#.#.......#.....#...#.#.#.#.#.#...#.#...#.....#.....#.#.#.#.#...#.#.....#.......#
###.#.#######.#.#.#####.###.#.#.###.#.###.#####.#.#####.#####.#######.#######.###.#.#.#.#.###.#.#.#.#####.###.###.#.#.#.###.#.#######.#.###.#
#...#...#.....#.#.....#.#.....#.....#.#.........#...#...#.....#.....#.#.....#.#.....#.....#...#...#.....#...#.#.......#...#.....#.....#...#.#
#.###.#.#.#####.#####.#.#.###.#######.#.###########.#.###.#####.#.###.#.###.#.#.#################.###.#.###.#.#.#####.###.#####.#.#####.#.#.#
#.#.......#.#.......#...........#.#...#...#.......#.#...#.......#.....#.#.#...#.#.#.............#.#.#.#.#.#.#.#...#.#.#.#...#.#.#.....#...#.#
#.###.#####.#.#####.#.#########.#.#.###.#.#.#######.###.#.#.#####.#####.#.#####.#.#.###.#######.#.#.#.#.#.#.#.###.#.#.#.###.#.#.#####.#.###.#
#.#...#...#...#.....#...#...#.....#.....#.#...#.....#...#...#.....#.....#.....#.#.#...#.....#...#...#.#...#.#.#...#.......#.#.#...#...#...#.#
#.#.#.#.###.###.#.#.###.#.#.#########.###.###.#.#####.###.###.#.###.#####.#####.#.###.#.#.#.#.#######.###.#.###.###.#######.#.###.###.###.#.#
#...#.#.....#.#.#.#.#.#...#.....#...#.#.#...#...#.....#...#...#.....#.#.........#...#.#.#.#.#.....#...#.#.#.....#...#.....#.#...#...#.#...#.#
#####.#.#####.#.#.#.#.#####.###.#.#.#.#.###.#.###.#####.###.###.#####.#.#########.#.#.#.#.#.#####.#.###.#.#######.###.###.#.#.#####.#.#.###.#
#.....#.#.....#.#.#.......#...#.#.#.#...#...#.....#...#...#.....#.#...#.#.........#.#.#.#.#...#.#.#...#.........#...#.#.....#.#.....#.#...#.#
#.#.###.#.#####.#.#####.###.#.#.#.#.###.#.#.#######.#.###.#######.#.#.#.#.#.#######.#.#.#.###.#.#.###.#############.#.#######.#.#######.#.###
#.....#...#.....#.#.....#...#...#.#.#.....#.........#.....#...#.....#.#.#.#.#...#...#.#.#.#.#.#.#.#...#.............#.....#.......#...#.#...#
#.#.#.#####.#####.#######.#######.#.#.###.###.#############.#.#.#####.#.#.###.#.#.###.###.#.#.#.#.#.#.#.###############.#.#######.#.#.###.#.#
#...#.#.....#.#...#.......#.......#...#.#.#...#.#...#.......#.#.#...#...#.#...#.#...#...#.......#...#.#...#...........#.#...#...#...#...#.#.#
###.#.#.#####.#.###.#######.###.#######.#.#.###.#.#.#.#.#####.#.###.#####.#.###.#######.#.#######.#######.#.#########.###.#.#.#.#######.###.#
#.....#...#...#.#...#.....#.#.#.....#.....#.#.....#...#.#.....#...........#.#.#...#.....#.#.......#.......#...#.....#.....#...........#.....#
#.#.#####.###.#.#.###.###.#.#.#####.#.#####.#.#########.#.#########.#.#.###.#.#.#.#.#.#.#.#.#######.#########.#####.###.###.#####.#.#.#####.#
#.#.....#.....#.#.#...#.#.#...#.#...#.#.....#.#.........#...#.........#.#...#...#...#...#...#...#...#...#...#...#.....#...#.#...#.#.#.....#.#
#.#.###.#####.#.#.#.###.#.###.#.#.#.###.#####.#.#.#.#######.###########.#.#####.###.#.#######.#.#.###.#.#.#.###.#.###.###.#.#.#.#.#.###.###.#
#...#.............#...#...#...#...#.#...#.....#.#...#.....#.......#.....#.#.......#.#.......#.#.#.#...#.#.#...#.#...#.#...#.#.#...#...#.....#
#.#.#.#####.#.#######.#.#####.#.#.#.#.#########.#######.#.#######.#.###.#.###.#.###.#.#####.#.#.#.#.###.#.#.###.#.#.#.#.###.#.#############.#
#...#.#.....#...#.....#.....#...#.#.#.....#.....#.......#.#.....#.#.#...#...#.#.#...#.#...#...#...#.#.....#.#...#...#.#...#.#...#...#.....#.#
#.#.#.#.#######.#.#########.#####.#.#####.#.#.###.###.#####.###.#.#.#.#.###.#.#.#.###.#.#.#########.###.###.#.###.#.#####.#####.#.#.#.###.#.#
#.#...#.#.....#.#.......#.#.#.....#.#.......#.#.......#.....#.....#.#.#.#...#.#.#.#...#.#.#.......#.......#.#.#...#.......#.....#.#...#...#.#
#.#.#.###.#.#.#.#######.#.#.#.#.#####.#.#####.#.#.###.#.#####.###.#.#.#.#.###.###.#.#####.#.#.###.###.#.#.#.#.#.###########.#####.#####.#####
#.#...#...#.#.#.........#.....#.#.....#.........#...#.#.#...#...#.#.#.#...#...#...#.....#...#.#...#...#.#...#.#.#...........................#
###.#.#.###.#########.#.#######.#.#################.###.#.#####.#.#.#.#####.###.#######.#####.#.###.#.#.#.###.#.#######.#.#################.#
#.....#...#.......#...#.........#.#.#.............#.....#.....#.....#.#...#.....#.#.....#.........#.#.#.#.....#.....#...#.#...............#.#
#.#.#.###.#######.#.#####.###.###.#.#.###.#.###############.#.#######.#.#.#####.#.#.#####.#######.#.###.###########.#.#.###.#############.#.#
#.........#.....#.#.#...#...#.#.#.#.#.#...#.#...........#...#.........#.#.....#...#.....#.#.....#.#...#.#.#.......#.#.#...#...#...#.....#...#
###.#.###.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#####.###.#####.#.#####.#######.#####.#########.#.#.#.#.#.###.#.#.#.###.#.#.#.###.###.###.#.###.###.#
#...........#.#.#...#.#.#.#.#...#.#...#.....#.#...#...#.#.#.....#...........#.............#.#.........#.#.#...#.#.#...#.#.....#...#.#.#...#.#
#.###.#.#.###.#.#.#.#.#.###.#.###.#.#######.#.#.###.#.#.#.#.#####.#########.#####.#########.#########.#.#.###.#.#######.#######.###.#.###.#.#
#.#.......#.....#...#.#.....#.#...#...#...#...#...#.#.#...#...#...#...#...#.#...#.#.....#...#.....#...#.#.#...#.......#...#.....#...#.#...#.#
#.#.#.#.#.#.#########.#######.#.#####.#.#.#######.#.#.###.#####.###.#.#.#.###.#.###.###.#.###.###.#####.#.#.#######.#.#.#.#.###.#.###.#.###.#
#.#.....#...#.........#.....#.#...#.#...#.......#.#.#.#...#...#.#...#...#.#.........#...#...#...#.#.....#.#...#...#.#.#.#.#.#...#.....#.....#
#.#####.#.###.###.#####.###.#.###.#.###.#.#######.#.#.#####.#.#.#.#######.#.#.#######.#####.###.#.#.###.#.###.#.#.#.#.###.#.#.###.###.#######
#.#...#...#.....#.#.#.....#.#...#.#.....#.......#...#.#.....#.#.#...#.......#.......#...#.....#.#...#.........#.#.#.#...#.#.#.....#.....#...#
#.###.#.#.#.#####.#.#.#####.###.#.#.#####.#.###.#####.#.#####.#.###.#####.###.#####.###.#######.#####.###.#####.#.#.###.#.#.#######.###.###.#
#.....#.#...#.....#...#...#.....#.#.....#.#.............#...#.....#.#...#.#...#...#...#.....#...#...#.#...#.....#.#...#...#.#.....#.#.#.#...#
#####.#.#.###.#####.###.#.#.#####.#####.###.###.#####.###.#########.#.#.#.#.#.###.#.#######.#.###.#.#.#.#.###.###.#.#.###.#.#.#.#.#.#.#.#.#.#
#.#...........#.....#...#.#.#...#.#...#.#...#.........................#.#.........#.......#.#...#.#.#...#.#...#.....#.#...#.#.#.#...#.#.#.#.#
#.#.#######.#.#.#####.###.#.#.#.#.#.#.#.#.#.#.###.#.#####.#.#########.#.#.#############.#.#.###.#.#.#####.#.#.#####.#.#.###.###.#####.#.#.###
#.......................#.#...#.#...#.#...#.......#...#...#.........#.#.#.....#...#...#.#.#.....#.#...#.#.#...#.......#...#.....#...#...#...#
#.#####.#####.#########.#.###.#.#####.###.#.#.#######.#####.#######.#.#.#.###.#.#.#.#.#.#.#.#####.###.#.#.###.#.###.#####.#######.#.#.###.#.#
#.#.....#...#.#.......#.#...#.......#.#...#.#...#...#.............#...#...#.#...#...#.#.#...#...#...................#.....#.......#.#.#...#.#
###.#.###.#.#.#.#####.#.###.#####.###.#.###.#.#.#.#.#####.#######.#######.#.#########.#.###.#.#.#.#.#####.#.#######.###.###.#####.###.#.###.#
#...#.....#.#.#...#...#.#.#.#...#.#...#...#...#.#.#.....#.#...............#.........#.#...#...#...#.....#.#.......#.......#.#...#.....#.#...#
#.#########.#.###.#.###.#.#.###.#.#.#####.###.#.#.###.###.#.#############.#######.###.###.#############.#.#.#.###.#.###.#.#.#.#.#######.#.###
#.....#.........#.#...#...................#.....#...#...#.#...#.........#.......#...#.#...#.....#...#...#.#.#.#.#.......#...#.#.#...#...#...#
#.###.#.#########.###.###.###.#.#####.#.#.#.#.#####.###.#.#####.#######.#.#####.###.#.#.###.###.###.#.###.###.#.###.###.#####.###.#.#.#####.#
#...#.#.....#.....#...#...#...#...#...#...#...#.#...#.#...#.....#.....#...#...#.....#.#.......................#.....#...#.........#.........#
#.#.#.#######.#####.###.###.#######.#########.#.#.###.#####.#####.#######.#.#.#######.#######.###.#.#####.#.###.###.#.#.###################.#
#S..#.............#.......#...................#.............#...............#.........#...........#.........#...............................#
#############################################################################################################################################

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -1,141 +0,0 @@
#############################################################################################################################################
#.......#...#.......#...#.....#...###...............###.......#...#...#...#.....#.......###.....#...................###.....................#
#.#####.#.#.#.#####.#.#.#.###.#.#.###.#############.###.#####.#.#.#.#.#.#.#.###.#.#####.###.###.#.#################.###.###################.#
#.#...#.#.#.#.....#.#.#.#...#.#.#.#...#...#...#...#...#.....#.#.#.#.#.#.#...#...#.#.....#...#...#.........#.........#...#.................#.#
#.#.#.#.#.#.#####.#.#.#.###.#.#.#.#.###.#.#.#.#.#.###.#####.#.#.#.#.#.#.#####.###.#.#####.###.###########.#.#########.###.###############.#.#
#...#.#.#.#.#...#.#.#.#.....#.#.#.#...#.#...#...#...#...#...#.#.#.#.#.#.....#...#.#...###...#...#.....###.#...#...#...#...###...........#...#
#####.#.#.#.#.#.#.#.#.#######.#.#.###.#.###########.###.#.###.#.#.#.#.#####.###.#.###.#####.###.#.###.###.###.#.#.#.###.#####.#########.#####
#.....#...#...#...#...#.......#.#.###.#.###...#...#.#...#...#.#.#.#.#.#.....#...#.#...#.....#...#.#...#...#...#.#.#.#...#.....#.....#...#...#
#.#####################.#######.#.###.#.###.#.#.#.#.#.#####.#.#.#.#.#.#.#####.###.#.###.#####.###.#.###.###.###.#.#.#.###.#####.###.#.###.#.#
#.....#.......#.....#...#...#...#...#...#...#...#...#.......#.#.#.#.#.#.#.....###.#...#.....#.###.#.#...#...#...#...#...#...#...###...###.#.#
#####.#.#####.#.###.#.###.#.#.#####.#####.###################.#.#.#.#.#.#.#######.###.#####.#.###.#.#.###.###.#########.###.#.###########.#.#
#.....#.#...#...#...#...#.#.#.#.....#...#...............#...#...#.#.#...#...#...#.#...#...#.#.#...#.#.#...###.......#...#...#...#...#...#.#.#
#.#####.#.#.#####.#####.#.#.#.#.#####.#.###############.#.#.#####.#.#######.#.#.#.#.###.#.#.#.#.###.#.#.###########.#.###.#####.#.#.#.#.#.#.#
#.#...#.#.#...#...#...#...#.#.#.#...#.#...#...#.....###...#...#...#.#.......#.#.#.#.#...#.#.#.#...#.#.#.###...#...#.#...#...#...#.#.#.#.#.#.#
#.#.#.#.#.###.#.###.#.#####.#.#.#.#.#.###.#.#.#.###.#########.#.###.#.#######.#.#.#.#.###.#.#.###.#.#.#.###.#.#.#.#.###.###.#.###.#.#.#.#.#.#
#...#...#...#.#.....#...#...#.#.#.#.#...#.#.#.#...#.#.....#...#.....#.......#.#...#...#...#.#...#.#...#...#.#.#.#.#.#...###.#.#...#...#...#.#
###########.#.#########.#.###.#.#.#.###.#.#.#.###.#.#.###.#.###############.#.#########.###.###.#.#######.#.#.#.#.#.#.#####.#.#.###########.#
###...#...#.#.###.......#...#.#...#.###.#.#.#.....#.#.#...#.....#.........#.#.#.......#.#...#...#...#.....#.#.#.#.#.#.#...#.#.#...#.........#
###.#.#.#.#.#.###.#########.#.#####.###.#.#.#######.#.#.#######.#.#######.#.#.#.#####.#.#.###.#####.#.#####.#.#.#.#.#.#.#.#.#.###.#.#########
#...#...#...#...#.........#...#.....#...#.#...#.....#.#.#...###.#.#.....#...#...#.....#...#...#...#.#.....#.#.#.#...#...#...#.#...#...#.....#
#.#############.#########.#####.#####.###.###.#.#####.#.#.#.###.#.#.###.#########.#########.###.#.#.#####.#.#.#.#############.#.#####.#.###.#
#.............#.#...#...#.....#.#...#...#.....#...#...#.#.#.....#.#.#...###.....#.........#...#.#.#.#.....#.#...#...#...#...#...#.....#...#.#
#############.#.#.#.#.#.#####.#.#.#.###.#########.#.###.#.#######.#.#.#####.###.#########.###.#.#.#.#.#####.#####.#.#.#.#.#.#####.#######.#.#
#.............#.#.#.#.#.#.....#...#.###.........#...#...#.....#...#.#.#...#.#...#.......#.#...#.#...#.#...#.#.....#...#...#.#.....#.....#.#.#
#.#############.#.#.#.#.#.#########.###########.#####.#######.#.###.#.#.#.#.#.###.#####.#.#.###.#####.#.#.#.#.#############.#.#####.###.#.#.#
#.............#...#.#.#.#.......#...#...#...###.....#...#.....#.#...#.#.#.#.#...#.#...#...#.###.....#...#...#.........#...#...#...#...#...#.#
#############.#####.#.#.#######.#.###.#.#.#.#######.###.#.#####.#.###.#.#.#.###.#.#.#.#####.#######.#################.#.#.#####.#.###.#####.#
#.........###.....#.#.#...#.....#.#...#...#.....###...#.#.....#.#...#.#.#...#S..#...#.....#.#...###.....#.............#.#.......#...#...#...#
#.#######.#######.#.#.###.#.#####.#.###########.#####.#.#####.#.###.#.#.#################.#.#.#.#######.#.#############.###########.###.#.###
#.#.....#...#.....#.#...#.#.....#.#.......#.....#...#.#...###.#.###.#.#.#######...#.......#.#.#.....#...#.....#...#...#.#...........#...#...#
#.#.###.###.#.#####.###.#.#####.#.#######.#.#####.#.#.###.###.#.###.#.#.#######.#.#.#######.#.#####.#.#######.#.#.#.#.#.#.###########.#####.#
#.#.###.#...#.....#.###.#.#.....#.#...#...#.#...#.#.#.#...#...#.#...#...###...#.#.#...#...#.#.#.....#...#.....#.#.#.#.#.#.....#.....#...#...#
#.#.###.#.#######.#.###.#.#.#####.#.#.#.###.#.#.#.#.#.#.###.###.#.#########.#.#.#.###.#.#.#.#.#.#######.#.#####.#.#.#.#.#####.#.###.###.#.###
#...#...#...#.....#.#...#.#.....#.#.#.#.#...#.#.#.#.#.#.###...#.#.#########.#.#.#.###...#.#.#.#.#...###.#.......#...#...#...#.#.#...#...#...#
#####.#####.#.#####.#.###.#####.#.#.#.#.#.###.#.#.#.#.#.#####.#.#.#########.#.#.#.#######.#.#.#.#.#.###.#################.#.#.#.#.###.#####.#
#...#.....#.#.....#.#...#.#.....#...#...#...#.#.#.#...#.#...#.#...#####.....#.#.#.#.....#.#.#.#...#...#.#.....#.....#.....#...#.#.....#.....#
#.#.#####.#.#####.#.###.#.#.###############.#.#.#.#####.#.#.#.#########.#####.#.#.#.###.#.#.#.#######.#.#.###.#.###.#.#########.#######.#####
#.#.#...#.#.#.....#.....#...#...........#...#.#.#...###.#.#.#.......###...###...#.#...#.#.#...#.......#.#...#.#.#...#.......###.#.......#...#
#.#.#.#.#.#.#.###############.#########.#.###.#.###.###.#.#.#######.#####.#######.###.#.#.#####.#######.###.#.#.#.#########.###.#.#######.#.#
#.#...#...#...#...#.....#.....#...#.....#.#...#.#...#...#.#.#.......#####.....###...#.#.#.....#.........#...#...#...........#...#.........#.#
#.#############.#.#.###.#.#####.#.#.#####.#.###.#.###.###.#.#.###############.#####.#.#.#####.###########.###################.#############.#
#...#.......#...#...###.#.#.....#...#...#.#.###.#.#...#...#.#.......#####.....#...#.#.#.#...#.....#.......#...#...###...#...#.#.....#.......#
###.#.#####.#.#########.#.#.#########.#.#.#.###.#.#.###.###.#######.#####.#####.#.#.#.#.#.#.#####.#.#######.#.#.#.###.#.#.#.#.#.###.#.#######
###...#.....#.###.......#.#.....#...#.#.#...#...#.#...#...#.#.....#.#####...#...#...#.#.#.#.#.....#...#...#.#.#.#.#...#...#...#...#.#.......#
#######.#####.###.#######.#####.#.#.#.#.#####.###.###.###.#.#.###.#.#######.#.#######.#.#.#.#.#######.#.#.#.#.#.#.#.#############.#.#######.#
###.....#...#.#...#.......#...#.#.#...#.....#.#...###...#.#.#.#...#...###...#.....#...#.#.#...###...#...#.#.#...#.#.#.............#.........#
###.#####.#.#.#.###.#######.#.#.#.#########.#.#.#######.#.#.#.#.#####.###.#######.#.###.#.#######.#.#####.#.#####.#.#.#######################
#...#.....#...#.....#...#...#...#.#.........#.#.###.....#.#.#.#...#...###.###.....#.#...#...#.....#.......#.#.....#.#.#.........#...........#
#.###.###############.#.#.#######.#.#########.#.###.#####.#.#.###.#.#####.###.#####.#.#####.#.#############.#.#####.#.#.#######.#.#########.#
#.#...###...#.........#.#.....#...#.....#...#.#...#.....#.#.#.###.#...#E#...#.....#.#.....#.#...............#.......#...#.......#.#.........#
#.#.#####.#.#.#########.#####.#.#######.#.#.#.###.#####.#.#.#.###.###.#.###.#####.#.#####.#.#############################.#######.#.#########
#...#.....#...#.......#.......#.#.......#.#.#.....#.....#.#.#.#...#...#.#...###...#.#.....#.#.................#...#.....#.........#.........#
#####.#########.#####.#########.#.#######.#.#######.#####.#.#.#.###.###.#.#####.###.#.#####.#.###############.#.#.#.###.###################.#
#...#...........#...#...#...#...#.........#.....###.....#.#.#.#...#...#...###...#...#.....#.#.#...#.........#.#.#.#...#...#.....#...........#
#.#.#############.#.###.#.#.#.#################.#######.#.#.#.###.###.#######.###.#######.#.#.#.#.#.#######.#.#.#.###.###.#.###.#.###########
#.#.....#.........#...#...#...#.........#.....#...#...#.#.#.#...#...#...###...#...#.......#.#.#.#...#...#...#...#.#...###...#...#...........#
#.#####.#.###########.#########.#######.#.###.###.#.#.#.#.#.###.###.###.###.###.###.#######.#.#.#####.#.#.#######.#.#########.#############.#
#.....#.#.........#...#...#...#.......#.#.###...#...#.#.#.#.#...###.#...#...#...#...#.....#.#.#.#.....#...#...###...#...#.....#...#...#.....#
#####.#.#########.#.###.#.#.#.#######.#.#.#####.#####.#.#.#.#.#####.#.###.###.###.###.###.#.#.#.#.#########.#.#######.#.#.#####.#.#.#.#.#####
#.....#...#...#...#.....#...#.###.....#...#...#...#...#.#.#.#.....#...###...#...#.#...###...#...#...........#.......#.#.#.#...#.#...#.#.....#
#.#######.#.#.#.#############.###.#########.#.###.#.###.#.#.#####.#########.###.#.#.###############################.#.#.#.#.#.#.#####.#####.#
#...#...#...#...#...#...#...#...#...#...#...#...#...###...#.#.....#...#...#.....#.#.#...###...#.....#...#.........#...#.#...#.#...###.#...#.#
###.#.#.#########.#.#.#.#.#.###.###.#.#.#.#####.###########.#.#####.#.#.#.#######.#.#.#.###.#.#.###.#.#.#.#######.#####.#####.###.###.#.#.#.#
###...#.......#...#...#.#.#...#...#...#.#.#.....#...#...###.#.....#.#...#.#.....#...#.#.#...#.#...#...#...###...#.......###...#...#...#.#...#
#############.#.#######.#.###.###.#####.#.#.#####.#.#.#.###.#####.#.#####.#.###.#####.#.#.###.###.###########.#.###########.###.###.###.#####
#...#...#.....#.###...#...###...#.....#...#.......#...#...#.#...#.#.#.....#.#...#...#.#.#...#...#.............#...#.......#.....#...#...#...#
#.#.#.#.#.#####.###.#.#########.#####.###################.#.#.#.#.#.#.#####.#.###.#.#.#.###.###.#################.#.#####.#######.###.###.#.#
#.#...#...#...#...#.#...#.....#.....#...#...#.....#.......#...#...#.#...#...#.#...#...#.....#...#...........#...#...#.....###...#.....###.#.#
#.#########.#.###.#.###.#.###.#####.###.#.#.#.###.#.###############.###.#.###.#.#############.###.#########.#.#.#####.#######.#.#########.#.#
#.....#...#.#...#.#...#.#...#.#...#...#.#.#.#...#...#.........###...#...#...#...#...........#.###.#.......#...#.......#...#...#.....#...#.#.#
#####.#.#.#.###.#.###.#.###.#.#.#.###.#.#.#.###.#####.#######.###.###.#####.#####.#########.#.###.#.#####.#############.#.#.#######.#.#.#.#.#
#.....#.#...###...###.#.....#...#.....#.#.#...#.###...#.....#.....#...#.....#.....#.......#.#...#.#.#.....#...#...###...#...#.......#.#...#.#
#.#####.#############.#################.#.###.#.###.###.###.#######.###.#####.#####.#####.#.###.#.#.#.#####.#.#.#.###.#######.#######.#####.#
#.....#.#...........#.......#...#...###...###.#.....#...#...#...#...###.......#...#...#...#...#.#...#.......#...#.....#.......###.....#.....#
#####.#.#.#########.#######.#.#.#.#.#########.#######.###.###.#.#.#############.#.###.#.#####.#.#######################.#########.#####.#####
#.....#.#.........#.........#.#.#.#.........#.....#...###.....#...#.........#...#.....#.......#.#...#...................#...#...#.....#.....#
#.#####.#########.###########.#.#.#########.#####.#.###############.#######.#.#################.#.#.#.###################.#.#.#.#####.#####.#
#.......#.........#.........#.#...#...#...#.....#.#.#.............#.......#.#.......#.....#...#...#...#...#...#...#...###.#.#.#.#...#.#.....#
#########.#########.#######.#.#####.#.#.#.#####.#.#.#.###########.#######.#.#######.#.###.#.#.#########.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.#####
###.......#...#...#.#.......#.#.....#...#.#...#.#...#.#.......#...#...#...#.........#.#...#.#.....#.....#...#...#...#.....#...#...#...#.....#
###.#######.#.#.#.#.#.#######.#.#########.#.#.#.#####.#.#####.#.###.#.#.#############.#.###.#####.#.#######################################.#
#...#.......#...#...#.........#.........#...#...#.....#.....#.#.#...#.#.........#...#.#...#...#...#.#.......#.....#.......#...#...#...#...#.#
#.###.#################################.#########.#########.#.#.#.###.#########.#.#.#.###.###.#.###.#.#####.#.###.#.#####.#.#.#.#.#.#.#.#.#.#
#.....#...#...#...#...#...#...#...#.....#.......#...#.......#...#.#...#.....###...#...###...#.#...#.#.#...#...###...#...#...#.#.#.#.#.#.#...#
#######.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#####.#####.###.#.###########.#.###.###.###############.#.###.#.#.#.#.###########.#.#####.#.#.#.#.#.#####
#.......#...#.#.#.#.#...#.#.#...#...#...#.#.....#...#.###.....#...#...#...#.#...#...#...###.#...#.#.#...#.#...........#.....#...#.#.#...#...#
#.###########.#.#.#.#####.#.#########.#.#.#.#####.###.###.###.#.#####.###.#.#.#.#.#.#.#.###.###.#.#.#####.#.###############.#####.#.#####.#.#
#...........#.#.#.#.....#.#.........#.#...#...#...#...#...#...#.....#.#...#.#.#...#.#.#.#...#...#...#.....#.#.......#.....#.....#...#...#.#.#
###########.#.#.#.#####.#.#########.#.#######.#.###.###.###.#######.#.#.###.#.#####.#.#.#.###.#######.#####.#.#####.#.###.#####.#####.#.#.#.#
#.....#...#.#.#.#.#...#.#.....#...#...#.......#...#.###.#...#.......#.#...#.#.....#...#.#...#.#.....#.......#.....#...###.......#.....#...#.#
#.###.#.#.#.#.#.#.#.#.#.#####.#.#.#####.#########.#.###.#.###.#######.###.#.#####.#####.###.#.#.###.#############.###############.#########.#
#...#.#.#...#...#...#...#...#...#.....#...#...#...#...#.#.###.......#.#...#.###...#.....###...#...#.............#...#...#.....#...#.........#
###.#.#.#################.#.#########.###.#.#.#.#####.#.#.#########.#.#.###.###.###.#############.#############.###.#.#.#.###.#.###.#########
#...#.#.........#.....#...#.#.......#...#...#.#.#.....#.#.#...#.....#.#...#.....#...#.....###...#.....#.......#...#...#...#...#.#...#.......#
#.###.#########.#.###.#.###.#.#####.###.#####.#.#.#####.#.#.#.#.#####.###.#######.###.###.###.#.#####.#.#####.###.#########.###.#.###.#####.#
#...#.#.........#.#...#...#...#...#...#.......#.#.###...#.#.#.#.....#.###.......#...#...#...#.#.......#.#.....###...........#...#.....#...#.#
###.#.#.#########.#.#####.#####.#.###.#########.#.###.###.#.#.#####.#.#########.###.###.###.#.#########.#.###################.#########.#.#.#
#...#...#...#...#.#...#...###...#.....###...###.#...#...#.#.#.###...#.#...#...#...#...#.#...#.........#.#.#...###...###.......#.....#...#...#
#.#######.#.#.#.#.###.#.#####.###########.#.###.###.###.#.#.#.###.###.#.#.#.#.###.###.#.#.###########.#.#.#.#.###.#.###.#######.###.#.#######
#.......#.#.#.#.#.#...#.#...#...........#.#...#...#...#.#.#.#...#...#...#...#.###...#...#.#.....#...#...#...#...#.#.#...#.......###.#.......#
#######.#.#.#.#.#.#.###.#.#.###########.#.###.###.###.#.#.#.###.###.#########.#####.#####.#.###.#.#.###########.#.#.#.###.#########.#######.#
#.......#.#...#.#.#.....#.#.###.......#.#...#.#...#...#.#.#...#...#.#.........#.....#.....#...#.#.#...#.........#.#.#.#...#...#...#.#...#...#
#.#######.#####.#.#######.#.###.#####.#.###.#.#.###.###.#.###.###.#.#.#########.#####.#######.#.#.###.#.#########.#.#.#.###.#.#.#.#.#.#.#.###
#...#...#.....#...###.....#.....#...#...###.#.#...#.###.#.###...#.#.#.#...#...#.....#.#...###.#.#...#.#.....###...#...#.....#...#.#.#.#.#...#
###.#.#.#####.#######.###########.#.#######.#.###.#.###.#.#####.#.#.#.#.#.#.#.#####.#.#.#.###.#.###.#.#####.###.#################.#.#.#.###.#
#...#.#...#...#.......#...........#.#...#...#.#...#.#...#.#...#.#...#...#.#.#.#...#.#.#.#...#.#.#...#.#...#...#.#.................#...#.#...#
#.###.###.#.###.#######.###########.#.#.#.###.#.###.#.###.#.#.#.#########.#.#.#.#.#.#.#.###.#.#.#.###.#.#.###.#.#.#####################.#.###
#...#...#...###.....#...#...........#.#.#...#.#.###.#...#...#.#.......#...#.#.#.#.#.#...###...#.#.###.#.#...#...#.###.................#.#...#
###.###.###########.#.###.###########.#.###.#.#.###.###.#####.#######.#.###.#.#.#.#.###########.#.###.#.###.#####.###.###############.#.###.#
###...#.#...........#.#...#...#.....#.#...#.#.#.#...#...###...#...#...#...#.#...#.#.....#.......#...#.#.#...#...#.....#...#...........#...#.#
#####.#.#.###########.#.###.#.#.###.#.###.#.#.#.#.###.#####.###.#.#.#####.#.#####.#####.#.#########.#.#.#.###.#.#######.#.#.#############.#.#
#.....#.#.....#.......#.....#.#.#...#.###.#.#.#.#...#.....#.#...#.#.....#.#...#...#.....#...#...#...#...#...#.#.....#...#.#...###...#...#...#
#.#####.#####.#.#############.#.#.###.###.#.#.#.###.#####.#.#.###.#####.#.###.#.###.#######.#.#.#.#########.#.#####.#.###.###.###.#.#.#.#####
#...#...#.....#...#...........#.#.#...#...#.#...#...#...#.#.#.###.....#.#.#...#...#.......#.#.#.#...#.......#.....#...###...#.....#...#.....#
###.#.###.#######.#.###########.#.#.###.###.#####.###.#.#.#.#.#######.#.#.#.#####.#######.#.#.#.###.#.###########.#########.###############.#
#...#...#.#.......#.........#...#.#...#...#...#...#...#.#.#.#.#.......#.#...#.....#.......#...#.....#.....#.....#.....#.....#...#...........#
#.#####.#.#.###############.#.###.###.###.###.#.###.###.#.#.#.#.#######.#####.#####.#####################.#.###.#####.#.#####.#.#.###########
#...#...#.#.#...............#.#...#...#...#...#...#...#...#.#.#...#...#...###.#...#.....#.......#.........#.#...#...#.#.....#.#.#.........###
###.#.###.#.#.###############.#.###.###.###.#####.###.#####.#.###.#.#.###.###.#.#.#####.#.#####.#.#########.#.###.#.#.#####.#.#.#########.###
#...#.#...#.#.....#.........#.#...#...#...#...###...#.#...#...#...#.#...#...#.#.#.#.....#.#.....#.........#.#...#.#...#...#...#.#...#...#...#
#.###.#.###.#####.#.#######.#.###.###.###.###.#####.#.#.#.#####.###.###.###.#.#.#.#.#####.#.#############.#.###.#.#####.#.#####.#.#.#.#.###.#
#...#.#.#...#.....#.###.....#.#...#...###...#.....#.#...#.....#.#...#...#...#.#.#.#.......#.....#.........#...#.#.......#...#...#.#.#.#...#.#
###.#.#.#.###.#####.###.#####.#.###.#######.#####.#.#########.#.#.###.###.###.#.#.#############.#.###########.#.###########.#.###.#.#.###.#.#
###.#.#.#...#.....#.#...#...#.#...#.#.......#...#.#...#.....#.#...###...#.###...#...#.....#.....#.#...#.....#.#.#.....#.....#.....#.#...#.#.#
###.#.#.###.#####.#.#.###.#.#.###.#.#.#######.#.#.###.#.###.#.#########.#.#########.#.###.#.#####.#.#.#.###.#.#.#.###.#.###########.###.#.#.#
#...#.#.....#...#.#.#.....#...###...#.#...#...#...###.#...#.#.#.........#...#.......#.###.#.....#...#.#.###...#.#...#.#...........#...#.#.#.#
#.###.#######.#.#.#.#################.#.#.#.#########.###.#.#.#.###########.#.#######.###.#####.#####.#.#######.###.#.###########.###.#.#.#.#
#...#.#.......#...#.#.................#.#.#.#.....#...#...#...#...#.....#...#...#.....#...#...#.###...#...#.....#...#.#...........###.#.#.#.#
###.#.#.###########.#.#################.#.#.#.###.#.###.#########.#.###.#.#####.#.#####.###.#.#.###.#####.#.#####.###.#.#############.#.#.#.#
###.#.#...#...#...#.#.........#...#...#.#...#...#.#...#.....#...#...#...#.....#.#.###...#...#.#...#.....#.#.#...#.###...#...###.....#...#...#
###.#.###.#.#.#.#.#.#########.#.#.#.#.#.#######.#.###.#####.#.#.#####.#######.#.#.###.###.###.###.#####.#.#.#.#.#.#######.#.###.###.#########
#...#.###...#...#...#.........#.#.#.#.#.....#...#.....#...#...#.....#...#...#.#.#.#...#...###...#.#.....#.#...#.#.........#.....#...#...#...#
#.###.###############.#########.#.#.#.#####.#.#########.#.#########.###.#.#.#.#.#.#.###.#######.#.#.#####.#####.#################.###.#.#.#.#
#.....#...#...........#.......#.#.#.#...#...#...#...#...#.#.........#...#.#.#.#...#...#.###...#...#.#.....#.....#...#...........#.....#...#.#
#######.#.#.###########.#####.#.#.#.###.#.#####.#.#.#.###.#.#########.###.#.#.#######.#.###.#.#####.#.#####.#####.#.#.#########.###########.#
#.....#.#.#...#...#...#.###...#.#.#.#...#.#.....#.#.#...#.#.....#...#.....#.#.#.......#.....#.#.....#.....#...#...#.#.........#...#.........#
#.###.#.#.###.#.#.#.#.#.###.###.#.#.#.###.#.#####.#.###.#.#####.#.#.#######.#.#.#############.#.#########.###.#.###.#########.###.#.#########
#...#...#.....#.#.#.#.#.#...#...#.#.#...#.#.#...#.#.#...#.#...#...#.......#.#.#...#...#...#...#...#...#...#...#.#...#...#...#...#.#.........#
###.###########.#.#.#.#.#.###.###.#.###.#.#.#.#.#.#.#.###.#.#.###########.#.#.###.#.#.#.#.#.#####.#.#.#.###.###.#.###.#.#.#.###.#.#########.#
###.............#...#...#.....###...###...#...#...#...###...#.............#...###...#...#...#####...#...###.....#.....#...#.....#...........#
#############################################################################################################################################

View File

@@ -1,5 +0,0 @@
029A
980A
179A
456A
379A

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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(156-<%mul(862,26)select()mul(679,658);+mul(492,253)/;?$&}#mul(761&'[/*?mul(31,877)^where()mul(366,701)#mul(519,128)what()select():when()* mul](mul(46,247);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

View File

@@ -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
@..@@.@@.@@@@@....@.@@.....@@@@.@.@@@@@.@.@.@@@@@@@@...@@..@..@@.@@@..@.@@@@.@@@@.@..@@....@.@.@.@@@...@@@.@@...@@..@@@..@@.@@.@..@.@@@.
@@@..@@@.@@@@@@@@@@..@@.@@@.@@@@@@@@@..@.@@@@....@.@.@@@@.@@@@.@@.@@.@@@.@.@@@.@@...@@@@.@@@@@@@@@@@.@@@@@@@@@@.@@@@@@@.@@@@..@@@@@...@.
@.@@@@..@@@@@....@@@@@@..@@@.@..@.@.@@@.@@..@.@.@@@.@@.@@@@@@@.@@@..@@@@@..@.@@.@@.@.@.@@.@.@@.@@@@@@@@.@@@@@@.@.@@.@@.@@@@..@.@@@@@...@
@@@@@@@.@.@@@.@.@@@.@.@@@.@@.@@...@@@@@.@.@.@@@.....@@.@@@@.@@@.@.@.@@@@@@.@@@@@.@@@@.@..@@.@@@@@.@@.@@@@.@.@@@@@@@.@@@@.@@@@@@.@.@@@.@.
@.@@@@.@@@.@@@..@...@@@@..@..@..@@@@....@@@@.@@@@@@@.@.@@@.@@@@..@@@@..@@...@.@@@@@@@@@@@@@@@.....@@...@@@.@.@@...@@@..@@.@@@@@@@@..@@..
@@@@.@..@@@@..@@...@.@..@@@.@@..@@@@@...@@@.@@@.@....@.@.@.@@..@@..@..@@.@@@...@@@...@@@@....@@@..@..@....@@......@@..@@..@@@@@@..@@.@@.
.@@@@.@@@@.@@.@@@.@.@@@@@@.@..@@..@@@@.@@.@@..@.@@.@..@@@@@@.@@.@@@..@.@@....@@@@@.@@..@..@.@@@@.@....@@@.@....@.@@@@@@@@@@.@.@@@@...@@@
@.@@...@.@@@.@.@.@@.@@@@@..@.@@@@@.@@.@@@.@..@@@@..@.@@@..@@@@.@@.@.@@.@@.@@.@.@.@@@@@@@@@.@@@@.@@@@@@.@...@..@..@@.@@.@@@@@@@@@.@.@..@@
@..@.@.@@.@@@@@@@@@@@@..@@..@@.@@@..@@@.@..@@...@.@.@@.@@..@..@@@@.@@@.@@@@.@..@.@..@@@@@@.@.@@.@@@@.@..@@@@@.@@@..@@....@@@.@@.@.@@@...
@@.@@@@.@..@@.@.@.@@.@@@..@@..@@@@@..@@.@.@@@@@..@..@.....@...@@@@@@@@@@..@@@@@@@@.@@@.@..@@@@@@@.@@......@@@...@...@...@@@.@.@.@@@@@@@@
@@@@@....@@@@@.@@.@@@@@@..@.@.@...@@@@@.@.@@@@........@.@.@@@@.@..@@@@..@@@@.@@.@@@.@...@@@@@@..@@@@@@.@@@@@@.@.@..@@@@...@@.@@...@..@.@
.@@@@@@@@@.@..@@@..@@@@@@@@.....@..@@@@@@.@...@.@@@@@.@.@@@.@.@@@@.@.@.@.@..@.@@@.@@@@..@.@..@@@@@@@@@@@@..@@@.@.@@@@@@@@@.@..@.@.@@@@@@
@@@@@@@@...@@.@@.@@@@..@@@.@@@@@@@@@@.@@@..@@@.@@@..@@..@..@@@@.@.@.@@@@.@@....@@@@.@.@.@@@@@@.@@@@..@@@.@@@.@@@..@@@@.....@@.@..@.@@.@@
@.@.@@@@....@....@@@@@@@.@@@.@.@@@@@.@.@..@@@.@@@@@.@@@@..@@.....@@@@.@@.@@@..@.@@...@@@.@@.@@@@.@.@@@.@@...@@@.@@@..@..@@@..@@.@@..@@@.
@.@@@@@@...@.@@@@@@@..@..@@.@@.@.@..@@.@.@@..@.@@@.@@@@@@.@@@@.@...@@@@@.@@@.@.@@@@..@@@..@@.@@@.@@.@@@..@@@.@.@@@@@@@..@@.@@.@@@.@.@@..
@@....@@@..@@@@@.@@.@@@@@.@.@@.@@@@@@@@@.@@@@@@..@@@@.@@.@.@@...@@..@.@@@@@@@@@@@@@@@@..@@@@@@...@@@@@@@@@..@@@@@@@@@..@@@@.@@.@.@.@@@@.
..@.@@@@.@@@@.@..@@@@...@@.@@...@@..@@@@@@.@@....@@..@@@@@@.@@@@@..@..@@@.@@....@@.@@@..@.@..@.@.@@@@.@@@@@.@@...@@@@.@@..@@@@@@.@@@.@..
@.@...@@@@.....@@@@..@@.@@@@@@@.@...@@@.@@@@@@.@.@@@@.@@@...@.@@@@@@@..@@@@@@.@@@@@@@.@.@@...@@@@@.@..@@@@@..@@@.@@@@...@@@@@.@.@.@...@@
.@@@@@..@@@@@@@.@@@.@.@.@.@@@....@@@@@@.@@@@@.@..@.@@@@.@@..@@@@@.@@@@..@.@@@@@@.@@@@@@....@@@@.@@@@@@@@@..@.@..@@@@.@@@@@@...@@@@..@@@@
@@.@@@@@.@@.@@@@@@.@@@.@.@@..@@@@.@@.@@@.....@.@@.@@@@@@.@@@...@@@@@.@@@.@@..@@@@@@@@@@@@@.@@.@....@@@.@.@@@@@@@@.@.@.@@.@@@@.@@@@..@@..
@.@@@..@@.@.@.@@@@@..@@@@.@....@.@@@.@@@.@@.@.@@.@@.@@.@@..@@@.@@@@..@@@.@@.@@@@@@@@@@.@.@..@@@@@@.@@@@@@@.@..@.@@@.@@.@@.@..@.@@@.@.@@@
@@.@.@@@@@@.@....@@@@@@@.@@.@@@@@@@@@@.@@.@.@@@..@@@@@@..@@..@.@.@@@@..@@@.@@..@@@@@@@@@...@@.@@@@@.@@@@@..@..@@.....@@.@@@@..@@@.@@@..@
@@@@.@.@@.@@@@@@@@@..@.@@@@..@.@@..@@@@@@@.@@.@..@@@@@...@@@@@@@@@.@.@.@@@@@.@@...@@.@.....@@@.@@@@@.@.@@.@@.@.@@@..@.@..@@@@.@@@...@@@@
@@@...@.@@@.@@@.@@@@@@....@@.@@.@.@@@@.@@@@@.@@@@.@.@.@@.@@....@.@@@@..@@......@@.@@@@@@@@@@..@@.@@.@@@@.@@@.@@@..@.@.@..@@..@.@@@..@..@
@.@@@@@@.@@@.@@..@.@@@@@.@@@@@...@..@..@@@@@.@..@@@.@..@@@@.@@.@@@@@@.@@.@@@.@@.@.@..@...@@@@@.@@@@@@@@@...@@.@.@...@...@@...@..@@@.@..@
.@@@..@@....@...@@.@..@....@@@@@@.@.@...@@.@@@.@@@.@.@.@@@...@.@@@.@@@.@@.@@@..@@@..@....@.@@@@.@@@@.@.@.@@..@..@..@@...@.@.....@@@@@@@@
.@@..@@@.@@...@@@@.@@@@@@.@@@@@@@.@@.@@.@@@@@@....@@.@.@.@@@@.@.@.@...@@@@@@.@.@@.@@@.@..@@@@.@@@@@.@..@@.@.@..@.@.@@..@@@@.@.@@@@.@.@.@
@@@.@@@@@@..@..@@.@.@@@..@@@@@@.@@@.@.@@@@@@@@@@@@@@.@.@@@.@@.@@@@@.@.@.@....@.@@@@..@..@@.@@@@@@@@@@@.@@@@...@..@.@@@...@@@.@@@..@..@@@
@@.@@@@@@..@@.@@@@@..@@@@@@@@.@@@@@@@@..@.@@@@.@@@@.@@@@@.@@@@@@@.@@..@@@@@@@@@@@.@@@@...@.@..@.@..@.@..@@@@...@@@@@@.@@@.@@@@@.@.@@@@.@
@.@@@...@@.@@.@@@.@@@.@@...@.@@@@@@..@@.@@@.@@@.@.@@@@@..@@@@@@.@.@.@.@@@@@..@@..@@.@@.@..@.@@.@@@..@...@@@..@@...@@..@@@..@@@@@@@@@@.@@
@..@..@@.....@@..@.@.@@@@@.@@.@@.@@@@@@@@..@..@@.@..@@....@@.@@@..@@@@.@@...@@@@@.@@@.@@..@.@@@.@@@@.@@..@@@@@..@.@...@.@@@@.@.....@@@@@
@.@@@.@@@@@@.@@..@.@@@@@@@..@@.@@.@...@.@@....@@....@.@@@@@@@@.@@@@.@@@@@@@..@@@@.@@@@@.@@.@.@@@.@@@@@.@.@@@@.@...@@.@.@..@..@@@@@@.@..@
.@..@..@.@.@@@@@@.@@@.@@@@@@..@.@.@@@.@@@@@@@@.@@@@.@@@.@@@.@.@@.@..@.@@.@@@@@@@.@...@@@@.@@@@@@@.@.@.@@@.@@@...@@@.@@@@@@@@.@...@.@@@@@
.@@@@.@@@.@.@@@@.@...@@@@@..@@.@.@@@@.@@@@@@@..@.@..@@@@.@@@@@@@.@@..@@@@..@@.@.@.@@@@@@@@@@.@@.@@@@@.@@@@@@.@..@.@...@@@@.@..@@@..@@@.@
@....@..@.@@.@..@...@..@@@.@@@.@..@@....@@@.@@.@@@@@@.@@..@@@.@@...@@@@@.@.@@@..@..@.@@.@@@.@@@.@@@.@@@@@@@@@.@@@@@@@.@@@.@.@.@@@..@@@.@
@@@@@@...@@@@@..@@.@@@@@@@.@@.@@@@.@@@@@@@@@@....@@@@@@@.@@@.@@.....@@@.@@@@..@..@@@@..@@..@@@@.@.@@..@.@@.@..@...@@@@@@.@.@..@@.@@..@.@
@@@@@@@.@@@@@@@@@..@@.@.@.@@@.@@@@@.@@@.@@@.@.@@@.@..@.@@@.@.@...@@@@@.@@@.@@..@..@.@@@@@.@@@@@.@.@@.@@...@.@@@@@....@@@..@.@.@@.@@.@@@@
@@@@....@.@@@@.@@..@@@@@..@@.@@@.@@@...@@@.@@@@@....@@@@.@@..@.@.@.@.@@.@...@@@@@@@.@..@...@@...@@@@@@..@.@@@.@.@@....@@@.@@@@@@.@.@@.@@
....@.@@@..@.@@@..@@@@@..@...@.@@@.@@@@@@@..@@@@.@.@...@@@..@@@@..@@..@.@.@@@.@.@@..@.@..@@.@@.@@.@.@.@.@..@@@@@@.@@@@.@.@@@@@..@@@@@@.@
..@.@@@..@...@@...@..@@.@.@@@@.@@.@@..@.@@@@..@@...@@@.@@.@.@@@@@@@.@@.@@.@@..@.@@@@.@@.@@@@..@@@..@@@@@@@...@@..@@@@..@@.@@@.@@@..@@.@.
@@@@@.@.@@.....@@@.@@@@@@@.@@@@@.....@@.@@@.@@.@..@@@@@@@@.@@@.@@.@@.@@@.@@@@@@@@.@.@@.@@@.@@@.@@.@.@@.@@@@.@@..@@@@@@@..@@@.@@@@@.@@@.@
..@.@@@@@.@.@@.@@@@.@@@@@@.@.@...@....@@@@@..@..@@@@.@.@@@.@.@....@@.@@@@@...@@..@@.@@@@.@@@..@.@@@@@@@.@.@.@@@..@@@.@@..@....@..@@@@...
@.@.@@@@.@@..@@.@.@@.@@@@..@@@.@@@.@@@@@@.@@@@@@@.@@.@@@@.@@.@.@.@@@@@..@@@@.@@.@.@@@@...@@@.@.@@.@@@@@@@.@.@@@.@@@@.@@@......@.@@@@.@@@
@..@@@.@@@..@@@..@@@@@@@.@@@@@@.@.@@@@@@.@.@@.@.@...@....@..@@@@@@@@@.@...@@@....@@@@@@@@.@..@@@.@.@.@@.@.@.@@@.@@@@@..@@@.....@.@@.@...
@.@.@.@..@@@..@@....@@..@.@@.@.@@@@.@@@@@.@@.@@.@@@@@@.@.@.@@.@..@.@.@@@@.@@.@.@.@@@@.@.@@..@@@@@..@@@.@....@@.@.@@@@.@...@@@..@@@@.@@..
@.@.@@@.@..@@@@.@.@@..@.@@@@@.@@....@.@@..@..@..@@@@@@.@@.@@@.@..@@@@@@..@.@@.@.@@.@@.@@.@@.@@.@@@@@@@@@@@.@.@@@@@..@@@@@@@.@....@@@...@
@@.@@@@..@@@@@@..@.@@@@@@@@..@..@@@.@.@@@@@..@@@@@.@..@@@@@@@..@.@@@@@@@@...@.@.@@@@..@@@@@@.@@..@@.@@@@@@@.@@@@@..@.@@.@@.@@.@@..@.@.@@
.@@@...@@@@@@@@..@.@@@@@...@.@@@@@@@@@@@.@@@@@@@.@.@@@@@@.@@@@.@@.@@@.@@@@.@@@@@@@@@@@@.@@@@@@@.@@.@.@.@@.@@@@.@.@.@@@@.@@@@@..@@@...@..
@@..@@@@.@@.@@@@@.@.@@.@.@@.@@@@..@@@.@.@.@@@@@@@@@..@@@@@.@@@@.@.@..@@.@@@..@.@.@@@...@@@.@.@..@@@..@@@.@..@@@.@@@@.@@.@@.@@..@.@@@@@@.
.@.@@..@.@@@.@...@@.@@@@@@@@@@@.@@@@@.@@@@@@@@..@@.@.@@@.@@.@.....@@...@@@@@@@.@@@@.@.@@..@@.@@@.@@@@.@@@.@@.@@.@@..@..@.@@.@@@@@.@@@@@.
@@@@.@@@@.@@..@@....@@@@..@.@@.@.@..@.@@@@@..@@@.@@..@.@.@...@....@.@..@@.@..@@.@@@@@@@@.@.@.@.@@@.@@..@@@.@.@@@...@@@@@.@@@@.@..@@@@@@.
...@.@@@@@@@@@@@@@.@@@@@@.@@@@@@@@@@@.@@@@.@.....@@@..@.@@.@@.@@@.@@@@@.@@.@@@.@@...@.@@..@.@@.@@@@@.@@@@@.@@@@.@@@.@@.@@.@@.@..@.@@.@@@
@@...@@@@..@.@..@..@@.@@@.@@.@.@..@@@.@@.@@.@...@.@.@@@..@@@.@@@@.@@.@..@@@.@@@.@@..@@@@@.@@@.@.....@@@@.@@@..@.@@@@@.@.@@@...@@@@@..@..
..@@.@..@@@@...@..@@@.......@@@.@@.@@@.@@@.@@@@.@.@...@@@.@@@@...@@...@@.@@.@@@@@@@@@@.@@@@@...@...@@@@@.@..@.@@@.@@@@@@.@@...@@@..@.@@.
@@@@@...@@.@@.@@.....@@@@...@...@@@@.@@@@@.@@@@.@@@@.@@.@@@..@@@@@@@@.@@@.@@@@..@.@@@@@.@.@.@@..@@.@@@.@@.@@@@@@.....@.@.@.@@...@.@@@@@.
@@..@@@@@@@.@@.@@...@@@@..@@.@.@.@.@@@.@.@...@@..@@@@@@@.@...@@@.@@@@@.@@.@.@@@@.@.@.@.@@.@@@@@@@@@@@.@.@@..@..@...@@..@.@.@.@@@.@@@@@..
.@.@..@@@@@@@@.@..@@@.@@@@..@.@@..@@@@.@@@@...@@..@..@.@@@@...@.@@@@.@..@@.@..@.@@@@@.@@@@.@.@@@@@.@....@.@@@.@@@.@@@@...@.@@@..@....@@@
.@@@@@..@...@@@@@@@@@@@@@@@.@@..@@@..@@@@....@.@@@.@..@@..@@....@@@@...@@@.@.@@@@.@.@@.@....@..@@..@@@.@..@@..@@.@..@@.@.@..@.@@...@@.@@
@@@@@.@@@@.@..@.@@.@@@@@@.@@@@@@@@@@.@@@@.@@@...@@@.@@@@@..@@.@@@..@@@.@@.@@.@@.@@@..@@@@.@@.@@@@.@@@@.@@.@@@.@..@@..@@@..@@@.@..@@@@@@.
......@@@@@@@@@@.@@@@@@@.@@@@@@..@.@.@@@@@@@@@@@@..@@@@.@@@@@@@@@@@@@.@@@@@@@@@@@@.@@@@@.@@....@@..@.@.@..@@...@@.@@@@@@@@@@@@.@...@@@@.
@@@.@.@.@..@@@@.@....@@@.@@@@.@..@@@..@@@@....@@.@@.@@@@.@@@@.@@.@@@@@@@@@.@.@@.@.@.@..@@@..@@@.@..@..@..@.@@@@.@@@@@@...@.@@@@@.@@@.@@@
.@@.@@@@..@.@..@@@.@@@.@...@@@.@@@@.@.@@@@@@.@@@..@@.....@@@@..@.@.@@@@...@@@@@@@...@@@..@@..@@@@@@@@.@@...@@..@@@.@.@@@.@@@.@@@.@..@@@@
@@...@@@@@.@@..@@@..@@@@@.@..@@@@@@.@.@..@.@@@@.@@@@..@@...@..@@@.@@@.@.....@@@@@@@.@...@.@..@.@@...@..@@..@@@.@.@@@.@@@...@@@@.@@.@@.@@
@@@@@.....@.@@.@@@@.@@@@.@@@@@..@@.....@..@@.@@@@.@@@@..@@@.@.@@.@.@@..@.@@@.@.@.@..@@...@@.@@@@@@@.@@@..@@.@@@@@@@.@.@@@@..@..@@.@@.@..
.@@@@...@.@@.@@@..@@@@@.@.@@@@.@....@.@.@@@@.@@@.@@..@@..@@@@.@@.@@@..@....@@..@@@.@@@@@.@@@.@.@.@@...@.@...@@.@@@.@..@@@@@.@..@@@..@.@@
..@.@@@.@@.@@@.@@@@@.@@@@@@.@@@@.@@.@@@.@@@.@..@@..@.@@@.@.@.@@@...@@.@@.@.@@@.@@@.@.@@@@@@@@.@..@@@@@.@..@.@@@@@@@..@@..@.@@.@@@..@.@@@
.@.@@.@@@@@.@@.@@.@@@.....@@@@@@....@@@@@@@@@@@@@..@..@.@@@@@@@.@.@..@..@@.@@.@.@@.@@.@@.@.@..@...@@@.@@@.@..@@...@@@@@..@@@.@.@@@.@..@@
@@@@@.@.@@@..@@@.@@.@..@@@.@@@.@..@@@@@@@.@@.@@@@@@.@@@.@..@@.@@.@@..@@@@....@..@@.@@@@@@@@..@@.@@@.@@....@@@.@@.@@.@.@@@@@@.@.@.@@@..@@
...@@@@..@@@@.@@..@@.@...@..@@@@@..@.@@@..@.@.@@..@...@.@@@.@.@.@@@@@.@@.@.@@@@@@..@@..@.@@@.@.@.@.@@@.@@@@.@.@@@@...@.@@...@@@@@.@..@.@
@.@@@.@@..@@..@.@..@.@@@@@...@@@..@@..@@@@@@@@@@....@.@@@@.@@.@@@@@@@@@@@...@@@@.@@@.@.@@@@@@@@@@@@@@.@@....@@@@@.@...@@.@..@.@.@@@..@@.
@@@@.@@.@@@@@.@.@@@@.@@@.@@@@.@@@@@..@.@@.@...@@........@@@.@@@@@@@@@.@@.@@@@.@@.@@@@@@@....@@@@@@.@...@.@@.@@.@@.@.@@..@@@.@@@.@@@@@@@@
@....@.@.@@@@....@@@@@.@.@@.@@@.@@@@.@..@.@.@.@.@.@@@....@@@@@@.@@@@@..@@@@@.@@@@@@..@@@@@@.@@..@.@.@@.@@....@@.@@@@@@..@@@.@.@...@@...@
@@.@@..@..@.@@@@@@@@..@@@@@.@.@@...@@@@@@..@@@.@@@@.@@@@@@...@.@@@.@@.@@.@@.@@@..@..@.@@.@..@@@.@@@@.@@@@@@@.@@@@@@@@.@.@@.@@@@.....@@@.
.....@@@@..@.@@@.@@.@@@.@.@..@@..@@.@@.@@@@@@@.@@@@@.@.@@@@...@..@..@.@@@@.@@@.@@@.@@@@@@@@@.@@@@.@@@@.@@@@..@.@.@.@@@@@@@@..@@@@..@@@..
@@@@@..@@@@.@@@@@@@@..@@@.@...@@@@@@@@@..@..@....@@@@.@.@@@.@.@.@.@.@@@@@@.@@@.@.@@.@@@@@@@.@@@@.@@.@@@.@@@..@@@.@....@......@@@@@@.@.@@
....@.@@@@..@@@@@@@@@..@@@@.@@@.@@.@.@@@@@@@@@.@@@@@@....@.@@@@.@.@@..@.@.@@@@.@..@@@.@.@@..@.@@@@.@@@@@@@@@.@@...@@..@@@@.@.@@.@@.@@@@@
.@@.@@@..@@.@@@@..@.@@@@@@.@.@...@@@@...@@@.@.@..@@@@@.@@@@.@@@.@@@.@@@@@@@..@@@@.@@@.@@@@@@@@@@@@@.@.@@@.@@.....@@.@@@.@@.@@@@@@@.@@.@@
@.@..@@@@@@@@@..@@@...@.@...@@@@.@@@@..@@@@@@@@@.@@@@@@@@.@..@@@...@@@@..@@@@@.@....@@@..@@@@.@@@.@@@@.@@@.@@@@@.@.@@@@@@..@@@@..@@....@
...@..@@@.@.@@@@.@.@@@.@..@.@@..@.@@...@@..@@@@.@...@@.@@..@@@@@@.@...@@@....@@.@@@@.@.@.@@@.@.@.@.@.@@@.@@@@@@..@@@@@...@@...@.@@@.@@@.
.@.@...@@@.@@@...@@..@@@.@@@@@@@@@..@....@@@.@@.@@@..@@@@@.@@@.@.@.@@@.@@.@@.@...@@@@...@@@..@@@@@@@.@.@@.@@@@@@@.@@..@.@.@@@@@.....@@@@
@.@.@@..@.@....@.@@@@.@.@@@.@@@@.@@.@.@..@@.@@@@@@@@.@.@.@..@@@@.@@...@..@@@@.@@@...@.@@..@@..@.@..@..@@@..@@@@.@@@@@..@.@@@@@...@@.@@@@
@@@...@@@.@.@..@...@@@@..@@@@@..@@@@@@.@@@....@@.@.@@.@.@@@.@@@@.@..@@.....@@@@@.@@@@@@.@.@@@@.@.@.@@@@@@@@@@@@@@@@@@@@...@@.@@@.@..@..@
@@@@@@..@@@@@@@@..@@@.@.@@@.@@@@@@@....@@....@@..@..@@@@@@.@.@@.@@.@..@@@....@@.@@@.@.@@.@@..@@@@@@.@.@@..@.@@.@.@@..@@@.@@@@@@.@...@@@.
@.@..@@..@@@.@@@@@.@.@.@@@@.@@@.@.@.@@@@@...@@@.@.@@.@.@@.@@...@.@@..@@@@@..@@@.@@@@@.@.@@@@@@@@@.@@.@@@@@@@@@..@@..@.@@@@@@@@@@....@@@@
.@@.@@..@@@.@@@@@....@@@.@@@@@@.......@@..@.@....@@.@@@@@@..@.@@@.@@@@@.@@.@@@@@....@@.@.@..@@@..@.@...@@.@@@.@@@@..@@.@..@.@@@..@@@@@.@
@@@@.@@@.@@.@@@@@@@@@.@.@..@@@.@..@@.@@..@@@.@@.@@@@....@.@@.@.@@.@.@@@@@@@.@@@@@@@@@...@.@.@@@@@@@.@@..@..@@@.@.@@@@@@@@.@.@@.@@@@.@..@
@@@@.@.@@@@@..@@.@@@@@@@@.@@@.@.@.@@@@@.@@@@@@@@@..@@....@..@@@.@.@.@@@@@@.@@@..@@..@@...@@..@@@.@@...@@.@@@.@@@@@@@.@@.@@@@.@@@.@@.@@.@
@......@..@@@@@.@..@.@@@@.@.@@@.@@@@.@.@@@@@@@.@@..@.@@..@.@.@@.@@@.@.@.@@@.@@.@@@@@@....@@@@..@@@@@@...@@@@@@@..@@@@.@@@.@@.@@..@@.@@.@
@@@@@@@@@@@.@...@@@@@@@@@@@@@@@@@@@@@@@@...@@@@@@@@.@.@.@@@@@@@@@@@@@@@.@@@.@..@.@@@.@.@@@@@@@@.@.....@..@@.@@@@@@@@..@@@..@@@@@@@@@@...
.@@.@@.@@.@@@@@.@@@@@@@@@@@@.@@@@@@@.@@@@..@@@...@@@..@@@.@.@@@@@.@.@@@@@@..@@...@@.@.@@@@@@.@@..@..@..@@@.@@..@.@@@@.@@@.@@@@@@....@.@@
@..@....@.@@.@..@@..@@@@.@..@@@.@..@@@..@.@@@..@..@.@.@@@@.@.@.@@@@@@@@@@@@.@@@@@@.@@@.@@@.@.@..@@@.@@@@.@.@@@......@@.@.@@.@@.@..@@...@
@..@@@@@@@..@@@.@@@@@@.@.@@@@@@@..@@@@@@@..@@@@@@.@@.@@.@@.@.@@@@@@.@..@@@@..@.@.@@@..@.@.@.@..@.@.@@..@@.@.@@@@@@.@.@.@@.@.@.@@@@@.@@@@
.@.@...@@@@.@.@@@@@@@..@@.@..@@.@@.@..@@@@.@@@@@@.@...@.@...@@@@@@.@..@@@@..@.@..@.@.@.@@@..@..@..@.@@..@@@@.@@.@@.@@@@@@@..@.@.@@..@.@.
@@...@@@.@@.@@@@@@@@@.@.@@@@.@@..@.@.@.@@.@.@@@@@@@.@.@@@@@@..@@.@.@.@@@.@@@@@@@@@@.@@@@.@@..@@.@@@@@....@@@@@.@@@..@@.@...@@@@@@.@@@.@@
...@...@.@@.@.@@@@@..@@.@@@.@.@@@.@@@@@.@@.@..@.@@.@@@.@@@..@.@@@@@@@@@.@@.@@.@@@.@@@.@@@.@@.@@.@.@@..@.@@@@@@@@.@@@@.@.@..@@.@@@...@.@.
.@....@@@@.@.@@@@@.@@@..@.@..@@@@..@@@..@@@.@@@.@@@..@..@..@@...@@.@@@@@@.@.@@@.@@@@@@@@.@@@@@@@@.@@@@@.@@.@@@..@.@@@@.@.@@.@@@@.@@.@@@.
.......@...@@@@@@@@@@@@..@@@@@@@@@@@@@@.@.@.@..@.@@@@...@.@@@.@@@@...@@.@@@@.@@@@@@@@.@@.@.@.@@@@@..@@.@@@.@@.@@@.@..@..@@@@@@.@@@..@.@.
@@@@.@.@@@@@@...@@..@@@@@@@@@.@@.@@@..@@@@@@..@@@@..@.@..@@.@.@@@@.@..@@.@...@.@@@@@@@@@@@@@.@@.@@@@.@@@...@@.@@@@@.@@.@@@..@@.@@@@@@.@.
@@@.@@@..@@@@@@@@@@@@@.@@@@.@..@@@@@@.@....@@@@@@@.@@@..@@@@..@...@@..@@.@@@@.....@@.@.@@@@@@@@@@..@@@.@@@..@@@@..@@@.@@@@@@@.@@@...@@@@
@@@.@@.@.@@@@@@@@..@.@@..@..@@@..@...@.@@@..@.@@@@@..@@@.@@@@@@@@...@@@@.@@@.@..@@@.@.@@...@@.@@@@@@@.@@@.@@.@.@@@@@@@@.@.@@..@@@@@.@@@.
.@..@.@@@@@..@@@.@..@@@@@.@@@.@@@@@...@.....@@..@@@@.@@@.@.@@@.@.@.@..@@.@@...@@@@.@@@@.@@@.@.@@@@@@.@@@.@..@.@@.@@@@.@.@..@@@@@@@..@.@.
.@@.@@.@..@.@.@@...@@@.@..@..@.@.@@@..@.@@.@@@@@@@.@@@@@@..@@...@.@@@@@@@@@...@@.@@@@.@@@@@@@@@@.@@@.@.@..@@..@.@.@@@@@.@@@@@@@.@@@@.@..
@@@.@.@@@@@.@@..@.@@@@@@.@..@.@@@@..@@@@.@@...@@.@.....@@....@@.@@.@@.@@@@.@..@@.@@@@@.@@..@@@.@@...@@.@@@@@@@@@...@@@..@@@@@@@.@@@@...@
@@@@@@@@@@..@@.@@....@.@..@@...@@@@@@.@@@...@@@@.@@.@.@@.@@@@@.@.@@@@@@..@.@@@.@@@@.@@...@@.@@@.@.@@@..@@.@@@.@@@@@@@.@@@.@.@@@..@@..@@.
@@.@..@@@@..@@.@@@@..@@..@@@@@@@@@.@.@.@.@@@@@.@@@@@@.@.@@@@@.@.@@@@.@@.@....@.@@@@@@@@@@.@@@@......@@@@@.@@@@.@@@@@.@@@@@.@@.@@@@@@@@@@
.@@.@@@@@.@@.@@@@.@.....@@...@..@.@@@@..@@....@..@...@.@@@.@..@..@@@@@@..@@.@...@.@@@.@@...@..@@@@@@@@.@@..@..@@@@@@@@.@@.@@@.@.@@.@@.@@
@@..@..@.@@@.@@.@@@.@@@@..@.@@....@@@@@@.@.@@@@....@@@@.@.@@..@..@..@@@.@@.@...@.@@@@@@.@@@@.@@@@@@@@@@..@..@@.@..@.@@@@@..@@@..@.@@@@.@
@.@@.@@@@.@.@..@@@@@..@.@@.@@@...@@@@.@@.@@@@@...@..@@@@@.@@@@@@@@@@..@@..@@@.@.@@@.@@...@@....@@@.@.@..@.@@.....@@@@@.@@..@@@.@.@.@...@
@..@.@@.@.@@...@@@.@@.@@..@.@@@..@@@.....@@...@@@.@.@@@@@@@@.@@..@@...@@.@@.@@..@@@@.@...@@.@.@@@@...@@@@.@@..@.@@@.@@@@@@..@@@.@@@@.@@@
@.@@@@@@@.@..@@@@@@@@@@@@@@@@.@@@@@..@@..@.@@@@@..@@@@@@@.@.@.@@...@..@@@.@@@@.@@.@.@@...@.@..@.@@.@.@@@...@@@@@@@.@@@@.@@@@.@@@@@.@.@..
@@.@@.@@@@@..@.@.@@@@@@@@@@.@@..@@@.@.@@.@@@.@@@..@@...@.@@@.@.@..@..@@@.@.@@@@@.@@@@@@..@.@@@@@.@.@.@@@.@@.@...@@@.@@@@@@@.@@@.@.@@@@@.
...@@@@@@@.@@..@..@@@@@..@@.@@@@@@@@..@..@@@@.@@@@@.@@@.@@@@...@@.@@.@@@@@@@@..@@@@..@@...@@@@@@.@@...@@@@@@.@@...@@.@@@@@@..@@@..@.@@..
@@...@@@.@@@@.@@@@..@@.@.@@..@.@@@@.@.@@@@@@...@@@.@@..@@.@@@...@@@@.@@.@@@.@@@@@@@..@@@@@@@@.@..@@@@@@@@@@.@..@@.@@@..@.@@.@@@@@@.....@
@@...@@@@@......@@@@.@@@.@@.@.@@..@@@.@.@@@.@@@..@@@...@.@@@@@@@@@.@.@@@.@.@@..@.@@..@.@@@.@@.@@@.@@@@.@@@.@.@@.@@.@.@@.@..@@..@.@@...@.
@@.@@@@@..@@@@.@@@.@@@..@@@..@.@.@@@@@@@@@.@..@@@@@@..@@...@@.....@@@@@@@@.@@@@@.@@@@...@@...@@@@@@@.@.@.@@..@@.@.@@.@@@@.@@@@@@@@.@@@@@
.@@..@@.@@@.@@.@@@@..@.....@@@....@.@@@@@@@.@.@..@@@@@.@.@@.@.@..@..@@@.@.@@...@@@@@....@@.@@@@.@@@@@@@.@..@@.@.@@@@@@.@@@.@@@.@@.@@..@.
@.@.@@@@.....@.@.@@.@.@@@@@@@..@@@@@..@.@@@@@.@.@@@@..@.@@@..@.@@@.@@@@.@@..@@@@.@@.@..@@..@.@@@@@@@@@..@@..@.@@@.@@@@.@@@.@@@@@@@@.@@@@
@.@@@.@.@@..@@...@.@@@.@@@.@@.@.@.@@@@@.@.@@@@@@@@@@@@.@@...@.@.@.@.@...@@@....@.@@@.@@.@@@@@@@..@@.@...@...@.@@@@@@@..@@@.@@@..@@@@@@@@
@@.@.@.@@.@@@.@@@@@.@@.@.@@@@@@@.@@@@@@@.@@.@@@@@.@@@...@@.@@@@.@..@@.@@.@@@@.@@@.@@@.@.@@@@@@@@@..@@@@@@@.@@..@@@.@@.@@@.@@.@@.@@@@@@@@
@...@....@@@@..@.@..@.@..@@@@.@.@@...@.@@@@@.@.@...@@@@@@@@..@.@.@@.@@@.@@.@@@@..@@@.@@@@.@@@@@@@..@@@@.@.@@@@.@.@@@@@@.@@.@.@@.@@@.@@..
.@@@@...@@@@@@....@@@...@.@..@@@@@@@@@@.@.@@@@@..@@@..@...@..@@@.@@.@@@.@@@@..@@@.@@@.@@@@@@.@.@@.@@@.@.@@@@@@.@@@.@@@@@@.@@@@.@@@@.@@@@
@@@@..@@@.@.@..@...@.@@@...@..@....@@@..@@@@@@...@.@@@@@.@@@.@@@...@@@@@@.@.@@@..@@@@@..@@.@.@.@.@.@...@@..@.@...@@@@@.@@@..@@.@@.@@@@..
@@@@.@@@@.@@@.@@@@@@@@@@@@@@@@.@@@@@@@@.@@@.@@..@@@.@@.@@@@@@@@@@@@@.@@@...@......@@@..@@@.@..@@@@@@@.@..@@@@...@@@.@@@@@@@.@@@@@......@
.@@@@.@@@@@@@@.@@.@@@..@@.@@.@@..@..@...@.@@@@@@.@..@@.@.@@@.@@@.@@@@@@@@@@@..@@@..@@@@@@@..@@.@.@.@@@.@.@@.@@..@@@@@@@.@.@.@.@.@@@.@...
.@@.@@@@@@@.@@.@@@@@@..@@@@@.@@@.....@@@@@.@@.@@@@@@@@@@@@@@@@.@@@@@.......@@@@@.@@@@..@@....@@.@@@@@..@@.@@@@.@.@@....@@.@@.@..@@@@@@@.
...@.@@.@.@.@@@@@.@@@..@@@@@.@@@@@@@@@@.@@..@@@@@@@...@..@.@@@@.@@..@@@@@@@@@.@@@@@@@@@@.@.@.@@..@@@@.@..@.@@..@.@@@@@@@@@.@.@@@@@@.@@@@
@@.@@..@@.@.@....@.@...@@@@.@@@@@.@..@....@....@@..@@@@@..@...@..@..@@@...@@.@@..@...@@@...@@..@@@@@.@.@@..@.@@.....@@..@@@@......@@.@@.
@..@@@@@@@@.@.@.....@@.@@@@@@@@@@@.@@..@.@..@.@@@.@@@@@@@@@@@.@.@...@@.@@@@.@...@@@.@..@@@.@..@.@@..@@@.@@@...@@@@@.@@.@@..@.@@.@@@.@.@@
..@@..@.@.@.@..@@.@..@.@.@.@@.@@@@@.@@@@@@@@@@..@@@@@@...@@@@...@.@@.@@@@@.@@@@@.@@.@..@..@@@@@@....@@...@@@@...@@@..@.@..@@@.@@@.@@..@@
.@@@@..@@.@@@@@.@.@@.@@.@@@@@@@.@@@..@..@..@@@.@@@@..@@.@.@@@@@...@@.@@@@@.@@.@@@@@@..@@@@@.@.@.@@@@..@..@...@@@.@..@@@@@@@.@@@.@.@@.@.@
@@@@@@@@.@.@@.@@@.@@..@@@@..@..@@@@@@@.@@...@@@@@..@.@@@@@@.@@@@@@..@@..@@.@@.@@@@...@@.@@@...@@@.@..@@@@.@@@@.@@.@@@@@....@@@@@@.@@@@.@
@@@@@...@.@..@@@..@@@..@@@...@@..@.@@@@.@...@.@@@@.@@@...@..@@.@.@@@@@@@@@@..@@@@.@@@@@.@..@.@@@.@.@.@@.@..@@@@..@@..@@.@@@.@..@@@@@..@.
@@..@.@@@..@@@@..@.@@@@...@...@@@@.@@.@.@@.@@@@@.@@.@.@@@@@.@.@@@@.@@@@.@@.@@.@@@@@@.@.@@@..@.@@@.@@@@@@@@@@@@@@..@@@@@.@@@@@@.@@.@.@.@.
@@@@@.@@@@.@@@..@@.@@.@@@@...@@..@@@.@@@..@@.@..@.@@@.@.@@.@@@@@@.@@@@.@.@@@@@@@@.@@..@@@@@@@@@@..@@@@.@@@@@@@@@@@@@@.@@@.@@@@@...@.@.@@
..@@...@@@..@@@@..@@.@@.@@@@@....@.@.@@@@@@.@@@.@@.@.@@@.@@.@.@.@@@@@@.@@@.@@@@.@.@@@@@.@@...@@.@@...@@.@@..@@@@@@@..@.@.@@@..@@..@@@@.@
@.@@@@@@@@@@@@@@@.@..@@@@@.@@.@@@@.@.@.@..@@@@@@@.@@@.@.@@@@@..@@@@@@@@@@.@@@@@..@@@...@@.@.@.@.@@.@....@@@@@.@...@@.@@.@@@@...@@@.@..@@

File diff suppressed because it is too large Load Diff

View File

@@ -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
+ * * * * * + + + * + * + + * + * + + * * + * * * * * + + + * * + + + + * + + * * + * * * + * * + * + * + * + + * * + + * * * * * + + + * + * * * * + * + + * + + + + * + + * + + * + * + * + + * * + + * * + + + + + * * * * + * * * * * + + * * * + * * + + * * + * + * + * * * * * + + + * * + + * * * + * + * + + + * + * * * + + + * * * + * + * * * * * + + + + + * + * + * * * + * + * * * * + * + * + + * * + * * + + * + * * + + * + * + + + + + + + * + * * + * * + + * * * * + + * * * + + * * + * * + * + * * + * + * + + + * + * + * + + * + + + * + * * * + * + + * + * * + + + + + * * * + * + * + + * + * * + * + + * + + + * + + + * + + * * + * + + + * * + * * * * + + + + * + * + * * * * + + + + + + + + + + * + + * + + * + * * * * + + + * + + + + * * * * + + + + * * + * + * * * + * + + * * + + * + * + * + + * + + + + * * + + * + + + + * + + * + * + * * * * + + * + + * + * * + + + + + + + * + + * * * + * + * + + * * + + * + + * + + * * + + * + * + * + + + * * + + + + + + + + * * + * * + + + + + * + * + * + + * * * * + * + * + * * + * + * * + + + * + + * + * + + * * * * + * * * + + * * * + + + + * * + + * * * + + + * + + * + + * * + + * + * + * + * + * + * + + * * + * + + * + * * * * * + + + * + * + + * * + * + + + * * * + + + * * * + * + * + + + + * * * * + + + + + + + + + * * + + + + + + * + * * + + * * + + + + + + + + + * + + + + * + * + * + + * * * + + * + + * + * + * * * * * + + + + * * * * * * + * * * * + + + * * * + + * * + + * * * + + + + + * * * * * * + + * + + * * * + + + + + * * * * + * * * * * + + + * * * + * + + + + + * + + + * * + + * * + + + + * + * + + * * * + + + * + * + + + * + + * * * * * + + * + * * + + * + * + + * + + * * + * * + * + + * * * * + + + + * * + + * * * * + * * * + + + * + + * * * * * * + + + + + + + + + * * + * + + + + + * * * + * + * * * * * + + + * * + * + * + + + + + + * + * * * + * * * * + * + + + * * + * * + + + * * + * * + + * * * + + * * * * + * * + + + * * + + * + + * + + * + * + * + * * * * * + * * + + + * + + * + * * + + + + + + * * *

View File

@@ -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......................................................................
.............................................................................................................................................
......................................................................^......................................................................
.............................................................................................................................................
.....................................................................^.^.....................................................................
.............................................................................................................................................
....................................................................^...^....................................................................
.............................................................................................................................................
...................................................................^.^...^...................................................................
.............................................................................................................................................
..................................................................^.^...^.^..................................................................
.............................................................................................................................................
.................................................................^...^...^.^.................................................................
.............................................................................................................................................
................................................................^.^.^.^...^.^................................................................
.............................................................................................................................................
...............................................................^...^.^.^.^.^.^...............................................................
.............................................................................................................................................
..............................................................^.^.^...^.^...^.^..............................................................
.............................................................................................................................................
.............................................................^.^.^.^.^.^.^.^.^.^.............................................................
.............................................................................................................................................
............................................................^...^...........^...^............................................................
.............................................................................................................................................
...........................................................^.^...^.^.^.^.^.^...^.^...........................................................
.............................................................................................................................................
..........................................................^.^.^.^.^...^.^.^.^...^.^..........................................................
.............................................................................................................................................
.........................................................^...^...^.^.^.^.^...^.^.^.^.........................................................
.............................................................................................................................................
........................................................^.^.^...^.^.^.......^.^...^.^........................................................
.............................................................................................................................................
.......................................................^.^.^.^.^.^.......^.^.^.......^.......................................................
.............................................................................................................................................
......................................................^.^.^.^.^.^...^.^.^.^.^...^.....^......................................................
.............................................................................................................................................
.....................................................^.....^.^.^.....^.^.^.^.^.......^.^.....................................................
.............................................................................................................................................
....................................................^.^.....^.^.^.^.^.^.^.^.....^.^...^.^....................................................
.............................................................................................................................................
...................................................^.^.....^.^.^...^...^.^.^.^.^...^.^.^.^...................................................
.............................................................................................................................................
..................................................^.^.^.....^.^...^.^.^.........^.^.^.^.^.^..................................................
.............................................................................................................................................
.................................................^...^...^.....^...^.^.^.^.^.....^.^.^.^.^.^.................................................
.............................................................................................................................................
................................................^.^.^.^.^...^.^.^.^.^.^.^.^...^.....^.^.^.^.^................................................
.............................................................................................................................................
...............................................^...^...^.^.......^...^.^.^.^.^.^.....^.^.....^...............................................
.............................................................................................................................................
..............................................^.^.....^.^.^.....^.^.^.....^.....^.^.......^.^.^..............................................
.............................................................................................................................................
.............................................^.^.^.^...^.......^...^.^.^...^.^.......^.^.^...^.^.............................................
.............................................................................................................................................
............................................^.....^...^.^.^...^.^...^.^...^.^...^.^.^.^.^.^.^.^.^............................................
.............................................................................................................................................
...........................................^.^...^.^.^...^.^...^.^.^.^...^...^.^.^.^.^...^.^.....^...........................................
.............................................................................................................................................
..........................................^...^.^.....^.^.......^...^...^...^.......^...^.^.......^..........................................
.............................................................................................................................................
.........................................^.......^...^.^.^.....^.^.^.^...^.^...^.^...^.^.^.^.^.^...^.........................................
.............................................................................................................................................
........................................^.^.^.^...^.^.^.^.^.....^...^...^.^.....^...^.^.^.^...^.^...^........................................
.............................................................................................................................................
.......................................^.^.^.^.^.^.......^.^.^...^.......^.^.^...^.^.^.^...^.^.....^.^.......................................
.............................................................................................................................................
......................................^...^.....^.^...^.........^.^.^...^.^.^.^.^...^...^.....^.^.^.^.^......................................
.............................................................................................................................................
.....................................^...^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.....^.^.^.^...^...^.^.^.....^.....................................
.............................................................................................................................................
....................................^.^.^.^.^.^.......^.^.^.^.....^.^.^.^.^.^.....^.^.....^.^.^.^...^.^.^....................................
.............................................................................................................................................
...................................^...^.^.^.^...^...^.^.........^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^.....^...................................
.............................................................................................................................................
..................................^.^...^.^.^.^.^...^...^.^.^.........^.^.^.^.^.^...^.^.^.^.^.^.....^.^.^.^..................................
.............................................................................................................................................
.................................^.^.....^...^.^.^.^...^...^.^.^.^.^.^...^.^.^.^.....^.^...^.^.^...^.^.^...^.................................
.............................................................................................................................................
................................^.^.^.^.^.^.....^.^...^...^.^.^.^.^.^...^.^...^.^...^.^.^.^...^.^.^.^.^.^...^................................
.............................................................................................................................................
...............................^...^...^...^.^.^.^.^...^.^.^...^.^...^.^.^.^.....^...^.^...^.......^.......^.^...............................
.............................................................................................................................................
..............................^.^.^.....^...^.^.^.^.^.^.^.^.^.^.^...^.......^...^.^.^.^.^...^.......^.^.^.^.^.^..............................
.............................................................................................................................................
.............................^.^.^.....^.^.^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^...^...^.^...^...^.^.....^...^...^.............................
.............................................................................................................................................
............................^.^...^.^.^.^.^.^.^.^...^.^...^.....^.^.^.^.^...^.^.^.^...^...^.^.^.^.^.^.^...^...^.^............................
.............................................................................................................................................
...........................^.^...^.^.....^...^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^...^...^.....^.^.^...^...^.^.^.^.^.^...........................
.............................................................................................................................................
..........................^.^.^.^.^.^.^...^.^.^.^...^.^.......^.^...^.^...^...^.....^.^.^...^.....^...^.^.^.^.^.^.^..........................
.............................................................................................................................................
.........................^.^.^.^.^.^.^.....^...^.^.^.^.^.^...^.^.^.^.^.^...^.........^.....^.^.^.^.^...^...^.....^.^.........................
.............................................................................................................................................
........................^...^.^...^.^.^.^.^.^.^...^.^.^.^.^.....^.^.^.^.^.^.^.....^...^.^.^.^.^.^...^.^.^.^...^...^.^........................
.............................................................................................................................................
.......................^.^.^.^.^...^...^.^...^.^.^.^.^.^...^...^.^...^.^.^.^.........^.^.^.^.....^.^.^.^.^...^.^...^.^.......................
.............................................................................................................................................
......................^.^.^.^.^.^.^.^.....^.....^.^.^.^.^.^.^.^.^.^.....^.^.^...^...^.^.^.^.....^.^.^.....^.^.^...^.^.^......................
.............................................................................................................................................
.....................^.^...^...^.^.^.^.^.^.^...^.^...^...^.^...^.^...^.....^.^.^.....^.^.^...^.^.^.^.^.^.^.^.^...^...^.^.....................
.............................................................................................................................................
....................^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^.^...^.^.^.^...^.^.^.^.^...^.^.^...^.^.^...^...^.^.^.......^.^.^...^....................
.............................................................................................................................................
...................^...^...^.^.^.^.^...^.^.^.^.....^.^.^...^.....^.^.^.^...^.^...^.^...^...^.^.^.^...^.^.^.^.^.^.^...^.^.^...................
.............................................................................................................................................
..................^...^.^...^.^.^...^.^...^.^.^...^.^.^...........^...^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^.^.^.^.^..................
.............................................................................................................................................
.................^.^.....^.^.^...^.^...^.^.^...^...^.^...^.^.^...^.....^.^.^.^.^.^.^...^...^...^...^.^...^.^.^.^.^.^...^...^.................
.............................................................................................................................................
................^.^.^...^.^.^.^.^.^.^.^...^.^...^.^...^.^.^.^.^.^.^.^.^.^.^...^...^.^.^.^.^.^.^.^.^...^.^.^.^...^.^.^.^.^.^.^................
.............................................................................................................................................
...............^.^.^.^.......^.^.^.^...^.^.^.^.^...^...^.......^.^.^.^.^.^.^.^.^...^.^.^.....^.^.^...^.....^.^.^...^...^.^...^...............
.............................................................................................................................................
..............^...^.^...^.^...^.^.^...^.^.^...^...^.^...^...^.........^.^.^.^.^...^...^.^...^.^...^.^.^...^...^.^.....^.^...^.^..............
.............................................................................................................................................
.............^.......^.....^...^.^.^.^.^.....^...^...^.^.^.^.^.^...^.......^.^.^.....^.^.^.^.^.^.^.^.....^.^...^...^.^.^...^.^.^.............
.............................................................................................................................................
............^.^...^...^.......^.....^...^.^.^...^.^.^.^.^.^.^.....^...^.^.....^.^.^.^.^.^.^...^...^.^.....^.^.^.^.^.^.^.^.^.^.^.^............
.............................................................................................................................................
...........^.^...^.....^...^...^.^.^.^.^.^.^...^...^.....^.^.^.^.^...^...^.^.^.^.^...^.^.^...^.^.....^...^.......^...^...^.^...^.^...........
.............................................................................................................................................
..........^...^...^.^...^.^.^...........^...^...^.^.^.^.^.^...^.^.^...^...^.^...^.^.^.^.^.^...^.^.^.^.^.^.^...^.^.....^.^.^.^.^.^.^..........
.............................................................................................................................................
.........^.^.^.....^.....^.^.^.^.^.^...^...^...^.^...^...^.^.^.^.^...^.^.^.^...^...^.^.^.^.^.^...^.....^.....^.^.^.^.^.^.^.^...^...^.........
.............................................................................................................................................
........^.^.^...^.^...^.^.^.^.^.^.^.^.^.^...^.^...^.....^.^.......^.^.......^...^...^.^.^.^.^.^.^...^...^.^.^.^...^.^.^.^.^.^.^.^...^........
.............................................................................................................................................
.......^...^.^.^.^.^.^...^...^.^...^.....^...^...^...^.^.........^.^.^.^.^.^.^.^.^.^...^...^.^.^...^.^...^.^.^.^...^.^...^.^.^...^.^.^.......
.............................................................................................................................................
......^.^.......^.^.^...^.^.^.^...^.^.^.^.^.^...^.^.....^.^.^.......^.^.^.^.^.....^.^...^.^.^.^.^.....^.^.^.^.^.^.^.....^...^...^.^.^.^......
.............................................................................................................................................
.....^...^.^.^.....^.^...^...^.....^.^...^.^...^.^.^...^.....^.^.^...^.^.^.^.^.^...^.^.^.......^.^.....^.^.^.........^...^.^.^.^.^.^.^.^.....
.............................................................................................................................................
....^.^...^.....^.^.....^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.....^...^.^...^.^...^...^...^.^.^.^.^.^.^.^.^.^...^.^.^...^.^...^.^.^...^.^...^....
.............................................................................................................................................
...^.^.^.^.^...^...^.^.^.^.....^...^.^.^.^.....^...^.....^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^...^.^.^.^.^.^.^...^.^.......^.....^...^.^...
.............................................................................................................................................
..^...^.^...^.^...^.^.^.^.^...^...^.^.^.....^.^.^.^...^.^.^...^.^...^.^.^.^.^.^.....^.^.^.^.^.^.^.^.^...^...^...^...^.^.......^.^.^.^.^.^.^..
.............................................................................................................................................
.^.^...^.^.....^...^.^.^.^...^.^.^...^...^.^.^.^.^.....^...^...^.^...^.^...^.^...^.^...^.^.^.^.^.^.....^.^.^.^.^.^.^.^...^.^.^.^.^...^.^.^.^.
.............................................................................................................................................

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long