diff --git a/2024/src/main/kotlin/day12.kt b/2024/src/main/kotlin/day12.kt new file mode 100644 index 0000000..985860b --- /dev/null +++ b/2024/src/main/kotlin/day12.kt @@ -0,0 +1,114 @@ +fun main() { + + var part1 = 0 + var part2 = 0 + while (all.isNotEmpty()) { + val start = all.elementAt(0) + val (area, fenceLength, fenceSides) = input.floodFill(start) + part1 += area * fenceLength + part2 += area * fenceSides + + println("$area x $fenceSides") + } + + println("Part 1: $part1") + println("Part 2: $part2") +} + +val input = CharGrid.read("day12-sample.txt") +val all = sequence { + for (y in 0.. { + val visited = mutableSetOf() + val fence = Fence() + + floodFill(start, this[start], visited, fence) + + all.removeAll(visited) + + println(fence.horizontalSides.flatMap { it.value.sides.values.toSet().map { side -> it.key to side} }) + println(fence.verticalSides.flatMap { it.value.sides.values.toSet().map { side -> it.key to side} }) + + return Triple(visited.count(), fence.length, fence.sides) +} + +class Fence { + var length = 0 + val sides + get() = horizontalSides.values.fold(0) { acc, sides -> acc + sides.count } + + verticalSides.values.fold(0) { acc, sides -> acc + sides.count } + + fun add(coordinate: Grid.Coordinate, horizontal: Boolean) { + length += 1 + + if (horizontal) { + horizontalSides.getOrPut(coordinate.y) { SideList() }.add(coordinate.x) + } else { + verticalSides.getOrPut(coordinate.x) { SideList() }.add(coordinate.y) + } + } + + + val horizontalSides = mutableMapOf() + val verticalSides = mutableMapOf() + + data class Side(val start: Int, val end: Int = start) { + init { + require(start <= end) + } + + val length get() = end - start + 1 + } + + class SideList { + val sides = mutableMapOf() + val count: Int get() = sides.values.toSet().count() + + fun add(position: Int) { + if (sides.containsKey(position)) return + + val before = sides[position - 1] + val after = sides[position + 1] + + val newSide = when { + before != null && after != null -> Side(before.start, after.end) + before != null -> Side(before.start, position) + after != null -> Side(position, after.end) + else -> Side(position) + } + + assert(before == null || newSide.start == before.start) + assert(after == null ||newSide.end == after.end) + assert(position in newSide.start..newSide.end) + + for (pos in newSide.start..newSide.end) { + sides[pos] = newSide + } + + assert(sides[position] === newSide) + } + } + +} + +fun CharGrid.floodFill(start: Grid.Coordinate, type: Char, visited: MutableSet, fence: Fence) { + visited.add(start) + + for (direction in Direction.entries) { + val neighbor = start.step(direction) + + if (inside(neighbor) && this[neighbor] == type && !visited.contains(neighbor)) { + floodFill(neighbor, type, visited, fence) + } + + if (!inside(neighbor) || this[neighbor] != type) { + fence.add(neighbor, direction == Direction.North || direction == Direction.South) + } + } +} diff --git a/2024/src/main/resources/day12-sample.txt b/2024/src/main/resources/day12-sample.txt new file mode 100644 index 0000000..26ada03 --- /dev/null +++ b/2024/src/main/resources/day12-sample.txt @@ -0,0 +1,5 @@ +EEEEE +EXXXX +EEEEE +EXXXX +EEEEE \ No newline at end of file diff --git a/2024/src/main/resources/day12.txt b/2024/src/main/resources/day12.txt new file mode 100644 index 0000000..71db720 --- /dev/null +++ b/2024/src/main/resources/day12.txt @@ -0,0 +1,140 @@ +CCCCCCCCCCKKKKKKKKDKQQQQQQQQFFRFFFFEEEEEEEEEEEEEEEEUUUUUUUBBBBBBBBBBBBBBBBBXXXXXXXXXTTNTTTTTTTTTTTTTTTTTTTTTTXXXXXXXRRRRRRRRRRRRRRRRRRMYYYYY +CCCCCCCCCKKKKKKKKDDKKQQQQQQQFFFFFFEEEEEEEEEEEEEEEEEUEUUUUUJBBBBBBBBBBBBBBBBBXXXXXXXXTTTTTTTTTTTTTTTTTTTTTTTTTXXXXXXXRXRRRRRRRRRRRRRRRPYYYYYY +CCCCCCCCKKKKKKKKKKKKKQQQQQQFFFFFFFFFFEEEEEEEEEEEEEEEUUUUUUUBBBBBBBBBBBBBBBBBXXXXXDXXXXXTTTTNNNNTTTTTTTTTTTTYYTXXXXXXXXRRRRRRRRRRRRRRRYYYYYYY +CCCCXXXKKKKKKKKKKKKKKQQQQQQFFFFFFFFFFEEEEEEEEEYYYEEEEUUUCUUMBBBBBBBBBBBBBBBBXXXXXDXXXXXTTTCCNNNNNTTTTTTTTTTTTTXXXXXXXRRRRRRRRRRRRRRRRSYYYYYY +CCXXXXXXHKKKKKKKKKKKKKKQQFFFFFFFFFFFFFFEEEEEEEYYYEEEEEEMMMMMBBBBBBBBBBBBBBBXXXXXDDDXXXXTTCCNNNNNTTTTTTTTTTTTXTXXXXXXXRRRRRRRQRRRRRRRKYYYYYYY +CCXXXXXXHKKKKKKKKKKKKKQQQFFFFFFFFFFFFFFEEEEEEEYYYYYYEEEMMMMMMMMBMMBBBBBBBBXXXXXXDDEDDXXTTNNNNNNNTTTTTTTTTTTTXXXXXXXXRRRRRRRRRRRRRRRRKYYYYYYY +XXXXXXXXXKKKKKKKKKKKKKFFFFFFFFFFFFFFFFFFEEEEEEEYYYYYYEEEMMMMMMMMMMBBBGZBBXXXXXXDDDDDDDDTTTNNNNNNTTTTTTTTTVTXXXXXXXXXXRRXXRRRRSSRRRSRKKYYYYYY +TXXXXXXXBKKKKKKKKKKKKDDDFFFFFFFFFFFFFFFFEEKKEEYYYYYYYYYMMMMMMMMMMMBBBZZZQZXXXDDDDDDDDDDTTTNXNNNNNTTTTTTTTVXXXXXXXXXXXXXXXRRSRSRRSRSSYYYYYYYY +XXXXXXXXXKKKKKKKKKKKKKDDDFFFAFFFFFFFFFFFKKMKKEYYYYYYYYMMMMLLLLMMMBBBBCZZZZZZZDDDDDDDDDDTTTNNNNNNNTTTTTTTTVVVXXXXXXXXXXXXRRSSSSRSSGSSSSYYYYYY +GXXXXXXXXKKKKKKKKKKKKKKDFFFAAAAFFFFFFFKKKKKKKYYYYYYYYYMMMMLLLLMMMBBBCCZZZZZZZDDDDDDDDDDQQQQQQQNQQTTLTTVVVVXXXXXXXXXXXXXRRRRSSSSSGGSSSSYYYYYY +GXXXXXXXGGKKKRKKKKKKKKKKEBBAAAAAFFFFFKKKKKKKKKYYYYYYYYMMMMLLLLMMMMBZZZZZZZZZZDDDDDDDDDDQQQQQQQQQQQQQVVVVVCCCKCCXXXXXXXXRRRRSSSSSSGGGSSYYYYYY +GXXXPXXXGGGKRRRRKKKKKKKBBBAAAAAAYAAFFKKKKKKKKKKKYYYYYYMLMMLLLLMMMMNZZZZZZZZZZDHHDDDDDDDPPPQQQQQQQQQQQQQVVVCCCCCCXXXXXXXEPRSSSSSSSSGGSSSYYYYY +GGXXXGGGGGHKPRRRRRRJKBBBBBAAAAAAAAAAXKJKKKKKKYYYYYYYYYYMMMLLLLMLLLLLLLLLLZZZZZHHHDDDDYYYPPQPPPQQQQQQQQVVVVVVCCCXXXXXXEEEEEESSSSGGGGGGGSYYYPP +GGGGGGGGGGGBGGRRRRRBBBBBBBAAAAAAAAAAAAJKKKKKKKYYYYBBBYYMMMLLLLMLLLLLLLLLLZZZHHHHHHDDYYYYYPPPPPPQQQQQQQQVVVVVVCXXXXXXEEEEEESSSGGGGGGGGGGPPPPP +GGGGGGGGGGGBGRRRRRRRBBBBBBAAAAAAAAAAAAYKKKKBBBBBBBBBOYMMMMLLLLMLLLLLLLLLLLLZHHHHHHPYYYPPPPPPPPPQQQQQQQQVVVVVCCCXXXEEEEEEEEEGGGGGGGGGGGGGPPPP +GGGGGGGGGGGGGGRRRRRRBBBBBBWAAAAAAAAAAAYYKKBBBBBBBBBBBBMLLLLLLLELLLLLLLLLLLLZZHHHHHPPPPPPPPPPPPPPQQQQQQQQQVVVVGGGXXXEEEEEEEEEEOGGGGGGGGGPPPPP +GGGGGGGGGGGGRRRRRRRBBBBBBAAAAAAAAAAAAAAYKKBBBBBBBBBBBBBLLLLLLLLLLLLLLLLLLLLZZHHHHHHPPPPPPPPPPPPAQQQQVVVVVVVVGGGOXGIEEEEEEEEEEEEGGKGGGGOOPPPP +GGGGGGGGGGGGRRRRRRBBBBBBBBAAAAAAAAAAAAYYKYBBBBBBBBBBBBBLLLLLLLLLLLLLLLLLLLLZZHHHHHHPPPPPPPPPAAAAQQQVVVVVVVVGGGGGGGEEEEEEEEEEEEEGKKGGGGOOPPPP +GGGGGGGGGGGRRRRRRRBBBBBBAAAAAAAAAAAAAAYYYYYBBBBBBBBBBBBLLLLLLLLLLLLLLLLLLZZZHHLLHPHPPZPPPPPAAAAAQVVVVVVVVVVVGGGGGGEEEEEEEEEEEEEGVKGGGGOGPPPP +GGGGGGGGGZRRRRRRRBBBBBBBBBBBBAAAAAAAAAYYYYYBBBBBBBBBBBBLLLLLLLLLLLLLLLLLLZZHHLLLHPPPPZVVXPPAAAAQQVVVVVVVVVGGGGGGGGGEEEEEEEVVEEEVVVGGGGGGPPCC +GGGGGGGGGZRRRRRRRBBBBBBBBBBBBAAAAAAHAAAAYYBBBBBBBBBBBBBBLLLLLLLLLLLLLLLLLJHHHLLLLLPPPVPVVVVAAAAQVVVVVVVVVVGGGGGGGGGEEEEEEEEVVVVVVVGCCCGCCCCC +GGGGGGGGGZRRRRRRBNBBBBBBBBBBBAAAAAAHIAAYYYBBBBBBBBBBBBAALLLLLLLLLLLLLLLLLJJJLLLLLLLNNVVVVVVAVVVQAAVVVVVVVVGGGGGGGGGVVVVVVVVVVVVVVVGCCCCCCCCC +GGGGZGGZGZZRRRRRBBBBBBIIIBBIIIIIIIIIIYYYBBBBBBBBBBBBBBABLLLLLLLLLDDZZDDJJJJJLLLLLLLNNVVVVVSVVVBBVAVVVVVVVGGGGGGGGGVVVVVVVVVVVVVVVVVVCCCCCCCC +GGGGZZZZZZZRRRRZZBHBBBBBIBIIIIIIIIIIIIYYYYHHBBBBBBBBBBBBLLLLLLLLLDDDDDDDDDDDLLLLLLLLLQVVVVVVVVVVVVVVVVVVVVGGGGGGGGGGVVVVVVVVVVVVVVVVVCCCCCCC +QQZZZQZZZZZZZZZZZBBBBBBIIIIIIIIIIIIIIYRRRRRRRRRRBMBBBIBBLLLLLLLLLDDTTDDDDDDDLLLLLLOOLVVVVVVVVVVRRRVVVVVVVVGGGGGOGOOGGGGVVVVVVVVVVVVVVCCCCCCC +QQQQQQZZZZZZZSZZZBBBBBBIQIIIIIIIIIIIIYRRRRRRRRRRMMGGGAAALLLLLLLLLTTTTTDDTDDDDLLLLLOOOOVVVVVVVVENNNUUUVVVVVGGJGGOOOOGGGGGGBBBVVVVVVVVVCCCCHCC +QQQQQQQZZZZZZSZZZBBBBBBDIIIIIIIIIIIIIIRRRRRRRRRRGMGGGAAAAAAAAAAATTTTTTTTTTTDDDLLLLLLOVVVLLVVVEENNNUUVVVVVJKGJJGOOOOOGGGGBBBBVVVVVVVVVVCHHHHH +QQQQQQQQZQZZSSZZZZBZBZBDIIIIIIIIIIIIIIRRRRRRRRRRGGGGAAAAAAAAAAAATTTTTTTTTTDDDLLLLLLLLVVVLLVVWWNNNNNWWFFVJJJJJJGOOOWOOGGGBBBBVVVVVVVVVVCHHHHH +QQQQQQQQQQZZSSZZZZZZZZSDDIIIIIIIIIIIIIRRRRRRRRRRGGGGGAGAAAAAAAAATTTTTTTTTTDDDLLLLLLLLLLLLWWWWWWWNNNNWWWJJJJJJJHHJOOOSWGGBBBBBBBVVVVVVVVHHHHH +QQQQQQQQQQZZSSSSSSSSSSSIIIIIIIIIIIIIIIRRRRRRRRRRKKKKKGGAAHAAAAAATTTTTTTTTTDDDLDHHLOLLLLLLWWWWWWWWWWWWWWHJJJJJJJJJJJJSWGWBBBBBBBBBVVLVVVHHHHH +QQQQQQQQQQQZSSSSSSSSSSSKKBIIIIIIIIIIIIRRRRRRRRRRKKKKKGGAGAAAAGAGTTTTTTTTTTDDDDDHHHOLLLLLLLWWWWWWWWWWWWWWWJJJJJJJJWWWWWWWWBBBBBBBBBLLVKVHHHHH +QQQQQQQQQQQZSSSSSSSSSSSKKBBIKIKKKIIIIIRRRRRRRRRRKKKKKGGGGGGGGGGGTTTTTTTTTTDDDDDDHHOLLLLLLLWWWWWWWWWWWWWWWFJJJJJJJJWWWWWWWWWBBBBBBBLLVRRHHHHH +QQQQQQQQQQQQSSSSSSSSSSSKKKBKKKKKKKFIFFRRRRRRRRRRKKKKKGGGGGGGGGGGIITTTTTTTTDDDDDDDDOOOLOOLLWWWWWWWWWWWWWWWFJJJJJJJWJWWWWWWWWBBBBBBBLLVRRHHHHH +QQQQQQQQQQQQQQRSSSSSSSSKKKKKKKKKKKFFFFRRRRRRRRRRRKKKKGGGGGGGGGGGIIITTTTTTDDDDXXDOOOOPOOLLLLWWWWWWWWWWWWWFFFFFFJJWWWWWWWWWWWWWBBBBBRRRRRHHHHH +QQQQQQQQQQQQQUSSSSSSSSSKKKKKKKBFFFFFFFFFRKRRRRRRRKKKKGGGGGGGGGGGGGGGGGTTGGDDDCCOOOOOOOOOOLLLWWWWWWWFWWWWWFFFFFFJJCWWOWWWWWWWWBBBBBRRRRRRRHHH +QQQQQQQQQQQQQUUSSSSSSSSKKKKKKKKKKFFFFFFFRKRRRRRRRKKKKGRRRGGGGGGGGGGGGGGGGGGDCCCCOOOOOOLLLLLLLWWWWWWWWWWWFFFFFFFCCCWWWWWWWWWWWBBBBRRRRRRRRHHH +OQQQEQNQQQQQQUDDSSSSSSSIKKKKKKKKKFFFFFFFNKRRRRRRRKKKKGRRRRRRGGGGGGGGGGGGGGGDDCCOOOOOOOLPPPLPLWWWWWWWWWWWWFFJJFWWWWGWWWWWWWTWRRBRRRRRRRRRHHHH +OEEQEEQQQQQQQUUDSWSSSIIIKKKKKKKFFFFFFFNNNKRRRRRRRKGGGGGRRRRRRGGRGGGGGGGGGGICCCOOOOOOOOOPPPPPPWWWWWWWWWWWFFFJJFWWWGGGWWWWWWWRRRRUURRRMRFRRHHR +EEEEEEQQQQQQQUDDDDDDDIKKKIKKKKKFFFFFFNNNNKRRRRRRRKGGGGGRDDRRRRGRRRGGGGGGGGGCCCOOOOOOOOPPPPPPPPWPPPWWWWWWWJJJWWWWWGGGWWWLWWUUUUUURRRMMRRRORRR +EEEEEEEQOQEEQQDDDDDDIIIKKIIIIKKKFFFFFNNNNNNNHSSSSGGGDDDDDJRRRRGGRGGGGGGGGGGGCCPCCOOOOPPPPPPPPPPPPRWWWWWWJJJWWWWWWGGGOWWLWOUUUUUUUUUMMRRRRRRR +IIEEEEEEEEEQDDDDDDHIIIKKIIIIIIKKYFFFFNWWNNHNHSSSSSGGDDDDDDDRRRGRRGGGGGGGGGGMCCCCCOOUUUPPPPPPPPPPPRWWMWJWJJJWWWWWWGGOOOOOOOOOUUUUUUUUURRRRRRR +IIEEEEEEEEEQDDDDDDHHHIIKIIIIIIIWWFFWWNWRHNHHHSSSSSGGGADDDDDDRRRRRRGGGGGGGRGGCCCCCCUUUPPPPPPPPPPPPPRWMMJJJWWWWWWWWWOOOOOOOOOOOUUUUUUUURRRRRRR +IIEEEEEEEEEDDDDDDDDHHIIIIIIIIIIWWFFWWWWWHHHHHHHSSSSSDDDDDDRRRRRRRRGGGGGGGRCCCCCCCCCCPPPPPPPPPPPPPEMWMJJLWWWWWWWRWOOOOOOOOOOOUUUUUUUUURRRRRRR +IXXGEEEEEEEXDDDDDDDHHIIIIIIIIIIIWWFWWWWKHHHHHHHHSSSDDDDDDDDDDDRRGGGGOGGGGCCCCCCCCCCPPPPPPPPPPPPPPPMMMJJLMMWWWBBEEOOOOOOOOOOOUUUUUUUURRRRRRRR +IXXXEEEEEEEXDDXXDDDHHQQIIQQQOOOOOOFWWWWHHHHHHHHHSDDDDDDDDDDDDDRRGGGGGEEECCCNCCCCCCCCPPPPPPPPPPBPPMMMMMJLLLLWRRBEEEEEOOMOOOOOUUUUUUUUURRRRRRR +IXXXXEEEEEEXXDXXXUDDQQIIQQQQOOOOOOWWWWWHHHHHHHHXDDDDDDDDDDDDDDRRRGGGGEEEECCCCCCCCCCCPPPPPPPPPPBPPMMMGGLLLLLRRREEEEEEEOOOOOOUUUUUUUUURRRRRRRR +IXXXXEEEXXXXXXXXUUDQQQIIQQQQOOOOOOWWWWWHHHHHHHHDDDDDDDDDDDDDDDREGGGGEEEEEECCCCTCCCCCCCCCCPPFPWMMMMMMGGGLLLLREEEEEEEOOOOOOOOUUUUUUUUURRRRRRRR +IIXXXXXEEXXXXXUUUUQQQQQQQQQQQQQQXHTWWWHHHHHHHHDDDDDDDDDDDDDDDRREIEEEEEEENEETTTTCCCCCCCCCPPPCWWMMMMMMMLLLLLMMEEEEEEEOOOOOHOOUUUUUUUURRRRRRRRR +IIIXXXXXEXXXXXUUXXXQQQQQQQQQQQQXXHTWWWHHHHHHHHHDDDDDDDDDDDDDRRREEEEEEEEENNETTTTCCCCCCCCCCCPCCCMMMMMMMMLMLMQMEEEEEEEHOHOHHHOUUUUUUUURRRRRRRRR +IKIKKKXXXXXXXXUUUXUUQQQQQQQQQQQHHHWWHWWHHHHHQQKDDDDDDDDDDTTTEEEEEEEEEEENNNNNNTTTTCCCCCCCCCCCCCZMMMMMMMMMLMMMEEHEEEHHHHHHHOOOUHUHUUURRRRRRRRR +IKKKKXXXXXXXXXXUUUUUQQQQQQQQQQHHHHHHHHHHHVQQQQQNDDDDDDDDDDTTEEEEEEEEEEENNNNNTTTTTTTCCCCCCCCCCCCCMMMMMMMMMMMMEERRRERHHHHHHHHHHHUHUUUUUURRRRRR +IKXXXXXXXXXXXXXUUUUUQQQQQQQQQQQHHHHHHHHHHQQQQQQDDDDDDDDDDDTTEEEEEEEEEEENNNNNFTTTTTTTKKCCKCCCCCCCZMMMMMMMMMRRERRRRWRHHHHHHHHHHHUHHUUUUURRRRRR +IXXXXXXXXXXXXXXUUJQQQQQQQQQZZQHHHHHHHHHHJJJJJQQQDDDDDYDTTTTTEEELLLEEEEENNNNTTTTTTTKKKKKCKKCCCCCCZMMMMMMMMRRRRRRRRRRRHHHHHHHHHHHHHUURRRRRRRRR +XXXXXXXXXVVXXXVVJJQQQZZQQZQZZHHHHHHHHHHHHJJJJQQQQQQDDDYYYYYTFEELLLEEEENNNNNNNTTTKPKKKKKKKKCCCCZZZMUMMMMMMRRRRRRRRRRRHHHHHHHHHHHHHHHRRRRRRARR +XXXXXXXXXVVVVVVVJJJJJZZZZZZZHHHHHHHHHHHHHHQQQQQQQQQQQYYYYTTTUUUUULLLNNNNNNNTTTTKKKKKKKKKKKKCCCZZZZUMMMMMMRRRRRRRRRRRHHHHHHHHHHHHHRRRRRRAAAAA +XXXXXXXXXVVVVJVVJJJJJJJJZZZZHHHHHHHHHHHHHKKJQQKKQQQYYYYLYTTJJUUUUUULLLNNNNNNNTTKKKKKKKKKKKKKUCUZZZUUMMMMMRRRRRRRRRUHHHHHHHHHHHHHHHHARRRAAAAA +XTXXXXXVVVVVVJJJJJJJAJJJZJJZZHHHHHHHHHHLLKKKKKKKKQQQYLLLYYUJUUUUUULLNNNNNNNNNNNKKKKKKKKKKDKEUUUUUUUUMMMMMMMRRRRRRRUHHHHHHHHHHHHXHHHAAAAAAAAA +FXXQQQVVVVVVVVOJJJJJJJJJJJJJZHHHHHHHLLLLKKKKKKKKVQZLYLLLLYUUUUUUUUUNNNNNNNNNNNKKKKKKKKKKDDDUUUUUUQUSMMMMMMMMRGRRRRRQHHHHHHHHHHHXXHHAAAAAAAAA +FFXFQQQVVVVOOOOOOJJJJJJJJJJJHHHHHHHHLLKKKKKKKKKKVQZLLLLLLYUUUUUUUUUNNNNNNNNNNNNKKKKKKKKKUUUUUUUUUUUUMMMMMMMMMRRRQQQQHHHHHHHHHHXXXXHASAAAAAAA +FFFFFFFFVVVOOOOIOJJJJJJJJJJJJHHHHHHHLKKKKKKKKKKVVLLLLLLLLLLUUUUUUUUUBBBNNNNNNNKKKKKKKKKKKKUUUUUUUUUUTTMMMMMMMMRRRRQHHHHHHHHXXXXXXXHHAAAAAAAA +FFFFFFOOOYVOOOOJJJJJJJJJJJJJJHHHHLLLLKKKKKKKKKKVVLLLLLLLLLLUUUUUUBBUBNNNNNNNNWWWKKKXKKKKQQQUUUUUUUUUUMMMMMMMMRRRRRQQQHHHQQQXXXXXXXHNXXAAAAAA +FFFFFFOOOOOOOOYJJJJJJJJJJJJJJJLHLLLLLLKKKKKKKKKVVVLLLLLLLLLLLUUUUQQQBBBNNNNNNWWWWKKKKKXXXXXXXXXXUULLLLMMMQQQQQQQQQQQQQQQQQQXXXXXXXXNXXAAAAAA +FFFFFFFFOOOOJJJJJJJJJJJJJJJJJJLLLLLLKLLKKKKKKKVVVVLLLLLLLLLLLLUUUQQQQQBBBBBQQWWWWWKLLLXXXXXXXXXXUULLLLLMHHQEQQQQQQQQQQQQQQQQXQXXXXXXXXAAAAAA +FFFFFFOOOOOOJJJOJJJJJJJJJJJJLLLLLLLKKKKKKKKKKKVVVWEELLLLLLLLLLQQQQQQQGQBBBQQQWWLWLALLLXXXXXXXXXXUULELLEHHQQQQQQQQQQQQQQQQQQQQQXXXXXXXXXAAAAA +FFFFFFOOOOOOOOOOOJOJJJJJJJJJJJLLLLLLLLKKKKKKKLLLLWWWLLLLLLLLLLLQIIQQQQQQQQQQQWWLLLLLLLXXXXXXXXXXXXXXXXXXXHHHHHHHHHQQQQQQQQQQQQXXXXXXXXXXXAAA +FFFFFFBBOOOOOOOOOOOJJJJJJJJLJLLLLLLLLLLLKKKKKLLLEWWWEEEELLLLLLLLIQQQQQQQQQQLJLLLLLLLLLXXXXXXXXXXXXXXXXXXXHHHHHHHHHUQQQQQQQQXQQXXXXXXXXXAAAAA +FFBBBBBBBOOOOOOOOOOOJJJOJJJJJNNNNNLLLLLLKKKKKLLDEEEEEEELLLLLLLJJQQQQQQQQQQQLLLLLLLLLLLXXXXXXXXXXXXXXXXXXXHHHHHHHHHQQQQQQQQQXXMXXXXXXXXXAAAAA +FFBBBBBBBBOOOOOOOOOOOOOOOJJNNNNNNNLLLLLLLLLLLLLDDEEEEXXLLLLXXXXXXQQQQQQQQQQLLLLLLLLLLLXXXXXXXXXXXXXXXXXXXHHHHHHHHHUQQQQQQXXXXXXXXXXXXXAAAAAA +FFBBBBBBBBOOOOOOOOOOOONNONJJNNNNNNLLLLLLLLLLLDDDEEEEEXXLLXXXXXXXXXXQQQQQQQQLLLLLLLLLXXXXXXXXXUUXXXXXXXXXXHQHHHHHHHQQQQQQQXXXXXXXXXXXXXAAAAAA +FBBBBBBBBBOMMOOOOOOOONNNNNNNNNNNNNNLLLLYYLLLLDDDEEXEXXXXLLLXXXXXXXQQQQQQQQQLHLLLLLLLXXXXXXXXXUUXXXXXXXXXXQQHHUUUUUGGGGGQQXXXXXXXXXXXXXXXSAAA +BBBBBBBBBBBMMMOOOOOOONNNNNNNNNNNNLLLLLLYYLLLLDDDDXXXXXXXLLXXXXXNNQQQQQQQQGGGGLLLLLLLXXXXXXXXXUUXXXXXXXXXXHHHHHUUUUUGGMGGGGXXXXXXXXXSSSSSSSAA +BBBBBBBBBBMMMMMMMOOOOONNNNNNNNNNNNLLLLLLYYLLLLLDDXXXXXXXLXXXXXNNNNNNNQQGGGGGGGLLLLLRXXXXXXXXXUXXXXXXXXXXXHHHHHUHUUMMMMGWGGXXAXXXSSSSSSSSSSAA +BBBBBBBBBBMMMMMMMMOOOONNNNNNNNNNRNLLLYYYYYLLLDDDDDDXXXXXXXXXXXNNNNNNRQQGGGGGGGLLLLLLXXXXXXXXXUXXXXXXXXXXXHHHHHHHRUMMMGGGGGJGAAASSSSSSSSSSSAA +BBBBBBBBBBMMMMMMMMEEONNNNNNNNNNNNNLLYYYYYYLLLLDDDDDXXXXXXXXXXXNNNNNNNGGGGGGGGLLXIDDDXXXXXXXXXUXXXXXXXXXXHHHHHHHHMMMMMGGGGGGGGGASSSSSSSSSSSAA +BBBBBBBBBMMMMMMMEEEEOONNNNNNNNNNNNYYYYYYYLLLLQDDDDDDDXXCCCXXXXXNNYNNGGGGGGGGGGGXXXNDXXXXXXXXXSXXXXXXXXXXJHHHHHHIMMMMGGGGGGGGGAASSSSSSSSSSSAA +BBBBBBBBBBKMAMMMEEEEEONNNNNNNNNNNRRYYYYYYLLDDDDDDDDDDDDCCCCXXXXNNNNNGGGGGGGGGGGGXXNNXXXXXXXXXSXXXXXXXXXXJHHHHHHHXXXXXGGGGGGGGGGSSSSSSSSSSSVA +PPBBBBBBBBBAAAMMMEEEEEENNNNBBNNNNRRYYYYYYYYYDDDDDDDDDDCCCCCXXXNNNNNNNNNGGGGGGGXXXXXNXXXXXXXXXXXXXXXXXXXXNNHHHHXXXXXXXGGGGGYYGGGYSSSSSSSSSSVV +PBBBBBBBBBBMMMMMEEEEEEENNBNBBGRRRRRRRYYYYYYYYDDDDDDDDDCCCCFXXXXNNNNNNFGGGGXGGXXXXXXNNNPPPXXXXXXXXXXXXXXXHHHHHHHXXXXXXGGGGGGYGYYYSSSSSSSSSVVL +PPBBBBBBBEBUMMMEEEEEEBBQNBBBBBRRRRRRYYYYYYYYYDDDDDDDDDCCCCXXXXXXNNNNNXXXXXXGGGXXXXXXNPPPPXXXXXXXXJJJJJJJXHXHHHHXXXXCXGGGGCYYYYYYYSSSSSSSSVVL +BPBBBBBBBEEMMMEEEEEEEBBBNBBBBBBBRRRYYYYYYYYYYYDDDDDDDDDCCCCCCCXNNHHNNHHXXXXXXXXXXXPNNPPPPXXXXXXXXJJJNNJJXXXHHHXXXCCCCCCGGCCYCYYYSSSSSSSSSSVV +BBBBBBBBEEEEMEEEEEEEEXBBBBBBBBBRRRRYYYYYYYYYYYDDDDDDDDDCCCCCCCCNHHHHHHHXXXXXXXPXPPPPPPPPPXXXXXXXXJJNNNJXXXXXHXXXXCCCECCGGCCCCCYSSSSSSSSGSSSV +MBBBBBBKEEEEEEEEEEEEEEBBBBBBBBBRRRRYRYYYYYYYYYXDDDDDDDDDCCCCCCCHHHHHHHXXXXXXXXPPPPPPPPPPPXXXXXXXXJJNNNNXXXXXXXXXCCCCCCCCCCCCCYYSSSSSSSSSSVVV +MMMLLBKKKEEEEEEEEEEEEEEBBBBBBBBBRRRRRYYYYYYYXXDDDDDDDDDCCCCCCCCHHHHHHHHHHXXXXXPPPPPPPPPPPXXXXXXXXNNNNNNNNXXXXVVXCCCCCCCCCCCCCCCCSSSSSTSSVVVV +MMMLBBKKKEEEEEEEEEEEEEMBBBJBBBBBRRRRRRRYDYYERRYDDDDDDDDCCCCCCCCHHHHHHHNNXXXXXXPWWPPPPPPPPPPPPJJJNNNNNNNNXXXXXVVXXXXXXXXCCCCCCCTTTSSLSSSVVVVV +MMMMMKKEEEEEEEEEEEEEAAJBJJJJJJJJJRRRRRRRYYYRRRDDDDDDDVDCCCCCCXCHHHHHHHNXXXXXXXWWWWWPPPPPPPPJJJJJJNNNNNNNNNXXXVVXXXXXXXXCCCCCCCCLTTTLLVVVVVCC +MMMMMEKEEEEEEEEEEEEEEJJJJJJJJJJJRRRRRRRRYRYYRRDDDDDDDVVCCCCCXXXHHHHHHNNXXXXXXXWWWWWWWPPPPPPPJJJJJJNNNNNNLLVVVVVXXXXXXXXCCCCCCCLLLLLLVVVVCCCC +MMMMMEEEEEEIIIIIEEEEEJRJJJJJJJJJJJRRRRRRRRRRRRDYDDDDDCCCCCCCCXXHHHSHHNXXXXXXXWWWWWWWWPPPPPPPPPJJJJNNNNNNLLLVVVXXXXXXXXXCCCCCCLLLKLLLLVVCCCCC +MMMMMEEEIEIIIIIIEEEEJJJJJJJJJJJJJJJRRRRRRRRRRRRYDDDODDCCCCCXXXXXXXXXXWXXXXXXWWWWWWWWWPPPPPPPYYYJJJNNLNNLLLVVVVXXXXXXXXXCCCCCLLLLLLLKLLLCCCGC +MMMMMMEEIIIIIIIIEEEXXJJJJJJJJJJJJJJJRRRRRRRRRRRYYDDDCDCCCCCXXXXXXXXXXWXXXXXXWWWWWWWWWPPPPPPYYYYYYJJYLLLLLLVVVVXXXXXXXXXCCCCLLLLLLLLLFLCCCCCC +MMMMMMMMIIIIIIIIXXXXXXXXJJJJJJJJJJJRRRRRRRRRRRYYYYYYCCCCCXXXXXXXXXXXXWWWWXWWWWWWWWWWWPPPPYYYYYYYYYYYLLLLLLLVVVXXXXXXXCCCCCCCLLLLLLLLCCCCCCCC +MMMMMMMIIIIIIIIIIIXXXJJJJJJJJJHHJJJRRBBBBBBBBYYYYYYYCCCCCXXXXXXXXXXXWWWWWWWWMWMMMMMMMMPPYYYYYYYYYYZYLLLLLLLVVVXXXXXXXCCCCCCCCLSLLLLLLCCCCCCC +MMMMMMMMIIIIIIIIIIXXXJJJJJJJCHHJJJJRRBBBBBBBBYYYYYYCCCCCXXXXXXXXXXXXXWIIIIIWMMMMMMMMMMYYYYYYYYYYYYYYLLLLLLZVVVVVVVVVVVVVCCCCSSSLLLLLCCCCCCCC +MMMMMMMIIIIIIIIIIIXXICCCCCCCCHHHDRRRRBBBBBBBBYYYYYYYYCCCCCXXXXXXXXXXXDIIIQMWMMMMMMMMMMMYYYYYYYYYYYYYLZZZLZZZVVVVVVVVIVVVVCCCOOOLLLLCCCCCCCCC +MMMMMMIIIIIIIIIIIIIIICCCCCCCHHHDDDRRRBBBBBBBBYYYYYYYCCCCCCCCEEXXEXEEEWWWWQMMMMMMMMMMMMEYYYYYYYYYYYLLLZZZLZZZVVVVVVVVIIVVIIQQOOOLLLCCCCCCCCCC +MMMMMMMMIIIIIIIIIIIIICCZCCCQQHHDDDDDRBBBBBBBBYYYYYYYCCCCCCCEEEEXEEEEEWWWWMMMMMMMMMMMMEEEYYYYYYYYYYLLLZZZZZZYVVVVVVVVIIIIIIQOOOOOOLLCCCCCCCCC +HMMMMMMMMIIIIIIIIIIIIIZZZQCQQQQDDDXERBBBBBBBBYYYYYYYCCCCCCCEEEEEEEEEEEWMMMMMMMMMMMMMMEEYYYYYYYYYYYYLLZZZZZZQVVVVVVVVIIIIIIIIOOOOOOOOCCCCCCCC +MMMMMMMMIIIIIIIIIIIIIIZZZQQQQQQDEEEEEBBBBBBBBYYYYYYCCCCCCCCEEEEEEEEEWWWWMMMMMMMMMMMMMMMMYYYYYYYYYYYYLZZZZZZQPVVVVVVVBBIIIIIPOOOOOOOOCCCCCCCC +FMMMMMXMIIIIWIIIIIIIIIZZZQQQQQQEEEEEEBBBBBBBBBBBBBBCCCCCCCCEEEEEEEEEEWWWWWMMMMMMMMMMMMMSYYYYYYYYWWYYUZZZQQZQQVVVVVVVBIIWWWIIOOOOOOOOCCPCCCCC +FFFFMMXXXWIIWWIIIIIIIZZZQQQQQQEEEEEEEBBBBBBBBBBBBBBOOCCCCCCEEEEEEEEEFWWMMMMMMMMMMMMMZYYZSSSYYYYYYWWUUUUUUQQQQQVWWVVWWIWWWOOOOOOOOOOCCCPPPCPC +FFFFWWWWWWWWWWWIIIIIZZZZZQQQQQEEEEEZZBBBBBBBBBBBBBBOOOCCCCCCEEEEEEEEFWWKMMMMMMMMMMZZZZZZZSSYYYYYYWWUUUUEQQQQXXVWWVVWWWWWWWWOOOOOOOOOOOOPPPPP +FFFFFWWWWWWWWWWWIIIIZZZZQQQQZZEZZZZZZZBBBBBBBBBBBBBOOOCCCCCEEEEEEEEEEWWKKKMMMMMMZZZZZZZZZSSSYYYYWWWUUUUUQQQQQXXXWWWWWWWWWWWXOOOOFOOOOOOOOPPP +FFFFFWWWWWWWWWWWIZZZZZZZZZZZZZZZZZZZZOBBBBBBBBBBBBBXOCCCCCEEEEEEEEEEKWWWKKMMMMZZZZZZZZZZZZHHWWWAAAAAAAAQQQQQRQQWWWWWWWWWWWWWOOOFFFOOOOOOOPPP +FFFFFWWWWWWWWWWWPZZZZZZZZZZZZZZZZZZZPPBBBBBBBBBBBBBXXCCCCCCEEEEEEEKKKWKKKKMMMMMZZGZZZZZZZZCHWWWAAAAAAAAQQQQQQQQTTWWWWWWWWWWWOOOFFFFFFOOOOOOO +FFFFWWWWWWWWWWWWWZZZZZZJZZJJZZZZZZZPPPBBBBBBBBBBBBBXXCCCCCEEEEEEEKKKKKKKKKKMWWWWWGZZZZZZZZHHWWHAAAAAAAAQQQQQQQQTTWWSWWWWWWWWLLOFFFFFUUOOOOOO +GGFFFFWWWWWWWWWWWZZZZZJJJJJJZZJJJJZZPPPPPPBBBBBBBBBXXCCCCCEEJEEEEEEEKKVKKKWWWWWWWZZZZZZZZHHHHHHAAAAAAAAQQQQQQQQQTTTSWWWWWWWWLLOFFFFFUUOOOOGG +GGFFFFFWWWWWWWWWWXXZZZJOJJJJJJJJJJJJQPPPPPBBBBBBBBBMXCCCCCCCEEEEEEEEVVVVVWWWWWWWZZZZAAAAAAAAAAHAAAAAAAAQQQQQQQQQTSSSWWWWWWWLLLOLFFFUUUUUGGGG +GGGGFFFWWWWWWWWXWXXXXXJJJJJJYJJJJJJJPPPPPPBBBBBBBBBXXCCCVVCCEEVEEEEEVVVWWWWWWWWWWWZZAAAAAAAAAAHAAAAAAAAQQQQQQQQQQSSSWWWWWWWLLLLLFFFUUUGGGGGG +GGGGFFWWWWWWWWWXXXXJJJJJJJJJJJJJJJPPPPPPPPPPCPPPMMMMXXXXXVVVEEVVEVVVVVVJJWWWWWWWWZZZAAAAAAAAAAHAAAAAAAAQQQQQQQSSSSSSWWWWWWWLLHHFFFHHGGGGGGGG +GGGGGGIIIKKWWXWXXXJJJJJJJJJJJJJJJJPPPPPPPPPCCPPPMMMMXXXXVVVVVEVEEVVVVVVVVVVWWWWWQQQQAAAAAAAAAAHAAAAAAAAQQQUUUQSSSSNWWWWWWWWLHHHFFFHHHGGGGGGG +GGGGBGBIKKKKKXXXJXJJJJJJJJJJJJJJJJPPPPPPPPPCCPPMMMMYYYXVVVVVVVVVEVVVVVVVVVVWWWWWQQQQAAAAAAAAAAAAAAHHHAAHHHHHHHHHSSNNWWWWWWWWWHHHHHHHHKGGGGGG +GGGBBBBBBKKKKKXXJJJJJJJJJJJJJJJJJJJPPPPPPPPCCCCAMRMYYYXVVVVVVVVVVVVVVVVVVVWWWWWWQQQQAAAAAAAAAAAAHHHHHHHHHHHHHHHHNNNNNNWWWWWHWHHHHHHHKKKGGGGG +GGBBBBBBBBBKKKXXJJJJJJJJJJJJJEJJJJJPPPPPPPCCCCCCRRMYYYVVVVVVVVVVVVIIDDVVVVWWWWWWWQQQAAAAAAAAAAAAHHHHHHHHHHHHHHHHNNNNNNWHHHHHHHHHHHHHKKKGGGGG +GGGBBBBBBBBBBXXXXXJJJJJJJJJJJEEJJJJPPPPPPCCCCCCCXRRYYYNNNVVVVVVVVIIIDKVVVVKWWWQWWQQQQQQNNNHAAAAAHHHHHHHHHHHHHHHHNNNNNNWHHHHCCCHHHHHHKKKGGGGG +GGGGBBBBBBBBBXXXXJJJJJJJJJJJJJJSJJJPPPPPPPPCCCXXXRRYYYNNNNVVVVVVIIIFKKVVVVKSQQQQQQQQQNNNNNNAAAAAHHHHHHHHHHHHHHHHNNNNNNWWHHHCCHHHHHHKKGKGGGGG +GGGGGGBBBBBBBXXXXJJJJJJJJJJJJJJJPJJPPPPPPPPPCCXXXYYYYYYYYYVVVVVVGGVFKKVVVVKKKQQQQQQQQNNNNNAAAAAAHHHHHHHHHHHHHHHHNNNNNNWHHHHCCCHKHKHHKGGGGGGG +GGGBBBBBBBBBBBXXXXXXJJJJJJJJJJPPPPPPPPPWWWWWXXXXYYYYYYYYYNNVVVVVVVVKKKVKKKKIKKQQQQQQQQNNAAAAAAAAAAHHHHHHHHHHHHHHNNNNNNWHHCCCCCNKKKKKKKGGGGGG +DGDDBBCBBBBNNNNNXXXAAJAAAJFFFJPPPPPPPWWWWWWWXXXXYYYYYYYYYYYVVVVVVVVKKKKKKKKKKKKKQQQQQQQQAAAAAAAAAAHHHHHHHHHHHHHHYNNNNNNHHCCCCCNKKKKKKKGGGGGG +DDDYYBBBBBBJJNNEEAAAAAAAAAFFUFFVPPPPPWWWWWWLWXXXXYYYYYYYYYVVVVVVVVVVVVKKKKKKKKKKQQQQQQQQAAAANNNNNNHHHHHHHHHHHHHHYNNNNHHHHKCCCCCKKKKKKKGGGGGG +DDDDYYYBBDBJJJEEPPAAAAFAAAFFFFFVVVPPPQWWWWWWWXYYYYYYYYYYYZVVVVVVVVVVKKKKKKKKKKKKQQQQQAAQAANNNNNNNNHHHHHHHHHHHHHHYNNNNNKKHKKCCCKKKKKKKKLLGGGG +DDDDYYYDDDDDDDEEEEEAAAFFFFFFFFFFFVVPVWWWWWFWXXXYYYRYYYYNNVVVVVVVVVVVVKKKKKKKKKKKKQQQQAAAAANNNNNNNNHHHHHHHHHHHHHHYKNNNKKKKKKKCCKKKLLLLLLLLLGG +DDDDDDYDDDZDDDEEEEEIIFFFFFFFFFFFFVVPVVWWWWWHXXXXYYUYYNNNNVVVVVVVVVVVVVKKKKKKKKKKKKQQQAAAAANNNNNNNNHHHHHHHHHHHHHHKKNKKKKKKKKMKKKKKLLLLLLLLLLL +DDDDDDDDDDDDDEEEEEEIIFFFFFFFFFFFFVVVVWWWWWWXXXXXPPUUNNNNVVVVVVVVVVVVVVVKKKKKKKKKKKKKAAAAANNNNNNNNNHHHHTHHHHHHHHHKKKKKKKKKKKKVKKKLLLLLLLLLLLL +DDDDDDDDDDDDDEEEEEEEEFFFFFFFFFFFFVVVVWWWWWAAAXAUUUUUNNNNNNVVVVVVVVVVVVKKKKKKKKKKKKKAAAAAAANNNNNNNNHHHHTHHHHYYYYYKKKKKKKKKKKKKKKKKKLLLLLLLLLL +DDDDDDDDDDDDEEEEEEOOVFFFFFFFFFFFFFVVVVWVWWAAAAAUUUUUNNNNNNVVVVVVVVVVKKKKKKKWWKKKKKKKKAAAAANNNNNNNRHHHHTTTTTTYYYYKKKKKKKKKKKKKKKGKKKLLLLLLLLL +DDDDDDDDODOOEEEEEEOOOFWFFFFFFFFFFFVVVVVVWWAAAAUUUUUUNNNNNNLVVVVVVVVKKKKKKKWWWKKKKKAAAAAAAAAANNNNRRTTTTTTTTTYYYYYKYYKKKKKKKKKKKKKKKLLLLLLLLLL +DDDDDDOOOOOOEEEEEEOOOOFFFFFFFFFFVVVVVVLLOOLAAAUUUUDGNNNNNNNNVVVVVWRKKKKWWWWWWWWXXXAAAAAAAAAANNNNRRTTTTTTTTTYYYYYYYYYSSKKKKKKKKKKVLLLLLLLLLLL +DDDDOOOOOOOOEEEEEEOOOOFFFFFFFFFFVVVVVVLLLLLAAAAUQGGGNNNNNNNCCVTIVWRRKWKWWUWWWXXXXXAAAAAAAAAAUNNNNRTTTTTTTTTTYYYYYYYYSSKKKKKKKKKKLLLLLLLLLLLL +DDDDDDODOOOOOOEEEOOOOOFFFFFFFFFVVNNVVLLLLLLLAAAUGGGVVJJJANCCVVVIIWWWWWWWWWWWXXXXXXAEZZZZZWNNNNNNNRRRTTTTTTTYYYYYYYYYYSSKKKKKKKKKKLLLLLLLLLLL +DDDDDDDDOOOOOOEOEOOOOOFFFFFFFFFNNNNVLLLLLLLLLGGGGGGVGJJJJJJCVVIIWWWWWWWWWWWWXHHHUUUZZZZZZZUURNNNRRRRTTRTTRYYYYYYYYYYSSSSSSKKKKKKPPPLLLLLLLLL +DDDDVDDDOOOOOOOOOOOOOOOFFFFFFFNNNNGLLLLLLLLLLGGGGGGGGJJJJJJJVVIIWWWWWWWWWWHHHHHHHUUUUZZZZUUURRNRRRRRRRRRRRYYYYYYYYYYSSSSSSKKKKKKPPPPLLLLLLLL +DVVDVDDDOOOOOOOOOOOOOOOFFFFFNNNNNNGGLLLLLLLLGGGGGGGGGCCJJJJJDJPWWWWWWWWWHHHHHHHHUUUUUZZZZUUUURRRRRRRRRRRRRYYYYYYYYYSSSSSSSKKKKKPPPPPLLLLLLLL +DVVVVVDDOOOOOOOOOOOOOOOFZFFNNNNNNNNNLLLLLLLLLGGGGGGGGGGJJJJJJJPWWWWWWWWHHHHHHHHHUUUUUUUZUUUHCHHRRRRRRRRDDDXYYYYYSYSSSSSSSSKKKKPPPPPPPLLLLLLL +DVVVVVDOOOOOOOOOOOOOOONFNFFNNNNNNNNLLLLLLLLLGGGGGGGGGGGJJJJJJJJWWWWWWWWWWHHHHHHHHHHUUUZZUUUHHHHHHHRRDDDDDDDDYYYYSSSSSSSSSPPPPKPPPPPPPPPPLBLU +DVVVVVVVVVVOOOOVOOOOOONNNNFNNNNNNNNLLLLLLLLGGGGGGGGGGGGJJJJJJJJWWWWWWWWWWHHHHHHHHHUUUUUZUUUUHHHHHHRHDDDDDDDDYYYYYSSSSSSSSPPPPPPPPPPPPPPFPLLL +DVDVVVVVVVVOOOOVOOOOOVNNNNFNNNNNNNLLLLLLLLLGGGGGGGGGJJJJJJJJJJJJWWWWWWWWHHHHHHHHHHHUUUZZUUUUUUHHHHHHNNDDDDDDYYOYSSSSSSSSSPPPPPPPPPPPPPPPPXLL +DDDVVVDVVVVVVOVVOOOOOVNNNNNNNNNNNNNLLLLLLLLLLLGGGGGJJJJJJJJJJJJJWWWWWWWHHHHHHHHHHHHUUUZUUUUUUUSSHAAANNDDDDDDDDSSSSSSSSSPPPPPPPPPPPPPPPPPPXXX +DDVVVDDDVVVVVVVVVVOOOVNNNNNNNNNNNNNLLLLLLLLLLLLGGJJJJJJJJJJJJJJJJWWWWWWHHHHHHHHHHHHHUUUUUUUAAUAAAAAANNNDDDDDDDDSSSSSSSSPPPPPPPPPPPPPPPPPPXXX +DDVVVDDVVVVVVVVVVVVOOVNNNNNNNNNNNNLLLLLLLLLLLLLGLLUJJJJJJJJJJJOJJWWLWLWHHHHHHHHHHHHHUUUUUAAAAAAAAAAANNNDDDDDDSSSSSSSSSSSSPPPPPPPPPPPPPPXPPXX +DDDVVDDDDVVVVVVVVVVVOVVNNNNNNNNNNNLLLLLLLLLLLLLLLUUJAJAJJJJJJJJLLLLLLLWYYHHHHHHHHHHUUUUUUAAAAAAAAAAANNNDDDDDDDSSSSSSSSSSPPPPPPPPPPPPPPPXXXXX +DDDDDDDVVVVVVVVVVVVVVVVNNHNNNNNNLLLLLLLLLLLLLLLLLLUJAAAAJJHJJJLLLLLLLLWWYHHHHHHHHHHUUUUUUUAAAAAAAAAANNDDDDDDDDDSSSSSSTTSPPPPPPPPPPPPPPPXXXXX \ No newline at end of file