day 11 & day 12

This commit is contained in:
2024-12-14 21:41:56 +01:00
parent fa4e8f7a58
commit 441dac30b7
10 changed files with 418 additions and 2 deletions

View File

@@ -5,6 +5,7 @@
import sys,time import sys,time
from helpingFunctions import * from helpingFunctions import *
from collections import defaultdict
setSampleMode(False) setSampleMode(False)
@@ -14,12 +15,48 @@ aocYear = identifyYear(sys.argv[0])
path = getPath2Data(aocDay,aocYear) path = getPath2Data(aocDay,aocYear)
filename = getFilename2Data(aocDay) filename = getFilename2Data(aocDay)
def createGrid(data):
grid = {}
for gridY in range(len(data)):
for gridX in range(len(data[0])):
grid[gridX,gridY]=int(data[gridY][gridX])
return grid
def findTrails(grid):
trails = {}
trailStartList = [k for k,v in grid.items() if v == 0]
return trailStartList
def findNextinTrail(pos,trail,grid,p2=False):
ret = []
trailX,trailY = trail
for moveX,moveY in [(-1,0),(0,-1),(1,0),(0,1)]:
try:
value = grid[(trailX+moveX,trailY+moveY)]
except:
value = -1
if value == 9 and pos == 8:
ret.append((trailX+moveX,trailY+moveY))
elif value == pos + 1:
ret = ret + findNextinTrail(pos+1,(trailX+moveX,trailY+moveY),grid,p2)
if p2 == False:
ret = list(set(ret))
return list(ret)
def taskA (data) -> int: def taskA (data) -> int:
gameScoreA = 0 gameScoreA = 0
grid = createGrid(data)
trailList = findTrails(grid)
for trail in trailList:
gameScoreA += len(findNextinTrail(0,trail,grid))
return gameScoreA return gameScoreA
def taskB (data) -> int: def taskB (data) -> int:
gameScoreB = 0 gameScoreB = 0
grid = createGrid(data)
trailList = findTrails(grid)
for trail in trailList:
gameScoreB += len(findNextinTrail(0,trail,grid,True))
return gameScoreB return gameScoreB
def task(task: int,data) -> int: def task(task: int,data) -> int:

60
2024/day10/day10a.py Normal file
View File

@@ -0,0 +1,60 @@
import sys
import re
import heapq
from collections import defaultdict, Counter, deque
#import pyperclip as pc
def pr(s):
print(s)
# pc.copy(s)
sys.setrecursionlimit(10**6)
infile = sys.argv[1] if len(sys.argv)>=2 else '/home/bandeira/git.bandeira/aoc/2024/day10/input.day10'
p1 = 0
p2 = 0
D = open(infile).read().strip()
G = D.split('\n')
G = [[int(x) for x in row] for row in G]
R = len(G)
C = len(G[0])
def ways1(sr,sc):
"""How many different 0s can I reach going down from here?"""
Q = deque([(sr,sc)])
ans = 0
SEEN = set()
while Q:
r,c = Q.popleft()
if (r,c) in SEEN:
continue
SEEN.add((r,c))
if G[r][c]==0:
ans += 1
for dr,dc in [(-1,0),(0,1),(1,0),(0,-1)]:
rr = r+dr
cc = c+dc
if 0<=rr<R and 0<=cc<C and G[rr][cc] == G[r][c]-1:
Q.append((rr,cc))
return ans
DP = {}
def ways(r,c):
if G[r][c]==0:
return 1
if (r,c) in DP:
return DP[(r,c)]
ans = 0
for dr,dc in [(-1,0),(0,1),(1,0),(0,-1)]:
rr = r+dr
cc = c+dc
if 0<=rr<R and 0<=cc<C and G[rr][cc] == G[r][c]-1:
ans += ways(rr,cc)
DP[(r,c)] = ans
return ans
for r in range(R):
for c in range(C):
if G[r][c]==9:
p1 += ways1(r,c)
p2 += ways(r,c)
pr(p1)
pr(p2)

View File

@@ -0,0 +1,45 @@
123454078104569871014321021321012349878967874
002965169245678562105489110456701256767456983
411873254324329453456976522343812323454305432
320984589010012306567887431098943210563216761
458976673407873210698790346787654329874109850
367887654356912348787891245497645698556780943
656792343105401059678712312338562107649891234
343001643234332769589600404329431236032321104
102198756121049878465521565010120345121430213
234567987012156912374437674320345034560345412
126898776103457809983398983011276127672126703
045678945434967618812287034567689018984035894
034989876325898507600176127698548109123445665
121070165016785216010165018345630678006510778
015676234245234345323234509216721565217329889
104389892104101059654965432101892674398456788
010210743233298128760870123438984583212105998
327805654654567637201256754347673294303614854
476912348723498542112349861243100185454783763
585210239010101443009659870652231256765692152
694332108212012356788778778701645899801087001
783445098302345653299894389614556732112396503
612956789401298764108763210543678945013765412
107810987567889655895654101012109876894894321
016721076101910346781565092325012345765765010
145432345234581232690478783234540332345654321
298703876501698701541089654129651231056310145
387212965012787650132108543098774340987234236
456903454323456043236719612012589656891105687
125876561210798101045898703343478797650112793
034329870325887232784387643296556788943289832
105610711456976545693211234187645019850176541
612789804567803456789800105098732134567654320
523898714326512101234764306789678325478956010
630145625613456780345605219812569210329547854
549234034702102395653216984503431678017632903
678432129899801234764567893689120589098701012
569562101234710109803891012778021432176512343
450691032105676541012764569865434501089400154
541782145694589132123453678345123671078321965
432679238785410016787652101254010982361267873
121018019856321125696545610763010973450398654
038967025657689434545236789892129887650367743
127652134768976521430129865430034796341459812
234543089867987010321010178921015601232378103

View File

@@ -0,0 +1,8 @@
89010123
78121874
87430965
96549874
45678903
32019012
01329801
10456732

View File

@@ -5,6 +5,7 @@
import sys,time import sys,time
from helpingFunctions import * from helpingFunctions import *
from functools import lru_cache
setSampleMode(False) setSampleMode(False)
@@ -14,12 +15,49 @@ aocYear = identifyYear(sys.argv[0])
path = getPath2Data(aocDay,aocYear) path = getPath2Data(aocDay,aocYear)
filename = getFilename2Data(aocDay) filename = getFilename2Data(aocDay)
lookup={}
@lru_cache(maxsize=None)
def laserStone(stone):
if stone == 0:
return [1]
elif len(str(stone))%2 == 0:
l = len(str(stone))
stone=str(stone)
j = int(l/2)
return [int(stone[:j]),int(stone[j:])]
else:
return [int(stone)*2024]
def taskA (data) -> int: def taskA (data) -> int:
gameScoreA = 0 gameScoreA = 0
stoneRow = [int(stone) for stone in data[0].split(' ')]
for i in range(25):
print ("Loop:" + str(i) + " = " + str(len(stoneRow)))
listStone=[]
for stone in stoneRow:
newStone= laserStone(stone)
listStone = listStone + newStone
stoneRow = listStone
gameScoreA = len(stoneRow)
return gameScoreA return gameScoreA
def taskB (data) -> int: def taskB (data) -> int:
gameScoreB = 0 gameScoreB = 0
stoneRow = [int(stone) for stone in data[0].split(' ')]
for i in range(75):
print ("Loop:" + str(i) + " = " + str(len(stoneRow)))
listStone=[]
for stone in stoneRow:
try:
newStone = lookup[stone]
except:
newStone= laserStone(stone)
lookup[stone] = newStone
listStone = listStone + newStone
stoneRow = listStone
gameScoreB = len(stoneRow)
return gameScoreB return gameScoreB
def task(task: int,data) -> int: def task(task: int,data) -> int:

