AdventOfCode2024 Day04

This commit is contained in:
2024-12-05 01:23:46 +01:00
parent 7a06bc7172
commit b68ee2259a
4 changed files with 326 additions and 2 deletions

View File

@@ -5,7 +5,7 @@ public class Day01_Tests
[Fact] [Fact]
public void ResolvePart1__Example() public void ResolvePart1__Example()
{ {
Day01? day = new(); Day01 day = new();
string result = day.ResolvePart1([ string result = day.ResolvePart1([
"1abc2", "1abc2",
@@ -20,7 +20,7 @@ public class Day01_Tests
[Fact] [Fact]
public void ResolvePart2__Example() public void ResolvePart2__Example()
{ {
Day01? day = new(); Day01 day = new();
string result = day.ResolvePart2([ string result = day.ResolvePart2([
"two1nine", "two1nine",

View File

@@ -0,0 +1,47 @@
namespace AdventOfCode2024.Tests;
public class Day04_Tests
{
[Fact]
public void ResolvePart1_Example()
{
Day04 day = new();
string result = day.ResolvePart1([
"MMMSXXMASM",
"MSAMXMSMSA",
"AMXSXMAAMM",
"MSAMASMSMX",
"XMASAMXAMM",
"XXAMMXXAMA",
"SMSMSASXSS",
"SAXAMASAAA",
"MAMMMXMMMM",
"MXMXAXMASX",
]);
Assert.Equal("18", result);
}
[Fact]
public void ResolvePart2_Example()
{
Day04 day = new();
string result = day.ResolvePart2([
"MMMSXXMASM",
"MSAMXMSMSA",
"AMXSXMAAMM",
"MSAMASMSMX",
"XMASAMXAMM",
"XXAMMXXAMA",
"SMSMSASXSS",
"SAXAMASAAA",
"MAMMMXMMMM",
"MXMXAXMASX",
]);
Assert.Equal("9", result);
}
}

137
AdventOfCode2024/Day04.cs Normal file
View File

@@ -0,0 +1,137 @@
namespace AdventOfCode2024;
/*
--- Day 4: Ceres Search ---
"Looks like the Chief's not here. Next!" One of The Historians pulls out a device and pushes the only button on it. After a brief flash, you recognize the interior of the Ceres monitoring station!
As the search for the Chief continues, a small Elf who lives on the station tugs on your shirt; she'd like to know if you could help her with her word search (your puzzle input). She only has to find one word: XMAS.
This word search allows words to be horizontal, vertical, diagonal, written backwards, or even overlapping other words. It's a little unusual, though, as you don't merely need to find one instance of XMAS - you need to find all of them. Here are a few ways XMAS might appear, where irrelevant characters have been replaced with .:
..X...
.SAMX.
.A..A.
XMAS.S
.X....
The actual word search will be full of letters instead. For example:
MMMSXXMASM
MSAMXMSMSA
AMXSXMAAMM
MSAMASMSMX
XMASAMXAMM
XXAMMXXAMA
SMSMSASXSS
SAXAMASAAA
MAMMMXMMMM
MXMXAXMASX
In this word search, XMAS occurs a total of 18 times; here's the same word search again, but where letters not involved in any XMAS have been replaced with .:
....XXMAS.
.SAMXMS...
...S..A...
..A.A.MS.X
XMASAMX.MM
X.....XA.A
S.S.S.S.SS
.A.A.A.A.A
..M.M.M.MM
.X.X.XMASX
Take a look at the little Elf's word search. How many times does XMAS appear?
*/
public class Day04 : IDay
{
public string ResolvePart1(string[] inputs)
{
char[,] grid = ConvertToGrid(inputs);
const string word = "XMAS";
List<(int dx, int dy)> directions = [
(0, -1),
(1, 0),
(0, 1),
(-1, 0),
(-1, -1),
(1, -1),
(-1, 1),
(1, 1),
];
int totalMatches = 0;
for (int x = 0; x < grid.GetLength(0); x++)
{
for (int y = 0; y < grid.GetLength(1); y++)
{
for (int i = 0; i < directions.Count; i++)
{
if (CheckMatch(grid, word, x, y, directions[i].dx, directions[i].dy))
{
totalMatches++;
}
}
}
}
return totalMatches.ToString();
}
private static char[,] ConvertToGrid(string[] inputs)
{
int height = inputs.Count(s => s.Length > 0);
int width = inputs.Where(s => s.Length > 0).Select(s => s.Length).Min();
char[,] grid = new char[width, height];
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
grid[x, y] = inputs[y][x];
}
}
return grid;
}
private static bool CheckMatch(char[,] grid, string word, int x, int y, int dx, int dy)
{
int matched = 0;
if (x < 0 || x >= grid.GetLength(0) || y < 0 || y >= grid.GetLength(1)) { return false; }
while (grid[x, y] == word[matched])
{
matched++;
if (matched == word.Length) { return true; }
x += dx;
y += dy;
if (x < 0 || x >= grid.GetLength(0) || y < 0 || y >= grid.GetLength(1)) { break; }
}
return false;
}
public string ResolvePart2(string[] inputs)
{
char[,] grid = ConvertToGrid(inputs);
const string word = "MAS";
int totalMatches = 0;
for (int x = 0; x < grid.GetLength(0); x++)
{
for (int y = 0; y < grid.GetLength(1); y++)
{
if (
(CheckMatch(grid, word, x - 1, y - 1, 1, 1) && CheckMatch(grid, word, x - 1, y + 1, 1, -1)) ||
(CheckMatch(grid, word, x - 1, y - 1, 1, 1) && CheckMatch(grid, word, x + 1, y - 1, -1, 1)) ||
(CheckMatch(grid, word, x + 1, y + 1, -1, -1) && CheckMatch(grid, word, x - 1, y + 1, 1, -1)) ||
(CheckMatch(grid, word, x + 1, y + 1, -1, -1) && CheckMatch(grid, word, x + 1, y - 1, -1, 1))
)
{
totalMatches++;
}
}
}
return totalMatches.ToString();
}
}

View File

@@ -0,0 +1,140 @@
MMSSMSMXAMXMSSSSMMXSSMSAMASASXXAAXMAXXAMXAXSXMAMXMMMMSSMXMAAAMXMMMXXAMMAMSAMXXAMMMAAMMMSMMMMMXXSAMXMASXMXSMSXMXMMMSMSAMXSSMMXMMASMSMSMMMAMMS
AASAAAXMSMMAMAXAASMMAAMASXMMSASMSSXASAMXXAXMASAXXMMMAAAXMAMXMSAMSMSSMSMAMMMMSMAMASMMSXMAXXAASXAXAMXMASAMMSAMXMXMAAAXMASXMAMSAXXMSAAAAAASASXS
MXSMMMMAAMAAMXMSMMASMMMAMAAAMAMAAMMAXAMXSSXSAMSMSAMMMSSSMSXMAMAMXMAAXXMMSMAAASAMXSXASMSMSXSMSAMSXMAXASAMAMAMXMASMSXXSAMMSSMSAMSASMMSMSMSASAS
MMMASXSSMXSASXAXASMMAXMMSSMMMXMMMMSSSMSMMAAXXMAXXAMXMMXAAXAXASXMAMSXMSAMXMMSXSXSXMMXMAMXMAMMXAMAMMSMASMMASXMSSXSAMAAMAMMAMXMAAMAMMXXXXXMAMAX
SASXMAAXXMMAMXMMAMXSXMMMXASMMMMXSAAAAAAXMMMMMMXXMAMXMMSMMMSMXAXXXMAASAMXASXMAXXAMXASMSMAMXMASMMXSAAMXMASASAMAMAMAMMXAAMMAMXMMMMMXSAMASMMXMXM
SXSAMXMXMSMAMAMSAMXMXXAASAMXXASAMMSMMXMSMAMAMMASXSSMAAAAAAXMMMMXSMMMSAMMMMAMAMSMSMMSAMMMSSMAMXAXMMMSMSXMASXMASAMAXXAXAXSASAXAXXAAXAMAMAMAMAA
SASXSASAAASMSMMAAMXMSXMMXASXSSMXXAMXSMMXMASMXMXSAAMMMXXSMSXSAASMMSMASAMAAXMMAXXXAAXMXMASAAMAXMMSAMMAAXAMXMMSAXXXSXSAMSMSASXSASMMSSXMASAMAXXX
MAMXSASMSMSMAXMSSMXXMASMSXMASXMSMXSAXAAMMXSXXSMMMMMSMSAMXMASMXMAAXXAMAMSMSXSMSMSSSMSMSXSSSMXSASMASMSMSSMXMAMMSXMXAMXXMASMMAMAXXXAMXXXSXSSSSS
MAMMMAMXAXXMAXXAMXMASAMAASMSMAXXAAMMMMMSMAMXAMAXMMAAAMAMAMAMMSSMMMMSMSMAMSAMAAAXAMXAASAMAXXMAXXMAMXAMAAAMAXXMAXAMXMASMAMMMAMMMSMMSSSXXAXXAAA
SASXMAMSASAMXSMMXSMAMAMXMAXMSAMMMMMSASAMMAMSASXMSSMMMMAMXMSXAXXMASMXAMSSSMAMXMSMSMSMSMAMAMXAXMXMMSSMMSXMASXSSSMXSXXXXMAMXXAXAMXASAAMAMSMMMMM
SXXMMSMMASMMAMASAAMXXMMMXMAMAMXXMAASAXAXMAXAAAAAAAASMSSXSXXMSSMSXSAMMMAXAMXMSAMXAAXMMMAMMSMSASXSXAMXAAMSXXAMAAXAMMMMSSSSMSMSSXSMMMSMAAAXMASX
XMSSXMAMAMAXASAMSSMSXXSAAMXXAXXSXMMMASXMMSSMMMMMSSMMAXMASXMAMAAAXMAMXMASXMAMAMXXMSMAASASXAXMAXXMMMMMMXMXAMAMSMMXSAMAXAAXAAMMMASMXXMXXSSSMASM
MMAMASAMXSXMMMMXXXAMAASMXMMMMAMSAMXMMXMAXAMXXXXXMXAMXMMAMAMMMMAMSXASASASMSSSMMXSAXXSMSMMXSSMSSXSAXAASXMMXXAMMAMXAXSMMMMMMMSAMAMXMASXXMXAMASM
AMASMMMXMXAAXAXXAMAMMMXAXXAAAAASXMASAAMXMMMAMSASMSXMXXMASXMMSMMAMXAMAMAMAMXAAAMMAMAXAMAAAMXMXMAMSMXMSASAASMMMXMAMAXMSAMMSMSASMXXASAMXSXMMASX
MSASAASXSSSMMSSSXXAXMXMMXSSSSSXXMAMAMSMSMXMAXXAAAAXAMXSAMASAAAMSMSMMSMSMSSXSMXSMSMMMMMMMSSMSAMXMMSMAXAMMXMSASASMSMSXXAXSAASAMXSMXMAAMSAMMXSM
MMMSMMSAAMXMXMAMAXSMMXXSAMXAAXXMASXMAMAXMAMMMXSMSMXSAMMXSAMSMSMAAAXSXAXAXMAXSXMAMXXAAAXMXAMSMSMSAAMMMSMXMASMMASAAASASXMSMXMXMAXMAXAMXMAMAMMM
XMAMXAMMMMAMXMAMSMXASMSAMSSMMMAXAMXXAMSMSSSSSMAAXMAXXAAAMMMMXAMMSMSMMMMSMMSMAMMAMMSSSSSXSSMXMXAMMMXAXAAMMAMXMAMMMXMAAAXXMSMXMXSXAMSMSSMMMSAA
MMASMXSMMSASMSAMAAXAMXMAMAAAXSMMSSXMXXAAAAAAXAMSMMMSSMMMMXAXSMMMMMMXAMAXAMMAAAMASXXMAAMAMXMXMMSSXMSSSMXSMXSAMXSSMMSMSXMSMAMAMXXMMMXAXAXSASMS
XSASMSAMXSXAASMSMSMSMSSMMSSMMAAAMMXMSSMSMMMMMSXMASAAAXSSSMMXSAASMMSSXSASAMASMMSASMSMMXMASAMASMASXXAMAXXMAXSASXMMAMXAXXMASMSASASASXSSSMMMASAX
XMSSMAAXMSXMAMXAAAAXAMMSAXAMSSMMXMAXMAXXXMXAMXXSAMMSXMASMAMAXMMMAAAAXMXSXMAMMXMAXAXXMASASASASMAMMMMSAMXMXMSAMMASXMMMMAMAMXSMSAXSAAAAXXAAAMAS
ASAMXMXMAXAXMAXMSMSMXMAMXSAXAAXAASMSSSMMMAASMMMMMSXMAXXXSAMSSMXXXMMMMSMMXMMXSAMXMSMSAMMASXXASMASAAAMASXXMAMAMSMMMXMASXMAMMXAMAMMMMMMMXMAXXXA
MMMSXXAXMMAMXSMAAAAMAMXMASAMXMMSMSAAXAAXMAAAAAAAAXXMSMSMSXXAAXSSSMSXAXAMMSMAMAXXSXAMSSMAMXMAMXXXMXMSXMMMAMMSMSAMXMXXXMSSSMMMMAXAMXMASXSSMSXM
XSXAMMSMSAMSAMMXMMAXAXMSAMXAXXXAXMMMXSAMXSXXXMMMMMSAMAAAXMMSSMMAAAAMSXSAASMMSSMMAMSMAMMMSAMASXMSSSXMMAXAXSAXSXMXAAMMAXAAAXAXMXSMMAMXMXMAAASX
SAMXSAMAMAMSAXAXSSMXMMAMASMSSMSMXMAAAMAMAMASMSMSAAMAMSMMMAAMAXMAMMMSMMMMMMAAAAMSAMAMAMAAXMSASAAAAXAXXXMXXMAMAMXSASAMMMMSMSMMSAXMSMMAAAXMMMAX
SSMAMASMMAMMMMSMMASAAMSMXMXAAAAAAMMMMSAMSXMXAAAMMMMAMAAMSMMSAMMSXXXMXAASXSMMSXMMASAMMSMMSMMAMMMMSMMMSXSXMMSMMXMAXMMXMAXAAMAAMAMXAASMSMSXXXMM
XAMXXAXAMXXXSAXMSAMMXMXAAMMSMSXSMSSXMSMMXAMMMMMMMSSSSMSMAAMMMXXXXSMSSSMSAAXXXMSSMMAMMAMMAXSSSXMAMAXXAAMAMAAAXXMAXMMMXSSMSMMMSAXMAXXAAXAMXSXS
SSMSMSSMMSMMMAXAMXMSMXSSXSAXMXMAXAXAMXMASAMXXAXMXAXMAXAXSXMAMMMSMMAAMXAMMMMMAMAAAMMMSAXSAMXMAAMAXXMXMMSAMSSMMMSAMMAMXMAMXXSASXASMMMSMMXMASAS
MAAAAXAAAAASMSMSMAASXAXXAMMSMXASMSSMMMMMSAMXSMSMMMSASXXXMASXXAAXAMMMMMSMAXAAAMSSMMMAMXMMMSMSSMMSSMXMXXMAMAAXSAMASXSSXSAMMAMASAMXAXXMASXXAMAM
SMMMSSSMSSSMAXAAXSXSMMMSAMAAAXSXAXXXAMAMMMAAMXAXSXSAMXMMMMAASMXMAMXSAAASXSSSXMMMAAMSSSMXXAAMAXXMAXXASAMMMMSASMMXMAAAXSAMXAMXMMXSXMXSMMMMSMAM
XAAXXAAAAMAMXMSMXXMXAXXMASMXSMMMMMSMMMAMAMMSMMSXMXMAXXAAAAAMAAMSSMASMMMSXAAMXMMMMXSAAAASMMSSSMMSAMMMSAMXSSMASAMSMXMMMSAMSMSMXMASMMASAAXAAMAX
SSMSMMMMMMAMXAMMAMMMSAMSXMMXAAXMAAAASXMXMSAAMSMASXSMXMASXSSSMMXAAMXSASXXMMXMAMAAXMAMMMMMAXMMXAXMAMSASAMAMXMSMXMAAXAXAMAMXMAAAMXSAMASXMMSMSSM
XXMAXASXXSASMSSMMMSAAMAXMASXSMMSMXMSMASAAMMMXAXXMXAAAAMMAMAXXMMSSXAMMAXMAXSSMSSXSAAXXXXSXMMASMMAMXMASMMMSAMXAASAMXMMMMMMXSXSMSXSMMXSAXMXMAMA
MMSAMMSAAXAMAMXAAAMASXSXMXMMXMASAXSAXAMMSMAMXASMMSXSMSAMAMMMMMMXMMMMXMAXXSAMXMAAAMASMMXMMMMXMSXXXMMMMXAAXMSMSMSAXXXXMASMMSXXXXXMXSMMMXSSMASX
XMAMXSMXMSSMMMSAMXSSMMMAMMXXAAMMAMSAMXSXAMASMMMAAMMMXMMSXSAMAAAAMASXMXSXMAMMASMAMXSAMXAAAXXAXAXMASAAXSMSMMAAAAMMMSMMSASAASAXASXMASAMXMMXMASA
XSAXXMASXMAAXMAMMAMMAASAMASXSSSMSMMXMASXMMASASMMAMXSAMXMASAMSSSMSAMAXAMAMXMSAXAXXMXMAXSSMSSMSMAMXMASMXXAAMMSMSMAAXXAMSSMMMMMXAAMASAMMASAMAMM
XSAMMMXMASXMMASAMSSSSMSASMSAAAAAMXSAMMMMXMMXAMASAMXMAMAMMMSMXAXXMASMMXMAMAMMMSSMMMMMSMMXMXMMAXMASMXMMMMSSMXXAXMMMSMXMMMXMAAAAMSMASAMASAXSAAX
ASMXMASXXMMMSAMMMAAAXASAMXMAMXMXMASXXAAXMSSMAMXXSXXMASAXXAMMMMMAMAAXSMSMMMSAXXXSXAAAAXXXMASMMMSMMSAAAXXAAMSMAXAXAAMSMXMASMSSMXAMXSAMMXAMMMSM
MXMASMSAMXMAMXSXMMSMXMSMSAMMXMXAMXMASXSSMAXSAMSAMXMSASMSMXSAXMAXXMMAMAAMAAMASXAXSSMMSMXXMASAXAMAASMSMSMXSXAMMMMMMSAAMASMSMAAMXMMASAMXMXSXAAA
XMSMSAMXMAMASMMMAMXXAAMASAMXAAXAAXMXMMAAMAMSXSMXMAXMASXAAXSXSASMSMSAMSMSMXSAMMXMAXMXAMAAMXSASMSMMSAAXAAAMMXAAMXMAXMMSASMXMSSMMXMMMAMMMAMMMMS
MXAAMXMAXXSASAAMMMXSMSXAMAMSASMMMXMMASXSMSXXMSAMXMSMXMXMSMSAMAMAAAXAXAMXMXMAXMMXSAMSAMAXXAMAMMAAMMXMSMSMSASMMSXMASAXMXSXXXAAAMXSMSSMAMASXAMX
ASMMXMXSMAAMSMMXAMAXAXMMMSMMAMMASAASAMAXAMXSAMXSAAXXAMAXMAMXMAMSMSMXXSAMXAXMASAAXAMSAMXAMXMAMSSMMAMXMXMAAMSAAXAMASAMMXSAMMXSMMAXMAAMXXAMMMSA
MXSMAMAXMSMMXMASXSXMAXAAAMAMSXSASXXMAMAMXMASXSASMSMSSSSSMMMAXXMAAAAMSMSMSMXSASMMMSMXMMSXMMMAXMAMSMSASAMXMXSMMSXMAXMMXASMAMXMMMMSMSSMSMSXSAAX
XAXMMMSSXAXXAMASAAMMSSSMXXAMAAMMSMXSAMAMAXXMAMAMSAMXAAASXASMSMXMSMSMAAAXAAAMAXAAAXXMSAMAMAMMSSSMAAXXSMSXXXXXMXMMMSMSMASXSSMMASMXXAMMAAMAMASX
SSSMXAMXXSSSMMAMMMMAMAAXXMSMMXMAXMAXMSMSMSSMAMMMSMSMMMMMSXSAAAMXMAXMMMMMXMSMSSSMSSMXMASMSMSAAAXMMSMASAMXXMASMMMAAAMMAXMAAMXMAMXXMASXMSMMMAMA
AAAXMSSMXXAMAAAXXXMXSSXMAMMAXSMSSMSSXAAAAAMMXMXMXMXMXXXAMSSMMSAMXAMXSMSMSMXAAAAAXXAXSAMMAASMMSMXAAMMSAMXAMXAAASXSMSXXAMMMAASXMSXSASXMAMXMAMX
MMMMAMAMSMAMSSSSSMMAMMAXMASMMSAAAAAXXMSMMSSXSAMSAMASXSMAXAXAMXMXXSXMASAAXSMMMXMMMASXMAXMMAMAAMAMXXXASXMSSSMSSMSXMXMASXXSMMMSAASASASMSASASMSM
XAXXMXAMAAMMAXMAXAMAMSXMSMSMAMMMMMMMAMXASAAAMXMMAMAXAMXSMMSSMSMXXMASMMMXMAMMXMSASXMMXAXSSSSMMSXMXSMMXAXAAAMMXMSASAXXAASXXXAMMMMAMAMXXAMXXMAA
XASASXSSXSMMXSMSXSMSXMAXXXMMSMSXMSXMSSMMSMMMMASMMSSMAMAXAAXAAAAXSSMMXSAAXAMSAMSAAXXXXXXXAAXMXXASASASXMMMSMMSAMMAMXMMSMMMMMMAMXMAMXMXMSMSSSMM
ASMMXAASAMXXAXAMAXXMASXSXSMAMXXASAXMAAAASXMASMXAAAXMAMASMMSMSMXMAAAXMMSXMAXXAXMAMMASMSMMMMMSSMMMAXAMAXXXAMXSAMMSMSXAASAXXASAMMMMMASMMAASASMX
MXAMMSMMXMAXAMXMAMXMAMAXAXMASXSMMMMMSSMMSASASXSMMMSSMSXSAMXAXMAXSMMMAMAMXMMMSMXAXAMAAAMAMXXXAASMSMSMMMSAMXMSXMXXAMMSMSSXXASXXAAASXXASMSMAMXX
XXAMXAAXXASMSMXMMSASXMMMSMSASAAXMXAAXAAMXXMXSAXXAAMAMMAMAMMSMSXMAAAXSMMMXSAAXMSSXSSMSMSSMMSMSMMAAAXSAMXMASXMSMAMAMAMXXAXMXMXSSSXMMXXMMMMXMMS
MSMMSMSAAAXAXMXSAMXSAAXAAMXMMXMXXXMSSMMMMSAAMXMSXXSAMSASAMXMAAMSSMMSMASAAMMMSAXMAMXAAASAAAXAXXMMMSMXXMAMXSMMAMMSAMXSSMMXMAAAMXMAXSSMAXMXMASA
XASMAMXMMAMAMSXMMSMSMMMSSSMSAAMMSXXXAXAASMSSMSMXMXMXMSASMSAMMMMXAMXXXAMMXSXXMXMMMMMMMSSXMSSMMMMAXXMAMMSMXXASMSAMXSMAXASXSMSMSAMAMAASXMSMSMAM
XAASMSAXMAAMXSMSXXXMAMXMAAAMMSAAAMMSMMXSAAAMMAXAAMXSXMXMAMXSAMXMXMSAMXSSMMMMAMXAMAXASAXAXAXXAXXSSMSSXAAMMSMMMMAMAMMASMMAXAAXSXXAXMXSXAAAXAMX
MSMXXSAXSAMMAXAAXMMSAMXMXMMMXMMMMXAAXAXXMMMSSMSMXSAMXMAMSMMSASMMAMXMMMAXAAMMMASMMMMXXASXMASMMSMMAAAMMSMSAAMAASAMASMXSMMMMSMMMMSMSXAXMSMXMSXM
XMXSMMSAMSAMXMSMXSAAXSAMSSXAAXAAAMSMMXSXMAAXAXAAAMAMAXAXAAMSXMMMASASAMXXXXXASMSAASXSMXMASAXXAAAMMSMSAXXXMMXSXXMSXXMAMXAXAXXAXAASAMXMMXSXXMAX
SMAMAAMXAXXMAAAXMMAXMXAXAXAMMSMMXMAASASASMSSSMMMMSSSMSSSSSMMAMXXASASASMSSXSMSAMMAMAAMXSAMXSMSSSMXXXMASMSASAMXSMMXMXAXSXSSSSSSSMSXSMMSAMXMMAM
AMAMMXSMXMASXSSSMSAMSSSMMMMAMAMAMXSAMASAMXMXXAAMMAMXAAAXMXASXMXXMMXMXMAMAASXMXMASMSMMXMXSAXXXAAXXXAMXMAAMMAMAAAAAXMAMMXMAXAXMAMXMXAAMAXSAMXA
MSMSAAXAAMMMMXAAAMXXXAAMXXMASXXXSMMMMMMAMXSAMXSSMSSSMMSMMSXMXAXSSSSSMMMMMMMAXAXMMMAAMXMMMMMSMSMMSSMMSMMMSMSMSMMSXSAMAMXMXMXMSAMAAMMMSAMXSASX
XAXAMMSSMMSAMXMMMMSSMXMMAMMASMSSMMMSAXSXMAMAMAXXMXMASXAAMSAMMSMAAMAAMAASXSSSMSAMXXSXMAMMAAAXXAAAAMAAAAAXMAMAAXXAMXMXMAXMAMAAMASASXAAMXSAXMAX
SXSMSAAAMASASXAXXMXAAXSMMSAMXAXAAAXMAMSMMMSAMSSSXSXMASMSMSAMAXMSMMSMMAXSAAAXSMXMAMAASXMASMSSSSMMMSAMXSMSMAMSSSMXSAAASMMXASXSSXMAXXMSSXSAMXMX
SMXAMMSSMMSAMXMMSASMMMXAASXSSSSMMMSMSAMXXXAMXAAXASMXAMMMXMAMASMMMAXMAMXMAMSMSMMSSSMMSAMAMAMXAXXSXMASMMMMMXXMAMAMSXSXMAXSASAAXAXASMXAXXMXMMXX
SAMSMXMAMAMMMSXAXXXAASMMMSAAAXXAAAXMMAAXMASXMSMMXMAMXMAXMMMMMMAAMXMXSAMXSXMAMMAAAAAXSMMMXAMMMMASASAMAASXMXXMMMMXMMMXMAMMXMMMMSMAXMAMAMAAMXSM
XAMAAAXMMXXMASMSMSMSMSAXAMXMMSSSMSSXSXMXAAMXAAMAXMXMMSXMAASAMXSMSSMMMAMAMAMMMMMSSSMMXAAMXMMAMSASAMASXMMAMMMMXXXAAAAAMAMMAMXXAXMMMSAMAAXMXAAA
AXSXXMSSSSXMXSXMASAAASAMXSAXXXAAAXAXXASMSMSMSMSXXMASXAAMSMSASMXAAXAAXAMMSAMAAXAMXAMMSMMSAMMXMMAXMSAMXSSMMAXMAMSSSMSXSAXSASAMXSASASASXSAAASXM
MXMASMXAAMMMAMAMAMXMMMXMAXMXMMXMSSMASMMAAAMMMMAMMMMSMMXMAAXAMXMMMSMMSSMXSXSSXSASXMMAMXASASXMXMAMASASAMAASMMMMMAMXXAASXMSASXSXSXMASXMAMMMMXAS
XXSAAAMMMMAMAXAMMSMSMSAMSXSASAMXMAAAXAMXMMMAAXAXAASXMAAXMSMSMAAXAMAMXXXXMXMAMMMAMXMAMSMSXMASAMAAMSAMMSSMMSAASMMMSMMMMXXMXMAMAMXMAMMMXMSASMMM
XXMASXSSXSXSSSSSXXAAAMXSAASASXAASXMMSSMASASXMMXSMMMAMSMXAAXAXMMMMSSMMMSAMXAMXSSMAMSSMSAMMSMSASMSXMXMAXASAXMAMASAMASAMXSMMMXMMMAMMMSXMAMASMXA
SMSMMAMXAAMAAAAXAMSMMMMMMXMAMMSXSXSAXXMASASAMSXMMSXXMASMSMSMMSAMMAXAAASAMXAMAXAXSMAMMMMMAAXXAMXXMASMMSAMMSXMMAMXSASMSAAXXASXSSXSAASAMAMSMMSS
AMAAMXMMXMSXMMAMMMXASXMASAMAMMMMXXMASMSMMMMXMAASASMSMAMMAAXXASASXASXMMSAASAMXSSMMMMXAAAMMSSMSMMMXSAAXMMMXMXSMXSMMMSAMXSMMASAAXASMSMXMAMXAAAM
MSSSMAMSMXSXSMXMAAXSAASMSAMAMASAMXSMSAAAASAMXSXMASAXMASMSMXMMSMMMMMMSMXAAMAXXAAASAMMSXSSMXMXXAMAXAXAMMSMSMAXXXXMAAMMMAXXMXMMMMMMMMMSSSSSMMSS
XXMAMASAMXMAMSAMXMSMMXSMSXSXSAMXAMXAMXSSMSXXAMXXAMXMASXAAAXSXMXAAAASAMXMASMMMSMMMASAASAAXAMXMAMSSMMSSMAAAMMSMMMSMMSXMSXXXAXAXAAXAMXAAAXAAAAM
XXMASMSASMMAMAXMAXAXXAMAMAAAMMMXSAMMMAXAXXXMSSSMASASXMMSMSXMASXXMXXXASXMXAAMAMXAXAMMSAXXMASASAMXAXAAAXMSMXAAAAXXXXMMXXASMSXMXMSSXXMMXMXXMMSS
MMAAAASAMXMMSMMMXXSMSMMAMXMMMXAAAXAXMSMMAAMXAAMXXMXMAXAXMAMSXMASMSMMMMAXSSSMAMMSMSSXAMSMSMAXSMXSMMMSSMXAXMMSSMSMAMXXMSMXAMXSAXXMMASAMMXXMAMA
AAMXSAMAMMMAAXAXMAMASXMAXAXAXMASMSSMXMAXXAAAMSMSMSASAMSSSMAXASAMXAAASMSMMMXMASAAAAAAMXAASXMASAMAXXAAAMXMSSMAXAAXSAMXMAAMSMAMAMMASMMASAASMSSS
SXSAMXSXMAMSMMASXXMAMAMSSSSMSXMXAAAXASXMAMXXSAAAAMAMAMAAMSAMXMASXMSMSAAMAAAXXMXMSAMMXMMSMAXAXMAAMMMSASXMAMMMMSMMMSAAMASMAMMMAXMAMASAMXMSAXAX
MSMXSMMMMSAMXMMAMXMMMSAAAAXMAMAMMMMMMSSSXSAXXMSMSMXMAMMSMXMAMSSMMAMAMXMMASMSAMXXAASXXMSAXXMMXXMSMXMMAMXMASXMAXASAAMMXMMXXSSMMSMASAMASMMMXMAM
XXXMXMAAAXXMASMAXAXXAMMMSMMMAXMASAMMXSAXAMASMXXAXMSSSSXXMASXXXAAXSMAMAXXMMMXMXMASAMMAMMAXSASAMXAAAXMMMXMASAMMSAMXSXSAAXAMAAAAMXAMXXMMXAAMMXM
SMXMAMMXSXAMAXSSSMXMXSMXAXAMXXXMXMMMMMAMAMAMAAMAMAAAXXXXSAMXMMMMMMSASASXXAMXMAXXMAAMSMMSMMASASMMSMSMAMSMMXMMMMMXXXASXSSMMSSMMMMXSXSXXSAMSSXM
ASXSAMMMXMMMAXXMAMAMMMMMMMSMSXSSXMASASMMSAXSXMXAMMMMMSMXMASXSASAAASXSAMXSMSASXSXXSMXMAAAAMAMMMMAAXAXASAMXSAMXAMMSMAMAAAAAXXXSXSMSASAAXXSXMAS
MSMMMXXAXAXAXSASAMMXAAMAXAMASAMXXSASASAXXAAMAMSASXSAAAAAXXAASASXSMMAMAMXAXSMMAAMXMMASMMSXMSMMAMMMSASMSMXMASMMAXAXMAMSSSMMSAASXXAMAMMMMMAASMM
XXAXAAMXMMMMMSAMXSXSSSSSMAMAMXMAAMAMMMMSAMXMAMXAMASMSMSSSXMXMAMXMAMMSSMMMMSXMSMMAXSASAMMMAMXMAXAMMMSXMXMAXMXSAMSMSXMAAXMSMMMXAMMMXMAAAMMAMXS
MMSMMXSAAXAXXMMMMAMAAAAMMXMAMXMASMMMAXXAXMXMAXMAMXMXXXAAMXMAMXMASAMXAXAASAMXXMASXXMASXAAMAMASXSXSAAMMMAMMAMAAAXAASXSMMMMAXASXXMAAASXSXSXMMAS
SAAXMAMXSMMMSAMMAAMMMMMMAXXAMSAMXMASMSXASAXAAXSXMSMASAMAMAMASAMMSAMXASXMMMSMXMMMMMMMMMSXMAXXMXAASMMSASAXSAMXMSAMXMASXXMSMSSXMASXMXMXMASXSMAS
MSSSMMSMXMMMXAMXSXSAMXXMAMMAMXAXXXXAXMMMXMSMMMMAMAMMSASAXSSMMASXXXMMAAMSXMSXSAAAMSSMMMMASAMSAMMMMAMXXMAMSMMSXXMXSMMMAXMAMXXAXXMASMSMSASASMMM
MAMXXMAMMSXSSMMXMXSMSMMMAMSSMSSMMMSSXMASMXSASASASASMSAMAXXAMXSAMXAXSMSXSAASAMSSMSAAAAAMXMAMSAMSASAMSSSXXXAAXMASAMAXSSMSMSMSMMMMMAAAMAAMXXAAA
SAMMMSAMXAAXMSMAMAMXSAASAMXXAXAAAXAXASXSAMXASASASASAMAMXMSAMMAAXSMMXAXASMMMSMAMXMMSMMSSXSMMMAMXASXSAMXMASMMSMSMMXSMMXAXAAAAMAMAXMMASMXMSMMMS
AAAAMMMMMMSMAAMAXXSAMMMMAXXMMMSXMXAXMMMXMAMXMMMMMMMAMXMXXMMMSSMMXSAMXMXMXSAAMAMSXMXXAXXXXMSXSMMXMMMMXAAAXAMSMXASAXAXMAMSMSASASXSSMASXSSMXSMM
XSMXSASAMXAMMMSXSAMXSAMSSMMAMAMASMSMSASXMSXSAAXAAXXXSXMSXAAAMAMMXMSSXMASAMXXMAXAMXMSMXMMMMMAMAMAXAASMSMXSMXMASAMASMMAXMXAMMMASAAXMAMMSAAASXS
XXMMSASXMSASXAAMMMMAXXXAAXASMASXMXAASAMAAMASXMSMSXSMXAAAXSMXXAMSAAAMASAMASASMSSMAAAAMAAAAAMXMASMSSMXAXMAMXAMMMSMMMMXSSMMXSSMAMMMMMMSXSMMMSAM
XSAMMAMAXSAMXMMSAMMMSMMSSMSMMMSMSXMMMSMMMMAMAMSMMAAASMMMXMXSSSMSMSSSMMASAMASAMXXXMSASXSSSMSAXXMAMAAMSMSMSXXXXAMXSAXAMAASAMXMMXAXAAASXMASAMMM
MSAMXAMXMMAMMMASXSASAAMXXMXSAMXASAXXAAXXXMASAMXASAMXAMXXAXAMAXAMAAXXXSAMMMXMMMMSXAMXXAMAMASMSMMASMMMMAAAMMSMMXMASXMSXSXMASAMSSSSSSXSASAMAMXS
ASAMSSSXSSSMAMXXXSMSMSSMSMMSXSMXXSMMSSXMMSMSMXMXMAXXMXSSMMSMAMMMMMSSMMMMXSAAMMAAMSMSMSMAMXMAAAXASAMXMMMXMAAAASMMSXAXAMMSXMASAAAMAXASAMXSMMAM
MXAMXXMAAAAMXXASAMXSMAMASAMMXMXMSMMMAMXAXXAXXSAMXXMMMMMAMAMXSSMASXAXXAMXASXSMSAMAMAMAXMAMSSSXSAASXXXAXMAMSSSMSAAMMMMAMASAMXMMSMSSMMMSMMXMMXX
MSSMMMMMMMMSMMSAMMASMASMSAMXAXAXAAXMASXSMMMMMAAASXSXSASAMXSMXAMASMSMSASMMMAXAXXXAMAMMMSMSAAMAMMXMASMMASXXAAAASXMMAAMSMMSAMAMAMXAXXXAAXXXMMMS
XAMAMAAAAXSAAXMASMXMXASXSMMSMSMSMMMMXMAMXAAMMMMSXASAMXSASMSAMMMXMXXAMAXMSMAMSMMSMSXSAAAXMMMMAMXASXMASAXMMSSMXMASXSXSAAXSAMXMASMMXAMSSSMXMAAA
MXSASXSXXXSMMMSAMMAMMXSAXMAAMAAAAASXMMAMSSMMAASAMXMAMAXXXMMXASAMMSMXMXMXAMMSMAXMASASMMSSMXXMAXSASASMSAMXXAMXAMMMAMMXXXMSAMSSMSAXAXAMMAAASMSM
AASXSMXXSXMSSMMSMMAXSXSASMSSSMXMSMSAMSSXMAAMXMMAMMSAMMSMXSMSMMASXAAXMAMMMSMAXAMXAMAMAAXMAXMMAMMAMAMXMMXMSASMXMAMAMMSMSAMXMASMSMSXSSSMMSMSAMX
MMSASASMSAAXXXAAXMAMSAMAMXAXMAMXMASAMAMASMMMSASAMASXXMAMAMXAAXAMMMXASMXXAAXAMXSXSMSXMMMSASXSSMMSMMMSXMAMMAMASMSSMMAAASXSSSMSXXXSAMAMMAXMXAXM
SXMXMAMASMMMXMASAXXAMAMMMMMSMMAAMASMMAMXMAAMAXXASXMAMSXMASXSSMMSAXMMAXAASMMMSAXXXAMSMSMAAXAAASAXASAXASXSMSMAMXMAMMMMMXAMAAXMMSMMMMAMMMMMMAMA
MASXMMMAMAAAXAMMASMMSXMXAASAAMSXMASAMASMSSMSMSSMMMSAMMASAXXAAAXXXMXMAMXMAAAAMMSAMXMAXAMMMMMSMMXSAMXXMMMMAAMXSXSAMXSMSMXMMMMXAAAAMMXSAAAMXMAS
SAMAAXMAXMMSAMAAAXAXAMSSMSSMSMXAMXMXMAXXAMAMXMAAMASAXSAMMSSSMMMSSMSMSAXXSMMSAMXXXAXMSMSAAXXMAXAMMXSSMAXMMMSAMAMMSXMAAAASMMXMSSSMSSMSXSSMASMX
MASMMMSSMXAAMXAMMSMMMSAAXAMMXASXMAMMASMMXMAMASMMMASAMMMXXAAAMXMXAAAAMSMXMXAAXSAMXXXXAXXXSSXSAMXSMAMASMSSMXSAMSMAMAMSMSASXAMMMMAAAXAXXXAXAXMX
SAMMXXMAASAMXMXAMAMAXMXXMMSMMXMXMMSMAMSAAXASAMMSMXXAXASXMSXXMSASMMMSMXXAMMSMSMXSAXSSMSXAXAMXMSMAMSSXMMAASMSXMAMASMMXAMAMXSAAAMMMMXSMMSSMMSSS
MASMXSMXMMAAMSSXSASMMXSMMMAAMXXAMAMMSMMXMXAMMSMAXSSMMMXAAMASAMAMMAMXXXMMXAXXMMAMMXXAASAMMAMAMAMXXAMASMSMMMMMMSSMXXSMMMSMAMSSSSMXSMXAXAAAAAMA
SMMMAMAMXSXMSMMASASMMAMAASMSMMSMSAMXMSMASMSMAAXXSMAXSMSMMMMXAAAMMSMSXMASAMSAAMAMXMMMMMAXSAMASMSMMASXMAXAMXSAAMAMXSMSMAAMAMMXMAMAMXSMMSMMMSSM
XAAMXMAAMMMMAAMAMXMAMMSSMSAMAAAXSXMSMMMAMAAMSSSMMXXMAMSXMAXSAMXSXXASASAMXXSMMSMMSAMSXSSMSXSASXAXSXMASASAMMMMXXAMSAAAMSXSMMSASXMMXAMXAMMSAMAX
SSMSMSMXAAAMSSMMMAMAMXAXSMAMMMSXMAMMASMSSSXXXMXAXXXSXXMASMMMSMASXMMMAMXXSAMXXAMAAMAMAMAAXMMXMMAXAMSAMAXAMAXMSSSMMMSMXMASAASASXAASXMMMSMMASMX
XAAXAAXXSSXMAAASXXMASMMXAMAMXMMAXMMMXMAMAMXXMASMMXMXMMXXMSAXAMASASXMXMXAMXSXSASMMXXMAMMSMXSAMXMSMMMSMMSMSMSAXXMAXXAXAMAMMMMAMMMMXXAAMAXSAMXM
XMAMSMMMMAXMXSMMASMMMXXXSMMSXSSSMSSSSMXMAMXSAMXAXAXAMXXMASXSXSXSAMXMAMMMAASXMAMMXMAXASXMAXMASAXAAXAXXXAMAAMMMMSXMXMAMMXMXXSAMXSAMSSMSMMMXXAX
MXMAAASMMMMXAXAMAMAAMMSMMASMMAAAASAXXAASAMAAAMSSXMSMXSAMAMMSAXMMXMXSAXAXMMSASAMMASMSMSAMMXMAMXSSSMMSXSASMMXAAAMXMMXMXMMSSMMAXMMAXMAASXASMSSS
ASXMMSMAAMXMASAMXMMAMAAAXXMAXMMMMMMMMSMSASMSSMAXAAAXXAAMXSAMAMAMSMMMSSSSMXSAMMXMASXAAXAMXSMXSAMXXAXSAXAMXXSSMSMAMAXXAMASAMSSMAXMMSMMMSASAAAA
SXMASAMSMMAXXXAMXASXMSMSMMSSMXXXAAXAXXXXAMXAXMASMMMSSSMMXMXXXAMXAAAAXMMAMAMAMAAMMMMSMSMMXMAAMAMXSSMMAMSMSAMXAXXMXAXSMSMSAMAMASXXAAAXXMMMMMMM
ASMMSAMXMSXSMMAMXMSAAXAXAXAMXAXSSSSSSXMMSMMMXMASAMAMMAASXMSMXSSSSSMXSMSSMXSAMMXXAAXXMAXMXSXMXAMXMAAMAMAAXXXMXMASMMMXAAASXMXMXXAMMXMMXMASXXXA
MXMASMMAMSAAAASMSSMMMMAMXMAXAMAMXAAXMAMAAAAXXMXSAMXMMSMMAMAXMXAAMXMAAMAAAMAMMXASMSMMSMSMAAAXSSMMXSMMMSMMMMXMXSMXASASXMMMSMASXXMAXAASAMXSXAXA
MMSASMSXMMMMXMXAXAXMXMXMASXMSSXMMMMMSSMSSMMMMMMXMXXSAXMSSSMSXMMMMAMSXMMSMMAMMMMAAAXAAAAMMMSAXAAMXXAXAMAMASXMASXMXMAMSAAAXMAMAAXAXSSMASAMXSMM
XAMXSMMXSAMXSXMXMMMSXMAMXMMXAAXSAMXMAAAXMAXXASMAMXMMASXXAAXMASXMMXXAASXXXSXSXXXMSMSSMSMSMAXMSSMMASAMXMXSAXAMAMMXSMSMSXMSSMMSSMMSXXAXAMAAAMAM
MSSSMXSASMSAAAAXMXXAAMMSSSMMMSXMASAMSMMMSAMASXMASASMMMMMMMXMMXAXMMMSSMASAMAXMAMXXXMMAAMXMMSMMMAMASXMMSMMASMMSSSMAAAAXASXAAAAAAAXXSAMXSXMXSAM
SAMAAAMAMXMMSXSASAMMSXAAAAAMXMMMAXXMAMXXMASXMASMSASAXASMSMASMSMMSAMXAMAMAMAMMXMAMAXMSMXSAMXXAXMMMXASXAAMAMXAAAAXMMMMMMMAXMMSSMMSMMAMXSAMXMMM
MASMMMMAMAXMAAMXSASAAXMMSSMMXXAMMSMSMSMXMASAMMAMMMMMSXSAASASMAMASASXSMXMASXSMAAASAMXMXASXXXSXMMASMMMSMSMMSSSMSMMXAXSASXSMMXMXAAAASAMXXAAASAS
SAMXMXSXSASMMSMASMMASXXAXAAMASAMXAMMXMXASAMXAAAMASAAMXMMMMSSMXMAXMAMXASMAXMAMXSMSXAASMMSMMXMAXSAXSAAAXAAXXAMAAAAXSXSASAAXXAAXMMSMMASMMMMASAS
SAMXMASAMXSASMMMSXSMMMSSSSMMAAXXSSMSASMMMMSMSSXSASMSMSXMXMASXSMMSAMXSASMSMSMMXMASXSASMXMASXSAXMXMAXSXMXSMMMMXMASMXAMAMMMMMXSASAXASXMAAMAMMMM
XXAAMMSAMASXMAAASMMAAXMAAMAMMXMMMMAMASXXAMSAAXMMMSMXAMAMXMASXSAAXAMAMAMAAXAASXMASXMAXMASXMAMXSXSSSMMXSAMMAXXXXAXAMXMXMMMSXAXAMXSMSAMSSSMMAXA
MSSSXXXAMXSMSMMXSAMSSSMMMMSMMAAAAMAMSMMSMSMMMSXMASXMMSAMAMMSXMAMXXMXMMMXMSMMMAMASXMMMMMMSMXMAXAMAXXAASASXSSMXMAXMXMXMAAASXMMXMASASMMXAXXXXMM
AAAMMMSAMXMMAMSAMMMAMXXSXMXASXSSXMAXXAAXSAMAMSAMXSAMXAAMAXMXMMAMXSXMSAMXMAMASXMASAAAAAAAMMSSSMAMMMMMMXAMAAXAMSMSMAXMASMMSAXAXMXMAMXSMSMSXSSS
SMMMAXSMMMSAMXMAXSMASMAMMSMMMAAAAASASMMSMMSAXMXMASAMXMMMXXSAXMAMXAAASAMXSXSAMAMAXXSXSSMSSMAAASXMXAAASMSMMMMXMAAAMXMAXXSASAMMSMAMAMSAAMAMAXAM
AXXMSMMAAXXMXMSMMASMXMAAMXAXMMMSMAXASAMXAASMMSXSASXMMMSSSMMASMXMMMSXSAMAMXMASXMMSMXAMXXAXMMSMMXXSMSASAAASXSASMSMMSASXAMXXXMAAXASASXMMMAMMMSM
MMSXMAMSASXMAXAAAMXXXMXSAXSMXXAMXMMSMXMSMMXAASMSASAMAXAAAMMMMASXSXXAMXSAMASMMXAXXAXAXXMASMXAAXAXSAAMMXMMMAXAXAAAXXAMMSMSSSSXSSMSXSAMXSXSAAXM
SMSASAMMAMXSASXSMXMMSMAAMSMMAMAMAXMXMAMMASXMMSAMAMAMSMMSMMAAMAMAXXMXMAMASASMAXXSSMSSMMXAMAMSXMXXMAMMMMSAMSMSMSMXMSMMAMAAAAAAXMASAXMAXAASMMSS
SASAMASMAMXMASMMMAMAAMAMXAXMAAMSSMMXSAXMAMMXMMMMXSMMXAAMXSXMMAMXMSMMMMSAMAMMSXMAAAAXAMMSSMAXASXXSSMSXASMSXAXMAMSMMMAXMMMSMMAMXAMSMMSSMAMAAMA
MAMAMXSXMMMMMMMASAMSSSSXSMSSMSAAXAXASXSMXSAAXMXMAXAXSMMMASAMSASMSAAAAMMXMAMMMAMMMMMXAMXAAXMSAMAAAAAXMMSXMMSMXMMMAAAAXSXAMXSXMAXMAMXAAXXMMMSM
MSMXAAMAMXAXMAXXXAXMMAMMMXMAAAMMSMMXSAMAMAMMSXSMMSMMASMMAMAMXMMMMXSMSMSASXSAMAMXXAXMSSSSSMAMAMXMSMMMMXSAMAMAXSASXMMMASMMSASAASXSASMSMMMXSAMX
SMMSSMXAMMAMMMMSSSMAMAMASAMXMMMAAASAMAMAMMXXMASXMAMXMAXSAMMMSMMMSMXXMASAMXMXMSMMSXSAAAXMAMXSSMMMXAAXSASAMXXXXMASAAXSAXAAAASXMAASAMXAAXAAXASM
AAXAAASMXSASASXAAXSXMAXAXASMSMMSSXMASXMASAMMMMMAXAMMXMMXASXAAAAMAASAMAMAXSMSXAAXAAXMMMMSXMAXAAXXSSMSMASAMXXMAMXSMSAMXSMMMMMASMXMAMXSMMMMSAMX
MSMMSMXAASASASMMMMAMSSSMSAMAMXXMAMXAMXSXMMMAAMMAMMSAMXXSXMMSSSMSMSMMMSMAMSAMXSMMMSMMXXMXAMXMSXMAMAMXMAMAAAASXMAMXXMXMMMMXMSXMMMMMMAMMSAAMAMX
XAAXMXMMMMAMXMAAXXXAAXAMAMMSMSMMAXMASXSMSSSSSSMAXSAXAAXMXSXAAMMSXXAMAXMXSMASAMXSXXASMSSSMMSMMMSMSAMMMMSXMSMSAMXSAMXAAAAAAXMAMXAAMMXSAMXSMSMA
SMSXSASAMXMMMSSMXSAMSSXMAMXAAAMMAMSMMASAAMMAXAMXXSAMMSSMASMMXMASXXAMXSXMXMAMAXAXMSAMAMAAMAAMMAXASMSAAAAXAAASAMASAASXSSMXAMSSMSSSXAAMXMXMAMAA
SXMAMXSAMAMAXAAMASXMAAASAXSMSMSMAMAAMAMMMSSSSSXSAMXMXAMMAMAXAMXSMSMMASAMASMSXMMSMMAMSMSMMSSSMMMXMAXXAMXMSMXMMMMSAMXAXAMSSMAMAMAMXMMSAMAMAMAX
XAMAMXMXSASXSSXMASAXMSMSAMSAAAXXSSSSMAXAAMMAAXAASXAXMASMASMSSSXMAAAMASMMAXXAXAAAAAXMAMAAXAAXAASAMXMMXAXXXSAMXAASMMMSMMMAAMAMAMAMXAAXMSMSXSMX
SXMASMAMSAMXMASMMSAMXAMXMASMMXMAMMXXXXSMSSMMMMXMASXSXSXMMSXXMAMMSXSAMXMMASMXMMSSSMSSXSSSMMSSSMSMSAXXMASXMASXSMMSXSXAASMMSSMSXSXSXMSMMAMXMAMS