diff options
author | Jack Sangdahl <[email protected]> | 2024-12-12 01:11:52 -0700 |
---|---|---|
committer | Jack Sangdahl <[email protected]> | 2024-12-12 01:11:52 -0700 |
commit | eff106fe761ed2a6fb977d3b28464c92f4867bdb (patch) | |
tree | 39d624eb4c60aeda8bfab8f4dadc1a86ff03e5ca | |
parent | 6dcf66699c5790aa81ec11f9c40ea6b4b1dab029 (diff) | |
download | aoc-eff106fe761ed2a6fb977d3b28464c92f4867bdb.tar.gz aoc-eff106fe761ed2a6fb977d3b28464c92f4867bdb.zip |
Day 12 2024
-rw-r--r-- | 12_2024.py | 54 | ||||
-rw-r--r-- | data/12_2024.txt | 140 |
2 files changed, 194 insertions, 0 deletions
diff --git a/12_2024.py b/12_2024.py new file mode 100644 index 0000000..072603d --- /dev/null +++ b/12_2024.py @@ -0,0 +1,54 @@ +from collections import deque + +input = "data/12_2024.txt" +data = open(input).read().strip() +lines = data.split("\n") +rows = len(lines) +cols = len(lines[0]) +p1, p2, vis = 0, 0, set() +dirs = [(-1, 0), (0, 1), (1, 0), (0, -1)] + +for r in range(rows): + for c in range(cols): + if (r, c) in vis: + continue + q, dic = deque([(r, c)]), dict() + area, perim = 0, 0 + while q: + r2, c2 = q.popleft() + if (r2, c2) in vis: + continue + vis.add((r2, c2)) + area += 1 + for dr, dc in dirs: + rr = r2 + dr + cc = c2 + dc + if 0 <= rr < rows and 0 <= cc < cols and lines[rr][cc] == lines[r2][c2]: + q.append((rr, cc)) + else: + perim += 1 + if (dr, dc) not in dic: + dic[(dr, dc)] = set() + dic[(dr, dc)].add((r2, c2)) + sides = 0 + for k, vs in dic.items(): + vis_dic = set() + for pr, pc in vs: + if (pr, pc) not in vis_dic: + sides += 1 + q = deque([(pr, pc)]) + while q: + r2, c2 = q.popleft() + if (r2, c2) in vis_dic: + continue + vis_dic.add((r2, c2)) + for dr, dc in dirs: + rr, cc = r2 + dr, c2 + dc + if (rr, cc) in vs: + q.append((rr, cc)) + p1 += area * perim + p2 += area * sides + + +print(p1) +print(p2) diff --git a/data/12_2024.txt b/data/12_2024.txt new file mode 100644 index 0000000..6e3a71c --- /dev/null +++ b/data/12_2024.txt @@ -0,0 +1,140 @@ +SSSSSSSSSSSSSSSWWWWWHHHHHHHHHHHHHHHHHHBBBJJJJJJJJJIJUUUUUUUUUOOOOOOOOOHHHHHHHHHGGGGGGGGGGGGGGGGTTTTTTTTTTZZZHHSSHHHEEEEEEEETTTTTTTTTTOOOOOOO +SSSSSSSSSSSSSSSWWWWWWHHHHHHHHHHHHHHHHHBBJJJJJJJJJJJJUUUUUUUOOOOOOOOOOOOHHHHHHHHHGGGGGGGGGGTTTGTTTTTTTTTTZZHHHSSSHHEEEEEEEEETTTTTTTTTTTTOOOOO +SSSSSSSSSSSSAAWWWWWWWBBBBHBBBHHHHHHHHHJJJJJJJJJJJJJUUUUUUUPOCOOOOOOOOOOHHHHHHHHHGGGGGGGGGGGTTTTTTTTTTTTTZHHHHHHSHHHHEEEEEEETTTTTTTTTTTOOOOOO +SSSSSSSSSSSSAAAAAWRWBBBBBBBBBHHHHHHHHHJJJJJJJJJJJJJJUUUPPPPPPSOOOOOOOOOHOOOOHHHGGGGGGGGGGGGTTTTTTTTTTTTTHHHHHHHHHHHHBBEEEEETTTTTTTTTTTTOOOOO +SSSSSSSSSSAAAAAAAWRWWBBBBBBHHHHHHHHHHHJJJCJJJJJJJJJJUUUUPPPPPOOOOOOOOOOOOOOOHHHGGGGGGGGGGGGTTTTTTTTTTTTTHHHHHHHHHHHBBBBBEEETTTTTTTTOOOOOOOOO +SSSSSSSSAAAAAAAARRRWBBBBBBBHHHHHHHHHHHJJJJJJJJJJJJJJUUUUPPPPPOOOOOOOOOOOOOOOHGHGGGGGGGGGGGGETTTTTTTTTTTTHHHHHHHHEHHBBBBBEEEEEOHTTTTOOOOOOOOO +SSSSSSSAAAAAAAARRRRBBAABBBZZHHHHHHHHCCXXJJJJJJJJJJUUUUUUPPPPPPPOOOOOOOOOOOOOGGGBGGGGGGGGGGGETTTTTTTTTTTTHHGGGHHHHBBBBBBBEEEEEOOTOTOOOOOOOOOO +SSSSSSSSAAAAAAARRRKBBAABBBEZHHHHHHHHHXXXJJJJJJJJJUUUUUUPPPUPPPPOOPOOOOOOOOSGGGGGGGGCGGGFFQFETTTTTTTTTTTPHHGGGGGHGBBBBBBBBEEEOOOOOOOOOOOOOOOO +SSSSSSSSSAAKKAAARRRAAAAAEEEEEHEHXHHHHXXXJXJXJJJJJUUUUUUUUUUPSPPOOPPOOOOOOOOOGGGGGGGGGLFFFQFTTTTTTTTTTTTPGGGGGGGGGBBBBBBEEEEEEEOUOOOOOOOOOOOO +CSSSSSSSSSSKAAAARRAAAAAAEEEEEEEXXXHHHXXXXXXXXJJJJJJUUUUUUUUUUUUUUUUUUOOOOOOGGGGGGGGGFFFFFFFTTTTTTTXTTTTLLGGGGGGGGGBBBEEEEEEEEOOUOOOOOOOOOOOO +CSSSSSSSSSKKKAAAAAAAAAAAEEEEEEEXXXHHXXXXXXXXXJJJJGGUUUUUUUUUUUUUUUUUUOOOOGGGGGGGGGGFFFFFFFFFFTTTTTTTLLTLGGGGGGGGGGBBBEPEEEEEPXXOOOOOOOOXXOOO +CSSSSSSSSKKKKAAAAAAAAEEEEEEEEPPEXXHXXXXXXXXXJJJJJJUUUUUUUSSUUUUUUUUUUOHHOGGAGGGGGGGFFFFFFFFFFTTGGGHHLLLLLLGGGGGGGGMBBPPEEEEEPPPPSOOOOOOXXXXX +CMSSSSSSSKKKKKKAAAAAAAEEEEEEPPPEEXXXXXXXXXXHUUJFFJUUUUUUSSSUUUUUUUUUUAAAAAAAGGGGEEEEEEFFFFFFFFFRRRRHHLLLLLLLGGGGGGGBBPPPPPPPPPPFOOOOXXXXXXXX +CCKSSSSSQQQKKKKAAAAAAAZEEEEEEEEEEEXXXXXXXXXHHHFFFUUUUUUUUUUUUUUUUUUUUAAAAAAAGGGGEEEEEEFFFFFFFFFRRRRRHLLLLLLLGGGGGGGGGGPPPPPPPPPWOOOXXXXXXXXX +CCKSSSSQQQQKKKKKAAAAZAZEEEEEEEEEEXXBXXXXXXXHLHHUUUUUUUUUUUUUUUUUUUUUUAAAAAGGGEEEEEEEEEEFFFFFFFFRRRRRHLLLLLGGGGGGGGGGGPPPPPPPPPWWOOOOXXXXXXXX +KCKKKKKKKKKKKKKKAAAAZZZEZEEEEEEEGBBBBXXXXHHHHHUUUUUUUUUUUUUUUUUUUUUUUAAAEEEEEEEEEEEEEEEEEEFFFFFHHHHHHHLLLLLLGGGGGGGPPPPPPPPPPPWWWOOOXXXXXXXX +KKKKKKKKKKKKKKKKAAAAZZZZZZEEEEGGGBBBBBBBXHHHHHHHUUUUUUUUUUUUUUUUUUUUUANAEEEEEEEEEEEEEEEEEEFFFFFHHHHLLHLLLLLLGGGGGJGTRYPYPPPPPWWVWWWXXXXXXXXX +KKKKKKKKKKKKKKKAAAAZZZZZZZEEEEGGBBBBBBBHHHHHHHHUUURCUUUUUUUUUUUUUUUUUAAJEEEEEEEEEEEEEEEEEEFFFHHHHHHLLLLLLLLLGGGGGJRRRYYYPPPWWWWWWWWXXXXXXXXN +KKKKKKKKKKKKKVKAAAAZZZZZZNEEEEGGBNBBBBBBBHHHHHHUURRCUUUUUUUUUUUUUUUUUJJJEEEEEEEEEEEEEEEEEEFHHHHHRHRILLLLLLLLGGGGGRRRRYYYYPWWWWWWWWWXUXXXPXNN +KKKKKKKKKEKEKKKAAAAZZZZZZEEEEGGBBBBBBBBBGGHHHHHHFCCCUUUUUUUUUUUUUUAAJJJJEEEEEEEEEEEEEEEEEEXHHHHHRRRRLLLLLLLLGGGGIRRRRYYYYPWWSWWWWWWWUUUUUUUN +KKKKYYKEEEEEKKKKAAAAZZZZZEEENNGBBLBSBBBBBGGBBHHBFFCCCVNNUUUUUUUNNAAJJJJJEEEEEEEEEEEEEEEFFFXXXHXXXRRRLLLLLLLLLLLYYYRRRYYYYPWYYWWWWWWUUUUUUUUN +KKKYYYKEEXEXXRKKKKIZZZZZZPEENNBBLLLBBBBBBGGBBBHBFCCCCCNNUUUUUUUNNAJJJJJJEEEEEEEEEEEEEEERXXXXXXXXXRRRLLLLVRLLYYYYYYRRRYYYYYYYYWWWWWWUUUUUUUUN +KRRYYYXXXXXXXXKKKKZZZZZZZZZZHHHHHLBBBBBBBBBBBBBBBFNNNNNNUUUUUUUNNJJJJJJJEEEEEEEEEEEEEEERRXXXXXXXXRRRRRLRRRRLLYYYYYYYYYYYYYYYYYWWWCCUUUUUUUUU +RRYYYXXXXXXXKKKKKKKZZJZZZZZZHHHHHBBBBBBBBBBBBBBFFFNNNNNNNNNUUUNNNJJJJJJJEEEEEEEEEEEEEEERRXXXXXXXXRRRRRRRRRRRLKYYYYYYYYYYYCYYYWWWWCKUUUUTTTTT +RRRYYXXXXXXXXXKKKKKZZJZZZZZZZHHHHBBBBBBBBBBBBFFFFFNNNNNNNNNNNNNNNJJJJJJJJCCCCDDEEEDDXXXXXXXXXXXXRRRRRRRRRRRRLKYYYYYYYYYYYCCCCCCWCCKUUTTTTTTT +YYYYLLXXXXXXXXKKKKKKZZZZZZZZHHHHBBBBBBBBBBBBBBFFFFNNNNNNNNNNNNNNNJJJJJJCCCCCDDDEEEDBBBYXXXXXXXXRRRRRRRRRRRRRLRYYYYYYYYYYYCCCCCCCCCCCUTTTTTTT +LLYLLLXXXXXXXKKKKKKKZZZZZZZZHHHBBBBBBBBBBBBBFFFFFFNNNNNNNNNNTTTTJJJJJJJCCCCDDDDDDDDDDBYYXXXXXXXRRRRRRRRRRRRRRRYYYYYYYYYYYYCCCCCCCCCCCTTTTTTT +LLLCLLLXXXXXXKKKKKKKZZZZZZZHHHHBBBBBBBBBBBBBFFFFFFNNNNNNNNNNTTTTDDDDDJJJJJCDDDDDDDDDDYYYXXXXXWRRRRRRRRRRRRRPPPYYDYYYYYYYYYYCCTCCCCCCCTTTTTTT +LLLLLLXXXXXXXKKKKKKKZZZZZZZZHHHBBBBBBBBBBBBFFFFFFLLLLLLLLLNNTTTTDDDDDJJJJJCDDDDDDDDDYYYYYYYYYRRRRRRRRRRRRRRRRPDDDDDDYYYYYYYYTTCCCCCCCTTTTTTT +LLLLLYYYXXXXXKKKKKHKZZZHHHHHHHBBBBBBBBBBBBBFFFFFLLLLLLLLLLNNTTTDDDDDDAJJJCCDDDDDDDDDDDYYYYYYYRPYWWRRRRRRRRCCRRDDDDDDYYYYYYYYTCCCCCCCCTTTTTTT +LLLLYYYYYYXXXKKKKKHHZZZHHHHHHHHHHBBBBBBBBBBZZFFFLLLLLLLLLLETETTDDDDDDAAAADDDDDDDDDDDDDYYYYYYYYPYWRRRRRRRRRCCCCCDDDDDDYYDYYYYTTCCCCCCCTTTTTTT +LLLYYYYYYYKXXKKJJHHHHZZHHHHHHHHHHHHBBBBYBBBZWHFFLLLLLLLLLLEEEEEEEDDDDDDADDDDDDDDDDDDDDYYYYYYYYYYWRRRRRRRRCCCCCCDDDDDDDDDYYDDCCCCCCCCGTTTTTTT +LLLLYYYYYYKKKKKJJHTHHHHHHHHHHHHHHHHOBBBYYBBZWHHHLLLLLLLLLLEEEEEEDDDDDDAADDDDDDDDDDDDDDYYKYYYYYYYYYRRRRRCCCCCCCCCDDDDDDDYYYDDDCCCCCCCGTTTTTTT +LLLLLYYYYYKKKKJJNHHHHHHHHHHHHHHHHHHONNNNNNNNWHAALLLLEEEEEEEEEEEEDDDDDAAAAAADDDDDDFFDDDDFFYYYYYYYYYRRRRQCCCCCCCPPPPPDDDDDYYDTTTTTTTTGGGTTTTTT +LLLLYYYYYYYZZJJJHHHHHHHIHHHHHHHHHOOONNNNNNNNWWAALLLLEAEEEEEEEEEEDDDDDDDTTTTDTDDDDFFDFFFFFNNYYYYYYLLLRCCCCCCCCCPPPPPPPDDDDDDTTTTTTTTTTTTTTTTT +LLLYYYYYYBZZZVZJJJJJJHHIIIHHHOHHOOOONNNNNNNNWAAALLLLAAEEEEEEEJEEDDDDDDDTTTTTTTDDDFFFFFFFFFNYYYYYYLLLLLCCCCCCCPPPPPPPPDDDDDDTTTTTTTTTTTTTTTTT +LLLYYYYYYBBZZZZJJJJHHHHIIIHHHOOOOOOONNNNNNNNWWAALLLLAAAEAEEEEEEEDYDDDTTTTTTTTPPDZFFFFFFFFFFUUUUYYLLLLLLCCCCCPPPPPPPPPDDDNNNNNNNTTTTTTTTTTTTT +LLYYYYYYYBBZZZZZJJJJJIHIIHHHHOOOOOOONNNNNNNNWWWWLLLLAAAAAAEYEEEEEYYYDTTTTTTTTPPAZFFFFFFFFFFUUUUYYYLLLCCCCPPPPPPPPPPPPPDXNNNNNNNTTTTTTTTTGGGX +LLLYYYYYBBZZZZZZJJJJIIIIIHHHHHHOOOOONNNNNNNNWWWWAAAAAAAAAAEEEHEEEYYYTTYTTTAAAPAAZFFFFFFFFFFFUUUYYYLLLCLLPPPPPPPPPPPPPPDXNNNNNNNNNTTTTTTTGGGX +LLLLLYYYYYZZZZZZJJJIIIIIIIIIHFHODOOONNNNNNNNAWWWAAAAAAAAAHHHEHHHEYYYYYYTTSAAAAAWFFFFFFFFFFFFUUUYYYLLLLLLPPPPPPPPPPPPYPDXNNNNNNNNNTTTTTTTGGXX +LLLLLLLYJJJJZZJJJJJIIIIIIIIIIFFFOOOOOONNNAAAWWWWWAAAAAAAAHHHHHHHEEYYYYYYYYAAAAAAAFFFFFFFFFFUUUURRLLLLLLLLPPPPPPPPPPPPPDPNNNNNNNNNTTTTTTTGGBB +LLLLLLLLLJJJZZJJJJJIIIIIIIIIIFFFOOOOOONNNOATTWWWWAAAAAAFFHHHHHHHYYYYYYYZYAAAAAAAAAFKFFFFFFFFFRRRRLLLLLLLLPPPPPPPPPPPNNNNNNNNNNNNNTTTTTTTGNBB +LLLLLLLBLJJJJJJJJJJIIIIIIIIIIFFFOOOOOONNNTTTTWWWWWAAAHHHHHHHHHHHYYYYYXZZZZZZAAAAAAFFFFFFFFRFRRRRRLLLLLLLLLLPPPPPPPPPNNNNNNNNNNNNNNBBBBBBGBBB +LLLLLLLLHHHJJJJJJCCCIIIIIIIIIIIFFFOOHHNNNOTTTWWWWWWLLSHHHHHHHHHYYYYYYXZZZZZZAAUAAAAFFFFFBFRRRRRRRRLYLLLLLPLPPPPPPPPPNNNNNNNNNNNNNNBBBBBBBBBB +LLLLLLLHHHHJJJJJJJCCIIIIIIIXIIIIFFFOFHNNNTTTTTTTTWWLLHHHHHHHHHHYYYYYYXZZZZZZZAAAAAAAAFFBBFRRRRRRRRLYYLLLLPPPPPPPPPPPNNNNNNNNNNNNNNBBBBBBBBBB +HLLLLLHHHHHHJHJJCCCCCCIIIIIXIIIFFFFFFFNNNTTTTTTTTTTLLHLHHHHHHHHVVVYXXXXXZZZZZJJJAJDDDFBBBFRRRRRRRRYYYLLLLPPPPPPPCPPPNNNNNNNNNNNNNNBBBBBBBBBB +HHHHLHHHHHHHHHJJCCCCCCTIXXXXXFFFFFFFFFTTTTTTTTTTTLLLLLLHHVHHVHVVVVXXSSSXSSZZZZZJJJJDFFDDBFRRRRYYYYYYYLLLPPPPPPPCCPCCAAAAANNNNNNNNNBBBBBBMHHH +HHHHHHHHHHHHHHHHBCCCCFCIIXXXXXFFFFFFFFTTTTTTTTTTLLLLLLXHHVVVVVVVVVVVSSSSSSSZZZZZJDDDFDDDDDDRRDAYLLLLLLLLPPPPPPPCCCCAAAAAANNNNNNNNNBBBMMBMHHH +HHHHHHHHHHHHHHHBCCCCCCCCCCXXXIIIIIIIIITTTTTTTTTTLLLLLLLVHVVVVVVVVVVDSSSSSSSZZZZZZZDDDDDDDDDDDDDLLLLLLLPPPPPPPPPPCCCAAAAAAAAAAAABBBBBBBMMMHHH +HHHHHHHHHHHHHHBBBCCCCIIIIIIIIIIIIIIIIITTTTTTLLLLLLLLLLLVVVVVVVVVVSSSSSSSSSSVSZZZZZDDDDDDDDDDDDLLLLLZLLPPPPPPPPPPPAAAAAAAAAAAAAABMMMMMMMMMMHH +HHHHHFHHHHHHHBBBBBCCCIIIIIIIIIIIIIIIIITTLLLLLLLLLLLLLLLVMVVVVVVVVSSSSSSSSSSSSZZZZZDDDDDDDDDDDDDLLLLZZLPPPPPPPPPPPAAAAAAAAAAAAAAAMMMMMMMMMMMM +CCFFFFHHHHHBBBPBBBBCCIIIIIIIIIIIIIIIIITTTTLLLLLLLLLLLVVVMVVVVVVSSSJSSSSSSSSSSUZZIZDDDDDDDDDDDKKKLLZZLLLPPPPPPPPPOAAAAAAAAAAAAAAAMMMMMMMMMMMM +CCFFFFFHHHHJBBBBBBCCCIIIIIIIIIIIIIIIIITVVVVLLLLLLLLLLLLVVVVVVVVVVSSSSSSSSSSSZUUZIIDDDDDDDDDDKKKKLZZZZKKKKPPPPZPPOOOAAAAAAAAAAAAAMMMMMMMMMMMM +CFFFFFFHHHHHBBBBBBBCCIIIIIIIIIIIIIIIIIZVVVVLVLLLLLLBLLLVIVVVVVVVSSSSSSSSSSSSUUUUUDDDDDDDDDDKKKKKKKKKZZAKKPPZZZZOOOOOAAAAAAAAAMMMMMMMMMMMMMMM +CFFFFFFHHHHHBBBBBXBBCIIIIIIIIIIIIZZZZZZVVVVVVLLLLLLBBIIIIVVVVVVSSSSSSSSSSSSSUUUUUUUDDDDDDDDKKKKKKKKKKKKKZZZZZZZZOOOOAAAAAAAAAAMAMMMMMMMMMMMM +FFFFFFFFFHHFFBBBXXBBIIIIIIIIIIIIIZZZZVVVVVVVLLLLLLLLBBIIIIVVPVVSSSSSSSSSSUUUUUUUUUUDDDDDDDDDDKKKKKKKKKKKZZZZZZZZOOOOOOAAAAAAAAAAMMMMMMMMMMMM +FFFFFFFFUFFFBBBBBBBBIIIIIIIIIIIIIZZZZVVVVVVVLLLLLLLBBBBIIIPUPVPKSSSSSSSSSSUUUUUUUUUDDDDDDDDDPKKKKKKKKKKKKZZZZZZOOOOOOOAAAAAAVVAAMMMMMMMMMMMM +FFFFFFFFFFBBBBBBBBJJIIIIIIIIIIIIIZZZZZVVVVVVVLLLLLLLBBIIIPPPPPPSSSSSSSSSUUUUUUUUUUUDDDDDDDDDPPPKKKKKKKKKKZZZZZZOOOOOOOTTHAAVVVVVMCMMMMWMMMMM +FFFFFFFFFBBBHBBBBJJJIIIIIIIIIIIIIZZZZZYVVYYVVVVLLLLLBBIIIIPPPPPPPZSSSSSSUUUUUUUUUUUUDDDDDDDPPPPKKKKKKKZZKZZZZZZOOOOOOTTTHHHVHHVMMMMMMMMMLMMM +FFFFFFFFXBBBBBBBBBJJIIIIIIIIIIIIIZZZZNYVYYYYYYVVLLLLIIIIIIIPPPPPPZSSSSESUUUUUUUUUUUUUDDDDPPPPPPKKKKKKKKZZZZZZZZOOOOOOOTTHHHHHHVHCCCCMMMMMMMM +FFFFFFFFFBBBBBBBBBBBIIIIIIIIIIIIIZZZZYYYYYYYYYYVLLILIIIIIIPPPPPPPPPSSSUUUUUUUUUUUUUUUDDDDPPPPPPKKKKKKZZZZZZZOOOOOOTTTTTTAAHHHHHHCCCCCCMMMMMM +FFFFFFFFFBBBBBBBBBBBIIIIIIIIIIIIIZZZZZYYYYYYYYYYYLIIIIIIIIPPPPPPPPPPASUUUUUUBUGUUUUBUJJJJJJJJJJPPKKBZZZZZZZOOOOOTOTTTTTTAAHHHHCCCCCCCCMCMMMM +FFFFFFFFFFBBBBBBBBBBIIIIIIKKZZZZZZZQQYYYYYYYYYYYYIIIIIIIIPPPPPPPPPPPAAUUUUBBBBUUULBBUJJJJJJJJJJPPKKKZZOZZZOOOOOOTTTTTTTTTHHHHHCCCCCCCCCCMMCC +FFFFFFFCWWBBBBBBSBBBIIIIKYKKZZZZZZQQQYYYYYYPYYYIIIIIIIIIIPPPPPPPPPAAAUUUUUVVBBBUUUBBBJJJJJJJJJJPPPKAZZOOOOOOOOOOOTTTTTTLLLHHHHHCCCCCCCCCCMCC +FFFVVVWWBWNWBSSSSBSSIIIIKKKKZZZZZZQQQYYYYYYPPPYIIIIIIIIIIIPPPPPPPPPPAUUAAAVVVVBBBBBBBJJJJJJJJJJPPPOOOOOOOOOOTTOOTTTTTTTLLLLHHHHCCCCCCCCCCCCC +QQFFVVWWWWWWBSSSSSSSSKKKKKKKZZZZZZZZQZZYYYYPPPPIIIIIIIIIIIPPPPPPPPPPAAUAAAVVVBBBBBBBBJJJJJJJJJJPYPOOOOOOOOOOOTTTTTTTTTTTTLLHLHHCCCCCCCCCSSCC +QWFVVVWWWWWWBBSSSSSSSKKKKKKKOOZZZZZZZZZIYYPPPPPVVIIIIIIIIIIPPAPPPAAAAAAAAVVVVBBBBBBBBJJJJJJJJJJPOOOOOOOOOOOOTTTTTTTTTTTTLLLLLLLLLLCCCCCCSSSS +QWVVWWWWWWWWWOSSSSSSKKKKKKKKKKZZZZZZZZZIIPPPPPPVVIIIIIIIIIINPPPAAAAVVAAAAVVVVJJJJBBBBJJJJJJJJJJMMOOOOOOOOOOOTTTTTTTTTTTLLLLLLLLLLLLCCCCCSSSS +WWWWWWWWWWWWWOOSSSSSKKKKKKKKKZZZZZZZZQIIIIPPPPVVDIIIIIIIIIIISSSAAAVVVVVVVVVVVJJJJBBBBJJJJJJJJJJMMNOOOOOOOOOETTTTMTTTTTTLLLLLLLLLLLLLLCSSSSSS +WWWWWWWWWWWWWWSXSSSSKKKKKKKKKKZZZZZZZZIIIIIGGGVVDDIIIIIIIIISSSSASAAVVVVVVVVVVJJJJJJJJJJJJJJJJJJNNNNONNNOOEEETTTTMTTTTTTLLLLLLLLLLLLLASSSSSSS +WWWWWWWWWWWWWWSSSSSSSKKKKKKKZZZZZZZZIIIIIGGGGGGVVVVVVIIVTTTSSSSSSAAAVMSVVVVVVJJJJJJJJJJJJJJJJJJNNNNNNNNOEEEEBBTTMTTTTTTLLLLLLLLLLLLLLLSSSSSS +WWWWWWWWWWWWWWSSSSSSSSKKKZKZZZZZZZIIIIIIIGGGGGVVVVVVVVVVTTTSSSSSSSSSSSSVVVVVVJJJJJJJJJJIIIIINNNNNNNNNNNNNEEEBBTMMTTTTTTTTLLLLLLLLLLLLLMMSSSN +WWKWWWWWWWWWWWWSSSSSHHKKKZZZZZZZZZIIIIIIIGGUGGVVVVVVVVVVVVTTSSSSSSSSSSSVLVVVVJJJJJJJJJJIIIIINNNNNNNNNNNNNEEEEEEMMMTTAAAALLLTTLLLLLLLLLMMMXXN +WWWWWWWWWWWWWWTSJJJSJHKKKYZZZZZZZIIIIIIIGGGVVVVVVVVVVVVVVVVTTSSSSSSSSSLLLVVVVJJJJJJJJJJIIIUINNNNNNNNNNNNNEEEEMMMMTTTAAAALTTUTTTLLLTXXMMMMXXX +WWWWWWWWWWWWWWTJJJJJJHKKYYYZOZZZZZIIIIIGGGVVVVVVVVVVVVVVWVDDDSSSWSSLLSLLLLVVVJJJJJJJJJJLIINNNNNNNNNNNNNNNEEEEEEMMMTMTAAAATTUTTTTLLTTXMMXXXXX +WWWFWWWWWMMMWMJJJJJJJJJYYYYZZZOZIIIIIIIIGGVVVVVVVVVVVVVVWWDDDDDWWSAALLLLLLLLLJJJJJJJJJJLIDNNNNNNNNNNNNSNNEEEEEMMMMMTTAAAATTTTTTTTTTTXXMXXXXX +WFFFMMMMMMMMMMJJJJJJJLJJJYYYYZZIIIIIIIIIIVVVVVVVVVVVMVVDDDDDDDDDDDDAAALLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNSNNNEFFPTTMTMTTTATATTTTTTTTTTXXXXXXXXF +WFFFMMMMMMMMMMJJJJJJJJJJJYYYYIZIIIIIIIIIZVVVVVVVVVMMMMDDDDDDDDDDDAAAALLLLLLLLLLTTGGLLLNNNNNNNNNNNNSNSJSSTTEFFPTTTTTTTTATTTTTTTTTTTTXXXXXCXFF +WFFFFRRRRRRRJJJJJJJJJJJJJJYYIIIIIIIIIIIVVVVVVVVVVVMMMMDDDDDDDDDDDAATLLLLLLTLLLTTPGGLLLLNNNNNNNSNSSSSSSSSTSFFFPTTTTTTTTTTTTTTTTTTTTXXXXXXXXFF +FFFFFRRRRRRRGJJJJJJJJJJJJJIIIIIIIIIIIIIDVVVVVVVVMMMMMMDDDTTTTDDDTAATTLLLLLTLTTTTGGGLLNNNNGGNSSSSSSSSSSSSSSFFPPTPMTTTTTTTTTTTTTTTTTXXXXXXXXFF +FFFFFFRRRRRRRRUJJJJJJJJJJJIYYYIIYIIIIIIVVVVVVVVMMMMMMDDDDTTTTDDDTTTTTLLLLLTTTTTTTGGGGGGGGGGGSSSSSSSSSSSSSPPPPPPPPPXTTTTTTTTTTTTTTTTXXXEXXXFF +FFFFFFFRRRRRRRRJJJJJJJJYJYYYYYYIIIIIIIMMVMVVVVMMMMMMMDDDDTTTTDDTTTTTTTTLTTTTTTTTTGGGGGGGGGGGSSSSSSSSSSSSPPPPPPPPPPTTTTHHHHHTTYTTWWWXWEEEEEEE +FFFFFFFFFRRRRRRJJJJJJJJYYYYYYYIIIIIJIMMMMMMMVVMMMMMMMDDDDTTTDDRTTTTTTTTTTTTKTTTWWWGGGGGGGGGGGGGSSSSSSSSSPPPPPPPPPPTTTHHHHHHTTYYIYWWWWWWWEEEE +FFFFFRRRFRRRRRRRJJJJJJYYYYYYYYIIIIIJIUUMMMMMMMMMMMEDDDDDDTTTDDDTTTTTTTTTTKKKTTTKKKGGGGGGGGGVGGGSSSSSSSSSPPPPPPPPPPPHHHHHHHHYYYYYYWWWWWWWWEEE +QFFFMRRRRRRRRRRRRRQQQJJYYYYYYYYIIIIUUUUUUUUUMMMMMEEEEEEDDTTTDDDDTTTTTTTTTKKKKKTKKKKKGGGGGGVVVVSSSSSSSSSSPPPPPPPPPPPHHHHHYYYYYYYYYWWWWWWWWWED +QFMMMRRRRRRRRRRRRRRQYYYYYYYYYYYYYYYUUUUUUUUUMMEEEEEEEEEETTTTDDDDDTTTTTTTKKKKKSKKKKKKGGGVVVVVVVVWSSSSSSSSSSPPPPPPPPHHHHHHYYYYYYYYYWWWWWWWWWWW +QQQQQRRRRRRRRRRRRRRRYYYYYYYYYYYYYYUUUUUUUYUUUMEEEEEEEEEETTTTDDDKJJJJTTTTKKKKKKKKKKKKGGGVVVVVVVVWWSSSSSSSSSPPPPPPPPPHHHYYYYYYYYYYYYWWWWWWWWWW +QVVVQCRRRRRRRRRRRRRRYYYYYYYYYYYYYUUUUUUUUUUMMMEEEEEEEEEETTTTDRDKJJJJTTTTKKKKKKKKKKKKGGGGZVVVVVVWWWSMMSSSSSPPPPPPPPHHHHYYYYYYYYYYYYYWWWWWWWWW +VVVVVRRRRRDRRRRRRRRRYYYYYYYYYYYYUUUUUUUUUUUMMMEEEEEEEEEETTTRRRRRJJJJJJJTTKKKKKKKKKKKHGGZZVVQUXWWWWWMMMMMSSPPPPPPPPHHHYYYYYYYYYYYYYYWWWWWFWWP +VVVVRRRRRDDDRRRVRYYYYYYYYYYYYYYYYYYUUUUUUMMMMEEEEEEEEEEETTTRRRRVJJJJJJJTTQQKKKKKKKFKHHQQQQQQXXWWWWWWUMMMSPPPPPPPPPHHHHYYYYYYYYYYYYWWWWWWFWWP +VVVVVNNDDDDRRRRVVYYYYYYYYYYYYYYYYYYEUUUUUMMMMEEEEEEEEEEEERRRRRRVJJJJJJJQQQQQKKKKKKKZKHHQQQQXXXWXWWWUUMMMMPPPPPLLPPLLHHYYYYYYYYYYYJWWWWFFFWFS +VVVVVNNNDDVYRVVVVYYYYYYYYYYYYYYEEEEEEUUUUUMMMMEEEEEEEEEEEEERRRRRJJJJJJJQQQQQKKKKKKKKKKQQQQQXXXXXWWUUUPPPPPPPPPLLLLLLHLYYYYYYYYYYYWWWSGGFFFFS +VVVVVVNNDNVVVVVVVVVVYYYYYXYYYYYYEEEEEEUUMMMMMMEEEEEEEEEEEEQQQQRRJJJJJJJQQQQQKKKKKKKKMQQQQQQXXXXXXXUUUPPPPPPPPPPLLLLLLLLLLYYYYKYYYWISSGGGFFFS +VVVVVVNNNNVVVVVVVVVVVYYCXXYYYXYYEEEEEEEEEMMMMMEEEEEXEEREQQQQQQQVJJJJJJJQQQQPPKKKKKKKKQQQQQQXXXXXXXXXUXXPPPPPPPPLLLLLLLLLYYYYYKYYYYYSGGSSSSFS +VVVVVNNNNNFFVVVVVVVVVJJXXXXXXXXYYEEEEEEEMMMMMMMMMEEXXQQQQQQQQQQVJJJJJJJQQQQQKKKKKKKXXQQQQQXXXXXXXXXUUXXQQPPPPPPPLLLLLLLLKKKKKKKKYVSSSSSSSSSS +VVEVVINNNNFFFVVVVVVFFXXXXXXXXXYYYEEEEEEEEDDDDMDCMKKXXXQQQQQQQQQQJJJJJJJQQQQQKKKKKKXXXQQQXXXXXXXXXBBIXXXQQQPXSPPLLLLLLLLLKKKKKKKKSSSSSSSSSSSS +IIIIIIINNNFFFFFFFFFFXXXXXXXXXXXXYEEEEEEEDDDDDDDCKKKXXXQQQQQQQQQQJJJJJJJQQQQQKKKKKKXXXXXXXXXXXXXXBBBXXXXQQQSSSPPLLLLLLLLLKKKKKKKSSSSSSSSSSSSS +IIIIIINNNNFFFFFFFFFXXXXXXXXXXXXXEEEEEEEDDDDDDDDCKKKKXXQQQQQQQQQQQQQDQQQQQQXQKKKKXXXXXXXXXXXXXXXXBBBVXXXXQQSSSSYYLLLLLLLLKKKKKKKSSSSSSSSSSSSS +IIIIIIIIIFFFFFFFFFFFXXXXXXXXXXXXEEEEEEEEDDDDDDDDDKKQQQQQQQQQQQQQQQQDQQQQNQXQXXKXXXXXXXXXXXXXXXXXXXBXXXXXSSSSSSSYSSLLLILLKIIIKKKKKSSSSSSSSSSS +IIIIIIIIIZFFFFFFFFFXXXXXXXXXXXXXEEMEEEEDDDDDDDDKKKKQKQQQQQQQQQQQQQQQQQQQQQXXXXXXXXXXXXXXXXXXXXXXXXGXXXXXSSSSSSSSSIIIIIIIIIIIKKKKKKKKSSSSSSSS +IIIIIIIIIZZZOOOOFFFXXXXXXXXXXXXXMEMEEEEHDDDDDDDDDKKKKQQQQQQQQQQQQQQCQYYYYQMXXXXXXXXXXXXXXXXXFFXXXXXXXXXXSSSSSSSIIIIIIIIIIIIIKKKKKKKKSSSSSSSS +IIIIIIIIIZZZOOMMFFFFXXXXXXXXXMMMMMMREEEHHHDDDDDDDKKKKKQQQQQQQQQQQQDDDYDDDLMXXXXMXXXXXXXXXXXXFFXXXXXXXXXSSSSSSSUIIIIIIIIIIIIIKKKKKKKSSSSSSSSS +IIIIIIIIIZZZOOOOOOFFXXXXXXXXXMMMMMMMMEHHHDDDDDDDDKKKKIQQQQQQQQQQQQDDDDJDLLMMMMMMMMMMXXXXXXXXFFFXXXXXXXXSSSSSSSSIIIIIIIIIIIIIIIKKKKKKSSSSSSSD +IIIIIIIIZZZOOOOOOOFFXXXXXXXXXMMMMMMMHHHHHDDDDDDDDDKKKIQQQQQQQQQQQQDDDDDDDDMMMMMMMMMMXXYXXXXXFFFXXXXXXSSSSSSSSSSSSIIIIIIIIIIIIIKKKKKKBSSSKSDD +IIIIIIIIIZZOOOOOOOOFFXXXXXXXMMMMMMMMHHHKHKDDDDDKKKKKIIIIKICIQQAQQADDDDDDDMMMMMMMMMMMMYYXXXXFFFXXXXXXXXXSSBSSSSSSSIIIIIIIIIIIIKKKKKKKKZSSSDDD +IIIIIHIIZZZOOOOOOFOFFFFXXXXXMMMMMMMMMHHKKKDDDDDDKKKKIIIIIIIIQIILIIDDDDDMMMMMMMMMMMMMFYYYYXXXXXXXXXXXXXXSSSSSSSSSSIIIIIIIIIIIIIKKKKKKZZSSSDDD +SSIIIHHHHZHOOOOOFFFFFFXXXXXMMMMMMMMMMHHKKKDDDDDKKKKIIIIIIIIIIIIIIIDDDDDDMMMMMMMMMMMFFYYYYVVVVXXXXXXXXXXXSSSSSSSSSIIIIIIVVIITIIIIKKZZZZSSXDDD +SIISSHHHHHHOOOOOOOFFFFXXXXXXLMMMMMMMMHHKKKDDKDKKKKKKIIIIIIIIIIIIDDDDDDDMMMMMMMMRMFFFFYYVVVVVVVXXXXXXXXXMSSSSSSSSSSIIIIIVIITTITTIEZZFFZBBXDDD +SSISSSSHHHOOOOOOOFFFFFFXXXXLLMMMMMMHHHHKKKKKKKKKKKKIIIIIIIIIIIIDDDDDDDDMMMMMMMRRMFFFFYYVVVVVVVXXXXXXAAASSSSSCSSSSVVIVVVVQVTTITTTEEZZFFBXXDDX +SSSSDDDHHHDDDOOOOOXFFFFFXXXXLLMMMMMHSHHKKKKKCKKKKKKKIIIIIIIIIIIIDDDDDDMMMMMMMMMRMMFFFFVVVVVVVVVXXXXXXAASSSSSSFFSAVVVVVVVVVVTTTTEEEEFFFBXXDXX +SSSSDDDDHHDOOOOODDXFFFFFXXXXXXXMQSHHSSHCCDCCCKKKKKKKIIIIIIIIIIIIDDDDBBMMMMMMMMMMMMFFFFVVVVVVVVTTXXXDAAAAASSSSFASAVVVVVVVVVVVVVTEOEEBFBBXXXXX +SSSSDDDDHHDDDDDDDDXXXXXXXXXXXXXSSSSSSSHCCDDCCKKKKKKKIIIIIIIIIIBDDBBBBBMMMBBMMMMMMFFFFFVVVVVVVTTTTXGTTAAAAAAASAAAAVVVVVVVVVVVVEEEEEEBBBXXXXXX +SSSWWWDDDDDDDDDDDXXXXXXXXXXXXXSSSSSSSSSSCCCCCCCKKKKKKIIIIIIIAABBBBBBBBBMMBBBMMMMMMFFFVVVVVVTTTTTTTTTTTAAAAAAAAAAAAVVVVVVVVVVVVEEEEEEBBXXXXXX +SSSWWWWDDDSDDDDDDDXXXXXXXXXXXXSSSSSSSSSSCCCCCCCCKKKOOOXIIIOAAAAAABBBBBBMMBBBMMMFFFFFFFVVVVHTTTTTTTTTTTTAAAAAAAAAAZVVVVVVVVVVVVBEEEBBBBBXXXXX +SSSWWLLSSSSDDDSSDMMMMXXXXXXXXXSSSSSSSSSSSCCCCCCCCKKOOOOIIIOAAAAAABBBBBBBBBBBMBFFFFFFFFVVVVVFFTTTTTTTTTTTAAAAAAAAAAVVVVVVVVVVVVBBBBBBBBBXXXXX +SSSSWSSSSSDDDSSSMMMMXXXXXXXXXXJSJSSSSSSSSCCCCCCCKKKOOOOOOOOOOAAAABBBBBBBBBBBBBFFFFFFFFFFFFFFTTTTTTTTTTTTFFAAAAAAAAVVVVVVVVVVVVVBBBBBBBBXXXXX +SSSSSSSSSSSSSSSMMMMMMMXXXXXXXJJJJSSSSSSSSCCCCCCCKKOOOOOOOOOOOAAAABBBBBBBBBBBBBFFFFFFFFFFFFFFTTTTTTTTTTTFFFFAAAAAAAAAVVVVVVVVVVBBBBBBBBBXXXXX +SSSSSSSSSSSSSSSMMMMMMMXXXVXXXJJJJSSSSSSSSCCCCCCKKKKOOOOOOOOOOAAAABBBBBBBBBBBBBFFFFFFFFFFFFTFFTTTTTTTTTFFFFFAAAAAAAAAVVVVVVVVBBBBBBBBBBBBBXXX +SSSSSSSSSSSSSSSMMMMMMMXXXVVXJJJJJSSSSSSSCCCCCCCKKKOOOOOOOOOOOAABBBBBBBBBBBBBBBFFFFFFFFFFFTTTTTTTTTTTTTFFFFFFKAAAAAAAVVVVVVVVVBBBBBBBBBBBBBBX +SSSSSSSSSSSSSSKMMMMMMMMMMVVXXPPJSSSSSSSSSSSCCCCCCKOOOOOOOOOOAAAABBBBBBBBBBBBBBFFFSFFFFFFFTTTTTTTTTTTTTFFFFFAAAAAAAAAUVVVVVVVBBBBABBBBBBBBBBB +SSSSSSSSSSSSSSSSMMMMMMMMMMMKXPPPSSSSSSSSSSSSKCOCKKKKKZOOOOOOOAAAAABBBBBBBBBBQBFFSSSSFFFFFFTTTTTTTTTTTTFFFFFFASSSAAUUUVVVVBBBBBBAABBABBBBBBBB +IISSSSSSSSSSSSSSMMMMMCMMMWMKKPPPPPPSAASSSSSSKCKKKKKKKZOOOOOAAAAAAABBBBBBBBBBBBFSSSSSFFFFFFTFTTTTTTTTTTFFFFFFFFFFUUUUUUVUUBBBBBBAAAAAAAAABBBB +IISISSSSSSSSSSSMMMMMMCNCWWWNNNPPPPAAAASSSSSCKCCKKKKKAZOLOAAAAAAAAAAABBBCCBBSFFFSSSSSFFFFFFFFFFFTTTTTTTFFFFFFFFFFFUUUUUVVUUUBBBROAAAAAABBBBBB +IIIIISSSSUUSSOSMMMMCCCNCWWWNNNPPNPNNAASSSSSCCCCCHHKHAAAAOAAAAAAAAAABBBBCCCSSSSSSSSSSSFFFFFFFFFFFKTTTTTFFFFFFFFFFFUUUUUUUUUUUURRRRAAAAABBBTTT +IIISSSSUUUUUSUMMMMMCCCCCCWWNNNNPNXNAASSSSSSCCCCCCHKHAAAAAAAAAAAAAAAAABBBSSSSSSSSSSSSSFFFFFFFFFFKKKFFFFFFFFFFFFFFFUUUUUUUUUUURRRRBAAAAAAATTTT +IIISISSUUUUUUUMMMMCCCCCCCCCCNNNNNNNNNSSSSCCCCCCCCHHHHAAAAAAAAAAAAAAAAAGBISSVVSSSSSSSFFFFFFFFFFFFFFFFFFFFFFFFFFFFFUUUUUUUURRRRRRRRRRRAAAAATTT +IIIIIIUUUUUUUUMUMMCCCCCCCCYNNNNNNNNSSSSSSSCCCCCHHHHHHHHAAAUAAAAAAAAOAABBBVVVVVSSSSSSSFFFFFFFFFFFFFFFZFFFFFFFFFFFFUUUUUUUUURRRRRRRRRRAATTTTTT +PPPIPPIUUUUUUUUUMCCCCCCCCCCNNNNNNNNSSSSSSSSCCCHHHHHHHHUUUUUUUAAAAAGOGABBBBDDDVSYFFSFFFFFFFFFFFFFFFFFZFFFFFFFFFFFUUUUUUUURRRRRRRRRRRAATTTTTTT +PPPPPPUUUUUUUMMMMMMCCCCCCCCCNNNNNNNNMMSSSSSCCCTHHUUHHHUUUUUUUUAAAAGOGBBBBDDDDDFYYFFFFFFFFFFFFFFFFFZZZZZZFFFFFFFFFUUUUUUURRRRRRRRRRRAAAATTTTT +PPPPPPUUUUUUUUMMMMCCCCCCCCCCCNNNNNMMMMMSSSSCQTTTTUUUUUUUQUUUUUAAAGGGGBBBBDDDDFFFFFFFFFFFFFHHHFFFZZZZZZZZZFFFFFFFFUUUUUUUURRRRRRRRRRAAAAATTTT +PPPPPPPUPUUUUAMMMMCCCCCCCCCNNNNNNNMMMMMMSSSSTTTTUUUUUUUUUUUUUUAAGGGGBDDDDDDDDFFFFFFHHFFHHHHHZZZFZZZZZZZYYOOOFFUUUUUXXXXURRRRRRRRRRRRCCAATTTT +PPPPPPPPPUPUUPPMMMCCCCCCCCCCNNNNNNMMMMMMMSSSTTTTUUUUUUUUUUUUUUGGGGGGDDDDDDDDDDDDDDDHHHFFHHHHHHZZZZZZZYYYYOYOFFUUUUUXXXXXXRRRRRRRRRCCCCAAAAAA +PPPPPPPPPPPPPPTMMMGCCCCCCCCCNNNNNNMMMMMMSSTTTTTTTFUUUUUUUUUUUGGGGGGGDDDDDDDDDDDDDDHHHHHFHHHHHZZZZZZZYYYYYYYYUUUUUUXXXXXXXXRRRRRRRRCCCCCAAAAA +PPPPPPPPPPPPPPPGGGGGCCCCCCCCNNNNNNNMMMSMSSTTTTTTTTTUUUUUUUUUUVGGGGGGDDDDDDDDDDDDDDHHUHHHHHHHHHZZZZZZYYYYYYYUUUUUUUXXXXXXXRRRRRRRRRCCCCCCAAAA +GPPPPPPPPPPPPPPGGGGGGCCCCCHNNNNNHHHMMSSSSTTTTTTTTTUUUUUUUUUGGGGGGGGGGDDSDDDDDDDDDDDHHHHHHHHHHHZZZZZYYYYYYYYUUUUUXXXXXXXXXRXXXRRRCCCCCCCAAAAA +PPPPPPPPPPPPPPPGGGGGGCCCHHHNNNNNHMMMMMMSSTTTTTTTTTTTUUUUUVVGGGGGGGGGGDDDDDDDDDDDDDHFHHHHHHHHHHZZZYZYYYYYYYYYYUXXXXXXXXXXXXXXXXRRRRBCCCCAAAKA +PPPPPPPPPPPPPPGGGGGGGCGHHHHNNNNNHMMMMMMTTTTTTTTTTTTTTUUUUUUGGGGGGGGGGGDDDDDDDDDDDDHHHHHHHHHHZZZZZYYYYYYYYYYYYUXXXXXXXXXXXXXXXXRRRRCCCCCAAAAA +PPPPPPPPPPPPGGGGGGGGGGGHHHHHHHNNHHMMMMMSTTTTTTTTTTTTTTUUTWUGGGGGGGGGGGDDDDDDDDDDDDHHHHHHHHHHHHZZZYYYYYYYYYYYYYZXXXXXXXXXXXXXXOORORCCCCCCOOOO +PPPPPPPPPPPPPGGGGGGGGGGGGHHHHHNHHMMMMMMSSTTTTTTTTTTTTTTUTWWGGGGGGGGGDDDDDDDDDDDDDDDHHHHHHHHHHZZZZYYYYYYYYYYYMYXXXXXXXXXXXXXXOOOROOOOOOOOOOOO +RRPYPRPPPPPPPGGGGGGGGGGGGGHHHHHHHHHMFMSSSTTTTTTTTTTTTTTTTTTYYGGGGGGGDDDDDDDDDDDDDHHHHHHHHHHHHZZZZZYYYYYYYWYMMXXXXXXXXXXXXXXXOOOOOOOOOOOOOOOO |