52
2024/day11/day11a.py Normal file
View File

@@ -0,0 +1,52 @@
from functools import cache
from sys import argv
MAX_DEPTH = 75
def parse(src):
'''Convert the input to a list of integers.'''
return [int(x) for x in src.split()]
def count_digits(num):
'''Count the digits of num in base 10'''
total = 0
while num > 0:
total += 1
num = num // 10
return total
@cache
def expand(stone, depth=0):
'''Traverse the 'timeline' depth-first and return the number of stones
created by blinking at stone from depth to MAX_DEPTH blinks.'''
while depth < MAX_DEPTH:
if stone == 0:
stone = 1
depth += 1
continue
digits = count_digits(stone)
if digits % 2 == 0:
mask = 10 ** (digits // 2)
left = stone // mask
right = stone % mask
return expand(left, depth + 1) + expand(right, depth + 1)
stone *= 2024
depth += 1
return 1
def main(stones):
'''The total number of stones produced after 75 blinks'''
return sum(expand(stone) for stone in stones)
if __name__ == '__main__':
# pass the path to the puzzle input as the first argument
print(main(parse(open('/home/bandeira/git.bandeira/aoc/2024/day11/input.day11').read())))

View File

@@ -0,0 +1 @@
0 89741 316108 7641 756 9 7832357 91

View File

@@ -0,0 +1 @@
125 17

34
2024/day12/day12a.py Normal file
View File

@@ -0,0 +1,34 @@
with open("/home/bandeira/git.bandeira/aoc/2024/day12/input.day12", "r") as file:
lines = file.read().strip().split("\n")
n, m = len(lines), len(lines[0])
graph = {i + j * 1j: c for i, r in enumerate(lines) for j, c in enumerate(r)}
for i in range(-1, n + 1):
graph[i - 1 * 1j] = graph[i + m * 1j] = "#"
for j in range(-1, m + 1):
graph[-1 + j * 1j] = graph[n + j * 1j] = "#"
visited = set()
def dfs(visited, node, color, dir):
if graph[node] != color:
if graph[node + dir * 1j] == color or graph[node - dir + dir * 1j] != color:
return 0, 1, 1
else:
return 0, 1, 0
if node in visited:
return 0, 0, 0
visited.add(node)
area, perimeter, sides = 1, 0, 0
for d in (1, -1, 1j, -1j):
a, p, s = dfs(visited, node + d, color, d)
area, perimeter, sides = area + a, perimeter + p, sides + s
return area, perimeter, sides
ans1, ans2 = 0, 0
for node in graph:
if node not in visited and graph[node] != "#":
area, perimeter, sides = dfs(visited, node, graph[node], 1)
ans1 += area * perimeter
ans2 += area * sides
print(ans1, ans2)

View File

@@ -0,0 +1,140 @@
GGGGOOOOOOOOXXXXXXXXXXXXXXXXXSSSSSSSSSSSWWWWWWWWWWYYYYYYYYYYYYYYVVVVVVVVVVVVVVAGEEEEEEEEGGGGGGGGGGGGGEEBEQEYYYYYYYYBSSSBBBBBBBBBBBBBBBBBBBBB
GOOOOOOOOOOOOXXXXXXXXXXXXXXXXSSSSSSSSSSWWSWWWWWWYWYYYYYYYYYYYYYYYPVVVVVVVVVVVVVVEEEEEEEEGGGGGGGGGGEGGEEEEEEYYYYYYYYBBBBBBBBBBBBBBBBBBBBBBBBB
GGGGOOOOOOOOOXXXXXXXXXXXXXXXSSSSSSSSSSSWSSWWWWWWYYYYYYYYYYYYYYYYYYVVVVVVVVVVVVVVEEEEEEEEGGGGGGGGGEEEEEEEEEEEYYUYYYYBBBBBBBBBBBBBDBBBOOBBBBBI
GGGGGOOOOOOOXXXXXXXXXXXXXXXSSSSSSSSSSSSSSSQQWWRWYYYYYYYYYYYYYYYYYYVVVVVVVVVVVVVVEEEEEEEEGGGGGGGGGNEEEEEEEEEEYUUUUUUBBBBBBBBBDDDDDBBBOOBBBBII
GGGOOOOOOOOOXXXXXXXXXXXXXSSSSSSSSSSSSSSSSSQQQRRRYYYYYYYYYYYYYYYYYYYVVVVVVVVVVVVVEEEEEEEEGGGNGGGGGNTTEEEEEEEEUUUUSSSBBBBBBDDDDDDDDDDOOOBBBBBI
GGGGOOOOOOOXXXXXXXXXXXXXXSSSSSSSSSSSSSSSSRMMQRRRYYYYYYYYYYYYYYYYYYYVVVVVVVVVVVVVEEEEEEEEGGNNGGGGGNTTEEEEEEEEEUUSSQQQOBDDDDDDDDDDDDDDOBBBBBBB
GGGGGOOOOOOXXXXXXXXXXXXXXSSSSSSSSSSSSSSSRRRRRRRRRJQQYQYYYYYYYYYYYVVVVVVVVVVVVVVVEEEEEEEEGGNNNNNGNNNEEJUUUUUUUUUUQQQQQDDDDDDDDDDDDDDBBBBBBBBB
GGGYGYOOOOOOXXXXXXXXXXXXXXXSYYSSSSSSSSSRRRRRRRRRJJJQQQCYYYYYIVYBBVVVNNNNNVVVVVVVEEEEEEEEGGNNNNNNNNNEJJUUUUUUUUUUQQQQQQQDDDDDDDDDDDDBBBBBBSSK
GGGYYYOOOOOYYYXXXGGXXXGGGGGYYYYYSSSSOSSRRRRRRRRRRQQQQQQYYYEEIIIBBVVVNNNNNVVVVVEEEEEEEEEEGGGNNNNNNNNNNJGGUUUUUUUUNQQQQQYDDDDDDDDDDDDSSKSSSSSS
GGGGGYYOYOOYYXXXGGGGGGZGGGYYYYSSSSSSSSSSRRRRRRRRAVVQQQYYYYEIIIBBBVVVNNNNNNVVEEEEEEEGGGGGGGGNNNNNNNNNJJGGUUUUUUUUUQQQQQQDDDDDDDDDDDDDSSSSSSSS
GGGGGYYYYYYYYYXXXXGGGGGGGGGGYYYSSSYYYSSRRRRRRRRRVVVQQQQIYYIIIIIIBBVNNNNNNNVVEEEEEEEUUUGGGGGNNLGNNNNGGGGGGUUUUUHHQQQQTQQDDDDADDDDNDBBBSSSSSSS
GGYGYYYYYYYYYYXXXXGGGGGGGGGGYYYYYYYRRSRRRRRRRRRRRRVVVQQIIVIIIIIIIGNNNNNNNNMMEEEEEEEEEGGEEERRRGGGGGGGGGGUUUUUUUHGQSQTTTCDDDXXDDDDNDBSSSSSSSSS
YYYYYYYYYYYYYYXXXGGGGGGGGGGGYYYYYYYRRRRRRRRRRRRRRRVVVVQQQVXIIIIIQGNNNNNNNNUMEEEEEEEEEEEEEEEERGGGGGGGGGGUUUIUUHHHHTTTTTCDDDXXDDDDNNSSSSSSSSSS
YYYYYYYYYYYYYYYXXGGGGGGGGGGGGYYYYTRRRTRRRRRRRRRRRRRVVVVVVVIIIGIGGGGNNNNNNNNAEEEEEEEEEEEEEEEERGGGGGGGGGGIIUIIGGHHHTTTTTCDDDXXXXNDDNSSSSSSSSSS
YYYYYYYYYYYYYYYXGGGGGGGGGGGGGGGGYTKTTTTRRRRRRRRRRRVVVVVVVVVVIGGGGGGGNNNNNNZMMEEEEEEEEEEEEEEERRRGGGGGRRIIIIIIIIOHHTTTTTTTXXXXXXNNNNSSSSSSSSSS
YYYYYYYYYYYYYYYGGGGGGGGGGGGGGGTTTTTTTTGTRRRCRRRUUUUUUUUUVVGVGGGGGGGGGNNNNMMMMMMEEEMEEEEEEERRRRGGGGRRRRRIIIIIXITHHTTTTTSSSXXXXXNUUNSSSSSSSSSS
OOYYYYYYYYYYYSYGGGGGGGGGGGGGGGGGGTTTTTTTTCCCRRRUUUUUUUUUVVGGGGGGGGGGGGGGTTMMMMMEEEMMEEEEEEERRRGRRRRRRRRIIIIIXTTTTTTTTSSSXXXXXXUUUNNNSSSSSSSS
OYYYYYYYYYYYSSGGGSSSGGSGGGGGGGGTZTTTTTTTTCCCCCRUUUUUUUUUVVVTGGGGGGGGGGGGMMMMMMMMMMMEEEEEEDDTTRRRRRRRRRBIIIIITTTTTTTSSSSSXXXXXXUUNNNNSSSSSSSS
OYYYYYYYYYYYSSSSSSSSSSSSGGGGGHGTTTTTTTTTTTTCCCYUUUUUUUUUZVNOOGGGGGGGGGGGGMMMMMMMMMMEEEEEUTTTTRRRRRRRRRBIIIIIPTTTTTSSSSSSXXXXXUUUNNNNNNSSSSSS
OOYOYYYYYSSSSSSSSSSSSSSSGGGGGHHHTTTDTTTTTCTUUUUUUUUUUUUUODOOOGGGGGGGGGGMMMMMMMMMMMMZUUUUUTTTTTTRRRRRRRBBIIIBBBBTTSSSSSSSSXXNNUNNNNNNNNNSSSSN
OOYOOYYYGSSSSSSSSSSSSSSSGGGGGHHHHTTTTTZCCCTUUUUUUUUUUUUUOOOOOOOGGGGGGGGYMTMMMMMMMMMMUUUUATTTTTTRRRRRRRBBBBBBSBBSTTSSSSSSSSXXNNNNNNNNNNNSNNNN
OBOOOOYBGGSSSSSSSSSSSSSSTGUGHHHHHHHTTTCCCCCUUUUUUUUUBBBOOOOOOOOPOOGGGGGYYYMMMLMMMMMMUUUUAATTTTTTRRRRRRBBBBBSSDSSTSSSSSSSSSXNNNNNNNNNNNNNNNNN
BBBOOYYBGSSSSSSSSSSSSSSSTTIKIHRHHHIIECCCCCCUUUUUUUUUBBBOOOOOOOOOOOIOGGYYYYYLLLMMMMMMUUUUATTTTTTTRRRRRRRBBBBSSSSSSSSSSSSJJJJNNNNNJNNNNNNNNNNN
BBBBBBBBBBSZSSSSSSSSSSSSIIIIIRRRRHISCCCCCCCUUUUUUUUUBOBBBOOOOOOOOOOOOOYYYYYYLLMMMMMMMUUUGGTTTTTTGRRRRRRBBBBSSSSSSSSSSSSJJJJJJJJJJNNNNNNNBBNN
BBBBBBBBBBSZSSSSLSLSSSSSIIIIIRRRIIIICCYCCCCUUUUUUUUUBOBBSOOOOOOOOOOYYYYYYYYYLLUUUMZMMUUUUGKTTGTTGGRRRRRRBBSSSSSSSSSSSSSJJJJJJJJJJJNBBBBBBBNN
BBBBBBBBBVSSSSSSLLLLSSIIIIIIRRIRIIIAACCCCCTUUUUUUUUUVOOBSOOOOOOOOOTTYYYYYYLLLUUUUUUUUUUUGGGTGGGGGGGGRRRRBBSSSSSSSSSSSSSJJJJJJJJJJJJJBBBBBBNN
BBBBBBBBBSSSSSSSLLLLLIIIIIIIRIIRIIIJAAJJCCCUUUUUUUUUOOOOOOOOOOOOOOYYYYYYYYYLLUUUUUUUUUQUGGGGGGGGGGGCCRRRBBSSSSSSSSSSSSSJJJJJJJJJJJJJBBBBBBBN
BBBBBBBBBSBBSSSLLLLLAAAILIIIIIIIIJJJAJJJCJJUUUUUUUUUVVVOOOOOOOOOOYYYYYYYYYYYYYUUUUUUUUQQGGGGGGGGGGGGCRCCSSSSSSSSSSSSSJJJJJJJJJJJJJJBBBBBBBBN
BBBBBBBBBBBSSSLLLLLLLLLLLLIIIIIIJJJJJJJJCJJUUUUUUUUUVVVOOOOOOOOOOYJJYYYYYPYYYNNUUUUUQQQGGGGGGGGGGGGCCCCCSSSSSSSSSSSHSSJJJJJJJJJJJJJBBBBBBBNN
BBBBBBBBBBBSSSSLLLLLLLLLLLIIIIIIXXJJJJJJJJJUUUUUUUJJVVVLQQQOOOOOOOOJYYYYYPPPPPNNUUUUUQQQUGGGGGGGGGGGCCCCSSSSSSSSSSSHHSJJJJJJJJJJJJJBBBBBBBBB
BBBBBBBBBBBGSSLLLLLLLLLLLIIIIIIIXXJEEJJJJJJUUUUUUUJJJVVLQQXQOOOOOOUYYYYYYPNPPPNPPPUUUQQQQGGGGGGGGGGGCCSSSSSSSSSSHHHHHSOJJJJJJJJJJJJBBBBBBBBN
BBBBBBBBBBPWLLLLLLLLLLLLLIIIIIIIXXXXEDDJJJJUUUUUUUJJJJQQQQQQQQQQQOUUYYYYYQPPPLPPPPOOQQQQGGGGGGCCCGGCCCSSSSSSSSSSHHHHHOOOJJJJJJJJJJJBBBBBBNBN
BBBBBBBBWWWWWWALLLLLLLLLIIIIIIIXXXXXXDDJJJVUUUUUUUJJJQQQQQQQQAAUUUUUUUUYYQPPPPPPPPOSSSSSSSGGGGCCCCCCCCCCSSSSSHHHHHHHHHOOOJJJJJJJJJJJBBNNNNBN
BBBBBBBBBBBWWWALLLLLLLLLLIIIIIIIXDXXXDDDVVVVVVVJJJJJJQQQQQQQAAAUUUUUUUYYYYPPPPPPPPPSSSSSSSGGICCCCCCCCCSSSSSSSSSSHHHHHOOOOJJJJJKKJJJJLSNSNNNN
BBBBBBBBBBWWWWJJJLLLLLLLLLLIIIIIDDDXDDVIIVVVVVVVJJJJJTQQQQQQAUUUUUUUUUUUYUUPPPPPSSPSSSSSSSGGGCCCCCCCCCCSSSSSSSSHHHHGHOOJJJJJJKKJJLJLLSNSNNNN
BBBBBBBBBWWWWJJJJJLLWLRJSIIIIIDDDDDDDDVVVVVVVVVPJJJJQQQQQQQQQGUUUUUUUUUUUUPPPPPPPSSSSSSSSSGCCCCCCCCCCCSSSSSSSSSSSSSSMJJJJJJJJJJLLLLLLSSSNNNN
BBDDBBBDBWJJJJJJJJJJJJJJJIIIIIDDDDDDDDVVVVVVVVVVVJJQQQQQQQQQQQUUUUUUUUUUUUPPPPPPPSCSSSSSSSGCCCCCCCCCCCCSSCSSSSSSSSSSJJJJJJJJJJJLLLSSSSSSSSNS
BPDDDDDDWWWJJJJJJJJJJJJIIIIIIIWDDDDDDDVVVVVVVVVVJJJQQQQQQQQQQQJUUUUUUUUUUUUUPPPPPPCSSSSSSSCCCCCCCCCCCCCCCCCSSSSSSSSSPJJJJJJJJJJJLLLSSSSSSSSS
PPPNNDWWWWWJJJJJJJJJJJJIIIIIIWWWDDDDDDDDVVVVVVVVJJQQQQQQQQQJJJJUUUUUUUUUUUUPGPPPDDSSSSSSSSSSJJCCCCCCCCCCCSSSSSSSSSSSSJJJJJJJJJJJJSSSSSSSSSSS
PNNNNNNWWRWJJJJJJJJJJJJJIIIIIWWWWDDDDDDDCVVVVVJJJJJJQJQJQJJJJJJUUUUUUUUUUUPPPPPPDSSSSSSSSSSACCCCCCCCCCCCCSSSSSSSLSSSJJAJJJJJJJOOOOSSSSSSSSSS
PPNNNNNWRRWWJJJJJJJJJJJIIIIIIWWWWDDDDDDDCVVVVVVJJJJJQJQJJJJSJJJUUUUUUUUUUUPUFFPPDDSVSSSSSASAAACCCCCCCWWOSSSSSSSSSSSSSAAJJJAJJTSSSSSSSSSSSSSS
PPNNNNNNNRWRRJJJJJJJJXJIIIIIIWWWWWDDDDDDDVWVVVVVJJJJJJJJJJJSJJJLLUUUUHUUUUUUFFPPFSSFSSSAAAAAAACCIIIJCWWWWSSSSSSSSSSSAAAAAAAAATTSSSSSSSSSSSSS
PPNNNNNNRRRRJJJJJJJJXXXIIAIWWWWWWHDDADDIIVWWWWVJJJJJJJJJJJJSSSSSSUUUUUUUUUUUUFFJFFFFFFAAAAAAAAAIIIIIWWWWWSUUUUUUUUUAAAAAAAAAATTSSSSSSSSSSSSS
NNNNNNNNNRRRRJJGGJXXXXXIAAAAWWWWGDDDAADLLWWWLLMLLLJJJJJJJJSSSSSSSSUUUUUUUUUUUJJJJFFFFFFFFAAKAAAIIIIIWWWWLSUUUUUUUUUAAAAAAAAAATTSSSSSSSSSSSSS
NNNNNNNNNRRRRRGGGJXXXAAAAAAAWAWADDDDAADLLLWWLLLLLLLLJJJJJJSSSSSSSSSOPUUUUUKKCCJJJFFFFFFFFFAKKAIIIIIIWWWWWSUUUUUUUUUAAAAAAAAAATTTSSSSSSSSSSSS
NNNNNNNNNRRRRGGGGGXXAAAAAAAAWAWAADDAAAAALLLLLLLLLLLLJJJJJJJBSSSSSSSPPPPUUKBKCKFFFFFFFFFFKKKKKAAAAIIIIWWAAAUUUUUUUUUAAAAAAAAAATTTTSSSJJSSSSSS
NNNNNNNNNRRRRRRGGGGGAAAAAAAAAAAAAAAAYYYALLLLLLLLLLLJJJJJJJBBBSSSSSSSPPPKKKKKKKFFFFFFFFFFKKKKKKAAIIIIUUWAAAUUUUUUUUUAAAAAAAATATTTTTTSJJSSSSSS
NNNNNNRNRRRRRRRGGGGWAAAAAAAAAAAAAAAAYYYZLLLLLLLLLHHHJJJJJJBBBSSSSSPPPPPPPTKKKKKKKKKKKFKKKKKKKKKLLIIIIIWWWYUUUUUUUUUAAAAAAATTTTTTTTJJJJJSJSJS
NNNNNRRNRRRRRRRGGGGGGGGAAAAAAAAAAAAYYYYYLLLLLLLLLLHHHHJJJBBBFSXSSSSPPPPPPPCKKKKKKKKKKKKKKKKKKAALLIIIIILZYYUUUUUUUUUAAAAAAATTTTTTJJJJJJJSJJJS
SQQNUURRRRRRRRRGGGGGGGGGAAAAAAAAAAYYYYYLLLLLLLLLLLLHHHJJJJBBBBBBSSPPPPPPPPKKKKKKKKKKKKKKKKKKKAALLIIIWWLZYYYYYYYAAAAAAAAAAATTTTTTJEJJJJJJJJJS
QQQQQUUUURRRRRGGGGGGGGGGAAAAAAYYYYYYYYYLLLLLLLLLLLLHHHYJJJBBBBBBDPPPPSPPPAKKKKKKKKKKKKKKKKLKAALLLLLLLLLLYYYYYYYAAAAAAAAAATTTTTTJLJJJJJJJJJJE
VQQQQQUUURRRRGGGGGGGGGGGGAAAAAYYYYYYYYYLLLLLLLLLLLLHHYYYYNBBBBBBDPPPPSPPPAKKKKKKKKKKKKKKKKLAALLLLLLLLLLLLLYYYYYAAAAAAATTATTTTTTJJJJJJJJJJJJJ
VVVQQUUUUURRRRGGGGGGGGGGGAAAAAYYYYYYYYLLLLLLLLLLLLLHYYYYBBBBBBBBDPSSSSSPPAAKTKKKKKKKKKKLLLLLLLLLLLLLLLLLLYYYYYYYAAAAATTTTTTTTTTTJJJJJJJJJJCJ
VVVVUUUUTRRRRRRGGGGGGGGGAAAEAYYYYYYYYYLLLLLLLLLLLLLYYYYYBBBBBBEBDSSSSSSSAAATTKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLYYYYYYAAAAAAATAZZZZTTTJJJJJJJJJJM
VVVUUUUUTTRRRRRRGJGGGUGXRRRERRRRYYYYYYYLLLLLLLLLLKYYYYYYYBBTWWEEWSSSSSSSSTTTTTTKKTKKKKLLLLLLLLLLLLLLLLLLLLFYYYYYYYYAAAAAAAZZZZZZZJJJJJJJJMMM
VVVUUUUUUTRRRRUUJJUUUUXXXRRRRRRRYYYYZZYYYLLLLKKKKKKYYYYYYYWWWWWWWSSSSSSSSWWTTTTTKTKKKKLLLLLLLLLLLLLLLLLLLLYYYYYYYYGGGGGGGGGGZZZZZZJJJJJJJMMM
VVVVUUUTTTRRRRUUUUUUUUXXXRRRRRRRVYZZZZZYYLLLLLKKKKYYYYYYYYWWWWWWWWSSSSSSSTTTTTTTTTTTKPPLLLLPZIZLLLLLLLLLLLYYYYYYYYGGGGGGGGGGZZZZZZZZZJJJJJMM
VVVVQUTTTTRTRRUUUUUUUUXXRRRRRRRVVZZZZZZZYYLLKKKKKKKYYYYWYYWWWWWWWWWSSSSSTTTTTTTTTTTTKPPLPPPPZZZZZLLLLLLLTTYYYYYYYPGGGGGGGGGGZZZZZZZZMMJMMMMM
VVVVVUTTTTTTRRUUUUUUUUUUURRRRRRRRRZZZZZZYGGLGKKKKKKWWWWWWWWWWWWWWWWWSSTTTTTTTTTTTTTTTPPPPPPPZZZZZZLLLLLLYYYYYYYYYPGGGGGGGGGGGGGGZZZZZMMMMMMM
VVVVVTTTTTTTRUUUUUUUUUUUURRRRRRRRBZZZZZZZGGGGKGKKKKWWWWWWWWWWWWWWWSSSVRTTTTTTTTTTTTPPPPPPPPZZZZZZNLLLLZZYYYYYYYPPPGGGGGGGGGGGGGGZZMMMMMMMMMM
YYYVTTTTTTTTRRUUUUUUUUUUURRRRRRRZBZZZZZZGGGGGGGGGKKKWWWWWWWWWWWWWVVVVVVTTTTTTTTTTTTTTPPPPZZZZZZZZNNNNLLPPYYYYYYPPPGGGGGGGGGGGGGGZZMMMMMMMMMM
YYYYYTTTTTTTTUUUUUUUUURURRRRRRRZZZZZZZZGGZGGGGGGKKKKWWWWWWWWWWWVVVVVVVVTXTTTTTTTTTTQPPPPPZZZZZZZZNNNNLNPPYYYYPYPPPGGGGGGGGGGGGGGZZZMMMMMMMMM
YYYYTTTTTTTTMMMUUUUHRRRRRRRRRRRRVZZZZZZZZZZGGGGBBBBKWWWWWWWWWWVVVVVVVVVVVVTTTTTTTTQQQPPPZZZZZZZZZZNNNNNPPYZYYPYPPPGGGGGGGGGGGGGGOOZZZZMMMMMM
YYVVIIETTTTTMMMUUUURRRRRRRRRRQCQQAAZZZZZZZGGGGGBBKKKKKMWWWWWWWWVVVVVVVVVTTTTTTTTTHQQZZZZZZZZZZZZZZNJNPPPPPYYYPPPPLLLLLLGGGGGGGGGOOZZZZMMMMMM
YYVIIIETTTTTTMMUUURRRRRRRRRRQQQQQQQQZZZZZZXGGGKKKKKKKMMMWWWWWWWWVVVVVVVVTTTTTTTTTTQQQZZZZZZZZZZJZZJJNJPPPPPYPPPPPLLLLLLGGGGGGGGGOOZZZMMMMMMM
VVVVVEETTTTTTTMMMMRRRRRRRRQQQQQQQMQXZZXXXXXGGKKKKKKKMMMMMMWWWWWWWVVVVVVVTVTTTTTTTTQQQQQZZZZZZZZJJZZJJJPPPPPYIIPPPPLLDLLGGGGGGGGGZZZZZMZMMMMM
VVVJVEEGTTTTTMMMMMRRRRRRRRRQQQQQQQXXXZXXXKKKGKKKKKKKMMMMMMWWWWWWUUVVVVVVTVTTTTTTTTQQQWQQQZZQZZZJJJJJPPPPPPIIIIIIIPPLLLLGGGGGGGGGVZZZZZZZMMMM
VVVVOEEEEETTTMMMMMMRRRRRRRRQPQQQQQXXXZZXXKKKKKKKKKKKMMMMMMMMWWWWWUBBVVVVTVTTTTJTWWWWQWWQQQZQZZZJJJJPPPPPPPPIIIIIPPPPPLLLLHHOOOOOZZZZZZZZMMMM
VVVVVVEEETTTTMMMMMMMRRRRRRPPPQQQQXXXXXXXXKKKKKKKKKKKMMMMMMBMBWBBBBBBVVVVVKKUUTJJWWWWWWWQQQQQQZJJJJJPPPPPPPPPPIPPPPPPPHHHHHOOOOOOOZZZZZZZZZMM
VVVVVVEEEETTTMMMMMMMRRRRRPPPPAQQXXAXXXXXXAAAKKKKKKKMMMMMMMBBBBBBBBBBBKKKKKKUUUWWWWWWWWWQQQQQQZZJJJJJJPPPPPPPPPPPPPPPPHHHHHOOOOOOZZZZZZZZZMMM
PVVVVVSEEEEEMMMMMMMMMRRRRPPPPAAAAAAAXXXXXAAAAAAAKARMMMMRRMHBBBBBBBBBKKKKKKUUUWWWWWWWWWWWQQQQQZZJJNJPPPPPPPPPPPEEPPLPHHHHHOOOOOOOZZZZZZZZZMMM
VVVVVVSEEEEEUUUUUMMMMMRRRPPPPAAAAAAAXXXXAAAAAAAAAARMRRRRRRRRBCBBBBBBKKKKKKKWWWWWWWWWWWWWQQQQQNNNNNJPPPPPPPPPPPEEZPPHHHSSHOOOOOOOZZZZZZAZAAMM
VVVVVVVUUHHHGGUUUUMMMMRPRPPPPAAAGKKAAXXAAAAAAAAAAARRRRRRRRRRVBBBBBBBKKKKKKKWWWWWWWWWWWWQQQQQQNNNNNJPPPPPPPPPPPEEEPPEEHSSOOOOOOOOOZZZZZAAAAMM
VVVVVVVUUHHHGHUUUUUUUUPPPPPPPGGGGKKAXXAAAAAAAAAAAARRRRRRRRRRRBBBBBBBBKKKKKKUTWWWWWWWWWQQQQQQQQNNNJJPPPPPPPPPPPREEEEESSSSSSOOOOOOOZZZZZAAAAAA
VVVVVJVUUHHHHHUUUUUPPPPPPPPPPGGGKKGXXXAAAAAAAAAAAARRRRRRRRRRREEBBEEEBBKKKLKTTTTWWWWWWWWWQQQQQQQQNJJJJJPPPPPPPPEEEEEEESSSSOOOOOOOOOOZZAAAAAAA
VVVVVJVUUHHHHHHUUUUPWWPPPPPPPPGGGGGGXXAAAAAAAAAAAAARRRRRRRRRREEWWWWWWWWKKKTTTTTWWWWWWQQQQQQQQQQNNNNJJJPPPPPPPEEEEEEEESSSSOOOOOOOOOOWAAAAAAAA
UUUUUUUUUUHHHUUUUUPPPWPPPPPPPPGGGGGGXXAAAAAAAAAAAYRRRRRRRREEEEFWWWWWWWWKKTTTTTTWWWWWWQQQQQQQQQQUUNNJJJJJJPPPEEEEEEEOSSSSSNNNNNNONOOOAAAAAAAA
UUUUUUUUUHHHHUUUUUPPPWWPPPPPPPGGGGZZAAAAAAAAAAAAAYYRRRRREEEEWWWWWWWWWWWKKKKKKKKKKWWWWQQQQQQQQQQUYNNYYYJJJPPPXEEEEEOOOSSONNNNNNNNNNNAAAAAAAAA
UUUUUUUUHHHHHHUUUUUUUWWPPPPPPPPGGGPPAAAAAAGZAAZZYYYRRRRRREEEWWWWWWWWWWWKOKKKKKKKKIIIIQQQQQQQWWUUYYYYYYYJJYXXXEEFOYOOOOOOONNNNNNNNNNAAAAAAAAA
UUUFEFBBBHWWUUUUUUWWWWWWWPPQPPPPPPPPEAAFAAZZVZZZYYYRRRRREEEFWWWWWWWWWWWWWWWWWWWWKIIIHQQQQQQQWWUUYYYYYYYYYYXXXEXOOOOOOOONNNNNNNNNANAAAAAAAAAA
FFUFFFBBBBWWWWUUUWWWWWWWWPPQQQPPPPPPPPYZZZZZZZZZYYYFREEEEEFFWWWWWWWWWWWWWWWWWWWWKIHIHQQQQQWWWWYYYYYYYYYYYYXXXXXOOOOOOONNNNNNNNNNAAAAAAAAAAAA
FFFOFFFBBWWWWUUUWWWWWWWKKQPQQQPPPPPPPPYYZZZZZZZZZYFFEEEEEFFFFWWWWWWWWWWWWWWWWWWWKIHHHQQQQQWWWWWWWYYYYYYYYYYYYYOOOOOOOONNNNNNNNNNNAAAAAAAAAAA
FFOOFFBBBWWWWWWWWWWWWKKKKQQQQQPPPPPPPPPYYZZZZZZZZZFFEEEEEFFFFWWWWWWWWWWWWWWWWWWWKHHHHQHHHWWWWWWWWWWWYYYYYYYYYIOOOOOOOOOONNNNNNNNNEAIIAAAAAAA
FFFFFFFBFFFWWWWWWWWWWKKKKQKQPQPPPPPPPPPPPZZZZZZWWWFFFFFFFOFFFWWWWWWWWWWMKKKKKKKKKHHHHHHHWWWWWWWWWWWWYYYYYYYIIIIOOOOOOONNNNNNNNNNEEEEEIAAAAAA
XFFFFFFFFFFWWWWWWWWWWWKKKKKQPPPPSSPPFPPZZZZZZZZWWWFFFFFFFFFFFWWWWWWWWWWKKKKKKKKKJJJHHHHHHWWWWWWWWRYYYYYYYYYIIIIIOOOOOONNNNNNNNNEEEEEEAAAAAAA
XFFFFFFFFFFFFWWWWWWWWKKKKKKKSPPSSSSSSSPPZZZZZWWWWWFFFFFFFFFFFWWWWWWWWWWKKKKKKKKKJJTTYHHHHHWWWWWWWWJYYYYYYYIIIIIIOOOOONNNNNNNNNNEEEEEENAAAAAA
FFFFFFFFFFFWWWWWWWWKKKKKKKKPSSSSSSSSSSPZZZZZZZZWWWWFFFFFFFFWWWWWWWWWMMKKKKKKKKKKJJJTYHHHHWWWWWWWWWYYYYYYYYIIIIIIOOOOOONNNNNNNNNEEREEEEAAAAAB
FFFFFFFFFRRRRRRRWKKKKKKKKKPPSSSSSSSSSZZZZZZZZZZZWWWFFFFFFFFWWWWWWWFFJJKKKKKKKKKKJJJJYYYYHWWWWWWWWWWWYYYYYYYYIIIIOOOOOOONVVNNNEEEEEEEEEAATABB
FFFFFFFFFFRRYRRRKKKKKKKKKKKKDSSSSSSSSZZZZZZZZVWWWVVFFFFFFUFWWWWWWWVFFJKKKJJJJJJJJJJJYYYYYFWWWWWWWWWWYYYYYYYYIIIIOOOOOOOOAVVNNNEEEEEEEEEEEAEB
FFFFFFFFFFRRRRRRRVKKKKKKKKKSSSSSSSSXSSZZZZZZZVVVVVVFFFFFFUFWWWWWWWVVVJJJJJJJJJJJJJJFYYYYWWWWWWWWWWYYYYYYYYYIIIIIIOOOBBVOVVVVVEEEEEEEEEEEEEEE
FFFFFFFFFFFRRRRRRVRKKKKKKKKKKSSSSSSSSZZZZZZZRRVVVVZZFFVVVFFWWWWWWWVVVJJJJJJJJJJJJJNNNNNWWWWWLWWWWYYYYYYYYIIIIIIIIIOBBVVVVVVVVVEEEEEEEEEEEEEE
FFFFFFFPPPRRRRRRRRRRKKKKKKKKKSSSSSSSSSZZZZZZRRVVVVVZZZVVVVVWWWWWWVVVJJJJJJJJJJJJJJJJNNNNWWWWWLLWLLLLLLYIIIIIIIIIIMMBBVVVVVJJJJJEEEEEEEEEEEEE
FFFFFFFPPPRRRRRRRRKKKKKKKKKKKKSSSSSSSSHZZZZZRVVVVVVVVVVVVVVVVVVVVVVVVVJJJJJJJJJJJJJJJNNNNNWWWWLLLLLLLLIIIIBIIIIIMMMMBVVVJJJJJJJJEEEEEEEEEQED
FFFFFFRPPPRRRRRRRRRKKKKKKKKKKHHSHSHHLLBXZBRRRRRVVVVVVVVVVVVVVVVVUVVVVJJJJJJJJJJJJJJJNNNNNWWWWWLLLLLLLLIIIBBBIIIIMMMMBVVJJJJJJJJJJJEEEEEEEEED
FEFFFFRPPPRRRRRRRRRKKKKKKKKAHHLHHHHHBLBBBBRRRRVVVVVVVVUUVUUUUUUUUUBBBBBJJJJJJJJJJNNNNNNNNWWWLLLLLLBLBBBSSBBBBBIIMMMMMVFJJJJJJJJJJJJJEEEEEEEE
EEBBBFRPPPRRRRRRRRRRHKKKJKKJJHHHHHHHBBBBBBRRVRRVVVVVVUUUVVUUUUUUUUUEBBBBBBJJBBBNNNNNNNNZNWWWLLLLLLBLBBBBBBBBBIIIMMMMMMEAJJJJJJJJJHJJEEEEEEEE
EEBBBBRPPPRRRRRRRRRRHHHHJKKJCHHHHHHVBBBBBBBRVVVVVVVVVUUUUUUUUUUUUUUBBBBBBBBBBBBNNNNNNNZZZWWWWLZLLLBBBBBBBBBBOOIIIIMDDMEEJJJJJJJJJJJJOJQQEQSE
EEBLBMMPPPRRRRRRRRRRHHJJJJJJCHHHHHHVBBBBBBBVVVVVVVVVVUUUUUUUUUUUUUUBBBBBBBBBBBBNBBNNNNNZZWWWWWZZZBBBBBBBBBBOOOIIIIDDDMEDJJJJJJJJJJJJJJQQQQQH
EEBBBBBPPPRRRRRRRRRRRHHJJJJJJHHHHHVVBBBBBBYYVVVVVVVVVUUUUUUUUUUUUUUBBBBBBBBBBBBBBBNNNZZZZZZZZZZZZBBBBBBBBOOOOOIIIODDDDEDJJJJJJJJJJJJJJQQQQQH
EEEBBBBPPPRRRRRRRRPPPJJJJJJJJJHHHHVBBBBBBBVVVVVVVVVVVVUUUUUUUUUUUUBBBBBBBBBBBSBBBZZZZZZZZZZZZZZZZZBBBBBOGOOOOOOOOOODDDDDJJJJJJJJJJJSSQQQQQQQ
BBBBBBBBJBRPPRRRRRPPPJPJJJJJJJJKHVVBBGGBGBGGVVVVVVVVVVVUUUUUUUUUUUBBBBBBBBBBBSBXXZZZZZZZZZZZZZZZZBBBBBBOOOOOOOOOOODDDDDDJJJJJJJJJJJQQQQQQQQQ
KBBBBBBBBBDPPPRRRPPPPPPPPPPJJJJKHHVBBHGGGGGVVLVVVVVVVVUUUUUUUUUKKUKBBBBBBBBBSSSSSSSZZZZZZZZZZZZZZBBBBOOOOOOOOOOOOODDDDDDDDDDJJJJJJJJQQQQQQQQ
KBBBBBBBBBDPDPRRPPPPPPPPPPPJJWJJHWBBBHHGGMGVVVVVVVVVVVVUUUUUUUUKKKKBBBBBBBBSSSSSSSSSZZZZZZZZZZZZBBBBBBOOOOOOOOOOOIOODDDDDDDDDDDDDQQQQQQQQQQQ
BBBBBBBBBBDDDPRPPPPPPPPPPPPJPWWWWWWWHHHGMZZZZZZZZVVVVVVHKKKKKKKKKKKUEBBBBBBSSSSSSSSSZZZZZZZZZZZZBBBBBBOOOOOOOOOOOOOODDDVDDDDDDDDDDQQQQQQQQQQ
BBBBBBBBBBDDDDDDPPPPPPPPPPPPPWWWWHHHHHHHMZZZZZZZZVVBVVVHCKKKKKKKKUUUUGGBBBSSSSSSSSSSZZZZZZZZZZZZZZOOOBOOOOOOOOOOOOOOVVVVDDDDDDDDDDDDDQQQQQQQ
BBBBBBBBBDDDDDDDPPPPPPPPPPPPPWWWHHHHHHHMMZZZZZZZZVVVQQCCCKKKKKKKKUUUUUBBBBYYSSSSSSNZZZZZZZTZZZZZOOOOOOOOOOOOOOOOOOOVVVVZZZZDDDDDDQQDDQQQQQQQ
BBBBBBBBBBDDDDDDDPPPPPPPPPPPWWWWHHHHHHHHHZZZZZZZZWWMMQCCCCCKKKWKUUUUUUUBBBBYYSYSSSSSZZZZZZTTTTTTTSOOOOMOXOOOOOOOOOOVVVVVZZZZDDDDDQQDQQQQQQQQ
MBBBBBBBBJDDDDDDDDLPPPPPPPPPPPPWHHHHHHHHHZZZZZZZZMMMMCCCCKKKKKKKUUUUUUUYYYYYYYYSSSSSZZZZZTTTTTTTTOOOOOOOXOOOOOOOOOOVVVVVZZZZZZDDQQQQQQQQQQQQ
MMJJJJJJJJJJDJJDDDLLLLLPPAQQPQQHHHHHHHHHHZZZZZZZZMMMMCCCCJKKDDDDUIUUUUUYYYYYYYYSSUUZZZZZZTTTTTTTAAOOOOOOOOOOOOOOOOBVVVSSSZZZZDDDDDDQQQQQQQQR
MMJJJJJJJJJJJJJJJLLLLLLLPAQQPQQQQQHHHHHHHHGGMMMMMMMMMNCCCCCCDDDDFFUUUUUYFFYYYYYYSZUZZZZZTTXTTJJJJJOOOOOOOOOOOOOOOBBVVVSSSSZZDDDEEDEQQQQQQQQR
MMJJJJJJJJJJJJJJJJJJLLLLPAQQQQQQQQHHHHVVVHGGMMMMMMMMMMMCCCCCDDDDDFFFUUFYFFYYYYYZYZZZZZZZZZJJJJJJJOOOOOOODLOOLLROOBBBVVSVVSSSEEEEEEEQQQQRQRRR
MMJJJJJJYJJJJJJJJJLLLLLLQAQQQQQQQQHVVHVVVGGGGMMMMMMMMMMMNCCCWDDWDFFFUFFYFFYYYYYZZZZZZZZZZZJJJJJJJOOOOOOOLLLLLLLOBBBVVVVVSSSSEEEEEEEQQQQRRRRR
MMMJJJJJJJJJJJJJJLLLLLLLQQQQQQQQVVHVVHVVVGGMMMMMMMMMMMMMMNCSWDDWWFFFFFFFFFFYYYYZZZZZZZZZZZZYYYYJJOOOOOOLLLLLLLLLLVVVVVVYESSSSEEEEEEEFERRRRRR
MMJJJJJJJJJJJJJJJLLLLLQQQQQQQQQQVVVVVVVVVVVMMMMMMMMMMMMMMMCSWWWWWFFFFFFFFFFYYYZZZZZZZZZZZJAYYYYJJJOOOOALQLLLLLLLKVVVVVVYEEEEEEEEEEEEEERRRRRR
MMGGJJJJSSJJJLJLJLLLLLLQQQQQQQQQQQVVVVVVVVVVMMMMMMMMMMMMMWSSWWWWWFFFFFFFFFFYYYZZZZZZZZZZZJJYYYYJJBOOOOOOSSLLLLLKKVVVVVVEEEEEEEEEEEEEEAERRRRR
MMGGJJSSSSSJJLLLLLLLLLLQQQQQQQQQQVVVVVVVVVVVMMMMMMMMMMMMMWWWWWWWWFFFFFFFFFFFYYYZZZZZZZZZZZYYYYYJJJWOOOCCSSLLLELKKKVVVVVEEEEEEEEEEEEEEEERRRRR
MMGGJSSLLSLLJLLLLLLLLLLQQQQQQQVVVVVVVVVVVVVVVJJMMMMMMMMWWWWWWWWWWFFFFFFFFFYFYYYYZZZZZZZZZZYYYYYJJJJSSSSCSSSLLEEVVVVVVVVVEEEEEEEEEEEEEEERRRRR
MMMMSSSLLLLLJLLBLLLLLQLQQQQQQVVVVVVVVVIVVVVZZJJMMMMMMMWWWWWWWWWWFFFFFFFFFYYYYYYYZZZZZZZZZZYYYYYJJJSSSSSSSSSSEEEVVVVVVVVVEEEEEEEEEEEEEEEERRRR
SSSMSLLLLLLLLLBBBLLLLQFFFFFFFFFVVVVVVVIVVVZZJJJJJMMMMMMMWWWWWWWWFFFFFFFFFFFYYYYYZZZZZZZZZZYYYYYJRJSSSSSSSSSSSRRRRRRRRVVVVWEEEEEEEEEEEEERRRRR
SSSSSSLLLLLLBBBBBBBBBBFFFFFFFFFVVVVVVVIIIIZZJJJJMMMMMMMMWWWWWWWWFFFFFFFFFFFYYYYYYYFFWZZZZLYYYYYJRRSSSSSSSSSSSRRRRRRRRVVVWWEETEEEEEEEGEEERRRR
SSSSSLLLLLLLLBBBBBBBBBFFFFFFFFFVVVVVIVIIIZZZJJJJXXXXWMMMWWWWWWWWAFFFFFFFFFFFVVYYVVFFFFFLLLYYYYYJRRSSSSSSSSSSSRRRRRRRRVVVVEEIEEEEIEEEEERRRRRR
SYYSSLLLLLLLBBBBBBBBBBFFFFFFFFFFFFVIIIIISZZJJJJJXXXWWMMMMWWWWWEFFFFFFFFFDFVVVVVVVAFFFFFFFLYYYYYJJSSSSSSSSSSSSRRRRRRRRVVVVIIIEEEIIEEEXERRRRRR
SYYYSSSSLLSLBBBBBBBBBBBFFFFFFFFFFFVIIIISSSSSJJJXXXXWWWWWWWWWWXXFFFFFFFFDDDDVVVVVAAFFFFFFFFYYYYJJJSSSSSSSSSSSSRRRRRRRRNNVVVIEEEIIIIRRRRRRRRRR
SYSSSSSSSSSSBBBBBBBBBBTFFFFFFFFFFFVIIIIIISSSSXXXXXXWWWWWWWWMWXXFFFFFFFFDDDDVVVVVVAFFFFFFFFYYYYJJJSSSSSSSSSSSSRRRRRRRRNIIIIIIIIIIIIRRRRRRRRRR
SYSSSSSSSSSBBBBBBBBBBBTFFFFFFFFFFFIIIIIISSSXXXXXXXXXWWWWWWWMXXXMMFFFFFDDDDDVDVVVVFFFFFFFFYYYYYYJYSSSOOSSSSSSSRRRRRRRRNNIIIIIIIIIIRRRRRRRRRRR
SSXXXSSXSSSSSUBBBBBBBTTFFFFFFFFFFFIIPPPPXSSSXXXXIXXXWWWWWMMMMMMMMFFFFDDDDDDDDVVVFFFFFFFFFYFFYYYYYYYOOOSSSSOSURRRRRRRRRRIIIIIIIIIIIRRRRRRRWRW
SSSXXXXXSSSSUUBBBBBBBTTTTTFFFFFFFFAPPPPLLLLLLLLLIIWWWWWWMMMMMMMMMMFMMDDDDDDDDDDQQFFFFFFFFFFYYYYYOOOOOOOOOOOUUUGGGGRRRRRNLIIIILIIIIRGWRRRWWWW
SSSXXXXXSSSUUUUBBBBBBTTTTTTTBBBBBAAAPPPLLLLLLLLLIIIWWWWWIIIMMMMMMMMMMDDDDDDDDDDQZFFFFFFFFFFYYYYYOOOOOOOOOOOUUGGGGDRRRRRNLLLLLLIIIIGGWWWWWWWW
SSSXXXXXSSSUUUUBBBBTTTTTTTTTBBBBBAAFFFFLLLLLLLLLIIIIIIIIIIIMMMMMMMMMMDDDDDDDQQQQQQFFFFFFQFFYYYBBBOOOOOOOOOUUGGGGGDRRRRRNNLLLLLLLIIGGGWWWWGWW
SSXXXXXXSSSUUUUUBBBTTTTTTTTTTRRBBBABFFFLLLLLLLLLIIIIIIIIIIIMLMMMMMMMMDDDDDDDQQQQQQFFFFQQQFQYQBBBBOOOOOOOOOOOOGGGGDRRRRROLLLLLLLLLIGGGWWWGGWW
XXXXXXXXSSUUUUUUUUUGGTTTTTTTTRRRRBBBFFFLLLLLLLLLIIIIIIIIILLLLLMMMMMMMDDDDQDDDDQQQQFQFFQQQQQQQQBBBOOOOOOOOTTYGGGGOORRRRROOLLLLLLLLGGGGGGGGGGG
XXXXXXXXSXUUUUUUUUUGGTTTTTTTTRRRBBBBFFFLLLLLLLLLIIIIIIIIIILLLLMMMMMMMDDVDQQQDQQQQQQQFQQQQQQQQQBBOOOOOPOJJYYYGGGGGORRRRROOLLLLLLLLLGGGGGGGGGG
XXXXXXXXXXUUUUUUGGGGGTTTTTTTRRRRRBBBBFFFFFFFFFFFIIIIIIILLLLLVLLLLMLMVVVVVFQQQQQQQQQQQQQQQQQQQQBBOOOOOOOJJJYYYYGYGOOOOOOOOOOLLLLLLIGGGGGGGGGG
XXXXXXXXXUUUUUUUUGNNGGTTTTTTTTKRBBBBBBFFFFFFFFFIIIIIIIIIVLLLVVLLLLLLVVVVVFFQQQQQQQQQQQQQQQQBQBBBOOOOOOJJJJYYYYYYGOOOOOOOOOOLLGGGGGGGGGGGGGGG
XXXXXXXXXUUUUUUUGGNNGGTTTTTTTTTRBBBBBBFFFFFFFFFIFFIIIRRRVVVVVVVLVVLLVVVVFFFQSQQQQQQQQQQQQQQBBBBBBBOOOJJJJJYYYYYYGGGOOOOOOOLLLLGGGGGGGGGGGGGG
XXXXXXXXXXXUUUUUUNNNNTTTTTTTTTTBBBBBBBBRFFFFFFFFFFFIIRRRVAVVVVVLVVVVVVVFFFFFQQQQQQQQQQQNQZQBBBBBBBOOOJJJJJYYYYYYYGOOOOOOOOOLLLGGGGGGGGGGGGGG
XXXXXXXXXXXUUUUNNNNNNNTTTTTTTTTTTBRRRRRRFFFFFFFFFRRRRRRRVVVVVZZVVVVVVVVVVFFFFFQQQQQQQQQQQQBBBBBBBBOOOJJJJJYYSYYYYGGOOOOOWOOLLLGGKGGGGGGGGGGG
XXXXXXXXXXXXUUUNNNNNNTTTWTTHHHTTHRRRRRRRFFFFFFFFFRRRRRRRVVVVVVZZVVVVVVVVVFFFFFFQQQQQUQQBBBBBBBBBBBORBQQQQQQQYYGGYGGOOOOOWOOLLLLGGGGGGGGGGGGG
XXXXXXXXXXXXUUNNNNNNNNTWWTTHHHHHHHRRRRRRRRRRRRRRRRRRRRRRRVVVOVVVVVVVVVVVVVFFFFFFFFFQBBBBBBBBBBBBBBBBBWWQQQQQYGGGGGOOOOOOOOOLLLLGGGGGGGGGGGGG
XXXXXXXXXXXUUUUNNNNNNNNNWWTTHHHHHHRRRRRRRRRRRRRRRRRRRRRRRVOOOOVVVVVVVVBBVVFFFFFFFFFFBBBBBBBBBBBBBBBBBWQQQQQQYGGGGGOOOPPPOLLLLLLLLGGGGGGGGGGG