diff --git a/Advent24/Day4.cs b/Advent24/Day4.cs new file mode 100644 index 0000000..4d7ceef --- /dev/null +++ b/Advent24/Day4.cs @@ -0,0 +1,239 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection.Emit; +using System.Text; +using System.Threading.Tasks; +using System.Text.RegularExpressions; + +namespace Advent24 +{ + internal class Day4 + { + public Day4() + { + string fileData = System.IO.File.ReadAllText(@"..\..\..\inputd4.txt"); + + // get width of line to be able to navigate the text block in + // both dimensions + Int32 textWidth = fileData.IndexOf('\n'); + + Int32 linearPosition = 0; + + Int32 numberOfXmases = 0; + + Boolean activatePart2 = true; + + Int32 numberOfX_mases = 0; + + Boolean rightBoundaryCheck, leftBoundaryCheck, + topBoundaryCheck, bottomBoundaryCheck, + bottomRightBoundaryCheck, topRightBoundaryCheck, + bottomLeftBoundaryCheck, topLeftBoundaryCheck; + + if (activatePart2) + // Find the 'A' starting from where we are currently positioned + linearPosition = fileData.IndexOf('A', linearPosition); + else + // Find the 'X' starting from where we are currently positioned + linearPosition = fileData.IndexOf('X', linearPosition); + + while (linearPosition < fileData.Length && linearPosition != -1) + { + Console.WriteLine("linearPosition = {0:d}", linearPosition); + + if (activatePart2) + // check that we're at least 2 away from the right boundary + rightBoundaryCheck = (fileData.IndexOf('\n', linearPosition) - linearPosition) > 1; + else + // check that we're at least 4 away from the right boundary + rightBoundaryCheck = (fileData.IndexOf('\n', linearPosition) - linearPosition) > 3; + + if (activatePart2) + // check that we're at least 2 away from the left boundary + leftBoundaryCheck = + fileData.LastIndexOf('\n', linearPosition) == -1 ? // first line + (linearPosition >= 1) : + (linearPosition - fileData.LastIndexOf('\n', linearPosition)) > 1; + else + // check that we're at least 4 away from the left boundary + leftBoundaryCheck = + fileData.LastIndexOf('\n', linearPosition) == -1 ? // first line + (linearPosition >= 3) : + (linearPosition - fileData.LastIndexOf('\n', linearPosition)) > 3; + + if (activatePart2) + // check that we're at least 2 away from the top boundary + topBoundaryCheck = (linearPosition - (textWidth+1)*1) >= 0; + else + // check that we're at least 4 away from the top boundary + topBoundaryCheck = (linearPosition - (textWidth+1)*3) >= 0; + + if (activatePart2) + // check that we're at least 2 away from the bottom boundary + bottomBoundaryCheck = (linearPosition + (textWidth + 1) * 1) < fileData.Length; + else + // check that we're at least 4 away from the bottom boundary + bottomBoundaryCheck = (linearPosition + (textWidth+1)*3) < fileData.Length; + + // check that we're at least 2 (part2) / 4 (part1) away from the bottom-right boundary + bottomRightBoundaryCheck = bottomBoundaryCheck && rightBoundaryCheck; + + // check that we're at least 2 (part2) / 4 (part1) away from the top-right boundary + topRightBoundaryCheck = topBoundaryCheck && rightBoundaryCheck; + + // check that we're at least 2 (part2) / 4 (part1) away from the bottom-left boundary + bottomLeftBoundaryCheck = bottomBoundaryCheck && leftBoundaryCheck; + + // check that we're at least 2 (part2) / 4 (part1) away from the top-left boundary + topLeftBoundaryCheck = topBoundaryCheck && leftBoundaryCheck; + + if (activatePart2) + { + // check corner boundaries + if ( + topRightBoundaryCheck && topLeftBoundaryCheck && + bottomRightBoundaryCheck && bottomLeftBoundaryCheck + ) + { + if ( + // check bottom-right and top-left diagonal + ( + ( + fileData[linearPosition + (textWidth + 1) + 1] == 'S' && + fileData[linearPosition - (textWidth + 1) - 1] == 'M' + ) || + ( + fileData[linearPosition + (textWidth + 1) + 1] == 'M' && + fileData[linearPosition - (textWidth + 1) - 1] == 'S' + ) + ) && + // check bottom-left and top-right diagonal + ( + ( + fileData[linearPosition + (textWidth + 1) - 1] == 'S' && + fileData[linearPosition - (textWidth + 1) + 1] == 'M' + ) || + ( + fileData[linearPosition + (textWidth + 1) - 1] == 'M' && + fileData[linearPosition - (textWidth + 1) + 1] == 'S' + ) + ) + ) + numberOfX_mases++; + } + } + else + { + // check right characters + if (rightBoundaryCheck) + { + if ( + fileData[linearPosition + 1] == 'M' && + fileData[linearPosition + 2] == 'A' && + fileData[linearPosition + 3] == 'S' + ) + numberOfXmases++; + } + + // check left characters + if (leftBoundaryCheck) + { + if ( + fileData[linearPosition - 1] == 'M' && + fileData[linearPosition - 2] == 'A' && + fileData[linearPosition - 3] == 'S' + ) + numberOfXmases++; + } + + // check upward characters + if (topBoundaryCheck) + { + if ( + fileData[linearPosition - (textWidth + 1)] == 'M' && + fileData[linearPosition - (textWidth + 1) * 2] == 'A' && + fileData[linearPosition - (textWidth + 1) * 3] == 'S' + ) + numberOfXmases++; + } + + // check downward characters + if (bottomBoundaryCheck) + { + if ( + fileData[linearPosition + (textWidth + 1)] == 'M' && + fileData[linearPosition + (textWidth + 1) * 2] == 'A' && + fileData[linearPosition + (textWidth + 1) * 3] == 'S' + ) + numberOfXmases++; + } + + // check bottom-right diagonal characters + if (bottomRightBoundaryCheck) + { + if ( + fileData[linearPosition + (textWidth + 1) + 1] == 'M' && + fileData[linearPosition + (textWidth + 1) * 2 + 2] == 'A' && + fileData[linearPosition + (textWidth + 1) * 3 + 3] == 'S' + ) + numberOfXmases++; + } + + // check top-right diagonal characters + if (topRightBoundaryCheck) + { + if ( + fileData[linearPosition - (textWidth + 1) + 1] == 'M' && + fileData[linearPosition - (textWidth + 1) * 2 + 2] == 'A' && + fileData[linearPosition - (textWidth + 1) * 3 + 3] == 'S' + ) + numberOfXmases++; + } + + // check bottom-left diagonal characters + if (bottomLeftBoundaryCheck) + { + if ( + fileData[linearPosition + (textWidth + 1) - 1] == 'M' && + fileData[linearPosition + (textWidth + 1) * 2 - 2] == 'A' && + fileData[linearPosition + (textWidth + 1) * 3 - 3] == 'S' + ) + numberOfXmases++; + } + + // check top-left diagonal characters + if (topLeftBoundaryCheck) + { + if ( + fileData[linearPosition - (textWidth + 1) - 1] == 'M' && + fileData[linearPosition - (textWidth + 1) * 2 - 2] == 'A' && + fileData[linearPosition - (textWidth + 1) * 3 - 3] == 'S' + ) + numberOfXmases++; + } + } + + // increment linear position to start the search again + // from the next character + linearPosition++; + + if (activatePart2) + // Find the 'A' starting from our updated linear position + linearPosition = fileData.IndexOf('A', linearPosition); + else + // Find the 'X' starting from our updated linear position + linearPosition = fileData.IndexOf('X', linearPosition); + } + + if (activatePart2) + Console.WriteLine("numberOfX_mases = {0:d}", numberOfX_mases); + else + Console.WriteLine("numberOfXmases = {0:d}", numberOfXmases); + + + // to keep the console window from closing + Console.ReadKey(); + } + } +} diff --git a/Advent24/Program.cs b/Advent24/Program.cs index 96ddfe0..08f9a90 100644 --- a/Advent24/Program.cs +++ b/Advent24/Program.cs @@ -9,7 +9,8 @@ namespace Advent24 { //_ = new Day1(); //_ = new Day2(); - _ = new Day3(); + // _ = new Day3(); + _ = new Day4(); } } } diff --git a/Advent24/inputd4.txt b/Advent24/inputd4.txt new file mode 100644 index 0000000..1e0e3c4 --- /dev/null +++ b/Advent24/inputd4.txt @@ -0,0 +1,140 @@ +SXXSAMSSMMSMMSXXXXMMXMMMMSMMMSSSXSAMXMXSXMASXMSMXSMMXSMSXMMASXMASMSSMMXSMSSSSSSXSXMAMXAMXSMSXSXXMMMMMXXMSSMMSXSASASMMSXMASXSSSSSMXMASMSMXAMX +SAXMASAXMASAAXMASXSSXSAAASASAAXMASMXXSASAMXAAAAMMSAMAMXSAAXASAMSXXAAXMMSAMAAAASAMXXMMSXSASXSAMXMSAAAMMMMASXXAAXASXSAAXAXAAAXAAXAMSMMMAAAASMM +MAMSXMAXMMXMMXAXXXAAASMMMXAMMSMMMMXMXMASXMASMSMSASAMMMASAMMXSAMAXMSSMSAMAMMMMMMXMSMSMAAMASXMAMAASXSXSMAMAMMMMSMAMAXMMSAMMMMMMMSMMAAAMSMSMAAS +AAMMMSMSMSSMSSSMSMMMMMMMXMAMXAXAAXAMXMAMAAAXXXAMASXMAMXSXMSASAMXMXXAAMXMAMXXXXMMXAAAMMMMSMXXAMXXSXMAAMSMAMAXAAMXMSMMXXAXAAXMXXSXSSSMMAMXMSSM +MASXAAAAXXAAAAAAXAMAMXSAXMSMSMXSSSXXAMASXMXMMMXMXMXSXXAMAASAMXMMMSMMSMSMSXXMXSAAMMMMXAASXASXMSXXSAMSMMXSXSASXSSMAMAMAXSMMAMMXMMAXAXXXAMAXMAX +MAXMMMSMSSMMMSMMMSMASXMXSXAMASAAMXMSMSXSXMAXAXXSXMXMAMMSMMMMMASAAAAMXASAMXSMAMMSXMSSSXSAMXMASAMXMAMXXMMMXMASXAAMAMASMSMMXSXMAMMXMMMMSSMMSSSM +ASMSMXXXMAMAAXXMAXXAXXAAMMMSAMXSMAAAAAXMMXMSSXMXMMAMAAXAMMAMMASMSMSMMAMAMXMMASXMAAAAAMXMMASMMXMAXAMXMASMXMXMMMXSAXMAMSXAAXASMXSAAXXXAXAXAAMX +MMAXMASXXAMMMSMMSSMMSSMMSAXMAXSAMASMSMAXAAMAMASAXSASMXMAMSASMMSXMMMXMAMAMAMMXSASMMMMMXMAMAMMASMSSSSMAXXMAXAXXMAXAXSSMSMMXSAMSAXSSMMMMSMMMSMX +XMXMXMASMMMAAXXMASAAAXAASXSSMMSAMXAXAXMMSXSAXXMAXMXMXAMAMSAMMASXMASAMASASMSMAMAMXASXSSSMMSSMXSAAAXMXXMASMSASAMMSSMAAAXAMAMAMMMMMXMAXXAXAXAXS +MSXMAMAMMXMMMSAMASMMSSMMSAXXAAMAMMSSMASAMXMMMSMMMSSSSMSAMMAMXMSAMASASASASAAMMMSMSXSAAAMXSMAMMMXMSMSSMAMSMAASMAMAXMMMMMSMASAMASXMASASXMSSSXSS +MMXSAMXMSXSAAXXMAXXAXAXMMXMSMMSAMMXAXAMXMAAAASAMAXAAAMSAMSAMXXSXMXSAMAMMMMSMSAMXSXMMMMMMXXAMMSAMXMASAAASXMXMMXMAMMXSAMAMAMASASMSAMMSAXXAAXAX +XXXMMSAAAAMMMSASMSMMSSSXSAXAAASMAXMAMSSSMSSXMSAMSSMMMMSMMMSMMMMASAMXMAMXAAXXMASAMMMXMMAMSSMSXAASAMMSSMXMAXSAMXMASMAXAMSSSSXMMSAMXSSXMXMASMMS +MAXAAMMMMMMAMAAAMAAXAAXASMSSMMMMSSMAMMAXAAAMMMMMAAAAXXMAMAAXAAXAMASMSMSMMSSXSAMXXAMAMSASAASAASMMMSXMXMASXMMAMAXAAMMXSMAAMXXMAMXMMXMAMXMAXAAA +ASMMSXXAAMSSSMMMSMSMMSMMMXAXAMXAAXMAMMAMXMSMMAAMMSMMMXSAMMSSSSSXSSMAMAAXAMXMSMMMSSMMMAXMMSMMMMAXAMMMASAXAASAMSMSSXSAMMMMMXXSAMASXMMXMSMMSSSS +SXAXXASXXXAAXMMXSMAMSAMXSMMSSMMMSSMMSMMMXXMASXMXXAMXMMMSSXAAAAXAMXMAMMMMSSXXXMAMSXAXSASMXAAXSMXMASASXMXSSMMMXXAMXAMXMAMSXXXSASXSMMMSMSAMXAAX +ASAMXXMASMMSMASAXSXMXASAXAXAXAXSXAMAMAASXXSAMXSAMXSASAAAXMMMMSMSMXXMMXAAMMMMMSSSMSSMAAMXSXSMASASXSXMAXAMAASMSMMMMMMSSMSSMMMSXMAXAAMAASXMMMMM +AMXXXXMXMXMMAMMXXAMXSAMXSSMSSMMXMXSSSSMSAAMAMASMSMSASMMMXMXXXAAAXSMSMSMXSAXXAAMAAXXXMSSXSAMXAMMSAMXSMMSSSMSAXAAAAXXAAXAXAAXSASXXXMSMMMMXAAAA +MASMMXSASMSMSMMMMMXXAXXAXXAXXMAXSAMMAMAMXMMMMXXAMAMAMXMAXSASAMMMMSAAAMMASMMMMSSMMMMXXAMASMMMSSMXAXAAXXXAMAMAMSSSMXMSSMMSMMSXAXSXSAMXMAASMSSS +MASAAXSAMAMXAAASAMSAMXMMMMSMSMSXMASMAMSMMXMSMMMSMSSSSSXAASASAXXMSMAMSMMASAMXAMXMAASXSMMAMXSAAAASMMMSSMMAMXMAMXAXASMMMAXSXMSMSMAMSAMXXMXAAMAM +MAMMAXMAMSMXSSMSASAMSASAAMAXAAMMSAMXMAMAMXAAAAMAAXSAXAMMXMAMMMSMAMXSXMMASAMSMSAXSMSAMXMAXXMASMMMXAXAXASAMMMSSSMMMMAAMMMXAMXAAMSMSMMXAMAMSMSM +MMSMSMSAMMSMAAAXXXAMSASMSSMSMSMASXMASASAMXSSSMMMXMMXMMXSAMXMMAAMAMMMAXMASAMAASAXMAMXMASXSASMAMAXMMMMMMAMXSAAAXAMXASMMASMSMSSMSAAXMXAMXAXXAXA +SMXAAXMAMAAMXMXMXXXMMMMXMAXMAMMXMAXAMXMXMMMXXMMSMSMAAXSSXAAXMSSSMSXSAMMMSXMMMMXMXASXMXAASAMAAAMMSXAXXAXXAMMSMSMMAMMXXMAAAAAAXSXSMSMSMMMSMMMX +AAMSMSSMMSSSXAMSMSMSMSSMMSAMXMASMSMXSMSMSAMXMMXAAASASMAMMMMSMAMAAMASASXMXAMXSMMSSXMXMMSAMXMSSXXAASXSSMMMASAMXMXAAXMASXMSMMMSMSAMAXXAAAAXAAMM +MXMXAXAAXXAMMSMAAAAAASMAAXAMXSAXAXAMMAAASASXXASMSMMSAMASAASAMXSSMMASXMASXSAAXMAMMAXAXMAASMXAAAMSMMMXAAXSMMASASMSMMSAXAXMXSXMAMAMMMMSXMMXXMSM +XSAMXSSMMMAMAXSMSMMMXMXXSSSMAMASMSSSSMSXSMMMMMSAAAMXXSASXMSASAAAAMXSASASMAMSSMSSSMSMSMMXMMMMMMMAAAMXMMMXASXMASXAMXMASMMXASAMSSSMSSXXXSSSMAAM +MMASAMXMAMAMXMMMAXXXSMSMAAAMMSXMXAAMAAXAXAAXAAXMSSMMMMASXXMAMXXMMMASMMASAMXMAAAXAMAAAASMMXMAAXMSSMMAAAMSMMXMMMMMSSXAAMMMXSAMAAAAAXXXASAAMSMS +ASAMAMMXMMASXMASASMXMAAMMMMXXXAMXMSMMMMASXSSMSMXMAMAASMSXSMXSASXXMASAMXMMXXMMMXMXSMMMSAAASMSXSAMXAMSSMMAXAXAAAAXAMMSMMAMXSMMMSMMMSMMMMSMMMXM +MMXSSMSASXXMASAMAMMAMAMXSAMXMSMMAMMAMXMXMAAXAMMSSMSSMSAXAXXXMAXXAMXXAMMSXMXXSXSSXXMXXMMMMMAAAXXMMSMXAMSAXXSSMSXMAMXAMMSSMXXMXXXAXMASAAMMASAX +MMAXMAMASAMXASAMXMSAMASMSASXAAAMAXMAMMMAMMMMXMAXAAMMMMAMSMMMMAMMSMMMSMAMAMMMSAAXMAMMXMMMSMXMASXXSMMSAMMMXXAAMAMSSMMASAXAMXSAXSSSSMMSMXXSASMS +SMMSMSMAMAMMXSAMMMSASASASAMMSMSSXSSSMMMAMAAMAMXSMMMAAXAAAAAAXMMXXAXAXMXSASMAMMMMMAMAASAAXXMMSMXMXAAXAMAAMMMMAXMAMMMMMXXAMAMMAXAMXMAMMAXMMMXS +AAAXAAMXXMMMXSXMAXSAMXMMMAMAAXAMAMMAASMMSSXSMMXMAMSSSXMSSXSMSMSMSMMMSAASAMMMMXXAMSSSXSMXSAXSAMASAMMSSMMMSAAMMMMMXXAMMMSMMXSXSMMMAMASMXMASXAX +SMMSMMMMXSXSASMMSAMXMMMXSXMSSSXMMMSSMMAMAXXAXXAMXMAAXXXAXXXAAAAXAMXXMMMMASMASMMMAXAMXMAASAMSASMSASAMAAAAMMMXXAXXASMSMAAAMXSXXMAMAXMXXAMAMMXM +XMASAMXSSMAMXSAMXXMAMAMASAXAMXMASMMMMSXMASMSMSMSAMXSXXMASMMSMSMSMSAXSSXSXMMASAASMMXMXMXXMAMSAMASXMASXMMSSXSXSSSMASAAMSSSMAMMMSMSSSSMMSMAMXMA +XMAXAMXXAMAMXMMMSMXAXXSASXMAXSAMXAAXMXAMXMAXAAAMXSAXMSMMMAXMMXMAXXXXMAAXXAMXSMMAXMAMXMMXSSMMAMXMXSXMASMXAAMXMMXXAMXAMXAAMASAXAMAMAAAAXSSMAAS +SSMXSMMXSMASASASAMSSSMMXSXSMMSSMSSMMSMMMMMSMSMSMAMAXAXAMSXMXMASMSMSMMMMMSXMASXSMSXMMASAXXAASAMXMMMAXMMAXMXMAXMAMXMXMMMMMSASMSXSAMSMMMMAXMXSX +MAAAXAMAASMSXXXMAXAXMASMSAAMAXAXAAMAAAAXXAAAAAXMSMMMSSMMSMMASAXAAAAXXAAXAXMAMASXSASAAMSSSSMMXSAXMSSMXSMSXXSASMASAMMXXSSMMXSAAASMXMAASMSMSMXM +XMMMSAMSMMXMMMSSMMSSMMSXMMMMXSMMSSMSSSMMMMSSMMMXAAAAAAAASASXMAXSMSMXMXSSMMXSMMMASAMMXSXMAXSAAXMSXAAAAAXAXAMASMXMXXSAXMASMSMMMXMSASXMMAAAAMMM +XSAMMXMAAMSXAAAAAAXAMMSAMXXXAAXXAAMXAMASXMAXAXXXSSMSSXMMSAMXMAMMAXMXSAXXXSAMASMAMMMXXSAMXMMMSSSSMSSMMMMMMSMAMXXMAXAMMSMMXXAAMSAMXSAAMSMSMSAS +MSASASMSSMASMSSSMMMAMASMMMSAMMSMSMMMASAMXMASMMSXMAMMMASAMMMMMASMAMAAMMMMSMASMMMMSMXMAXMMAASAAXAMAAMAMXXXAAMAXXAMSXMMAXXMXSSMSMAMASMSXMAXASAS +ASXMMMAAAMXMMMMMASXXMXSXSASAMXXAMAXSMMXSXMXMAAXXMASXMAMAXXAAMXXMMMMMXXAXXXAMXAAXAMSSSMMSMSAMSSMMMMSSMMSMSSSMSSMAMAXMXMAAAMXMAMXMASXAAMMMAMAM +MSMSAMMMMXAMSAASMMAASMSAMXXAMXMAMXXSXMMMAMMXMSMMSASAMXSXMSSSSSSXAAMMASMSXMSSSSMSASAAAXMAMXMSMXXXXXXXAAXAXAAXAAMAMMMSMSMSAXAMAMXMASAMXMAMXMSS +AXAMMSSSXSMXXMXSAMSMMAMMMXMSMSMSAMXSASAMAMAXSAXMMAXMMXMAMAAAAAXMSMSAMMAMXMAAMAASXMASMSXMXSXMAMMSMMMSMMXMMMMMSXMASAAXAAAAASMSMXAMMXXXAXMMAMXM +MMSMXAAMMXMASXMSXMAAMSMMXMAMAXSMMXAMXMSSXSMXSAMXAAMSAMXSMSSMMMMXXASMXSSSSMAXMMMMXXAMXXASASAMAMAAASAAAXMMSSXMXASASMSMMXSMXMAAXSXSSXMSXXSASXSS +XAAMMMMMAXMASAASMSSSMMMSASMMAMMMSMMXSAMXMAXASAMMMSSXASAMXAAAXXXXMAMXAAAAMMMSXXMAMMMSXSMMASAMAMSXSAASMMSAAMAXMAMXMXAXSXMXXMMAMXAMAAMAAAXAMASX +SSSXAXAMSMMAMMMMAMAMASASAXAXAXAAXAMAMMAAAXMXMAMXAMMMMMMSMMSMMSMXMMMXMMMMMAAMASMASAASXSAMXSAMXXMMMXAMMAMMXSAMXSSMMSMMSAMAXXMASMMMXMMMSMMXMXMM +MAXMSSXXAAMMXXXMAMXMAMXMMSSMMMMMSAMAMASMSSMSSSMMMSAASAMAXMXXMASXSAMXSAMXMMXSAMMAMMSMAMXMMMMMMAAASAMXXMSXAMMSAMAAXXXASXMASXSASXSSXAXXAXAXXAXA +MXMMMMMSSSXMAXMSAXXMASXMAMAAXXAMSXMXMMXAMXAMAAXASMMMSASASXMASAXXMASASASXXAAMAMMSSMAMAMAMMMAAXSMMXAXXSSSXAMAMASMMMAMMSMMMMXMASAAASMMMSXSAMXMS +SMXAAAMAMAMAMSASASXMASXMAMSSMXMAMXXMASMSMMMMSMMMSAMXXXMASAXXMASASMMMMXMASMSMSMXMAXSSMSMSAMXSMMAMSSMXSAMXMMMSAMXMAMMAXAAAXXMSMMMMAXSAMXMASAAM +MMSSSSMAXXMAXMXMXAMXASXSXXAAXMSSSMMSMMAAMXMAXXMAMAMASXMMMXMXXMAXXMASXAXXXAMAAXXSXMMMMAMXASXMASXMAMMSMMMSMAXXMAXXXXMXSSMSAAXAAAXXSAMXXASASMSS +XAAXMAXMSXMXSSSSXSAXASAAXMSMMXAMAXAMXMAMMAMMSASASAMAXSAAAXMXSSMMMSASXMMAMAMSMMMMXAMXSASMXMXXAMXMASMAAAAAMSMXSMSMSASAMXAMXSMMSMSMMSSMSMMASAAM +MMSSSSMXAASAMAAAAMSMMMAMXMAXXMASMMXSAMAXXASXSAMAXAMXMSMMMASAAAAAAMMSAMAMMMMAXAAMMXMASASMASXMSMMSAMXSSMSXXXMMXAAAMXMMSMMMAMAXAXMXAAXMAXMAMMMS +AMAMAMMMSXMAMMMMMMXSMASXMSSMXSMMASXSASMSMMSAMAMXMSXSAMXASXMMXSMMMMAMAMSXAASXSSSXAAAMMMMMSMAMMAXMXSAXXAXMMSAMMMMSMMMAAAAMMSMMXSMMMMSXMXMMMMAA +SSMMAMXAXASAMAMXAXMAXXXAMXXAASXSMMASAMASXAMAMAAMXMASMXSXSMASAXXMASXMMMXMSXSAAAAMMMSXAXXXASXMSMMAAMMMMMMSAAAMXXAXXAMSSSMSMAMSMMMAAXSAXXASMMMM +XMASMMMMSASASASXMSMSAMSMMAMMMMASXMAMXMAMASMSMMSMAXXXXAMMMMAMXSASASMASASAMAMMMMMASAMMMMMSXXMMAAMMMSAAAXAMMMMMXMSSXMXXMAMXMAXAAASASAMAMSAMAAMX +SSMMSAAMMMMASASXSAAAMAAXMASMMMMMAMXMXMXSXXAAAXAMMMSAMMSAMMXSXSAMXSXMMAMXMAMAXXXSMAMMSAAXAMXSSSMXXSXSSMMXXAMXMAXAASXMSSMMSSSSSMSMXAMSMSASXMSS +MAMASMMMASMMMAMXAMSMXSMXAXSAAAMMXMAMXXXAAMSMMXSASXAXMAXASXXXAMMMMXAXMXMXXASXMAMMSSMASMSMXAXAAAMXMXMAXASASMMSASMSMAAAAMAXAAXAAMXMMMMMASAMMMAM +SMMMXAXSASAMMMMXMAMXMAMXSXMXSMSAASXMMMSMMMXAXXXMXASMSXSMMMMMSMAAXMMMMMMSSXSAAAMAAMXXMAXAXSMMSMMMAAAXSMMMXSASMXAXXSMMMXMMMSMSXMASAMAXXMMMMMXS +MXASMSMMASMMAAXMXSSMSASMXAAAXMMMXMAXMAMAMASMMMSMXXMAXAMAAXAAAXMXSASXXAAMMXSXSSSMASAMMXMXMXAXXMMMSMSXAAAMXMXMAMAMAXMASAXMAMMXASXAXSXSXMSAMSMS +XSXSAMXXAMASMSXMMXAASASAMMMMXMAMMXSMMSSSMMSAXAAMMMMXMXSMMMMSSSMXXMAXMMSMSAMXXXAMAXAXSMSXSSXMSAMAAXXASMMSAMSMMMAMXMMAMMMSXMAXAMXMMAXSAMMAMAAS +MMMMMMMSMSXMAMASMMMMMXMMMXSASMSXMAAAXAMAAASMMSMXAXMAXMMXMAXAAAMMSSMXSAMXMAXXSSXMAMSMAAMXXAMXXAMSMMAXMAMXAMSAMSXXMSMSSSXMASMSASAXXMXMASXSMMSM +MAAAXAAMXSASXMAMAAAXMXAXXXSASAAAMSSMMSSSMMSXAAASXMSAXASAMXMASMMAXXXAMASXSAMSAMXMSXMAMXMMSMMSMXMAAMXAMXMSMMSAMXMMAMAMAXXMAMXAASMSMXXSAMAAAXAX +SSMSMMXSAMASAMSSSMMASXSSMAMXMMMMMXAXXMAMAMMXSMAAAXMAASAMXXXMMXMSSXMMSXMAMAXSAMSMMAMXXSAAMAAXMASXMMMMSMMASASAMAMAXMAMMMSMXSAMMMMMASAMXSSSMMMM +XMAMXAAMMMAMXXAAAMSMXAAXMAMMXMXASXMMMSMSAMMMXMMMSMMSMMAXMMMMMXMAAXSXSXMXSMMSAMXSMMMMMMMSSMMXSASAAXSAAMSAMXSASXMAXXXSXAXMAXAXXAASMMMMAMMMMAAA +ASASASMSXMMSSMMSMMASMMMMSSXSAMXMAAXMAXXSMSXAXXMAXAAXAXMMMXAAMMMMSMMASXMXMXMSAMXAXXAAAXAMXMMXMSSXMXMMSXMASASMMXMSSXAMMSMSSSMMSMXSAAAMAMAXXMSS +XMASAXAXMSAAAAMMASASXAMASAASMSMXSSMMXSAMASXXMAMXMSMSMMSSMSSXSAMXMAMAMSMAMAMXAMXMMSSSSSXXMSSMSAMASMMAXAMAMMSXASMAMMAMXMMAMAMAAMAMMMMSXSMMXMAA +MMXMAMMMAMMSSMMSAMASXMXMMMMMMAMAXAXAAMAMAMMMMXMAXXXMAXXAAAASXMSASAMMSAXASASMMXAXMAMXAXMASAAXMASAMAMASAMXMASMXMMAXAMXXAMASMMMSXMSMSXSAAAASMSM +ASMMMSAAXMXAAAXMMMXMXSAMXXMAXAXMXMMXXMSMXXAAMAMSSMASXMSMMMSMSASMSAMXSAXMSASASMMXMXSMSMSXMASMSMMMSSMASAMXMAMSASMMSSSSSMSAMMAAMAMAXSAMSMMMXAAX +MAAAASASMMMMSSMMSSMSASASXMSXSAXSAXAMXMMASASXMAMAAMAMAAXAAXXXXMXAXXMXXMAMMMSAMXMAMXSMMASMMAAMXAXASAMXMAMXMAXAMXAAXAAAXMMMSSMMSAMSMMAMXMXSMAMM +MSMMXSXMMXAXAXAAAASMASXMAXAAMAMXAMXSAAMAMAMXSSSSSMSSSSMSMXMAAXMMMAXMASXXAMSAMXXASMSAMAMAMAXMXMMMXAMAXSMSMMXAXSMMMSMMMSXXXAAASXSAASMMXSAAXMAS +MMAMASMAMSSMMXMMXXMMMMMSMMAMSSSMMMASMSMAMMMXXAAAMAXAAXXXMXMSSMAMSMMMAMASMMMXMSSMSASMMMSXMXASASXSSXMMSAAXAASXMMAMAMAXXAMMSMMMMXXXXMMSAMXXAMXX +ASAMMXMAAXAMXASMSMSMMMMAXXAXXAXMAMMSAXXAXAMMMMMMMMMMMMASXMMAAXSAAAAMAMXMXAXAXXAXMXMXAXMAMSMXASAMXXMXAMMMMMXMASXMASAMXMXAXASMSSMMSAAMXSAMSXSM +MSXMMXSMSSSMSASAAAAXAXXMXXMSMMMSAXAMAMSMMMMAAMXXAAAAASMASAMSSMASXXSSXMAASMSSSSSMMAMSMSMXXASMAMMMXMASMXSXXAXXMMMXXSXMXXMXSAMAAXMASMMSMXMXMASA +XMAMXMXAMAMAMAMXMSMSMSMMSSMAAAASMSMSAAAAASMSSSMSSSSSXXXAASMAXMAXXAMAMSSMAXAXAAAAXAXAXAAMMAMXMASXMMAXXMXMAMMAASMSMMAMMSAMXXMMMMMMXXMAXMXMMAMM +MMAMAMMMMMMXMXMAXXXAAAAAAAXSXMXSAAXSMMMMMSAAAAXMAMXXMMSSMMMXXSAMMMMAMAMXXMMMMMMSSSSSSMMMMSMMAMMAAASXMAAMAMSSMMAAMSSMAMSSXMMXXSAXSASMXSAXMAMX +XXAXAMAAAMAMXMMXSXMMMMSMSSMMASMMXSXXMSMSAMMMXMMMAMSMAMXAXMMSMMAAXMSSMXSXXASAXXAXXXAAXASAAXAMXSSSMMAAASAMXXAMXMMMMAAMMSAMASMAMXAMAMXMASXXSAXX +XSMSSSSSSSMMSAXAAAXSAAAXXMAXSAXSAMXXAAAMSSXSAXXSAMASXXSXMXAXASXMXXAAMAAMSMSMSMSSMMMMMXAMMSXMXMXAAXSSMMAMXMASMMASMMSAMMAMAAMASMMMMMXMXMAMSMSM +MAAXMAXAAXAASMMMSXMXMSSSMMSXAMXMASXMSMSMAMASMXMAASMXXAMXMMMSXMAXMMMSMSMMAAXAAAXAXSASXAMMMXXSASMSMMMXMMAMXMXMAXAXAXXAMXXMXXMASASXXSMMMMSAXMAM +MMSMMSMMMMMMSAMAMAMSMMXAXAMSMXMMAMXXAMAAAMXMXMSSMMXSSMMAMAMXAXMMAAMAAMASMSMSMSMSMMASMSXXAAXXAMAXASXAMSMSSSSSSMXSSMSSMXSMMSMMSMMMMAAXXAXMASMS +XAAAAXAAXXMASAMASXMAAXMXMAMAXAMMAMXXASXSXSXSAXMAMXXXAAXXXAMSXMSASXSAXSMMAXAAXMXXXMAMMMMMMMMSXMMSAMSMMAAMAAAAMMMMAASXMASAASAMXXAAXMSMMXSXAXSA +MSSMMSMMMMSMSAMASASMSMSAMXMMSASXSSMSXMXMAXAXMSSSMSMSSMMSSMXSMASAMXAXMMMMXMSMSMXMSMMSAXXAAXMASMXMMMMSSXSMMMMMXXAMMMMAMASMMSXMAXXSSXMAMAMMMMAM +XAXXMAXAAAAASAMXSMSAMXSASASXMASAAAAXAMAMMMSMSAMXAAAAAAAAAXASAMMXMASXSXAXSAMXSMAMAASMASMSSSMAXXAMXAXAMAMXSXSXXMSMMAMXMASAXXMSMSMAMASAMASASXMX +MAMXSSSMSSSMMAMAXXMAXXMASASXMMMMSMMMSMASAAXSMSSMSMSMSMMXSMXXMXAAMMAAMSSMSXSAMSMSMSXMMMXXAXMXMSMMSXMAMXMASAMAMAAASMSSXAMXMAXXAAMSMASASXMASAXS +XSMAMXXAXXXASXMASXXMMMXMMAMAMAAXMASAASMSMXMAMXXAMXMXMXMXMASMMSAMXMMMMAXXSAMXAMXXXMXSAMSMMXAMXXAAAMMSMMMAMAMAMSSXMSAAMMSSSXMMSMSAMASMMMMAMMMS +AAMXMAMSMSSMMSXMAXAXMAMXMAMXSMMMSAMSXMMMXSXMMXMMMXSASAMXSASAAMXMXSAAMMMXMXMMMMXMAMAXXMXAMMMXASMMMSAMASMAMXSXXXMASMSMMAAASAMXAXXMMXSAAMMASXAM +XMSAMXMAAMMMAMMSASMSMSMXSAXMAMSAMXXXMSXSASMMSSMASXMASAMMMAMMMSMSAXSSSXMSSSMSAAASMMMSMMSSMASMMXSMAMXSXMMMMXAMMSMMXMASMMMSMSAMXSSXMAXXMMSXSMMX +MMMMMMSMMMAMMSAMXSXXAAAXXASMAMMAMMMAMMAMASXAAASAMMMAMXMSMMMSXAAMAMXMXAAXAAASMSMSAASAMAAASMMAAAMMAMXXAMASMMMMAAAMAMSXMAXXMASMAAMAMXSMSASASMSM +MAAAAMAMXSXXAMMXMXAMMMSSMMMMAMSAMAMAMMAMAMMMXMMXXAMASAXMASAASMSMMMMASMSMSMXMXXXSMMSASXSMMXSSMMSAXXXSXMAXAAAMSSSMSXMASMMMXMMMXMSXMAAAMMMAMASX +XSSSMSMXXXAMSSSMSMSXSAAXAAXXAXXMSASASXAMMSSSMMSMSSSMMMXSAMSMMXXXXAMXMAXAMMMSASAMXXXMMAMXMAMAMAXMMSAMXXASMMMXMAXXXAMAMAASMMMMSAMMMMMXSXMSMMMS +XXAMAMXSSMMMAAAAAAAAMMMSSMSSXXAXSXSASXXSAAAMAASAMXAXSXAMXMMXMASXSMSXMMMSMAAMXXAASAMXMXMASAMXMXSAAMAMMXMAXAMMMMMMSSMSMSMSAXAAMMMAXXSAAMMMAAAS +XMAMMMXAAASMMSMMMMMSMMXMAXXAASXMSASMMAMAMMSMMMSSMSMMAMXSMSAMXAXMASXMSAAAMMSSXSSMSAMASXSASASMMXMMXSASXMSASAMAAAAXAAAMMMAXMMMSSMSSXSMMMMAXMMMM +AMAMXSXMSMMMMMMXXXAAMMASAMMMMMXAXXSAMMAXSXMAMAMAXMAMMSMMMXMSMMMSMMSASMSMMXAMAAMASMMMSAMASXMAMXXAAXXSAAAAXXXSSSSMXMMMASAMXMAAAXMAXXAXAXXSMSSM +XSAMXMAMAAAAAXSAMXSAXSASAMXAAXMSMMXAMXSXMMSAMASMMSXMXAXMAMMAMAAXXAMMMXXASXAMMMMMMAAAMMMMMMSASXMSSSMMMMMMMSXMAMMMSMXMXMAAAMMMXMXMASMMMSAAXAAX +MAMSXXSAMSSSXSAMXXXMAMXSAMSSXXAAASMMMAMAXAMAXMXMAAASXSXSMXXASMSSMMSAMXMAMMMMAAAAMXMSMMAAAASMSAAAAAXAAMXMAXAMXMAAAAAMSSMSASMSSSSMMASAAMXMMSSM +XMAXXXMAXAMXMAXMXAMMAMXSAMMMMXSSMMAXMAXSMSSSMSSSMSSMAMASXSMAMAAXAASASAMAMAMXSSSMXSXXASXXMXSXSMMMMMSXMXXMMSSMMSMXSSMMAAAMAAAAXAXAAAMMMXSSMMXM +XXMMMMSAMMSSSSMMXAXMAMXXXMSASMAMASAMSSXXAAAAAMAAAXAMXMXMAMMXMMMSMMSASAXAXASAXMMAASXSAMAASAMXMASXAASMSMSAAAXXASAAMAMMMMMMXMMSMMSSMSSXSAMASAXS +MXXAAAXMSXMMAXAXSMMXSSSXMAMAMMXMASAMAXAMXMXMAMXMMMXSXMXMSMAXSSXXAAMXMMSSSMMMSAMMMMAAXMSMMASXSAMAMMMAAAMMMMSASMMMMAMXSMAMXMAXAXAXAAMAMASAMSMA +AMSSSXMASXMMMMXXMASMMAXXSMMSMMSMXMAMAMSMSSSXXSAASXXMASAAMMXSAAXSMMMMXXAMXMAMMAMAAMAMSAMXSXMXMMMAXSMSMSMXMASXMXSXMXMAXAAAAMASXMMSMASMSXMASAMM +MAMAMXSXMASAXSAMSAMMMXMMSAAXAMAMXSSMASAAMAAAAXXSMAXXSAMXSAMMMMXSAAMSMMASAMAXMASMSMSXSAMXXSMXSXSMSAAMAMXXMASAMAMMSSMASXMSMMMSMAXXXAMXAMXSAMXX +ASMSMAMASAMMMAMAMASMSMSAMMMSXSASMXMASMMSMMMMMSSMXXXSMMMXMAMAXXXSMMXAASASASASMAXMAXMAMAMMMSXXSAMXAMMMAMMMMXSXMASAAAMAXMAXXAMXMXMASXMSAMXMAXMS +XMAXMASMMMSAMASMSAMXAAMXMAMXMXASXXAMXXAMMSAMXMAAXSMMAAXXSSMSMMMMMXSSXMASAMASMXMAMAXAMAMAAXMXMXMAXMASASAAXXMASASMSMMSSSSSSXSAMXMXAAXMAXSMAMAM +SMAMSXSAAASASXSAMAMSMSMMSMSASMSMXMASAMXMASMSAMMMMAAXSMSMMMAAMAAAXXXMAMXMXMAMAMMMSAMSSMSMXSASAXSASMXSASXSSXSXMMSAAAXAMXAXAMMMMAMSMMMSXMAXAXAX +SMSMSASMMMSAMXMXMAMMSMXAAMSASXAAASAMXXAMAMAXMXSAMSXMAMAAAMSMMSMMSAAMSSXMAXXXAAMAMAXMAXXAXXMAMXMASAASXMAMAMXXXAMMMMMASMMMXMAXXAXAAXAMXAMSSSMS +SAXASAMXXMMAMSMMSASXAMSMSXMXMMMSMSASASMSSMMMSASAXAASXSSSMMMMXXMMMMMMAXAXASMSMSMXSMMSMMMSMMXMMMMXMMAMXMAMMAXMMMSMAASXMAAAMSMXSSSSSMASMSXAXAAS +MAMXMAMXMASAAAAMSASMAMAAMXMAAAXMMSMMASAAMMAMMASMMXXMAAMXMSMMAMAAAAMMSXMMMXAAAAXMAMMAMMAMXXAAAXSAMXMMXSXSXSXAAAAMMMXAMSMSMASXAXMAXMAMMMMMSMMM +MMMSSMMAAMSXSSMMMAXXASMXMAXXSMMSASAMAMMMMMAXSXMASMMMSMMAMASMASXSSXSAMAMXSMSMMMSSSXSASMSMAXSSMMSMXAAXMSASAMXSMSSSMMSAMAMAMAMMAMXASMXSAXAAAAMA +MAAXMASXSXMXMAXAXXMSMMXASXXMAAAMMSAMSSMAAMMMMASXSASAAASXSAMMASAXAXMASMMASXXXSXAMXASMMMAMAMXAXXMASXSMMMAMAMAMMMMXAMMMSXSAMMMSMMMMMAMSMSMXSSMA +SMSSSXMAXAMXMAXXSSMXSSMXMAASMMMMXSXMMAXSSSMAXMMAMAMXSMMXMASMMMXMMMXXMMMXMAMXMMSSMXMAXSAMXMMASMAXXMAAAMAMXMMSASAMMMAAXAMMXSAAMMAAAAAXMAMXMAMM +MAMXXXMXSMMSMSSMAAXAMXXASXMMAAXXMMMXSAMXAAXMSSMMMSMXMAMXXAXASXXMAAXMAXMAMSMSAMMMAMMXMSASASMAMMMMSMSXSSMSAMMSXMASXSMSXMMSAMMSMSXMSXSMSASMXMMS +MSMMSMSAAAAXAAAMSMMSSMSXXAAXSSXSAAAAMXMMSMMXAMAAXAAASAMXAXMAMXASMXXMAMMAXAAMXSASASXMASAMASMMMMSAMAAAXAMSXSASXSAMXSAMXAAMASAXXSMMMAMAMMSMXSAA +XXAXMAMXMMMXMMSMAXAXAXMASMMMXAAMMMMXSXMAMMAMMSSMSXMMSSSXMMMSSMMMXAXMMSSMSMSMXSASASXXAMAMAMAMAAMAMXMSMAMMASASAMAMMMAMSMMXMMASASXAMAMSMMMXXMAS +MSMMMAMMSSMMSAMMMMXSXXMAMAAXMMMMSSSMXASASMAMMAMXAASXXXXAMXSAAAMAMSMMSAXAAMMMAMMMAMAMMSSMASAMMXSMMMXMMSMMAMXMAMMSSMMMAASMXMXMAMMXXXMAXAAMMSAM +AXAASXSXAAAAMMMAXMMMMSAMXSMXMASMAAXAXASAMXAXMASAMMAAMMSMMXMSSMMASMAMMMMSMSAMXXAMAMMAAAXXMMMMSAAAAXXMAXAMMXASMSXAXMAXXMMAASMMSMAXMSSXSXSAXMMS +SXSMSAXMSMMMSSMMSXSAAXMSAMXMXMXMMSMSMAMAMSSSSMSAXXMSAAAAXMMAMXSXSMSMAMXMXMMSAXSSMSSMMSSSMXMAXMSSMSSMSSSMMSMSAMMSMAXSSSMXMMAAXMSAXAAMAAMXXMMM +XXXASMXMXAMAMMAMAAXXMXAMXSMSAMXSXAAXAXMXXAMMAASMMSXMASXSMASASXSAMAMSXMAMXMXMXXMAMAXAXAAAMSMSXXXAXAAAAAAAASXMAMXXAMSXAAAASMMMMAMMMXSAMXMXSXAM +SMMAMXSMASMAXSAMMSMSMSAMASASASASAMAMSSMMMSSMMMMMAAAMAAXAMMMASXMAMXMAXMASASAAXXMAMMSMMMMMMSAAASMMMXMMMMMMMSASXMASAMXMMMXMXAXSMXXXXAMXXMASMXMS +SAMXMASXAXSXMSXSXMASAAASASXMAMASMMAAXAASAMAMXSAMMSXMXSSMMAMXMASAMMMAXSAMASMSMMSAXAAAXXMMAMMMMMAXAMXMSXMAMMMMAMMSMMXAXAXSSMMSAMXXXXXAXXMAXSMS +XMMXMASMXMAMXSXMAMAMXSMMASXSXMXMXSXSSSMMXSASASAMAAAXAMAXXXXXXXSASAXMMAAMAMXAAXXAMSMMMMXMAMAMASMMXSAAAASXSMXSAMXMXMXSMMMMAAAXASAMSMMMMMXMXSAM +MXSAMXSAXMASAMMSSMXAAMAMXMAAMMXMAMMXMXAMXXXMASXMXSMMXSXMASMXSASMMMAMXSMMSSSMSMMSMMASAMXSMSMSMMAAASMMMXMAAMMMMXAMXSAMXMASXMMSXMAMAAASASXSAMAM +AASASMMXMMMMASAAXMSMXSAMAMXMAMAMAXMAMMAMXMXMAMXSAAMSAMXSXSAXSASAMXSAMXMXXAMXXXXMAMXMASAMAAXAMSMMMSAMXMMSMMAXAMAXMMMSASXSAXMSXSXMSMMSASAMXSAM +SXSAMXMXXAAMXSMSSMAAXSMSMXAXMSSSMXXAMSAAASAMMSXMXSAXSAMXAMXMMAMXSMMXXMAMXAMMMMMMAMASMMASAXSAMAASASMMSXAMASMSSSMSAAXXMSMXMSMXAMAXMAMMMMAMASAS +XMMMMASMSSMSASAMAMMSMMXMASMSMAAAAAXSMSXSMSXSXMASXMMSXXMMXMMXMAMXSAMASXMAMMMXAXASASAXASAMMMAXMMSMASXAMMXSAMXSAAAAXSSSMMAXXXXAASXMAXMAASXMXSMM +XMASXMSAAAAMAMXXAAXAAXXMAXAAMXSMMMAMXSAMASXSAMXSAAXXMMXMAXAXSMSAMAMASMMSMAMSASXSXMMSMMAAMSSSMXXMXMMAMSMMXMXMMMMMSMAXAXSMSMASXSMMMMSSMXXXXMXX +MSASAMMMMMMMSMMSAMXXAMXASMSMMAXXXMMSAMAMXMXXXMAXXMMMASAMSMSMSAMASAMXSAAAXAMXMAXSMMAAXAXXXAAAMSMMAXXMASAMAMXXXMAXSMMMSMMAAAMMXMAAAAXAXSMSMSAS +AMAXAMXMXSXAXAXSMMMMAAMXXAXMMMSMXXXMAMMMAMAMXMSSSMSAMXAMXAXASMMXSASASMSSSMSSSMAXAMSSSSSSMMSMMMASMXSAXSAMXXXMASAMXAAXMSMMMSXMAXSMSMSAMAAAAAAS +SSSMXSMMAXMMSXMXAAXMSXMMMSMMAXAASMMMAMAAAMASAAXAXMAMXMXMMXMMMXMMSAMASAMXAXXAAMXMXMAAAMAAXAAAAMMMXAXXXMASMMSXMASASXSMMASAXMAMSMMAXAXMMMXMSMSS +MAAMAXAMSSSXSMASMMSXMASAAAASXSXSXAMSMSMSXSASMSMSMSSMMAXXMXMXMXXAMXMAMMMSMMASXMXSASMMMMSMMSSSMMAMMMMSXSASAAXASAXMMAAMXAXMMMAMXAMSMMMASXXXXXAX +MMXMXSMMMAMAMMMMAASASAMMMXMMAMXMMSMAXAMXXMAXXMAXAAXMAXAAMSMASMMMSAMMSAMAAXAMAMASMSAMXXAXMMMXMSAMAAAMMMASMMSMMXMASMMXMMSAASMMSMMMAASXMASMMMAS +MXMSMMXAMAMAMMSSSMSAMMSSSSMMXMAXMASMSSSMXSAMXMSMMMXSASXSMASASAAAXASASMSXSMMSMMXXXSMMSSMSXMMAMSAASMSSXMXMXMAXSMSXMXXXASAMXSAAXAAMSMSASAMAASXS +AMAAXMAMSXXXMXMAMAMAMSAAAAASAMXSAAXXAXAXAXSSXXMASAAMAAAXXMMSXMMSXMMASASAMXMAMXMSMMXMAASXAAMAMMMMMAMMXSMMSSMMSAMXMXMMMAAXAMMSMSXMXXMXMAMXMSAM +MMSXSMMMMMMSMXMAMXMSMMMXSXMSXMAMMMSMSSMMSXXXXXXAMMXMSMMMSXMMMSAXAMMXMASXMASMSAAAAMAMXSMMMMSMSAMXMAMXAXAAAAMXMAMXSASASMMMXMAAMXMMMSMMSSMMXMMM +XAAMAMXAAAAAAASMMMXXAXXMAMMXXMAMAAAXXAXAXMSMSMSXSXXXXXSAXAAMAMASAMSAMXMASXMASMSMXSASXMAMSASMSAMASXMMSSMMXSMMSAMASASXSAMMAMXSMMXAAAAMAMXMAMAS +MMSXSMSMSMSMMMMAAXMSXMXAAASAMMSMMSMSSMMMMAAAAAAAMAMSMMMMSSMMAMMMXASASMSAMXMAMAMAXSASMMAMMASXXAMAMASAMMASAXXAXMSXMXMXSAMMAXMAMAXMXSXMASMSMSAS +MSMXMASAXXMXSXSSMSMAMMMSSSMASAAMAMAMXXAMXMSSMMMSMAMAAXAXMAXSAMMAMXSAMAMSMXMASXMSMMXMMMASMSMMXXMASAMXSMAMAMMXSAXMAMMXSAMSAMSAMSASAAAMASXAAMAS +XAMSMAMAMAMMAAXMAAXAAMAAMAXAMXXMASAXSSXSAAXMMSAXMAMXMSSSSMMSMSMXSAMXMXMAMAMAAAMXAMMSXSASXAAXMSSMMMSAMMXSXSAAMAMAXASASAMMAMXAAXAAMSSMASXMMMMM +SAAXMASASAMAMMMMSMSSSMMSSSMSXSXMASAMXAAMMMMAMMMSMSSSMAAXAXAMSAMXMXASMMSXXSSMMSMASAAAMMASXMMMXAAXAAMASAASAMASMMXXSAAAMSAMXMMSMMMMXAAXMXXXAAAS +SMSMSASMXMXSAMAXMXAAXMAAAMAMAMXXAMASMMMXXAXAMAMMAAAAMAMSXMXSAMXSAMXMAAXXXMAXAAXAXMSMAMXMAMSSMSSMMSSMMMXMXMXMAMAAMMMXMAMMSXMAXXMXMSSMMMMSSSSM +XAAAMASMSMAMASMSSMMSMMSMMMAMXMXMASXMAMAASXSXSASMMMSXMAMMAMXMAMAAAMMSMMMSXSAMSSMSXXMXXXMXMSAMAAXMAAMASMMSSMASAMXSXXXMAMAMXAMSSXMAMXMAAAXAAXMX +MMMSMMMAAMASAMAMAMAMXAXXXXXMAMXSAMMXMMMXXMAASMSAXAXASMMSAMASMMSSMMMAAAAAAMAMXXAAMAMMSMMSXSAMMMSMMSSMMAAXAMASMMAMMXMMASXMSSMAMMSMSASXMSMMSMAA +XXXMASMSMSAMXSASAMASMXMASMASMSAMASXXSAMXXMMMMASXMMSAMAASAMXSAXMAXSSSSMSSXMAAXMSMMMXAAASXASXMASAMXXAXSMMSAMXSAMMXSAAMASAAAAMAMXAMXASXAAASAASM +XSXMSAMXMAMXXSMSASASAMXAXSAMXMMXSAMXSASAXXSXMXMSMXMXMMMSSMMSXMSAMXXMAMXXASXMSAMXXMMSSSMMMMXSXSXSXSAMXAXMXMASAMMASXSMMSMMMSSSXMASMSMMSSSMSMMX