Vieme previesť na riešenie pomocou prehľadávania do šírky ... každú hranu nahradíme daným počtom hrán.
Postupne do prioritného radu pridávame nové cesty (z novo pridaného vrcholu) a vyberáme najmenšiu hodnotu (iná implementácia ako na PAZ1b, neprepisujeme hodnoty)
Začneme vo vrchole A
, vytvoríme prioritný rad obsahujúci:
(0, 'A') ... vzdialenosť od počiatočného vrchola, vrchol
Z radu vyberieme najmenšiu hodnotu a pridáme hrany z nej idúce a vypočítame vzdialenosti:
(7, 'B')
(5, 'D')
Vyberieme najmenšiu hodnotu 5 (teda D
má definitívnu vzdialenosť 5) a pridáme susedov:
(7, 'B')
(5+5=10, 'A') ... nepridáme, lebo A už má priradenú hodnotu
(5+9=14, 'B')
(5+15=20, 'E')
(5+6=11, 'F')
Vyberieme 7 - B
:
(14, 'B')
(20, 'E')
(11, 'F')
(7+7=14, 'E')
(7+8=15, 'C')
Musíme si pamätať, ktoré vrcholy som už spracoval (tie hrany nepridávame a pri vybratí z prioritného radu ich preskočíme).
7 11
A B 7
A D 5
B C 8
...
hrany = [ ('A', 'B', 7), ('A', 'D', 5), ('B', 'C', 8), ('B', 'D', 9), ('B', 'E', 7), ('C', 'E', 5), ('D', 'E', 15), \
('D', 'F', 6), ('E', 'F', 8), ('E', 'G', 9), ('F', 'G', 11) ]
len(hrany)
11
stĺpce aj riadky sú vrcholy, hodnota na políčku reprezentuje vzdialenosť medzi nimi (-1/None ak neexistuje)
n = 7
matica = [[-1 for stlpec in range(n)] for riadok in range(n)]
matica
[[-1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1], [-1, -1, -1, -1, -1, -1, -1]]
for riadok in matica:
print(*riadok)
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
for vrchol_od, vrchol_do, vzdialenost in hrany:
matica[vrchol_od][vrchol_do] = vzdialenost
matica[vrchol_do][vrchol_od] = vzdialenost
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-10-3bb7ceb9ca0a> in <module> 1 for vrchol_od, vrchol_do, vzdialenost in hrany: ----> 2 matica[vrchol_od][vrchol_do] = vzdialenost 3 matica[vrchol_do][vrchol_od] = vzdialenost TypeError: list indices must be integers or slices, not str
ord('A')
65
for pismeno_od, pismeno_do, vzdialenost in hrany:
vrchol_od = ord(pismeno_od)-ord('A')
vrchol_do = ord(pismeno_do)-65
matica[vrchol_od][vrchol_do] = vzdialenost
matica[vrchol_do][vrchol_od] = vzdialenost
for riadok in matica:
print(*riadok)
-1 7 -1 5 -1 -1 -1 7 -1 8 9 7 -1 -1 -1 8 -1 -1 5 -1 -1 5 9 -1 -1 15 6 -1 -1 7 5 15 -1 8 9 -1 -1 -1 6 8 -1 11 -1 -1 -1 -1 9 11 -1
import pandas as pd
def zobraz_bludisko(data):
df = pd.DataFrame(data)
df = df.style.applymap(lambda val: f'color: {"red" if val=="#" else "blue" if val=="?" else "black"}')
return df
n = 7
matica = [[' ' for stlpec in range(n)] for riadok in range(n)]
for pismeno_od, pismeno_do, vzdialenost in hrany:
vrchol_od = ord(pismeno_od)-ord('A')
vrchol_do = ord(pismeno_do)-65
matica[vrchol_od][vrchol_do] = vzdialenost
matica[vrchol_do][vrchol_od] = vzdialenost
zobraz_bludisko(matica)
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|---|
0 | 7 | 5 | |||||
1 | 7 | 8 | 9 | 7 | |||
2 | 8 | 5 | |||||
3 | 5 | 9 | 15 | 6 | |||
4 | 7 | 5 | 15 | 8 | 9 | ||
5 | 6 | 8 | 11 | ||||
6 | 9 | 11 |
susedia = { 'A' : [ ('B', 7), ('D', 5) ], ... }
n = 7
#prazdny zoznam susedov
susedia = {}
for i in range(n):
susedia[chr(ord('A')+i)] = []
susedia
{'A': [], 'B': [], 'C': [], 'D': [], 'E': [], 'F': [], 'G': []}
for vrchol_od, vrchol_do, vzdialenost in hrany:
susedia[vrchol_od].append( (vrchol_do, vzdialenost) )
susedia[vrchol_do].append( (vrchol_od, vzdialenost) )
susedia
{'A': [('B', 7), ('D', 5)], 'B': [('A', 7), ('C', 8), ('D', 9), ('E', 7)], 'C': [('B', 8), ('E', 5)], 'D': [('A', 5), ('B', 9), ('E', 15), ('F', 6)], 'E': [('B', 7), ('C', 5), ('D', 15), ('F', 8), ('G', 9)], 'F': [('D', 6), ('E', 8), ('G', 11)], 'G': [('E', 9), ('F', 11)]}
print(*hrany)
('A', 'B', 7) ('A', 'D', 5) ('B', 'C', 8) ('B', 'D', 9) ('B', 'E', 7) ('C', 'E', 5) ('D', 'E', 15) ('D', 'F', 6) ('E', 'F', 8) ('E', 'G', 9) ('F', 'G', 11)
matica
[[' ', 7, ' ', 5, ' ', ' ', ' '], [7, ' ', 8, 9, 7, ' ', ' '], [' ', 8, ' ', ' ', 5, ' ', ' '], [5, 9, ' ', ' ', 15, 6, ' '], [' ', 7, 5, 15, ' ', 8, 9], [' ', ' ', ' ', 6, 8, ' ', 11], [' ', ' ', ' ', ' ', 9, 11, ' ']]
$G = (V, E)$
$n = |V|$ ... počet vrcholov
$m = |E|$ ... počet hrán
$\deg_G (v)$ ... stupeň vrchola, počet susedov
reprezentácia | sú susedné | vymenovať susedov | pamäť |
---|---|---|---|
zoznam hrán | $O(m)$ | $O(m)$ | $O(m)$ |
matica susednosti | $O(1)$ | $O(n)$ | $O(n^2)$ |
zoznam susedov | $$O\left(\deg v \right) \subset O(n)$$ | $$O\left(\deg v \right) \subset O(n)$$ | $$O\left(\sum \deg v\right) = O(m)$$ |
susedia
{'A': [('B', 7), ('D', 5)], 'B': [('A', 7), ('C', 8), ('D', 9), ('E', 7)], 'C': [('B', 8), ('E', 5)], 'D': [('A', 5), ('B', 9), ('E', 15), ('F', 6)], 'E': [('B', 7), ('C', 5), ('D', 15), ('F', 8), ('G', 9)], 'F': [('D', 6), ('E', 8), ('G', 11)], 'G': [('E', 9), ('F', 11)]}
from queue import PriorityQueue
def Dijkstra(start):
pr = PriorityQueue() #prazdny prioritny rad (vzdialenost, vrchol)
pr.put( (0, start) )
while not pr.empty():
#Z radu vyberieme najmenšiu hodnotu a pridáme hrany z nej idúce a vypočítame vzdialenosti:
vrchol, vzdialenost = pr.get() #vyberieme najmensiu hodnotu
print(vrchol, vzdialenost)
for sused, vzd in susedia[vrchol]:
pr.put( (vzdialenost+vzd, sused) ) #k susedovi ideme cez +dalsiu hranu
Dijkstra('A')
0 A
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-38-36a6e51ce96a> in <module> ----> 1 Dijkstra('A') <ipython-input-37-f893b518828b> in Dijkstra(start) 10 vrchol, vzdialenost = pr.get() #vyberieme najmensiu hodnotu 11 print(vrchol, vzdialenost) ---> 12 for sused, vzd in susedia[vrchol]: 13 pr.put( (vzdialenost+vzd, sused) ) #k susedovi ideme cez +dalsiu hranu KeyError: 0
from queue import PriorityQueue
def Dijkstra(start):
pr = PriorityQueue() #prazdny prioritny rad (vzdialenost, vrchol)
pr.put( (0, start) )
while not pr.empty():
#Z radu vyberieme najmenšiu hodnotu a pridáme hrany z nej idúce a vypočítame vzdialenosti:
vzdialenost, vrchol = pr.get() #vyberieme najmensiu hodnotu
print(vrchol, vzdialenost)
for sused, vzd in susedia[vrchol]:
pr.put( (vzdialenost+vzd, sused) ) #k susedovi ideme cez +dalsiu hranu
Dijkstra('A')
A 0 D 5 B 7 A 10 F 11 A 14 B 14 E 14 C 15 D 15 D 16 B 17 D 17 C 19 D 19 E 19 A 20 E 20 E 20 A 21 A 21 B 21 B 21 E 21 F 21 A 22 C 22 F 22 F 22 G 22 B 23 D 23 F 23 G 23 A 24 A 24 B 24 C 24 E 24 E 24 B 25 C 25 C 25 C 25 D 25 F 25 B 26 B 26 C 26 D 26 D 26 D 26 B 27 B 27 B 27 B 27 D 27 D 27 E 27 F 27 A 28 A 28 A 28 B 28 B 28 B 28 B 28 D 28 D 28 E 28 E 28 F 28 F 28 G 28 B 29 C 29 C 29 C 29 C 29 D 29 D 29 D 29 D 29 E 29 E 29 F 29 F 29 G 29 G 29 A 30 A 30 B 30 D 30 D 30 E 30 E 30 E 30 E 30 E 30 E 30 E 30 G 30 A 31 A 31 A 31 A 31 B 31 B 31 B 31 B 31 C 31 D 31 E 31 E 31 E 31 E 31 E 31 F 31 A 32 A 32 A 32 B 32 B 32 C 32 C 32 D 32 E 32 E 32 E 32 F 32 F 32 F 32 F 32 F 32 G 32 A 33 A 33 A 33 A 33 B 33 B 33 B 33 C 33 C 33 C 33 D 33 D 33 D 33 D 33 D 33 E 33 E 33 E 33 F 33 F 33 F 33 G 33 G 33 G 33 G 33 A 34 A 34 A 34 A 34 A 34 A 34 A 34 A 34 B 34 B 34 B 34 C 34 C 34 C 34 C 34 D 34 D 34 D 34 D 34 E 34 E 34 E 34 E 34 E 34 E 34 E 34 E 34 E 34 F 34 F 34 F 34 G 34 A 35 A 35 A 35 A 35 A 35 A 35 B 35 B 35 B 35 B 35 B 35 B 35 B 35 B 35 C 35 C 35 C 35 C 35 C 35 C 35 C 35 C 35 C 35 C 35 C 35 D 35 D 35 D 35 D 35 D 35 D 35 D 35 D 35 E 35 E 35 E 35 E 35 E 35 F 35 F 35 F 35 F 35 F 35 A 36 A 36 B 36 B 36 B 36 B 36 C 36 C 36 C 36 C 36 C 36 C 36 C 36 C 36 C 36 D 36 D 36 D 36 D 36 D 36 D 36 D 36 D 36 D 36 E 36 E 36 E 36 E 36 F 36 F 36 F 36 F 36 G 36 G 36 A 37 A 37 B 37 B 37 B 37 B 37 B 37 B 37 B 37 B 37 B 37 B 37 B 37 B 37 B 37 B 37 B 37 C 37 C 37 C 37 C 37 D 37 D 37 D 37 D 37 D 37 D 37 D 37 D 37 E 37 E 37 E 37 E 37 E 37 E 37 F 37 F 37 F 37 G 37 G 37 A 38 A 38 A 38 A 38 A 38 A 38 A 38 A 38 A 38 B 38 B 38 B 38 B 38 B 38 B 38 B 38 B 38 B 38 B 38 B 38 B 38 B 38 C 38 C 38 C 38 C 38 D 38 D 38 D 38 D 38 D 38 D 38 D 38 D 38 D 38 D 38 E 38 E 38 E 38 E 38 E 38 E 38 E 38 E 38 E 38 E 38 F 38 F 38 F 38 F 38 F 38 F 38 F 38 F 38 G 38 G 38 G 38 A 39 A 39 A 39 A 39 A 39 A 39 B 39 B 39 B 39 B 39 B 39 B 39 B 39 B 39 B 39 C 39 C 39 C 39 C 39 C 39 C 39 C 39 C 39 C 39 C 39 C 39 C 39 C 39 D 39 D 39 D 39 D 39 D 39 D 39 D 39 D 39 D 39 D 39 D 39 D 39 D 39 D 39 E 39 E 39 E 39 E 39 E 39 E 39 E 39 E 39 F 39 F 39 F 39 F 39 F 39 F 39 F 39 F 39 F 39 F 39 F 39 G 39 G 39 G 39 G 39 G 39 G 39 G 39 G 39 G 39 A 40 A 40 A 40 A 40 A 40 A 40 A 40 A 40 A 40 A 40 A 40 B 40 B 40 B 40 B 40 B 40 B 40 B 40 B 40 B 40 B 40 C 40 C 40 C 40 C 40 C 40 C 40 C 40 D 40 D 40 D 40 D 40 D 40 D 40 D 40 D 40 D 40 D 40 D 40 D 40 D 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 E 40 F 40 F 40 F 40 F 40 F 40 F 40 F 40 F 40 F 40 G 40 G 40 G 40 G 40 G 40 G 40 G 40 A 41 A 41 A 41 A 41 A 41 A 41 A 41 A 41 A 41 A 41 A 41 A 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 B 41 C 41 C 41 C 41 C 41 C 41 C 41 C 41 D 41 D 41 D 41 D 41 D 41 D 41 D 41 D 41 D 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 E 41 F 41 F 41 F 41 F 41 F 41 F 41 F 41 F 41 F 41 F 41 F 41 F 41 G 41 G 41 G 41 A 42 A 42 A 42 A 42 A 42 A 42 A 42 A 42 A 42 A 42 A 42 A 42 A 42 A 42 A 42 A 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 B 42 C 42 C 42 C 42 C 42 C 42 C 42 C 42 C 42 C 42 D 42 D 42 D 42 D 42 D 42 D 42 D 42 D 42 D 42 D 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 E 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 F 42 G 42 G 42 G 42 G 42 A 43 A 43 A 43 A 43 A 43 A 43 A 43 A 43 A 43 A 43 A 43 A 43 A 43 A 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 B 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 C 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 D 43 E 43 E 43 E 43 E 43 E 43 E 43 E 43 E 43 E 43 E 43 E 43 E 43 E 43 E 43 E 43 E 43 F 43 F 43 F 43 F 43 F 43 F 43 F 43 F 43 F 43 F 43 F 43 F 43 F 43 F 43 G 43 G 43 G 43 G 43 G 43 G 43 G 43 G 43 G 43 G 43 G 43 G 43 G 43 G 43 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 A 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 B 44 C 44 C 44 C 44 C 44 C 44 C 44 C 44 C 44 C 44 C 44 C 44 C 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 D 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 E 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 F 44 G 44 G 44 G 44 G 44 G 44 G 44 G 44 G 44 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 A 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 B 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 C 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 D 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 E 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 F 45 G 45 G 45 G 45 G 45 G 45 G 45 G 45 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 A 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 B 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 C 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 D 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 E 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 F 46 G 46 G 46 G 46 G 46 G 46 G 46 G 46 G 46 G 46 G 46 G 46 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 A 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 B 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 C 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 D 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 E 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 F 47 G 47 G 47 G 47 G 47 G 47 G 47 G 47 G 47 G 47 G 47 G 47 G 47 G 47 G 47 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 A 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 B 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 C 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 D 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 E 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 F 48 G 48 G 48 G 48 G 48 G 48 G 48 G 48 G 48 G 48 G 48 G 48 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 A 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 B 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 C 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 D 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 E 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 F 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 G 49 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 A 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 B 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 C 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 D 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 E 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 F 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 G 50 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 A 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 B 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 C 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 D 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 E 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 F 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 G 51 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 A 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 B 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 C 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 D 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 E 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 F 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 G 52 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 A 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 B 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 C 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 D 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 E 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 F 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 G 53 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 A 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 B 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 C 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 D 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 E 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 F 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 G 54 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 A 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 B 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 C 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 D 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 E 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 F 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 G 55 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 A 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 B 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 C 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 D 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 E 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 F 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 G 56 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 A 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 B 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 C 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 D 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 E 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 F 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 G 57 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 A 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 B 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 C 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 D 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 E 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 F 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 G 58 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 A 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 B 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 C 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 D 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 E 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 F 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 G 59 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 A 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 B 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 C 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 D 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 E 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 F 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 G 60 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 A 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 B 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 C 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 D 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 E 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 F 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 G 61 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A 62 A
--------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last) <ipython-input-40-36a6e51ce96a> in <module> ----> 1 Dijkstra('A') <ipython-input-39-06a5983ba0fd> in Dijkstra(start) 9 #Z radu vyberieme najmenšiu hodnotu a pridáme hrany z nej idúce a vypočítame vzdialenosti: 10 vzdialenost, vrchol = pr.get() #vyberieme najmensiu hodnotu ---> 11 print(vrchol, vzdialenost) 12 for sused, vzd in susedia[vrchol]: 13 pr.put( (vzdialenost+vzd, sused) ) #k susedovi ideme cez +dalsiu hranu C:\ProgramData\Anaconda3\lib\site-packages\ipykernel\iostream.py in write(self, string) 402 is_child = (not self._is_master_process()) 403 # only touch the buffer in the IO thread to avoid races --> 404 self.pub_thread.schedule(lambda : self._buffer.write(string)) 405 if is_child: 406 # mp.Pool cannot be trusted to flush promptly (or ever), C:\ProgramData\Anaconda3\lib\site-packages\ipykernel\iostream.py in schedule(self, f) 203 self._events.append(f) 204 # wake event thread (message content is ignored) --> 205 self._event_pipe.send(b'') 206 else: 207 f() C:\ProgramData\Anaconda3\lib\site-packages\zmq\sugar\socket.py in send(self, data, flags, copy, track, routing_id, group) 489 copy_threshold=self.copy_threshold) 490 data.group = group --> 491 return super(Socket, self).send(data, flags=flags, copy=copy, track=track) 492 493 def send_multipart(self, msg_parts, flags=0, copy=True, track=False, **kwargs): zmq/backend/cython/socket.pyx in zmq.backend.cython.socket.Socket.send() zmq/backend/cython/socket.pyx in zmq.backend.cython.socket.Socket.send() zmq/backend/cython/socket.pyx in zmq.backend.cython.socket._send_copy() C:\ProgramData\Anaconda3\lib\site-packages\zmq\backend\cython\checkrc.pxd in zmq.backend.cython.checkrc._check_rc() KeyboardInterrupt:
Pokračuje do nekonečná, hľadá všetky sledy (cesta s opakujúcimi sa hranami) ... na začiatku vidíme, že pridalo (A, 10)
..
Zapamätáme si, ktoré vrcholy sme už spracovali (máme finálnu vzdialenosť).
navstivene = [] #zoznam navstivenych vrcholov
from queue import PriorityQueue
def Dijkstra(start):
pr = PriorityQueue() #prazdny prioritny rad (vzdialenost, vrchol)
pr.put( (0, start) )
navstivene = []
while not pr.empty():
#Z radu vyberieme najmenšiu hodnotu a pridáme hrany z nej idúce a vypočítame vzdialenosti:
vzdialenost, vrchol = pr.get() #vyberieme najmensiu hodnotu
if vrchol in navstivene:
continue #preskoc, ak uz je spracovany dany vrchol
navstivene.append(vrchol)
print(vrchol, vzdialenost)
for sused, vzd in susedia[vrchol]:
pr.put( (vzdialenost+vzd, sused) ) #k susedovi ideme cez +dalsiu hranu
Dijkstra('A')
A 0 D 5 B 7 F 11 E 14 C 15 G 22
from queue import PriorityQueue
def Dijkstra(start):
pr = PriorityQueue() #prazdny prioritny rad (vzdialenost, vrchol)
pr.put( (0, start) )
navstivene = []
while not pr.empty():
#Z radu vyberieme najmenšiu hodnotu a pridáme hrany z nej idúce a vypočítame vzdialenosti:
vzdialenost, vrchol = pr.get() #vyberieme najmensiu hodnotu
if vrchol in navstivene:
continue #preskoc, ak uz je spracovany dany vrchol
navstivene.append(vrchol)
print(vrchol, vzdialenost)
for sused, vzd in susedia[vrchol]:
print(f'...pridane... {(vzdialenost+vzd, sused)}')
pr.put( (vzdialenost+vzd, sused) ) #k susedovi ideme cez +dalsiu hranu
Dijkstra('A')
A 0 ...pridane... (7, 'B') ...pridane... (5, 'D') D 5 ...pridane... (10, 'A') ...pridane... (14, 'B') ...pridane... (20, 'E') ...pridane... (11, 'F') B 7 ...pridane... (14, 'A') ...pridane... (15, 'C') ...pridane... (16, 'D') ...pridane... (14, 'E') F 11 ...pridane... (17, 'D') ...pridane... (19, 'E') ...pridane... (22, 'G') E 14 ...pridane... (21, 'B') ...pridane... (19, 'C') ...pridane... (29, 'D') ...pridane... (22, 'F') ...pridane... (23, 'G') C 15 ...pridane... (23, 'B') ...pridane... (20, 'E') G 22 ...pridane... (31, 'E') ...pridane... (33, 'F')
vidíme, že pridalo aj hrany do už spracovaných vrcholov ...
from queue import PriorityQueue
def Dijkstra(start):
pr = PriorityQueue() #prazdny prioritny rad (vzdialenost, vrchol)
pr.put( (0, start) )
navstivene = []
while not pr.empty():
#Z radu vyberieme najmenšiu hodnotu a pridáme hrany z nej idúce a vypočítame vzdialenosti:
vzdialenost, vrchol = pr.get() #vyberieme najmensiu hodnotu
if vrchol in navstivene:
continue #preskoc, ak uz je spracovany dany vrchol
navstivene.append(vrchol)
print(vrchol, vzdialenost)
for sused, vzd in susedia[vrchol]:
if not sused in navstivene: #kontrola ci este nie je spracovany
print(f'...pridane... {(vzdialenost+vzd, sused)}')
pr.put( (vzdialenost+vzd, sused) ) #k susedovi ideme cez +dalsiu hranu
Dijkstra('A')
A 0 ...pridane... (7, 'B') ...pridane... (5, 'D') D 5 ...pridane... (14, 'B') ...pridane... (20, 'E') ...pridane... (11, 'F') B 7 ...pridane... (15, 'C') ...pridane... (14, 'E') F 11 ...pridane... (19, 'E') ...pridane... (22, 'G') E 14 ...pridane... (19, 'C') ...pridane... (23, 'G') C 15 G 22
navstivene = {}
for vrchol in susedia:
navstivene[vrchol] = False
navstivene
{'A': False, 'B': False, 'C': False, 'D': False, 'E': False, 'F': False, 'G': False}
from queue import PriorityQueue
def Dijkstra(start):
pr = PriorityQueue() #prazdny prioritny rad (vzdialenost, vrchol)
pr.put( (0, start) )
navstivene = {}
for vrchol in susedia:
navstivene[vrchol] = False
while not pr.empty():
#Z radu vyberieme najmenšiu hodnotu a pridáme hrany z nej idúce a vypočítame vzdialenosti:
vzdialenost, vrchol = pr.get() #vyberieme najmensiu hodnotu
if navstivene[vrchol]: #O(log n) prip. O(1) pri poli, namiesto O(n) pri pouziti in navstivene
continue #preskoc, ak uz je spracovany dany vrchol
navstivene[vrchol] = True
print(vrchol, vzdialenost)
for sused, vzd in susedia[vrchol]:
if not navstivene[sused]: #kontrola ci este nie je spracovany
print(f'...pridane... {(vzdialenost+vzd, sused)}')
pr.put( (vzdialenost+vzd, sused) ) #k susedovi ideme cez +dalsiu hranu
Dijkstra('A')
A 0 ...pridane... (7, 'B') ...pridane... (5, 'D') D 5 ...pridane... (14, 'B') ...pridane... (20, 'E') ...pridane... (11, 'F') B 7 ...pridane... (15, 'C') ...pridane... (14, 'E') F 11 ...pridane... (19, 'E') ...pridane... (22, 'G') E 14 ...pridane... (19, 'C') ...pridane... (23, 'G') C 15 G 22
from queue import PriorityQueue
def Dijkstra(start, susedia):
pr = PriorityQueue() #prazdny prioritny rad (vzdialenost, vrchol)
pr.put( (0, start) )
navstivene = {}
for vrchol in susedia:
navstivene[vrchol] = False
vysledok = {}
while not pr.empty():
#Z radu vyberieme najmenšiu hodnotu a pridáme hrany z nej idúce a vypočítame vzdialenosti:
vzdialenost, vrchol = pr.get() #vyberieme najmensiu hodnotu
if navstivene[vrchol]: #O(log n) prip. O(1) pri poli, namiesto O(n) pri pouziti in navstivene
continue #preskoc, ak uz je spracovany dany vrchol
navstivene[vrchol] = True
vysledok[vrchol] = vzdialenost
for sused, vzd in susedia[vrchol]:
if not navstivene[sused]: #kontrola ci este nie je spracovany
pr.put( (vzdialenost+vzd, sused) ) #k susedovi ideme cez +dalsiu hranu
return vysledok
Dijkstra('A', susedia)
{'A': 0, 'D': 5, 'B': 7, 'F': 11, 'E': 14, 'C': 15, 'G': 22}
Dijkstra('D', susedia)
{'D': 0, 'A': 5, 'F': 6, 'B': 9, 'E': 14, 'C': 17, 'G': 17}
for i in range(n):
vrchol = chr(ord('A')+i)
print(f'{vrchol}: {Dijkstra(vrchol, susedia)}')
A: {'A': 0, 'D': 5, 'B': 7, 'F': 11, 'E': 14, 'C': 15, 'G': 22} B: {'B': 0, 'A': 7, 'E': 7, 'C': 8, 'D': 9, 'F': 15, 'G': 16} C: {'C': 0, 'E': 5, 'B': 8, 'F': 13, 'G': 14, 'A': 15, 'D': 17} D: {'D': 0, 'A': 5, 'F': 6, 'B': 9, 'E': 14, 'C': 17, 'G': 17} E: {'E': 0, 'C': 5, 'B': 7, 'F': 8, 'G': 9, 'A': 14, 'D': 14} F: {'F': 0, 'D': 6, 'E': 8, 'A': 11, 'G': 11, 'C': 13, 'B': 15} G: {'G': 0, 'E': 9, 'F': 11, 'C': 14, 'B': 16, 'D': 17, 'A': 22}
from queue import PriorityQueue
def Dijkstra(start, susedia, ciel=None):
pr = PriorityQueue() #prazdny prioritny rad (vzdialenost, vrchol)
pr.put( (0, start) )
navstivene = {}
for vrchol in susedia:
navstivene[vrchol] = False
vysledok = {}
while not pr.empty():
#Z radu vyberieme najmenšiu hodnotu a pridáme hrany z nej idúce a vypočítame vzdialenosti:
vzdialenost, vrchol = pr.get() #vyberieme najmensiu hodnotu
if navstivene[vrchol]: #O(log n) prip. O(1) pri poli, namiesto O(n) pri pouziti in navstivene
continue #preskoc, ak uz je spracovany dany vrchol
navstivene[vrchol] = True
vysledok[vrchol] = vzdialenost
if vrchol == ciel: #ak sme nasli ciel, tak skonci skor
break
for sused, vzd in susedia[vrchol]:
if not navstivene[sused]: #kontrola ci este nie je spracovany
pr.put( (vzdialenost+vzd, sused) ) #k susedovi ideme cez +dalsiu hranu
return vysledok
Dijkstra('A', susedia, 'F')
{'A': 0, 'D': 5, 'B': 7, 'F': 11}
Dijkstra('A', susedia)
{'A': 0, 'D': 5, 'B': 7, 'F': 11, 'E': 14, 'C': 15, 'G': 22}
Celková zložitosť tejto implementácie je $O(n+m)$.