From c39f6a454d18c452df4e8fda9fb6d55533f329fc Mon Sep 17 00:00:00 2001 From: Stefan Harmuth Date: Thu, 12 Dec 2024 08:10:14 +0100 Subject: [PATCH] day12 --- day12.py | 115 +++++++++++++++++++++++++++++++++++ inputs/input12 | 140 +++++++++++++++++++++++++++++++++++++++++++ inputs/input12_test | 10 ++++ inputs/input12_test2 | 4 ++ inputs/input12_test3 | 5 ++ inputs/input12_test4 | 6 ++ 6 files changed, 280 insertions(+) create mode 100644 day12.py create mode 100644 inputs/input12 create mode 100644 inputs/input12_test create mode 100644 inputs/input12_test2 create mode 100644 inputs/input12_test3 create mode 100644 inputs/input12_test4 diff --git a/day12.py b/day12.py new file mode 100644 index 0000000..1d5deb8 --- /dev/null +++ b/day12.py @@ -0,0 +1,115 @@ +from tools.aoc import AOCDay +from tools.coordinate import Coordinate +from tools.grid import Grid +from typing import Any + +SIDE_LOOKUP = { + (0, -1): { + "next": (1, 0), + "turn_look": (-1, 0), + }, + (0, 1): { + "next": (-1, 0), + "turn_look": (1, 0), + }, + (1, 0): { + "next": (0, 1), + "turn_look": (0, -1), + }, + (-1, 0): { + "next": (0, -1), + "turn_look": (0, 1), + }, +} + + +def get_sides(region: set[Coordinate]) -> int: + sides = 0 + top_left = cur_pos = min(region) + start_look = next_look = (0, -1) + while cur_pos != top_left or start_look != next_look or sides < 4: + if cur_pos + next_look not in region: + if cur_pos + SIDE_LOOKUP[next_look]["next"] in region: + cur_pos += SIDE_LOOKUP[next_look]["next"] + continue + else: + sides += 1 + next_look = SIDE_LOOKUP[next_look]["next"] + else: + sides += 1 + cur_pos += next_look + next_look = SIDE_LOOKUP[next_look]["turn_look"] + + return sides + + +class Day(AOCDay): + inputs = [ + [ + (1930, "input12_test"), + (1424006, "input12"), + ], + [ + (80, "input12_test2"), + (236, "input12_test3"), + (368, "input12_test4"), + (1206, "input12_test"), + (858684, "input12"), + ], + ] + + def get_regions(self) -> list[set[Coordinate]]: + regions = [] + garden = Grid.from_data(self.getInput()) + seen = set() + for x in garden.rangeX(): + for y in garden.rangeY(): + pos = Coordinate(x, y) + if pos in seen: + continue + + region = set(garden.getRegion(pos, includeDiagonal=False)) + seen |= region + regions.append(region) + + return regions + + def part1(self) -> Any: + price = 0 + for region in self.get_regions(): + perimeter = sum(1 for cell in region for n in cell.getNeighbours(includeDiagonal=False) if n not in region) + price += perimeter * len(region) + + return price + + def part2(self) -> Any: + price = 0 + for region in self.get_regions(): + region_sides = get_sides(region) + region_plots = len(region) + + g = Grid() + for cell in region: + g.set(cell) + g.minX -= 1 + g.minY -= 1 + g.maxX += 1 + g.maxY += 1 + region |= set(g.getRegion(Coordinate(g.minX, g.minY), includeDiagonal=True)) + for rx in g.rangeX(): + for ry in g.rangeY(): + r_pos = Coordinate(rx, ry) + if r_pos in region: + continue + inner_region = set(g.getRegion(r_pos, includeDiagonal=False)) + region |= inner_region + region_sides += get_sides(inner_region) + + price += region_plots * region_sides + + return price + + +if __name__ == "__main__": + day = Day(2024, 12) + day.run(verbose=True) diff --git a/inputs/input12 b/inputs/input12 new file mode 100644 index 0000000..c8bd0cf --- /dev/null +++ b/inputs/input12 @@ -0,0 +1,140 @@ +WWWJJJJJJJJJJJJJJJSFFFFFFFFFFKKKHHHHHHHHHHHHHHHHHHHHHOOUEEEEEEEEEEEEEEEFGPPPQQQQQQQQQQQQQQSSSJJJJJJJJJJJJJJIIGGGGQQQQQQQQQQQQQQQQUUUUUUUUUUU +WWWJJJJJJJJJJJJJJJJJFFFFFFFFFFKKHHHHHHHHHHHHHHHHHHHHHOOUUEEEEEEEEEEEEFFFGPPPPPPQQQQQQQQQQQQSJJJJJJJJJJJJJJJIIGGGGGGQQOQQQQQQCCCQUUCCUUUUUUUU +WWWWJJJJJJJJJJJJJJOJFFFFFFFFFKKKHHHHHHHHRHHHHHHHHHHHHUUUUEEEEEEEEEEEFWFFFQQPMMPLLPQQQQQQQQJJJJJJJJJJJJJJJJJGIGGGGQQQOOOOOQCCCCCQCCCUUUUUUUUU +WWWWWJJJJJJJJJJJJJOJJFFFFFFFFFKKHGHHHHHRRHHHHHHHHHHHUUUUUEEEEEEEEEEEFWFFFFQPMPPPLPQQQQQQQQCJJJJJJJJJJJJJJJJJJJGGQQQQQOOOOQOQCCCCCCCCCGGGUUUU +WWWJJJJJJJJJJJJJJJJJFFFFFFFFFFKKKHHHHHRRRRRRHHHHHHHHUUUUUMEEEEEEEEEFFFFFFFFPPPPPPPPPQQQQQQBBJJJJJJJJJJJJJJJJJJGGGGQQOOOOOQOQCCCCCCCCIGGGUUUU +WOJJJJJJJJJJJJJKJKKFFFFFFFFKFKKKKHHHHRRRRRRMRRHHHHHHHHUUUMMMMEEEEEFDFFFFFFFPPPPPPPJPQQQQQQBBBJJJJJJJJJJJJJJJJJGGGQQQOOOOOOOOUCCCCCCCCCPGUUGU +OOJJJQJJJJJJJJJKKKKKKFFFFFFKKKKKKHHHRRRRRRRRRRHHHHHKKHUUUMMMMMEEEEFFFFFFFFFPPPPPPPPPQQQQJQBBJJJJJJJJJJJJJJJJJJGGGGGOOOOOOOOCCCCCCCCCCCCGGGGU +POOJJQOJJJSSSJJKKKKKKFFFFFFKKKKKHHHBBRRRRRRRRRZHHHHHKMMUMMMMMMEMEEFFFFFFFFYPPPPPPPPPQQQJJBBBJJJJJJJJJJJJJJJJJJGGGGGOOOOOOOOCCCCCCCCCCCCCGGGG +OOOOOOOOOJSSSSJKKKKKKKKKFKKKKKKDDDDBBBBRRRRRZZZHZHHZMMMMMMMMMMMMEEEPFFFFFFYPPPPPPPPPPQQJJJBJJJJJJJJJJJJJJJJJJJGGGGOOWOOOOOOCCCCCCCCCCCCCGGGG +OOOOOOOOOOGGSJJJKKKKKKKKFKKKKKKKKDDDDDDDWRRRRZZZZHZZMMMMMMMMMMEEEEEPFFFFFFYPPPPPPPPFPQQQJJJJJJJJJJJJJJJJJJGGGGGGGGGGGOOOOOCCCCCCCCCCCSGGGGGG +OOOOOOOOOGGGSJJKKKKTKKKKKKKKKKKKKKDDDDDDWRRRRZZZZZZZZMMMMMMMMMMMEPPPPFFFFFYYYPPPPPPPQQQQTJJJJJJJJJJJJJJJJJGGGGGGGGGGGOOOOOOCCCCCCCCCRGGGGGGG +OOOOOOOOOGGGGYTTKKTTKKKKKKKKKKKKKKDDDDDWWWRRRZZZZZZZZZMMMMMMMMMPPPPPPPFFYFYGYPPPPPPGGQQQTTTJJJJJJJJJJJJJJJGGGGGGGGGGGGGGGOCCCCCCCCCCRRGGGGGG +TOOOOOOOGGGGGYTTTTTTKKKKKKKKKKDDDDDDDDDDWWRRZZZZZZZZZMMSMMMMMMHHPPPPPPFFYYYGGGGGPGGGGQQQTTTTTTJJJJJJJJJJJJGGGGGGGGGGGGGGOOGCCCCCCCRRRRGGGGGG +OOOOOOOGGGGGGYYTYTTTKKKKKKKKKKKDDDDDDDDDDRRZZZZZZZZZZMMSMSMMMMMHPPPPPPPPPPYYGGGGPGGGQQQTTTTTTTTJJJJJJJJJJJGLGGGGGGGGGGGGGGGCCCCCXXXXRRRRGGGG +OOOOOGGGGGGGGYYYYYTTTTTTKKKKKKKKDDDDDDDDRRZZZZZZZZZZZMMSMSSMMIPPPPPPPPPPPYYYYGGGGGGGQQTTTTTTRTJJJJJJJJJJJJGLLVGGGGGGGGGGGGGCGGCSXXXXXRRGGGGR +SOGGGGGGGGGGMMMMMMMTTTTTVVVVKKKDDDDDDDDDDDZZZZZZZZZZZMCSSSSSMMPPPPPPPPPPPPPYGGGGGGGGKKMTQQRRRRRRRJJJJJJJJJLLLLGGGGGGGGGGGGGGGGGGGXXXXRRRRGGR +SOSGGGGGGGGGMMMMMMMMMMMMMMVVKKVVXDDDDDDDDDZZZZZZZZZZSSSSSSSSMPPPPPPPPPPPPPPYYGGGGGGKKKKQQRRRRRRRRRRRLLLLLLLLLLGGGGGGGGGGGGGGGGGXXXXXXXRRRGRR +SSSSSGGGGGGGMMMMMMMMMMMMMMVVVVVXXDDDDDDDDZZZZZZZZZZZZSSSSSSSYPPPPPPPPPPPPYYYYGGKKKKKKKKKKKRRRRRRRRRLLLLLLLLLLGGGGGGGGGGGGGGGGGXXXXXXLXXRRGRR +SSSSSGGGGGGGMMMMMMMMMMMMMMVVVVVXXXDDXXDZZZZZZZZZZZZZZSSSSSSSSSZPPPPPPPPPPPPKKKKKKKKKKKKKYYYRRRRRRRRRRLLLLLLLLLLLGGGGGGGGGGGVGGZXXXXXXXRRRRRR +SSSSSGGGGGGGMMMMMMMMMMMMMMVVVVVVXXXXXXXZZZZZZZZZZZZZZSSSSSSSSZZZPPPPPPPPPPRKKKKKKKKKKKKKKYYRRYRRRRRRRLLLLLLLLLLLGGGGGGGGGPGVGZZZXXXXXRRRRQRR +SSSSSGGMMMMMMMMMMMMMMMMMMMVVVVVVXXXXXXXZZZZZZZZZZZZZZSZZSSSZZZPPPFFFFFFFPPRKKKKKKKKKKKKKYYYYRYRRRRRLRRLLLLLLLAALGGGGGGGGGGGVVVZZXXRRRRRQQQRR +SSSQSSGMMMMMMMMMMMMMMMMMMMVVVVVVXXXXXXZZZZZZZZZZZZZZZZZZZZZZZZZZPFFFFFFFPKRKKKKKKKKKKKRRRRRYRLLCRRLLRRRRRRLLAAGGGAGGGGGGGVGGVVVCCCCCRRRQQQQQ +FSSGGGGMMMMMMMMMMMMMMMMMMMVVVVVXXXXXXXZZZZZZZXXZZZKZZZZZZZZZZZZZZFFFFFFFPKKKKKKKKKKKKKRRRRRRGLLLJLLRRLRRRRRRRAAAGAGAGGUVVVVVVVCCCCCXRQQQQQFF +FGMMMMMMMMMMMMMMMMMMMMMMMMVQQVVXXXEXXXZXZXZXXXXZZZZZZZZZZZZZZZZZZZZFPPPXXKKGKKKKKKKKKIRRRRRRGLLLLLLLLLRRRRREAAAAAAAAAAUUVVVVAAOCCFFRRFQQFFFF +GGMMMMMMMBBBKMMMMMMMMTTTTTVTTCVVXEEEXXXXZXXXXXXXXXWWWWWWWWWZZZZZZFFFFFQQQQQGKKKKKKKKKIRRRRRRLLLLLLLLLLRRRRREAAAAAAAAAAAUUJJJAAAAAAAJRQQFFFFF +DDMMMMMMMBBBBMMMMMMMMBBTTTTTTCVVXEEEEXXXZZXXXXXXXXWWWWWWWWWZZZZZZFFFFFQQQQQKKKKKKKKKWRRRRRRRLLLLLLLLLRRRRRREEAAAAAYYYAUUUJJAAAAAAAAJRFFFFFFF +DDMMMMMMMBBBBMMMMMMMMBBTTTTTTTVVXEEEXXXXXZZXXXXXXZWWWWWWWWWNZZZZZZFFFFQQQQQKKKKKKKKWWWRRRRRLLLLLLLLLLLREERREEAAAAAYYYUUUUUUUAAAAAJJXXFFFFFFF +DDMMMMMMMBBBBBBBBBBBBBBBTTTTTTUVEEEEEEEEXXXXXXXMMZWWWWWWWWWNNZZZZZFFFFQQQQQQQQQQQQQWRRRRRRRRRSLLLLLLLLREEEREEAVVVVYYYYYUAUAAAAAXWXXXXXXFFFFF +DDMMMMMMMBBBBBBBBBBBBBBBTTTUUUUVEEEENEEXXXXXXXMMMMWWWWWWWWWNZZZZFFFFFFQQQQQQQQQQQQQDDSSSRRRRRSLLLLLLLLLLEEEEEAAVYYYYYYYUAAAAAAAXXXXXXXXFFFFF +DDMMMMMMMRBBBBBBBBBBBBBBTUUUUUEEEEEEEEEXXXXXXXMMMMWWWWWWWWWNEEZEEEBFFFQQQQQQQQQQQQQQQQQSSSRSSSLLLLLLLLLEEEEEEAYYYYYYYYYUAAAAAAXXXXXXXXXFFFFF +DDMMMMMMMUBBBBBBBBBBBUBUUUUUUIEEEEEEEEEEXXXMMXMMMMWWWWWWWWWEEEZEEEBBFFQQQQQQQQQQQQQQQQQSSSRSSSLLLLLLLLLEEEEEEEYYYYYYYYYYYYYYYXXXXXXXXXXXFFFF +DSMMMMMMMUUUJBBBBBBBBUUUUUUUIIIEEEEEEEEEEEEMMMMMMMWWWWWWWWWWWWWWWWBBBFQQQQQQQQQQQQQQQQQSSSSSSSLLLLLTLLLEEEEEEEYYYYYYYYYYYYYYYXXXXXXXXXXXXFXX +SSSWSSSUUUUUUBBBBUUUUUUUUUUIIIEEEEEEEEEEEEMMMMMMMMMMMMMZNWWWWWWWWWEBEBQQQQQIYQQQQQQQQQQSSSSSSSSBLLLLEEEEEEEEEEYYYYYYYYYYYYYYYXXXXXXXXXXXXXXX +SSWWSSRUUUUUBBUUUUUUUUUUUUUUUIEEEEEEEEEEEEMMMMMMMMMMMMZZZWWWWWWWWWEEEBQQQQQQYQQQQQQQQQQSSSSSSSSSSSLEEEEEEEEEEEYYYYYYYYYYAAAAAAXXXXXXXXXXXXXX +WWWWSTRUUUUUYBUEEEEEUEUUUUULUUEEEEEEEEEEOEMMMMMMMMMMMMZZZWWWWWWWWWEIIIIITQQQYQQQQQQQQQQSSSSSSSSSSSSEEEEEEEEEEEYYYYYYYYYYIAAAAAAAXXXXXXXXXXXX +WWWWWTTTUTUUUBUEEEEEEEUUUUULLUEEEEEEEEEOOMMMMMMMMMMMZZZZZWWWWWWWWWEMIJJIIQQQLQQQQQQQQQQSSSSSSSSSSSEEEEEEEEEEEEYYYYYYYYYYIAAAAAAXXXXXXXXXXXXX +WWWTWTTTTTUUUUUUUEEEEEUULLLLLEEEEEEJIIIIIMMMMMMMMMMZZZZZZWWWWWWWWWEMIJJIIQQQLLLLLLDUUUSSSSSSSSSSSEEEEEEEEEEEEEYYYYYYYVIIIAAAAAAXXXXXXXXXXXXX +WWWTTTTTTTTTUUUUUEEEEEEENEELEEEEEEEEEEIIIIMMMMMMMMZZZZZZZWWWWWWWWWEEIIIIIILLLLLLLUUUUSSSPPSSSSSSSEEEEEEEEEEEVEYYYYYYYVVVIIAAAAAAYXXXXXXXXXXX +WWWWTTTTTTTUUUUUUUUEEEEEEEEEEEEEEEEEEIIIIMMMMMMMMZZZZZZZZWWWWWWWWWEEIIIIIIILLLLLLUUUUSSSPPSSSSSSEEEEEEEEEEEEVVYYYYYYYVVFFIAAAAAYYXYYYYXXXXXT +WTTTTTTTNTTUTUUUUUEEEEEEEEEQQQEEEEEEEIIIIMMMMMMMMQZWZZZZZWWWWWWWWWEEEIIIIIIIILLUUUUUUPPPPPPSSSSSSBTEEEEEEEEEVVVVVVVVVVXXAAAALLLZYYYYYYXXTTTT +TTTTTTTTTTTTTUUUUUEEEEEEEEEQQEEQEEEEEEIIIMMMMMMMMQZZZZZUZWWWWWEEEEEEEIIIIIIIIIUUUUUUPPPPPPPPSSSSPBBEBBBBEEEEEVVVVVXXXXXXRRAALLZZZYYYYYXXXTTT +TTTTTTTTTTTTTUUUUUEEEEEEEEEQQQFQQEEEEIIIIIMMMNNFFFFZMZFFFFFFEEEEEEEEEIIIIIIIIUUUUUFPPPPPPPPSXXSSBBBBBBBBEEEEVVVVVXXXXXXXXAAALYYYYYYYYYYXXTTT +TTTTTTTTRRRTTUUUUUEEEEEEEEQQFFFQQQQIIIIIIIIIMNNNFFFZMFFFFFFFFFFFEEEEEEIIIIIUUUUUUFFFFFPPPPSSSSSSBBBBBBBBRRVEVVVVVXXXXXXXXXLLLYYYYYYYYYTXXTTT +TTTTTTTTRRRRRIUUUEEEEEEEEEEEFFFFQFQQQQIIIIIIINNNNFFFFFFFFFFFFFFEEEEEEIIIIIIIIIIIUUFFFJPPPPPQBISSSBBBBBBBBBVVVVVVXXXXXXXXXXXLLLYGYYYYYTTTTTTT +TTTTTTTTRRRRRIUUUEEIEEEEEEYEFFFFFFQQQIIIIIIIINNNBFFFFFFFFFFFFFFFEEEEIIPPPIIIIIIYUUFFFFFFPPPBBBBBBBBBBBBBBBVVVVVVVXXXXXXXXXXXLLLYYYYYYYYTTTTT +TTTTTTTTRRIIIIIIIIIEEEEEEEYYFFFFFFFFFFIIIIIQQNBNBBFFFFFFFFFFFFFEEEEEEIIIIWIIIITYYYFFFFFFTTPPPPBBBBBBBBBBNNVVVVVVXXXXXXXXXXXXLLLLYYYYYYYTTTTT +TTTTTTRRRRIIIIIIIIIIEEEEEEYFFFFFFFFFFFIIIIULQQBNBBBFFFFFFFFFNFOEEEEEIIIIIIIIITTYYYYFFFFTTTPPPBBBBBBBBBBBNNNVVVNNXXXXXXXXXXLLLLLLYYYYYYYYYTTT +TTTTTTTRRIIIIIIIIIITTEEEEFFFFFFFFFFFFFFIIILLLLBBBBBBBBFFFFFFOOOOOOCCIIIIIIIIIYYYYYYFFFTTTTPAABBBBBBBBBBBBNNNNNNNXXXXXXXXLLLLLLLLYYYYYYYYTTTT +TTTTTTTTRIIIIINIIIIITTTEEEEFFFFFFFFFFFFFFBBLLLLBBBBBBFFFFFFFXOOOOCCCCIIIIIIIIYYYYYYFFCCTTTCAABBBBBBBBBBBBNNNNNNNXXXXXXXXXLLLLLLYYYYYYYYYYTTT +TTTTTTRRRIIIIINIIIIITTTTEETFFFFFFFFFFFFJFBBLLBBEBBBBBBBFFFFFFCCOCCCCIIIIIIIIIYIYYYYFFRCTTTCAABBBBBBBBBBBBBBNBNNNXUXXXXXXLLLLLLLYYYYYYYYYTTTR +TTTTTTRRIIIIIINNNITTTTTTETTTTTFFFFFFFFFFFFLLLBBBBBBBBBBFFFFFICCOCCCCCCIIIIIIOYYYCYYCFCCCCCCAAABBBBBBBBOBBBBBBBNXXXXXXXMLLLLLLLLLLLLYYYYYYTTR +TTTTORRRRIBNNVNNNNNTTTTTTTTTTTFFFFFRRRRRRLLLLTBBBBBBBBFFFFCIICCCCCCCIIIIIIIIOOOYCCCCCCCCCCCCCCBBBBBBBOOOBBBBKBBBXXXXXXXXLLLLLLLLLLLSYSSSSTTT +TOOOORRRRBBBNNNNNNNNTTTTTTTTTTFFFFRRRRRRGLLLLBBBBBBBBBFFFFIIIIIIICCIIIIIIIIIOOOOOCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBBXXXXXXXXLLLLLLLLLLSSSSSSSSTT +TOOOORRRBBBBNNNNNTNPTTTTTTTTTFFFFFRRRRRRRGLURFVVBVBBBBIIIIIIIIIIICCIIIIIIOIOOOOOCCCCCCCCCCCCCCCBBBBBXXXBBBBBBBBBBBXXXXXXLLLLLLLLSSSSSSSSSSST +OOOORRRRRBBBNNNNNNNPNTTTTTTTTTTFRRRRRRRRRRNRRFVVVVXBBIIIIIIIICCICCCCCCCIIOOOOOOOOCCCCCCCCCCCCCXXBBBBXXXBBBBBBBBBBBXXXXXXLLLLLLLLSSSSSSSSSSSS +OOOOLLLLRRRBNNNNNNNNNNNTTTATFFFFRRRRRRRRRRRRRFFVVVBBBIIIIIIIICCCCCCCCCCCAOOOOOOOOCCCCCCCCCCCCCXXXBBBXXBBBBBBBBBBBBBYYLLLLLLLRCSSSSSSSSSSSSSS +OOOOOLLLNSNBNNNNNNNNNJAJAAAFFFFFFRRRRRRRRRRRRRFVVVFBFFIIIIIIIICCCCCCCCCAAOOOOOOOOOOCCCCCCCCCCCXXXXXXXXXBBBBBBBBBBBBYYRLLLLLLRCCCSSSSSSSSSSSS +OOOOOLLINNNNNNNNNNNNEAAAAAAAFFFFRRRRRRRRRRRRRRFVVVFFFFFFIIIICCCCCCCCCCCAAAAOOOOOOOOCCCCCCCKCXXXXXNXBXBBBBBBBBBBBBBRRRRRRRRRORCCCCSSSSSSSSSSS +IOOOILIINNNNNNNNNNNNAAAAAAAAAAFFRCRRCRRRRRRRRRFFFFFFFFFHHIIIIICCCCCCCCCAAAAAAOOAOOOCCCCHHHXXXXXXNNXBBBBBBBBBBBBBBBRRRRRRRRRRRRRCCSSSSSSSSSSS +IIIIIIIIWWNNNNNNNNNNGGGAAAAAAAAAACRRCCRRRRRCCCCCFFFFFFFHHIPIAFCCCCCCCCCAAAAAOOOAOOCCZZHHHHHHXXXXXXXGBBBBBBBBBBBBJRRRRRRRRRRRRRCRSSSSSSSSSSSS +IIIIIIIIWWNNNNNNNNNNNGGAAAAAAAAAGRRCCCRRRRRCCCCFFFFFFFFHHHFFFFCCFCCCCCAAAAAAAAAAAOCZZZHHHHHHHXXXXXXGGBBBBBBBBBBJJRRRRRRRRRRRRRRRRSSSSLSSSSSS +IIIIIIEIWWNNNNNNNNNNGGAAAAAAAAGGGGCCCCCRRCCCCCCFCFFFFHHHFHFFFFFFFFCCCCAAAAAAAAAAZZZZZHHHHHHHHHHHHHXGHNHHBHHBBBBJRRRRRRRRRRRRRRRLRWSSSLLSSSSS +SIIIIIELWWNNWNNNNNNMNGGAAAAAAAAGCCCCCRRRRRCCCCCCCFYFFFHHFFFFFFFFFFCCCCAPAAAAAAZZZZZZZHHHHHHEEHEEHHHHHHHHHHHHHHHJRRRRRRRRRRRRRRRRYSSSSSLSSEES +IIIIILLLWWWWWNNNNNNNNGGAAAAAAAACCCCCRRRRRRRCCCCCCCCZFHHFFFFFFFFFFPCCCPPPAAAAAAGZZZZZZZZHEHHEEEEEHHHHEHHHHHHHHHHJJRRRRRRRRRRRRRRRRSSSSSSSGEES +IIIILLLLWWWWWPPKNNNVPGGAAAAAAGGRCCCCCRRRRRRCCCCCCCCCCPFFFFFFFFFFPPPPCPPUAAAAAAZZZZZZZZZHEEHEEEEEEEEEEHHHHHHHHHHJJJURRRRRRRRRRRRRESSSSSSSGGES +IIIIILLLLLWWWWPPPQQPPGGGGGAAAGGGGGGGGRRGQQRICCCCCCCCPPFFFFFFFFFFPPPPCPPUAAAADZNNZZZZZZZZEEEEEEEEEEEEYHHHHPPPPPPPPPPPURRRRRRRRRRNESSSSSSSSSSS +IIILLLLLPLWWWPPPPPPPPPGGGGGAAGGGGGGGGGGGGGGGCCCCCCCCPPFFFFFFFFFPPPPPPPPPDADDDZZZZZZRZZZZZEEEEEEEEEEEHHHHHPPPPPPPPPPPURRNRRRNRRNNESSSSSSSSSSS +IIIILLLLLLLWWPPPPPPPPGGGGGGGGGGGGGGGGGGGGCCCCCCCCCCCPPFFFFFFFFFPPPPPPPPPDDDDDDDZZZZRRZZZZEEEEEEEEEWWHHHHHPPPPPPPPPPPQURNNRRNNNNNNSSSSSSSSSSS +IILLLLLLLLLPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGCCCCCCCCPPCPFFFFEFFFFFPPPPPPPPPPDDDDDDDZZZRRZZEEEEEEEEEEEWEHHHPPPPPPPPPPPPPUUUNNNNNNNNNNNHHSSSSSSSS +JLLLLLLLLLPPPPPPPPPPPPGGGGGGGGAGGGGGGGCGGCCCCCCCCPPPPFFFXXXFFFFPPPPPPPPPPDDDDDDDDRRRRRZEEEEEEEEEEEEEEHHPPPPPPPPPPPPPUUUNNNNNNNNNNNNHSSSSSSSS +JLLLLLLLLLLPPPPPPPPPPPPPGGGGGAAALLGGGGCCCCCCCCCCCCCPPFPFXXXXFFFFFPPPPPPPPPPPDDDRRRRRRRZZZZEEEEEEEEEIIHHPPPPPPPPPPPPUUUPNNNNNNNNNNNNHSSSSSSSS +JLHLLLLLLLPPPPPPPPPPPPPGGGGGGLLLLGGGGGICCCCCCCCCCCCPPPPFXXXXXFFFFPPPPPPPPPPDDDDRRRRRRRRZZEEEEEEEEEEIHHHPPPPPPPPPPPPUUWNNNNNNNNNNNKISSSSSSSSS +JLHLLLLLLLPPPPPPPPPPPPGGGGGGGLLLLLLGGGGCCCCCCCCCCPPPPPPPXXXXXXFFFFPHJJJPPPPDDDRRRRRRRRRZZZEEEEEEEEIIHDDDDDPPPPPPPPPUUUNNNNNNNNNNKKSSSSSSSSSS +JJLLLJLLTTTPPPPPPPPPPPGGGGGGGLLLLLLGGGGGKCCCCCCCPPPPPPXXXXXXXFFFFJJJJJJJPDDDDDDDRRRRRZZZZZZZEEEEEEIIHDDDDDPPPPPPPPPUUQNNNNNNNNNNNKKSSKSSSSSS +JJJJJJJJJJJPPPPPPPPPPPGGGGGGGLLLLLLGGGGGGCCCCCCCCCPPPPXXXXXJJJFJJJJJJJJJJJJDDDDDRRRZZZZZZZZZZEEEIIIIHHDZZDDDDUUUUUUUUUENNNNNNNNKKKKKKKKSSSSS +JJJJJJJJJJJMPPPPPPJPGGGGGGGQGQLLLBLGGGCCCCCCCCCCCCCPPPPXXXXJJJJJJJJJJJJJJJJJDDDDDRRZZKKKKZZQQQQQIQIIZZZZZDDDDUUUUUUUUUUUNNNNNMVKKKKKKKKSKSKS +JJJJJJJJJMMMMPMMPMPPMMGGGGGGGLLLLLLLLLLCCCCCCCCCCCPPPPPPXXXXJJJJJJJJJJJJJJJDDDDDDRZZKKKKKZZKQQQQQQQIIZZZDDDUUUUUUUUUUUUVVVVNNVVVKKFFFKKKKKKK +JJBBJJJJJMMMMMMMMMPPMMMMGWWWGLLLLLLLLLPCCCCCCCCCCPPPPPPPYYYYYYYJJJJJJJJJJJJDFDFFFNKKKKKKKKKKKQQQQQZZZZZZZZDZZZDUUUUUUUUVVVVVVVVVIFFFKKKKKKKK +JBBBJJJJJJMMMMMMMMMPMMMGGGLLLLLLLLLLLLLLCCCCCCCCCCCPPPYYYYYYYYJJJJJJJJJJJJJFFFFYFFXFFKKKKKKKKKQQQQQZZZZZZZZZZZZUUUUUUUUVVVVVVVVIIFFFKKKKKKKK +JBBBBBBMMMMMMDMMDMMMMMMMMMLLLLLLLLLLLLLLCCCCCCCCCCCPPYYYZYYYYYYJYJJJJJJJJJJJFXFFFFFFFKKKKKKKKKQQQQQQZZZZZZZZZJZSUUSUUTUVVVVVSVVVIIFFFFKKKKKK +JBBBBBBMMMDDDDDDDMMMMMMMMGGSSSLGLLLLLLKCCCCCCCCCCCCPPPYYZYYYYYYYYJJJJJJJJJFFFFFFFFFFFKKKKKKKKKQQQQQQQZZZZZZZZQQSSSSSSUUUVVVVVVVVVIVXFFFKKKKK +BBBBBBBBMMDDDDDDDDDDMMGGGGGGGGGGGGGLKLLCCCCCCCCCCCCCCUYYYYYYYYYYYYJJJJJJJJMFFFFFFFFFFKKKKKKKKKQQQQQQQZZZZZZZZQQQQSSSSUUVVVVVVVVVIIVVKKKKKKKK +BBBBBBBMMMMDDDDDDDDDMMMGGGGGGGGGGGGKKKKKCUCPUCCCCCCUUUUUYYYYYYYYJJJJJJJJJFFFFFFFFFFFFKKKKKKKKQQMQQQQQZZZZZZZZZQQQSSSSSVVVVVVVVVVVVVVKKKKKKKK +BBBBBBBMMMDDDDDDDDDDMMGGGGGGGGGGGGKKKKKKKUUPUCCCCCUUUUYYYYYYYYYYYYJJJJJJJFMFFFFFFFFFFKKKKKKKQQQMQMQQQQQZZZQQZQQQQSSSSSSVVVVVVVVVCVVVKKKKKKKK +BBBBBBMMMMDDDDDDDDDMMMGGGGGGGGGGGGGGKKKKKKUUUCCCCCUUUUYYYYYYYMYYYYYYJWWWWFFFFFFFFFFFFKKKKKKMMMMMMMMQQQQZQQQQQQQQSSSSSSSSVVVVVVVVVKKKKKKKKKKK +BBBBBBBBMPVDDDDDDDDWWWGGGGGGGGGGGGGGKKKKUUUCCCCCCUUUUUUYYMMMMMMYYYMMWWMWWFFFFFFFFFFFFKKKKMMMMMMMMMMMQQQQQQQQQQQQQQQSSSSSSSVVVVVVOOOKKKKKKKKK +BBBBBBBPPPVDDDDDDDDWWWGGGGGGGGGGVGGGKKUUUUUUCCCCUUUUUUUUMMMMMMMMMYMMMMMMWWFFWFFFFFFFFKKKKMMMMMMMMMMMQQQQQQQQQQQQQQQSSSVVVVVVVVOOOOOOOKKKKKKK +BBBBBRBPPPPPPDDDDDDDWWGGGGGGGGGGTTTTTTTUUUUUUUCUUUUUUUUUMMMMMMMMMMMMMMMMMWWWWWFFFFFZFKKKKMMMMMMMMMWWQQQQQQQQQQHHQQQSSSSTTTTTOOOOOOOONNOOKKKK +BBBBBBBPPPPPPDPPDDDWWWGGGGTTTTTTTTTTTTTUUUUUUUCUUUUUUUUUMNMMMMMMMMMMMMMMWWWWWWFFFFFFFKKMMMMMMMMMMMWWQQQQQQQHHHHHHQQSSSTTTTTTOOOOOOOOONOOOOKK +QBBBRPPPPPPPPPPPDDDWWWGGGGTTTTTTTTTTTTTIUUUUUUUUUUUUUUUMMMMMMMMMMMMMMMMMUWWWWWWFFFWKKKKKKYMMMMMMMMWWQQQQHHHHHHHHHQQQASTTTTTJOOOOOOOOOOOOOOOK +QBBBBPPPPPPPPPPPPPDWWWGWGGTTTTTTTTTTTTTIIUIIUUUUUUUUUMMMMMMMMMMMMMMMMMMUUWWWWWWWWKKKKKKKKKKMMMMMMMMMMMMHHHHHHHHHHQQQASTTTPPOOOOOOOOOOOOOOOOO +QQQQBPPPPPPPPPPWPWWWWWWWWWGGGGTTTTTTTTTIIIIIUUUUUVUUUUMMMMMMMMMKMMMMMMMXUUUUUUUUWWWKKKKKKKKMMZMMMMMMMMMXHHHHHHHHHHQTTTTTXOOOOXXOOLOOOOOOOOOO +QQPPPPPPPPPPPPPWWWTTTTTTTTWTTTTTTTTTTTTIIIIIUUUPPPPPUUUMMCMMMMRKMMMMMMMXUUUUUUUWWWKKKKKKKKMMMMMMMMMMRHHXHHHHHHHHHHHHTTTTTXXOXXXTOLOOOOOOOOOO +PPPPPPPPPPPPWWWWWWTTTTTTTTWTTTTTTTTTTTTIIIIIIIUPPPPPUUUVVVMMMMMKKNMMXXXXXUUUUUUUWWUKKKKKKKVMMMMMMMMMHHHHHHHHHHHHHHHTTTTTTXXOXXTTTTTOOOOOOOOT +HHPPPPPPPPPPWWWWWWTTTTTTTTWTTTTTTTTTTTTIIIIPIIUPPPPPVVVVVVLMMKKEKKKXXXXXUUUUUUUUUUUVKKKKVVVVVVMEEEEEEHHHHHHHHHHHHHHTTXXXXXXOXXTTTTOTOOOOOOOT +HHHPPPPPPPPPWPWWWWTTTTTTTTTTTTTTTIIIIIIIIPPPPPPPPPPPVVVVVVVKKKKKKKKKKKXXXUUUUUUUUUUVKKKKKVVVVVZZZEVVVHHHHHHHHHHHHHHHHXXXXXBVTTTTTTOOOOOOOOOT +HHHPPPPPPPPPPPWWWWTTTTTTTTTTTTTTTIIIIIIIIPPPPPPPPPPPVVVVVVVKKKKKKKKKKKXXXIIUUUUUUUVVVKKVVVVVVVZZZZVVVHHHHHHHHHHHHHXXXXXXBBBBCTTTTTTOOOOOOOTT +HHHPPPNNNPPPPPWPWWTTTTTTTTTTTTTTTIIIIIIIIPPPPPPPPPPPVVVVVVKKKKKKKKKKKKKXIIIJJJIDUUVVVKVVVIVVZZZZZVVVVVIHHHHHHHHHHHXXXXXXBBBBBTTTTTCCOOOOOTTT +HHHHPNNNNNJPPPPPWWWWTTTTTTTTTTTTTIIIINIIIPPPPPPPPVVVVVVVVVVKKKKKKKKKKKKKIIIIIIIIIIVVVVVVVIIVVVVVVVVVVVIHOOHHHHHHXXXXXXXXXXBBBTTTTTOCOOOOOTTT +HHHHNNNNNNJJJJPPWWWWTTTTTTTTTTTTTIIITNIIIIIEEEEEVVVVVVVVVVVVVKKKKKKKKKKKIIIIIIIIIIVVVVVVIIIVVVVVVVVVVVVHPOOOHIIIIIIXXXXXXBBBBTTTTOOOOOOTTTTT +HHNNNNNNNXJJPPPPPWWWTTTTTTTTWWWIIIIITTTIIIIEEVVVVVVVVVVVVVVKKKKKKKKKKMKKIWIIIIIIIIVVVVVIIIVVVVVVVVVVVVVHPPOIIIIIIIIXXBXXXBBBBTTTTTTTOTTTTTTT +HHHHNNNNNJJJPEEPPWWWTTTTTTTTWWWWUUTITTTTIEEEEVVVVHVVVVVVVVVVKKKKKKKKKTTTIITIIIIEEEEVVEEIIIIVVVVVVVJVVVVPPIIIIIIIIIBBXBBBBBBBBTTTTTTTOTTTTTTT +HHHHNNNNNPPPPEEEPPEWTTTTTTTTUWWWUUTTTTTIIIEEEVCVVHVVVVJJVVAXXKKKKKKKKTTTITTTTEEEEEEEEEEIIIIVVJVVJJJVVVPPPPIIIIIIIBBBBBBBBBBTTTTTTTTTOTTTTTTT +HHHHNNNNNPPPPPEEEEEMWEEWEEEUUWUWUUTTTTTTEEEEEVCCVHVVVJJJJAAXXKKKKKKJJTTTTTTTTTEEEEEEEEEIIIIVJJVJJJJJVPPPPPPIIIIIIBBBBBBBBBBTTTIIIITTCCTTTTTT +LLLLLNNNNNNPEEEEEEEEEEEEEEUUUUUUUUTTTTTTETEEEEJCCJJJJJJJJJJXXXXXKKKKXXXTEEETTTEEEEEEEEEIIIIIJJJJJJJJJPPPPPIIIIIIIIBBBBBBBBTTTTIIIITTTCCCCCTT +LLLLLLLLLLLLEEEEEEEEEEEEEEUUUUUUUTTTTTTTTTEEEEJJCJJJJJJJJJJJJXXXXXXXXXXTEEEDTEEEEEEEEEEEIIIKKJJJJJJJJJPPNNNIIIIIIBBBBBBBBIIIIIIITTTTCCCCCTTT +LLLLLLLLLLLDDDEEEEEEEEEEUUUUUUUUTTTTTTTTTEEEEEJJJJJJJJJJJJJJJXXXXXXXXXXXEEEEXXEEEEEEPPPPPPIJJJJJJJJJPPPPPPNNIIIIBBBBBBBBIIIIIIIITTTCCCCCCCCT +LLLLLLLLLPPDEEEEEEEEEEEEEEEUUUUUUUTYYYYTTEEEEEBBJJJJJJJJJJJJJJXXXXXXXXEEEEEEEEEEEEEEPPPPPPEEJJJJJPJPPPPPPPNNVIINNBBBBBBBBIIIIIITTTTTCCCCCCCT +LLLLLLLLLPPPEEEEEEEEEEEEEEEUUUUUUUJJYYYTEEEEEBBBBBJJJJJJJJJJJJXXXXCPPUEEEEEEEEEEEEEEPPPPPPEELJJAAPPPPPPPPPNNNNFNNNBBBBBBBBIIIITTTTTCCCCCCCCC +LLLLLLLLPPPPEEEEEEEEEEEYYEUUUJJJJJJJJJYEEEEBBBBBBBBJJJJJJJJJJJXXXXPPPPPPEEEEEEEEEEEEPPPPPPEELJJAAPPPPPPPPPNNNNNNNNNNBBBBBLLIIIITTTTCCCCCCCCC +LLLLLLLLPPPPPEEEEEEEEEEEYYUUUJJJJJJJJJYEEEEBEEBBBBBJCJJJJJJJJJXXMMMPPPPPFFEEFFEEEEEEPPPPPPEEEEAAAPPPPPPPPNNNNNXXNNWWBBZLLLLIJTTTTTTTCCCCCCCC +LLLLLLLLLZPPPPPPEEEUEEEYYYYYYJJJJJJJJJJEEEEBBBBBBBBBBBEJJJJJJJXXMMMPPPPPPFFFFFELEEEEPPPPPPAAAAAAAAAPPPPPMMNNNNNNNNWWWWLLLLLSSTTTTTTQQCCCCCCC +LLLLLLLLPPPPPPPPEEEEEEEYYYYYJJJJJJJJJJJXXEEVBBBBBBBBBBJJJJJJJIXXMMPPPPPPFFFFFCEEEPPPPPPPPPPPPPAAAAAPPPPPMMNNNNNNCSSWWCLLLLLRSTSTTTTCCCCCZCCC +LLLLLLLPPPPPPPPPPEPPPEYYYYYYYYJJJJJJJJJJJTEETBBBBBBBBBBJJJJJJJMMMMPPPPPPPFFFFCCCCPPPPPPPPPPPPPAAAAPPPAPMMMMNNNNNCSSCCCLJCCCCSSSTTSSSCCCCZZZZ +LLLLLLLPPPPPPPPPPPPPYYYYYYYYYYJJJJJJJJTJTIIIITBBBBBBBBBBJJJJJMMPPPPPPPPPPPFFFCCCCPPPPPPPPPPPPPAAAAPPAAAAMMMNNNNSSSSSCCCCCCCCCSSSSSSSDCBBZZZZ +LLLLLLLLPPPPPPPPPPPPYYYYYYYYYYYJJJJJJJTOOIIIITTBBBBBBBBBJJJJJMMPPPPPPPPPPFFFFFCCCPPPPPPPPPPPPPAAAPPPAAAMMMMMNNNSSSSCCCCCCCCCCSSSSSSKDDDBBBZZ +LLLLLLLPPPPPPPPPPPPYYYYYYYYYYYYJJJJJTTTTTIIIITBBBABBBBBBBJOJJJMPPPPPPPPPPFFFFFCCCPPPPPPPPPPPPPAAPPPPAAAAMMMMMMMMMSMCCCCCCCCCCSSSSSDDDDDBZZZZ +LLLQLLLLSPPPPPPPPPPYYYYYYYYYYYYYYJRRTTTTTIIIITBBBABBBBBMMJJJJJJJPPPPPPMPPFFFFFCCCFRRRRAPPPPPPPAPPPPAAAAAMMMMMMMMMMMCCCCCCCCCCCSSSSXXXDDDZXZZ +LLLQQLLLSPPPPPPPPPPYYYYYYYYYYYYRRRRTTTTTTIIIITTBBBBBMBBMMMMJJJJJMPPPMPMMPFFFFFCCFFRRRAAAAAAAAAAPPPPPAAOZZMMMMMMMMMMMCCCCCCCCCUSSSSXXXXDDXXXZ +LLQQQQWLPPPPPPPPPPPYYYYYYYYYYYYYRRRTTTTIIIIIITTTBBBMMMMMZMMMJJJJMPMMMPMMMFMMFFFFFFFFFQQQAAAAAAAPPPPPPOOZZZMMPPPPPPPPPPCCCCCCCCISSRXXXXXXXXXX +LLQQQQQQDDDPPPPPPPPBBYYYBBYYYYRRRRRRTTTIIIIIITTTMMBMMMMZZMZZJJJJMMMMMMMMMMMMFMMFFFFFFFQQQQAAALLPPDDDOOOZZZZMPPPPPPPPPPJJCCCCCCCRRRRXRXXXXXEE +LLQQQQQQDDPPPPBPPBBBBBBBBBYBYRRRRRRRRTTIIIIIITTMMMMMMMMZZZZZJJJJMMMMMMMMMMMMMMMMFFFFQQQQQRAAAPPPPGDOOOOZZZMMPPPPPPPPPPPPPPPPCCRRRRRXRRXXEEEU +LQQQQQQQDDDBBBBBBBBBBBBBBBBBBRRRRRRRRTTIIIIIITTMMMMMMMMZZZZZJJJJMMMMMMMMMMMMMMMMFTFTRQQQQRFAGGGGGGDDDZZZZZMMPPPPPPPPPPPPPPPPCRRRRRRRRRXXEEEE +QQQQQQRQDQQBBBBBBBUBBBBBBBBBBBRRRRQQQIIIIIIIITTFFMMMMMMZZZZZJJJJZMMMMMMMMMMMMMMTTTTTRRQQRRFAAGGGGGDEDSZZZZEMPPPPPPPPPPPPPPPPJRRRRRRRRRXEEEEE +QQQQQQQQQQJBBBBBBBUBBBBBBBBBBBBRRRQQQIIIIIIITTTFFFMMMMZZZZZZZZZMMMMMMMMMMMMMMMTTEETTTRQRRRRGGGGGGDDDDSZZZZMMPPPPPPPPPPPPPPPPJRRRRRRRRREEEEEE +QQQQQQQQQQJJBBBBBUUUBBBBBBBBBBOORQQQQIIIIIIITTTTIFFFFMZZZZZZZZJZMMMMMMMMMMMMAAEEEEEETRRRRRRRGGGGGGDDSSZZZZMMPPPPPPPPPPPPPPPPPRRRRRRRREEEEEEE +QQQQQQQQQQJJBBSBUUUZBBBBBBBCBOOORQQQQIIIIIIIITTTFFFFFFVZZZZZZZZZMMMTMMTTMMTMAEEEEEEERRRRRRRRRGGGGGDDUZZZZZMMPPPPPPPPPPPPPPPPPRSRRRRRREEEEEEE +QQQQQDQQWDJJJJUUUUUZZZBBBOCCCOOOOQQQQIIIIIIIITTFFFFFFFFZZZZZZZZZMMMTMMTTTMTMMMEEEEEEEEIIRRRRRGGGGGUUUZZZZZOMPPPPPPPPPPPPPPPPPSSRRRRZLLTLLEEE +QQQQQDDDDDDDJJJJJUUUUBBBBOCCCOOOOQQQQIIIIIIIIEFFFFFFFZFYZZZZZZZZMTTTTTTTTTTTMLLEEEEEEEIIRRRRRRGGGGUUUXZZZOOOPPPPPPPPPPPPPPPPPSBBBRRRALLLLLEE +QQQQQDDDDDDDDDJUUUUUUSBBBOOOOOOOOQQQQIIIIIIIIEFFFFFFFZZZZZZZZZZZTTTTTTTTTTTTTTLTTEEEEERRRRXRRPPPPGGUXXXVOOOOOOOOOOEEEPPPPPPPPBBBBBBAAAALLLLL +QQQQQQDDDDDDDDJJUUZUUUSSSOOOOOOOOQQQQIIIIIIIIEFFFFFLLZZZZZZZZZZTTTTTTTTTTTTTTTTTTEEEEEREEEEORPPPPGUUXXXVOOOOOOOOOOEEEPPPEBBBBBBBBBBAAAAALLLL +QQQQQDDDDDDDDDDUUUUASSSOOOOOOOOOOOQQQIIIIIIIIEEFFFFLLZZZZZZZZZZTTTTTTTTTTTTTTTTTTTETEEEEEEEPPPPPPGUUXXXVVOOOOOOOOOOEEPPPEBBBBBBBBBAABABBBLLL +QQQQQHDDDDDDDDDAUUUAASSAGGGOOOOOOOQQQGGQGGGGGEFFFFLLLLLZZZZZZTTTTTTTTTTTTTTTTTTTOTTTEEEEEEEAPPPPPPPXXXVVVVVVOOOOOOEEEEEEEBBBBBBBBBBBBBBBLLLL +QQQDDDDDDDDDDDDAUAAAAAAAAGOOZOOOOOQGGGGGGGGGGGBBBBLLLLLZZZZZZTMTTTTTTTTFTTTTVVEEOTEEEEEEEEEEPPPPXXXXXXVVVVVOOOOOOOEEEEEEEABBBBBBBBBBBBBBLLLL +QRDDDDDDDDDDDDAAAAAAASSAGGZZZZOOOOGGGGGGGGGGGGGBLLLLLLLZZZZZZZTTZTTTTTTFFFFTTVVEEEEEEEEEETEEPPSSVVVXXXVVVVVOVOOOOOEEEEEEEBBBBBBBBBBBBBBLLLLL +RRDNDDDBDDDDDDAAAAAAASSGGZZZZZOOOOGGGGGGGGGGGGGGSLLLLLZZZZZZZZZZZTZTTTTTFFFTVVVVEEEEEEEEEEEEXXXXSVVVXXVVVVVVVOOOOEEEWEEWWBBWBBBBBBBBBBPLPLLL +RRDDDDDBDDDDDDAAAAAAASSSSZZZZZOTGGGGGGGGGGGGGGGSSSLLLLLZZZZZZZZZZZZTTTTFFFFVVVVVEEEEEEEEEEEEXXXXSVVVVVVVVVVVVVVZZZWWWWEEWWWWWBBBBBBBBPPPPLLL +RRDDDDDDDDDDDDAAAAAAASSSSSZZZZOGGGGGGGGGGGGGGGGSSSLLLLZZZZZZZZZZZZZTTTTTFFFVVVVVVEEVVEEEEEEXXXXXXVVVVVVVVVVVVZZZZZWWWWWWWWWBBBBBBBBBBLLPPLLL +RRDDDDDDDDDDDDDAAAAASSSSLSYZZYGGGGGGGGGGGGGGGSSSSSSSLLZZZZZZZZZZZZZZTTTTFVVVVVVVVEEVVEEEEXXXXXXXXVVVVVVVVVVVVZZZZZZZWWWWWWBBBBBBBVBBLLLPPLLL +RRRDDDDDDDDDKKKKAAAAGGSLLLZZZZNGGGGGGGGGGGGGGSSSSSSSSLZZZZZZZZZZZZZTTTTTVVVVVVVVVVVVVEUXXXXXXXXXVVVVVVVVVVVVVZZZZZZZZWWWWWWBBQBBBVBBLLLLLLLL diff --git a/inputs/input12_test b/inputs/input12_test new file mode 100644 index 0000000..0b328f1 --- /dev/null +++ b/inputs/input12_test @@ -0,0 +1,10 @@ +RRRRIICCFF +RRRRIICCCF +VVRRRCCFFF +VVRCCCJFFF +VVVVCJJCFE +VVIVCCJJEE +VVIIICJJEE +MIIIIIJJEE +MIIISIJEEE +MMMISSJEEE \ No newline at end of file diff --git a/inputs/input12_test2 b/inputs/input12_test2 new file mode 100644 index 0000000..cc5f968 --- /dev/null +++ b/inputs/input12_test2 @@ -0,0 +1,4 @@ +AAAA +BBCD +BBCC +EEEC \ No newline at end of file diff --git a/inputs/input12_test3 b/inputs/input12_test3 new file mode 100644 index 0000000..26ada03 --- /dev/null +++ b/inputs/input12_test3 @@ -0,0 +1,5 @@ +EEEEE +EXXXX +EEEEE +EXXXX +EEEEE \ No newline at end of file diff --git a/inputs/input12_test4 b/inputs/input12_test4 new file mode 100644 index 0000000..c7541ac --- /dev/null +++ b/inputs/input12_test4 @@ -0,0 +1,6 @@ +AAAAAA +AAABBA +AAABBA +ABBAAA +ABBAAA +AAAAAA \ No newline at end of file