-
Notifications
You must be signed in to change notification settings - Fork 0
/
w_3.py
229 lines (207 loc) · 62.4 KB
/
w_3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
import copy
from w_2 import *
import math
def count_of_symbol_matrix(last_column):
symbols = list(set(last_column))
symbols.sort()
nums = [i for i in range(len(symbols))]
x = zip(symbols, nums)
symbols_dict = dict(x)
count = []
for symbol in symbols:
l = [0]
for i in range(len(last_column)):
if last_column[i] == symbol:
l.append(l[i] + 1)
else:
l.append(l[i])
count.append(l)
return count, symbols_dict
def first_occurrence_matrix(last_column):
first_column = list(last_column)
first_column.sort()
first_occurrence = {}
for i in range(len(first_column)):
symbol = first_column[i]
if symbol not in first_occurrence:
first_occurrence[symbol] = i
return first_occurrence
def better_bw_matching(first_occurrence, last_column, patterns, count, symbols_dict):
def matching(pattern):
top = 0
bottom = len(last_column) - 1
while top <= bottom:
#print(len(pattern), top, bottom)
if len(pattern) > 0:
symbol = pattern[-1]
pattern = pattern[0: len(pattern)-1]
x = last_column[top: bottom + 1]
if symbol in x:
top = first_occurrence[symbol] + count[symbols_dict[symbol]][top]
bottom = first_occurrence[symbol] + count[symbols_dict[symbol]][bottom + 1] - 1
else:
return 0
else:
return bottom - top + 1
def all_patterns(patterns):
l = []
for pattern in patterns:
l.append(matching(pattern))
return l
return all_patterns(patterns)
def partial_suffix_array(text, k):
indices = suffix_array(text)
indices_ = {}
for i in range(len(indices)):
if indices[i]%k == 0:
indices_[i] = indices[i]
del indices
return indices_
def checkpoint_array(bw, k):
count, symbols_dict = count_of_symbol_matrix(bw)
for l in count:
for i in range(len(l)):
if i%k != 0:
l[i] = None
return count, symbols_dict
def multiple_pattern_matching(first_occurrence, last_column, patterns, count, symbols_dict, sa):
def matching(pattern):
top = 0
bottom = len(last_column) - 1
while top <= bottom:
if len(pattern) > 0:
symbol = pattern[-1]
pattern = pattern[0: len(pattern)-1]
x = last_column[top: bottom + 1]
if symbol in x:
top = first_occurrence[symbol] + count[symbols_dict[symbol]][top]
bottom = first_occurrence[symbol] + count[symbols_dict[symbol]][bottom + 1] - 1
else:
return None
else:
return sa[top: bottom + 1]
def all_positions(patterns):
l = []
for pattern in patterns:
x = matching(pattern)
if x == None:
continue
else:
l += x
return l
return all_positions(patterns)
def multiple_approximate_pattern_matching(first_occurrence, last_column, patterns, count, symbols_dict, sa, d, text):
def pattern_to_seeds_with_indices(pattern):
n = len(pattern)
no_of_seeds = d + 1
k = n//(no_of_seeds)
#keep a track of position and index of seed in pattern
partitions = []
for i in range(0, n - k + 1, k):
partitions.append(i)
partitions.append(n)
seeds = []
for i in range(1, len(partitions)):
seed = pattern[partitions[i-1]: partitions[i]]
seeds.append((seed, partitions[i-1]))
return seeds
def seed_indices(seed):
top = 0
bottom = len(last_column) - 1
while top <= bottom:
if len(seed) > 0:
symbol = seed[-1]
seed = seed[0: len(seed)-1]
x = last_column[top: bottom + 1]
if symbol in x:
top = first_occurrence[symbol] + count[symbols_dict[symbol]][top]
bottom = first_occurrence[symbol] + count[symbols_dict[symbol]][bottom + 1] - 1
else:
return None
else:
return sa[top: bottom + 1]
def edit_distance(u, v, d):
dist = 0
for i in range(len(u)):
if u[i] != v[i]:
dist += 1
if dist > d:
return False
return True
def pattern_indices(pattern):
pi = set()
seeds = pattern_to_seeds_with_indices(pattern)
#print(pattern, seeds)
for seed, start_index in seeds:
si = seed_indices(seed)
if si is None:
continue
for pos in si:
if pos is None:
continue
pattern_index = pos - start_index
#print(pattern_index)
if pattern_index < 0:
continue
# $ encountered
elif pattern_index + len(pattern) > len(text):
continue
elif edit_distance(pattern, text[pattern_index: pattern_index + len(pattern)], d) is True:
pi.add(pattern_index)
return list(pi)
def all_patterns(patterns):
all_positions = []
for pattern in patterns:
#print(pattern)
all_positions.append(pattern_indices(pattern))
return all_positions
positions = all_patterns(patterns)
indices = []
for pos in positions:
indices += pos
indices.sort()
return indices
'''
file = 'patterns.txt'
patterns = patterns_input(file)
text = 'CGAGTCGCGCGTTGGAGTTGGGTCAAGTCACTACATCTAATTTAGTCGGAGTACGAAGTTAGACCCCACTACCCGTCAGCGGCTAGACGGTGGCCTGTATTCCATGGTCTACCGTTCGGAGGTGAATAATACATGATGGAGGTGCGAAGTAGGGAAGGTAGTCCATGGCCCGATTATTGTTAGCAACTCCATCTCTTTGGATAACGGTATTGGCGGTGCACTGGAAAGAGTGTACTGGTATTATAAAATTTGTGACTTCCCGCGTTTACAACTTGAGTCAAAGTGCACGACCCAGTTCGTGCCCACACTTGATTTTGCCAATCACGATCCAGCCCTGTATTCAATACCCATGCCACAAAGAACGTGGCAGATCCATATTCGTTGAAATAATCAATGACGGCCCTTGAAAATGTATCCAATGAGGACTGTATTTTTAACTCGTACTAGCAAGCTTTTGCACTGATGGGTGACCGTTGATTAGTCCCGGCAATATGAACACACACTCCGTAGCCCGTGTATAACCAAAGGTTCCCGCACTTCAACGACCTCTGAAAGTCTTAGGTTGGTGGGTTTTACTGTATATTAGCGCCGTACCATAACCGTACATTATCTGTGTCAAACACGGCGCCATGGGCATGAATGAGACAAATCGGGGTTACTGTACTGCAAAGTCAGGCGGCTGCCCTAACAAACAGCGGATGCATCGAGTTGAATTACAACAATATCGTCTGGTGGGATTCACAGATCCCGCTTTCATGATGACTATACCGACAATCGTTGCGCCCACATTACCGAACAGGAATAATTATCTTGCTTCCGTAAAATGTTAAAAAGCTCGGTGAGAAAAACTTCAAGGGTATTTAACGACGAGCGAGCACCAGCCTTTTAATATCTGCCCAAAATTGCTCCTACCTGTCGGTCGAACACAAATAGTGGGAAAGTGACGTCGTTCAGGCGTACCGGAAGTCGAAGAAAACATACCCCGGTTGCGACGGCTATCAATGGGTGGCTCTTAGCACTTATTGCAACACCCCCAGAATGCGCGAGCCATTCGGAGATAAGCTGACTCGCCACTGGACGTAAAACGAGGCTCACCCGAATGTTGTATGAGTACACTGCATTGCCTCAGAATAGTAATGCGGACCACTCTCCGTAGGATATAGAGGCCCACGAAACTTCTGACCATTACCGTATATTAGCACTTAAGAGATCAACTCATGAGTCTCTGTAAATGGCATATTTCCACATGAAGTGGGCATCGCCACACTCGGGTGAGCTAACCACAGCTGCCACCCAAGATGACTGTATCTTACATCGTCGGAACGCGGGTAGCGCGACCCTTCGACAATAGTCACGTATTAGGTGAAGATGAAACTCCATCGCTCTTTGCAACTCTGAGTGTTATGTATGATGGTTTGAGAGCCTGCTTGGGGAACCTTTGTTTCGTCACGCAGCAGGTCCAGGGAAGAGTTGCGTATGCCTGCCTGTCCCCGCCGCAGGATCTTTGTTTTCAGCAGTGCGAAGTGTGCCGAAGGAGCGCGCAGATAATCTATATTGGGTCGTCTGAGTGACGCCATGAGACTAAGAACAATTCGCGTGATGGAAATATAACCTAGAAGAAATTCCTGAGGAGGATAGGTTTATGGATAGGGGGATCAAACTTATAAATAGGGCGGGCTGGGTTCTGGTTGAAGTTCACAGTATCCATACGCTACTGCCACTTTTAATCTTAGAATCAAATCGGTCGCCCCTTTGTGGCCTGCGGTAAGTGCTGTGGGAATTGCGAGAGCGTTCTTCGCCAGGTTCTAATGCTCATTTTATGTTGAAAACGTGGCGGATCGCTGCGAGTTATATCTCTGTTGCTGCAGGGGCACATGCTGTCTCCCCGAATCAGTGAAGCGACCGTTTCGTCTTGTGTTGGGGGGACTGGAACACCAGGTGCGTCATACTATTTCAGCTGAGACAATGTCCTGATATTTTCTCTGAAACCTGCAAGGACAGCGCTGACGTGCCCAGACAGGGTGTTCGATGTACCGTCTAAATGAATGTCTGTATAGTCCGCGTCTGGCAGTGCAAGTACATACGGAATTAGCCGATATTGCATCATAATGTCGGCTCACGACTACAGTAAGTCTGACTGATCACCGGCAATGCGCTAGGAACAAAGAGTCGTCACCAGCCAGCCAGGATAAGCATTATACTTAAGGCCGGCTAAGCCTGCTAAAATGGCTGAGCAGTCAATTCGCCGCCGGTCCCAATGAGCGGTTATGACTGCATCCCATGGTCGCGCGCCTCCGACTGCGACGATGACCTAGGTGTAAAGAACTTTTTGGTAGCGTAGCAGAATAAAGGTCGGGACGTAATTGTAAGTAAGTCTCCTTACGCCGCCAGTACATGGCCTGGGGTATAGCGGGGGGCGTTTCGAGCTCAGTGAAATTCCTTAACATCGAGGCTGGAACTTGGTTCTGGGGCGGAGATGTGCCACCTGGGCTCCCCCCGCTTGGGGTTCGATCTGTTCGGCCTATCGCCGGCATGTGGACTCGAAGCAGTTGTAGGTCCGAATTGTCGTAGGGCCAGATAGACGCCGCGTACGACTCAATCTGGGCCTCCGGGGTGCAGATGCGGAAATAACAAAAGGTTCTGACCCGTGGTTTGTAGAGGGGTACACAGATGCATACTGGGGGTGCGACTCGCATAGGAATCATGACATATAGTCGACCCTCGCGAGAGAATGTTGAAGTGCGTAAAAGTCTCATTCTTGGTTGGAATCGGACCATTCATTAGAAAACCCGTTCGTCTCCACGGCAGCTAGTGGGTAAGCTTGTTGTAATACAACTACGTCTGTCGCTTACGTCACTCTATCTTCAACAGTGTTGTTTCAAGTTAGGGTGTATAATATATCATATGATCCAGATGAAATTGTGTACAAAGTAGCGCCGAGTCCCCATCCAACGCTTAATCGGTCGTCGCAGGGTGAAAAGTGAATGAAGGGCCTGCTGAATGTAGGGGATGGAACTCCCGTCGTGCGAACGGCATTTCTTCTAGGAATCGATTAGACGCGACGTCAGCATTCATGTGATGATCCCCGGGCTAGAAGACCTGGTGATAACGTTGGGCTCGCGGGGTGCCCACCTGGATGTCACTCGTCCAGCGGGGCATGAAGGCGGATAATAATCCGTAATAACGGGCTCGTGATTACAACGCCGAATCATCAACATACAAGGGGCTCAGACTATACGCTCACAACCAGCTGTACAAATGTCACATAAAGGATGTCTTTCGAAAGCATAAGCCCCGGGTGCCTACTTCCATCTCGGGTAATCAGGTAGTGATTCCGGTCGAACGCAATTTTACAGCCTCGGATGCGGTGTATTAATCCGAACATATTAGATGAACCCCGAAGCGCTTAAATGGATAATGCCATCACAGATAGACCTTTTGACTCTTATTAGGCCGGTTACCCCTTGGAAGAGCTTGGAGGTTGTAACGGGTAGCTCTGCGTCAGATGTCCTGGCTCTTGCAAGATCCGTCGCTGTCCTTGTGCGGGCGCTTACAGCACAAGACTCTTCCCAAATGACCGGATATTGCGAACCAGTCGAGATCCACGAAGTCATGGCGGCCCAGCATACTCGTATACGGGACCACAGAACGGTGCGCGATCGTTCCGAGTTCTGGCTCGTTCAGAGGTCCGGGGCCTGACGTTATTTGTCGGGTAGAGCTTATACCTATATCTGATCACCGATACCATTGCATGTTTTTAAAATTCGCTAATCTCGATGGGGGGAGGGTAATTCTATGTTCTATTACGCTAAGTATTCGCATCCTCACATTTCGTTCCACAAGAACGCCGGTGACTCCCCATTTGTGTGTGTAAGCGTACGGTAGCTCCGATTTAGCCGTCATGTTATCTATACTTGATCGCATCTTATAGCAGAGCCGTGCTTTAGCAGCTCTCGCTGTTCAATAATGATACGCGTACATACGATGCGCCCTGTTACTTTCCTTCAAGTGGCTGACTTCGTAGATGGGACCAAGATCAAGAGAAGAAGTCTCCAGACTTCCTATCAACTAACCGCTGGCTGGATTCCCTTTCCAGTTCGCTTTGAGATATCTACGGAATCAAGAAGACGACGCGCACATAGCCCCCATGCCCCTTCAACTGTCAGTTCCCGAAGCGTCCCTCACCAAAGACGAAAGCGGATACCATCTTGGTGTAGGTGAGAAAAAGATTCCTTAGAACGGCTTGTGAATTATAAAAGTGGGCGAAGTCTGTTCCGATCTGACCAAATACGTCAGACCAGTAGATCAGACATGCATCTAAGAAGCCACCCCCTCTGATGAAGCCAGATATGCAGTGCAATGTCTCGAGGCAAACTCATCCTGCTCTTACGGACCCATTTGTCTCCTGCGCGGGGCGGATTAAAGGTTAACATGGGGTGTGTTGATTCCACCACAATGGCCGTGTGTTTTATATACGCCGTCGGTCTGTAGCGAAAAGCCTTTTACGTTGAGTAATAGCCTACCAGGGTGGCATGCCCTGCCGTGTACGTGTCCTCCGGGGGTGCCTGTACGACCATGGACTAAAAGCGTCATATGGCCACATGCAATGTACTCCCCTAAGATTCGTCGTAGCAGGATATAACACTGTTAGTGGTGGATCTAGAAACGTCAATTCCACGCGTTTTTTTTATGTGGGTATAGGTGTACTTCACCCTTGACGCAACACTGCCCTCGTCTTCGAGCATCTCCCGAACACAGGACCACTTATTGGCGCAGCTATTCCGCCTCTCTTGAGCAGGGAAATGCTGCACAGGATGATTAAGAGGCTTTATCATGGGTTAGAGAATGTGTTTAACTTAGATTGAGTATTTGCTCAATAATCCATTCAGCCAAGGTACAGCTACCTCACTAATGGGTTTTACGCTCTAGATCTACCCTTGGAGGCGCTACGAACTCGGTCGAATAGACTACACACTTCAAAAGTTCCATCACTTGCCAACAATTTAAGACAGTTGAAGAAATTCCAGCATATTTATACCTTCGATAATGTGCGGGAACACACTTTACGTGTTGACAATCAGCGATTCGGGCTAACTGGATAGTCATATAAGCAGATACACGGGTCCGGACCGCCCTCAACGGTAATTAAAGGGGTTGTATCGAGTACTGTCAGAATCATCTCCTGTACGAGAAGGGTATTTCCCTTAATTGACAGGTTCAGTGACAAGCTCGTAAAGTCTACTAGCAATGATCAATGCTTGGTTCGCTTGATAGAAATGCATAAGTTGCAAGCAAGAAGATTTCAGGCAGAAACATAAGTGGACCTAGACGACGCTCTACCCTCAGATTGCCGCTTCAGCTAACATTCTTAATCGAGTTATAAGGCGGACGGTGGGAAAGGTAGACATTGGCTGTGTATTCAGGACAGCATATGGGGTCCGTTCTTTTGGACTCACTGGATAGGGGATGGGTAAAACAAGCTTAGCTCAAGTTAACTAAACGTGCCGCCGGAAAACCAATAGGGCGAATCAATAGAGTCTAAATGCGCCTCGAGACGTCGACTCTAGTGGTGGAGGGGCTCGAGTCAATGACCCGTGATTAGGCAACTGAAGGAGTAGGCGATGGCTTCGAGTAAAAAAAGTCGCAGAGGCCGCTAGCCTATAAACATGAGTAATTGGTAATCCCATGGTTGGATCGTATCAGGAAACGAGTTAGGTTCGGCATGCATCCTCTGAATCTGCTGGCCACGCTAATTCAGCGAAATTGGTCCGTCCCTGAACCGACTAGGGTTCGGGGACTGCTCGTATGGCTGATGACGTTAGGTTGTAGACGCAGTCATTGATCGTCTTGCTTGGGTTGAGGGATTACAGTCTCATAAGCGGGTTCTGCGAGTTTCCGGGAGTGGAATGCCCGATGACGCTCGCCTGCCTTGCCTATGCCTCCAAGGATTGTGTACGCGAGCCACCAGGAAACTCGAGACAATCAGCTGAGCCTTACCTACTTGAAAACACTGTCATGAAGAAGAGCGCGTCGAGTAACTTGCCACTAATTGGGACCCTGGACGGGTGCCAGTGTCGATGTTAGTAGCTGGTGAGAGCCCAGCCTGCCCAACTGTAACATCGTTTACGTGCAACGAAGCGAATCCTGAGGAGCAGCAATATCATGAGTGCAGAGCTAGCGGGTCTCTAGCACTTGTCGGTACATAGACTATCCCTGCTCCATAAAGTCTAACATAAACCCTAAGTCGTATGACGACTCTTCCTTTAGGTTCAGTGGGGGGGAGGGTTCTTGTTCCGGGCCGAGCGACCTCCCGCTAGCTAGCGATAGACCCCTGTCTTGCTTGCGGTGCCCGCCTGATCTCTGCAGGCTTAGTTTCCGCGTTCTATGAGATGATCGCGCTACACGTGCCTAGATGAAGGTGTTACAGATCCCATTCACGAACAGGTGGGCGAACCTTGGAGGTGACGTTAAGCTACCAGGTCGAATGTACGAACAATATGTAGGGATATACCTCCAGTCGTAATGGTCACCGCACGCTTCAAGCGCTGGCGGCAATGCAGCGCTGGCTCTTTGATCGTATAGGAACTCTGATTCGACGGTACCCAAGCGAATATGTGCGCTGTCTAGCCCCGAGATTACAGTCCCTACCTGAGGATAATATCGTCACCGATAGTTGACGTTCAACGATTGAGTTAGGGCGGTTACGAGCGCAATTTGCCCGACTTCACCATCCCATACCGCTACCGATGTGCCCGTACGGCCGACTTGTGGGTCATGGCACGTAGAATCATAGAAAATAGGAGAGTACGACATCATAGGAGCTAAATAAATGCTTTTACACCGGTTATACTCCGGCTGCGTCTAGGCGCATACTCCAGAGTGAGGAGGGCGCGTGTCCAGGGCCGTCGCCGTCAAGGTGTAAAATGTCCCCAACTCCACTTATGTCGGAGTGGATTTATTTCAAAGCAGTCCGCAAACTGAAGGGAACGCTGAGCTCATTGGCACACCGTGTACTTGACCAAGGATTCTCACTGTATCCCTCTAGTATAATATTAGGAGGCCACCGGCAAGTAAATTTATTAAATGTGTAGACTAGATCGATGTTGTAGAGGCACGGAGTATCCGGGGAAAACTCCAAATATATATGGAGATTGTTCAACCCAAAAACTTCTCTACGGCTCTCCAAATTGCTGGCCTCTATATTTCCACCTATCATTTGTTAACACCGATTACGCCTGCCTAGGCAAGAAGGAGGGAGAACTAGAAGCTCTCTGCTAATACTCTAACCTAGGAAGTACCGCTGGATTCTAATAAGGATCTAGGGGAACATCTGTAACGGGTAGGGCCACAACACACTTGACTAACAGGGGGTGAGTCTTTACCAGATCGTCCACGTGCATCTCTACCCCATGGTACTCAGTAAACTACGAACCGATATAATTCTCTGGAGGGTTCGCGCAACTGACGGCGGCGCTCTAAGTTGGATCGGGCAGTGGCGCGTACGGGTCTTGTTTATCAGGGGCTTTGGGGGGACTTGACGACGGCAAAACGTCAACATGTACTCAGCTCATATGGCCAAAGTAGAGAGTGCTGCACCAAACCTTGCGCGTGGGCGCTTGCGCCACTTTGGCTTAACGTACATCTAGCATGCTTTGGGCCAAAGTACAGCAGAAATTGGATTATCACAAATACGGACTGGGGGGAGGTGGATGAGCTGCCGGAAGCCTCACTTCAGGATATTCTGGTCCGTGGTAAAAAGCTTACACTCCCCCCCGAGAGGAGTATCAAGTGAGGATGTCACCAAGCTGATAGAGGGCGGGTAGCGGTGGCGAGAGGTCGCGCGAGCTCGGAACTCACCATGTACAGAAGCAACTTAGCGGTCATTGCACCAGTCACCGTCAAACGCAAAATTGGTACTTAACCTGCGTACCTAATGCAGACTTTCCGGCATTATTACTCTTACTGTTGGTGCAATCAGTCCTTTATCAATTACGCCAGGTGAGGCAAGGCCACTTAATGGGAGGTGAGATGTGACGACCGCTGTAGCTTTAAATAACTTAAAATCTAAACAACACCCCGCAAGTCTAGCTCCGAATACGGTAATAAACTGACGTTTATTTTCACACAGCACCTATAGACCTGGTCTGGTCGCAAATTAGCCACGTTAGTAGTCAGCGCGAACTGATCGTCAGGTATGAAAGATGAGCACCTCCAAGTGGCTTCCTTCGAGCTTGTCTACCGGTCGTAACATATTCGGTCGCTCCAGGATCACGCTTTCCCAGTTCTACAGCCTAAGCAACATCCGTCGATGCGCATCAAATACACTATGGTGCCCGCAGTCGGATACGGGATGGGAACACTGTCGGGCGGCCGTCAGAGCGTGGCCGCCATCCGGATGAAGTCGAAGAGGACGGTGTCGTGCTGTAGCGAGGATAATGCCAGATCGAAGCATGTGATTTTGCAGACAACTTTACTCAAACTCACAGTGGAGTGTTAGTATGTAATCGGATCTGCAACCTTACGCTAACCTTAAGGCGATCGGGCTGGGTCTGCCTGTCAGATAATTGCACGACTTTAGTTTGATAGATCCACAATGGCAGCTTCGTTTGAACCGCTCCCTATAATTGTCTTAATGAGCCGTTCGTTACTCGCTTGCCCACCGTTAGTTCCCAGGTCTTTGGACAGGCGCGATAGAAGAGCCGCAACTGCAATTGAATACTGCGCTTTGTGCCCCTAACCCTTGCACTCCACCGATTAGTGCATATGGCTATATTGATCGGACGAGCTCGGGTCCAACACTAGCCTAACGCCTTAGAGTGACAACTTTGAGCATTATGCTGTCGAGTAACCTTACTGTTCTACCGGATCACGGACGTAGATATAATCGTTCGTCCTTCATGACTACTCAGCGTATAGGTACCCGAATCTACGTAAGGCACCGTGGTAGCCTCCTATTCGTCAAACCGTGGTAGCTTGTTCGATGCGTCCAATGCATAGGGTCTAACAAAGTGGACAAAGTCATGACAATGCAGTGTACTAAGGCTGCAGTAAGGCGCGCAAGGTTCACCCAAAGGCGAATACCCGGGCGAACATCTCAGAAGTTCGGAGTAGCCGTGGACTAACGCTCTCTCGCTTTGGCGGAATTTAGGCGGCTACGCGAGAATGTCTCCGCAAATAAATCCTGGACTTCGTCATTCGCCCTTCCAGAATATCACTGGCTTATATATTGAGTATACTATGACGTTCAAGCTTTATGCCCGCCATGAACATCACTGACTGAGTTCCTGGGACCGGCTAAAGCCTAGGCCAGATGTAGACAGATATCGACGTGGTCTAAAGTCGGTCTTTCAAGGGGGAGGCCCAGCGGACCGTATGATCTGAGACGTTTACCTGAATGGGGCTATATGTTTTGTACCCGCTTGGGCCACCGCGATTAAGAATCACACGCCACGGGGGGGCGCAACACAATTTAAAAAATGAGGTAAAGTTGGCTACGAGTCGGCCGATTAACCCGAATCTTATTGATTCGTGCGTTGCCAATGTATCCGTCCATGTTGGTATTAGCGTATATAGGCCGGCGGCATTCTGCGTTTTGATATTAAAGGGGGGTCCAATACATAGCTCATAATAATTGGCCCGCAATAATTGATGCCCCAGCAGGACGGGAGGATCATCACAGATGCACCCCTATAGCTAAACGAGTTCCGCTGGGCGCGATGAATAGAAACGAGATTGACGCAGTGCTGAGCGGGATAGCATTGCTGTACTGTGTGTCACCTCTTATACAATGAGGCCCAAGACTCAATACTATCTCATTGAGTAAGGTAGCTCGCATCAGCGCGGAGCTTACAGCCTTTCCACCGAGTACTGTATACTTGATCCTGTAGGGTAATCAATAGCTTCTCGGACCTAAGTGGATGCTACAACTGGAGACGATTCGAAATCGAACGAGATCTGAGAGAACAATAGGATGTGTACCTAAATAGGGCCCAATCAAGTA$'
bw = burrows_wheeler_transform(text)
sa, suffixes = suffix_array(text)
count, symbols_dict = count_of_symbol_matrix(bw)
first_occurrence = first_occurrence_matrix(bw)
d = 2
l = multiple_approximate_pattern_matching(first_occurrence, bw, patterns, count, symbols_dict, sa, d, text)
for i in l:
print(i, end = ' ')
'''
'''
file = 'patterns.txt'
patterns = patterns_input(file)
text = 'AACAAGGGTGCAGGGTGCAGGAACGGGACCCTGGACGTGGGAAGGGTAAAGGGCCCTTTGCCGCCCAACGCCCAACGCACGACTATTGACTATTAAAATTGGTTCTTTATCCTCTATCGTGGAATGATAAACCATAGACCCAAGACCCAAGAGTCTCGTAAGGGGGGGTGCAGGGTGCAGGACGTAAGGCGAGCGGACGCACTCGGCACTCGGCACGGGTTTCGGGTTTAGAATCGCGAGGATACCAGATACCAGAAATCCCCAATCCCCATACCGGATACCGGATATAAAGGTGCACGGGTTTTCCTATATCAGAAACATGTAACATGTAACTAAGTCCATAGTTTGGACAGACCACCAGACCACAGACCACTTGGACCCGATTACCGATTACCGCGCTTGGCGATGTCCATAGTCATGGTGCATGGTGCAGGCCTGTGCTGCGTGCTAATATGTAATTATTCATTATTCATTGTGCTATTCTATAACCCAATATGCGGGTTGCCCAACGCTATCACTCGGCACAGCCGTTATCTCCAGTCTCCAGTCCACAATTCAAACGACCGTACCCCGTACCCCGTATATTGGAATGTGGAATGTGGGAAAGTAGGATACGCGTGGCGATTGTTGATGGGCGATCTGCGCCTAGAGCCTGGAGCCGGCAGCCGGCAGCCTAACTAGTCGACGACCGCCCGATTACCATCAGCCAGCTGCCGTGCAGCTTACGTATGACGTATCGTGGGTATATCACGAGAAGACAGAATGTCAAAGTAGTCTCCAGACTCCAGACTTATTTGTCATTTGTCATCACAGAGCACGGTTGCCAGCTGCGCGATTCGCTTCATCGATGACTTTCGATCTTTTGTGGTTGGGTGTCTCCAAACTTAGATGAAGTAACAAGTACATCATGCAGCCGGCAGCCGGCAGCCTATATTATACGCGGGACGATAATGGTTCACTATTCACTATTCAACCGGTCACATATCACATGATACCAGATACCAGAAGTAGATAACTGATGCCAGCTGCCTGTTGTCCAAAAGACAAGAAGTTCGGTAAGTGGTAAGTGGCAGCCAGTTTTCTCCGGACAGACCACAGACCACCGGATAACTAGCGTTTGGCGCCTATAAGCAATCCCACGTTTAGATTTGGTTCGCATTGGGTGCAGGTTTCAGTCCCTACGGAGTACCATACGTAGCCGTTAGGCGCCACAACCCGGGCCCCGGGCCCTTCAGCAATCAGCAATCGCAAGCCGCGCATCGCGTGGAGAGTGGAATCGCGAATCGCGAGTCTAGGGGAGCAAACGGCGGGCTCTGTTGTCGGCATCGAGTATCGAGTATTAAGTTTTGACTTTTGACTTTATAACCCATATAAGAACACCCATAATATTACGTGGGACAATTATAAATTATCCCAGTCCCGAACCTCAAGGTTAGCCCAGCCCATAGAGAAATACCAAATTGCTCTAGCCGATATGGGATAGACGATTTCACAATTCACAATTCATAGGTTGTAGCTTCTGCTCGGGTTTCCACCATGGCACGTGGATGTTCATTTTACATTTACGACCGCAGCAAACGGCGACACAAACTAGCCGATAGGCCGTGGCAACCGATTACCGGCGATGGGCGACATGCATGTAAGCACTAAGCACTAAAGGCAGGCCCCACAAAATGATACCAGATACCAGATTTTGGTTCTTCTGCCCACATAGATAATAGATAATTAATACCCCATGGCAGATGGCAGTCGCGGCCTCTAAGCTCTAAGACCCAAGACTCCAGTCCTAGTAACTAGTTGCCCGTAAAGCGTATGCCCAAAGCCCAAAGCCGGAATACCCCATACCCCATGCGGACGCTTGCCATGAATCCCCTGTCCGGGCGTAAAGCGTAAAGCACGCCTCAAATCGCATATCGCGGATCTGGCAGCTGGCTGCGTGGACAAAGGTTTAATGGACATCATGCATCATGCACCGTTAGTGCTCCTCTATCCTCTATCTAAGAGTGGAGAAGGATGGTACGTAAGGCGCGGGATAAAGTCGGGGGTTTTGCTCGATAACTGATAACTCACGCCTCACAAATACCAAATCATTGCTCATGTAAAATTATAACCCGGGCCCCGGGCCCCCAGTCTTCAGTTTTCAGGCTCTAGGCGAAAGGCGTTGGAAATTGCCGGTGAGATCCGAGGGACCCAAGACAAACTCATAAGCGTCATTTGACTTTATCTAGACCCTAGACCCTGACGGTGGTTAGAAAAAGCGCCGAGCGCCGACTAGAGCCTTGGGGCGGATTTACGGAGTACGGAGTAACTGCGTGCTGAGTTCACGCTGGAGGGTGTGCTTATTCATTATTCATTCTGCCACCATGAATTGTGTATATACGCGATAATCGATTCTGTATTCTGTATTTTGTCTTGGCACGTGGAACTCGTCTCGATTCTCGCACAATTCACTCCAAACTCCAAACTAAAGCTAAAGGTACGTGGGACTCCACCACCATGCAGCCGAGTGCCGAGTAGGAACTCCAACTACCTTCGAGACATGAGCGGGAAGCGGGAAGCACGATTCACATATCACATATCAAAGTAAGGCGCTTGGCGCTTGGCCATTGACCATGTGCGAGCATGGTACATGGTACACCATGCATCTCGTTTGGCAGCTTTTCGTGTTTCGTGTTCGAGTCCCCCCTGTCCCCTGTCCTGCGTGGGATGAATCGCGATTCTGTATTGGTTGAACCTGAGCGATTAGCAATCATCGTGCAAGGTAATAGGTAATAGGCTCTAAGCTCTAGTGGAGAGTGGAGAGTGAGATAGACGATAGACGATGTATTCATGGTTTCTATCAAGAGCCTAATCGAGTATCGAGTATAACAAATCGCAGATCTCAGCAATCTGGAGCTAGGAGGACATGTTGAGCGTCGACCCTGTTCCCTGTTTTGTGGAGAGTCAGCTGGACCACAAGCGATCAAATAGATAATAGATAATCAAGCCTCTTGGATCGAGTTTAGGAATTAGGAATTAAGTTGCCGGTTGCCATCATGATAGACGATAGACGAATCTTGTCATTTAGGAGGAAGCGCATTCGCTATTAACCAGAAACACACAATTCATGGCCTTATTCTATAAGGGTGCAGGACAGAAGACAGAATAGCGGGAAGTCACATATCACGGCAATTCAATTATCTTCATGATTCATGAAATCCCCAATCCCCAAGAAAGCGGAAAGCGGGGTCATCCCTCTGGTGCAGATGAGCGTTGAAACAATGACAGGTGACAACATCACCCAACTACCAGCCTAGTGCCCTTTGCCGCCTGACCGCAGACAGGTAATAGGTAATAGTGGGGTAATACAGCAATGCTAAAGTCTCCCAGGATTCCCGAGTCTCGAGTCTCGTGATTCGCCATACTAGCCAGGTCGTGGTCTTCCGTCCGCTTGGCGATCAAGGATCAAGGTCGAATATCGAATATCGTATAGAGTCAGAGGGCACAGACGCGCAACGCGCAACGAATGTCGTAGCTGACCCCTGGCGCGGGTCTTCCGTCAAACGAACGTGGGACTTGTCTATAGATAATAGATAATACGGCAATAGGTGAATGTCAAAGTGCAGTGTGCAGTGTGTTATGCGTTCTCAGAGTTGTTAACCCATAACCCTCCTATATCTGACCCCTATGGGGCATTACATGATGGCAGATGGCAGATTATGCGTGGAGAGTCGTTATATACGACTCACATAGACTTGCCTAATTATAAATTATAATAACCCATAAGCCTATCAGCATTTTACGTTTTACGTTCGTAGCACGCCAGCTGCCACAGAGCAAATCCCCAACTGGGCCGTGGGGCGCCGTGCGTTTGGGATTCTTGATGTTCGAAGTTTAAGCACTAAGCACTATAGGCCGTAGCTCCAAACTCCGGGCATCACACAGCCCGTATACGTCATCATGGTACATCAATGGTACCCGGTGACCACGCGTGGCGCGTGGCGTAACTAGTTTTCGGAAACCAGAAAACTGGTTTCTACACTATCCATTATCCATCTGAGTCCTGCTTGGAGGGCATTGGGCATTGGCTCGTTTCTGTCCCGGTCGTGCGTCGTGCGTTCTTTCTATGCCCTATGCCCTACTCCTTTGACTTTATAACCCATAATAGTCCTGGAGCCGTCCGGGGTCCGGGGTTTTTGTTTTGACTTATGACTTATGGCCCCGTATTTGACTTTTCCCCTGTCCTAGGTAAAGCTTAAAGCTTATCCTGGTTTCTGGTTTACGTAAGGCGTAAGGCGTTGTCCATAATAGAGGCAGATGGCAGATGGTAACTGATTTAGAGTTGACGTGTGACGTGGACAAAGGTGTTTGTAAGCAGCAAGCACTATGCCCTATGCCCTCGTCGTGCGTCGTGCGTCCTCGTTTCTCGTTTCTGATCTGTAACTAGTAACTAGTGGAGTGCGACGGTGGGCAATCTGCCTTTATTCATTATTCATTCAGGCTTGGTACCCGGCCCGTACCCCGCTAGGCGCCTTGGTTCTTGGTTCTTCATGCATGCGTCCCGCGTCCCGCTATTCTAAGCACTAAGCACTAGAAAGTAGACGCGGGACGCTAAGCTCCATGCCGGCAGCCGGCAGCCCGGAGTAGTCGTGCGACAGACCACAGACCACCATCGTGCATATAAGCGTAAGGCGAAGCGTCAAGACCATCGCAGATAGGGCAGCCCATAGCCCATAGAGCGGACTCCTCTATCCTCTATCCGACGCCCTATGCCCCATGGTGCATGGTGCAAGTGTCGAGTGTCACAGTGTTCCTAGTTAACCAGAAACCAGAAATCAAGGATCAAGGACGTGGTTCACTATTCACTATTAGCAGAGGAACGGAGAAGCTGCAGGAGTCAACTGTCTACGAGTCTCGTTCCGCGTGGCGCGTGGCGAAGTGGTAACGGGATAAACCATACGGAGTACGGAGTATATCCCATGTCCGTGTTTCGAGTTCCTCTATCCTCTATCTTTCGTTCACGCCTCACGCCTCATATGTAACAAGTGACGAGTCTCGCAACGCCCAACGCGCATTGGAGGATAAAAACTTTCTCCTTGAATGTCAAAGCTATCAAAGTATCAAATGAGGCAAGCCGCTGAGTCCTCCTGCTCCCCCGTTATGCGGTACACGCCTCAATCTACAGTCAACAGTCAACCCGGGAACTGTTTTCTGGTAACAATTTACTATGCCCTATGCCCTCTCGGGGTGTAGGTTAAAGCTTAAAGCTTAAGAGCCTAGAGCCTGCGTGCTGCCTCTAAGCTCTAACCCGGGCCCGCGATGCGGAAAGCGGGAATCTTCCCGCCTGCCGCAAACGGCTTCGAGTCTCGTGGGCATTGGGGGCCGAGGTGGTAGGTTGTAGGTTGTACCACCCACCACCAGCTCTTGGCCCGGGCCCCGGGCCCAGAACGACGTCACCATGCAGAACCAGGAACCAGGAACCTTAGTTTTACGTTGGTGCAGACGTCGTGCGTCGTGCGTGTAAAATTTGGGATAGGCGGATTTGGGATGTGCCGAGTAAGTCACGAGTGGCGATTGGCTCGATATTCTATATTCTATAACCCATGTCAACTGTTTGCAAACGGCAAACGGCGTGTTAATTCGGCATAAGGCGATAGCCGATACATAGAGCATAGAGCATAGAGTTGTCAATTATCACGGAGTGCGGGCCCGTTGCCCGTTATAGGAAAGGATTCCGGATTCCGGGACCCAAGACCCAAGATGCTAAACACTCGGCACTCGGCAAGCCGATTACCGAGAGATCGAATAGATCGAGTATGGACAAAGGACAAAGGTCAACTGTTGTGAATTGTGAATTGTGTTCTCTTTTTTTTTGTTTGTGGAGAGTACTCGTCACTGATGCGCACGCCTCATGTCCTGGACGTGGGACGTGGGGTACGTCATATCTGTCGCTCAAGTTCACATATCACATATCAGGCGGCCATCGGCGTGCCTCTTGCCTCTTGATTGGAGATAGCCTCAAGGTAACGAGTCTTTTGAATTGTGAATTGTGGGCAGCTGGCAGCTGAATGAGAAATGGTGTCTAGATTCACTATTCACTATTAACGTATGACGTAGGAGGAAGGAGGAAGCGTAAAGCGTAAAGCGTTCTGTCTGAGTCCTGAGATAGACGATAGACGACATAGCCCATAGCCTTTCCAACTACCAACTACCACTGGTTACTGGTTACTGGGCACCATGCACCATGCACATAGGGTGCCGAGTGCCGAGTAGGTAATAGCTTAAAGCGCCTTCTGTATTCTGTATTCTCTAAGCTCTAAGCTTCAAGAACAGGCCCCAGGCCCCATCCCACAGTCAACTGTTCCCTGTTCACGTAAAGCGGAGTACGGCTTAATCGAGTATAAACAGTCGTGATGGGCGATGGGCGACGAGGATTCGCCATTCGCCATGGGTCTTGGATCTTGGATCACGCCCGGAGTTTCACTATTGGGATGGGCGAAACCATAAACCATGGGCAGATGGCTTCACTATTCACTATTCGAGCGGCGCCCGTAACTAGTAACTAGTCTAGAGCCTGGATTCCGGATTCCGGCAGGGAGCAGAGACCGCAGAACGGCCCCGGGCCCTGGAAATATGTAATATGTAACTAGAGTTTATAGTTTATAGGTTAGTTCGACCCCCGAAGGAACAATTATGCCACAGAGCACAGAGCAGAGTTGGCACCTGCCACAGACGATATCGTTTGGCGCCCGATAAACCATAAACCATAAGCACTAAGCACTATCGCCATTCGTGACTTATGGTAGCCTACTATTCTATATTCTATATTTTGTCTTAGGGAGCAGGGAGCAGGATCGTACGCGGGATTTGCCCCTGTCCCCTGTCCTTCGTTTTTGTGGTTGATTAGCGGGAAGTCTTGGATCTTGGATCCACATGGTGGGAGTCAGGGGCTCCTCTATCCTCTATCTATTTATATTATACAGACAGTCGACAAGGGAGGAGACGAACGTTAAACACATAATGATACCAGAACATGGGGCAAGCGGAAAGCGGAGGTCCGGGGTCCGGGGTGCGGAACGCTGGGACGTGGGACGTTCTAGGGTGGAACGTATGGTCAACTGTCAACTGTTTATGGATCTTGCGCATTGGGTAAGTGGGTTTACCTGCCCACCTGTCCCCCGCCTCGTGGGATCGTTTTACGTTCGAACAGACCACAAAAAAGACGTTTGGCGCCAGTCCCCACAGTCAACAGTCAACGGCTAGACCCTCACAATTCACAATTCAAAGGGTAAAGGGAGTGCCGAGTGCCGAGTCCTAGCCTACAGTTCAAGGTTCAAGGTTCCCGCGCTTGGCGCTTGGCAATGTCAAATGTCAAATGAGAATATTAACGACTCCATCAAGGTTCAGGCAGATGGCAGATGGCATGGCAGATCTGTTCTGTGTTCTGTGGAGTTTATAGAGGTAAGGGAGCAGGGAGCAGCTCTTCCGTCTTCCGTCATGTGCCTCGCTGGTATTCTATACGAATATCGAATATCCACAGAGCTTTTACGTTAGCACCTGGAGCCTGGAGCCCCTAGAGCATGGTGCATGGTGCATGCGGATGCGAGCATGGTGCACCCCAGTATCAATGTAACTGACTACGCAATACTCACATGTAACTGTATGGAATGTGGAATGTGGAGATGGGATCAAGGATCAAGGCATGCAGTCCCCAGGATACCAGATACCAGAAGTGTTCCTGACCCCTGACCTCTTCCGTCTTCCGTCAAGGGTTAAACGCGAAGGGAGCAGCTGATAACTGAATCCTAACTTGTTTCTATCGTAGTCGGTAGTCGGTGGTCCGGGGCTCCCGATTACCGATTACCGGGTAAAGACAGTCAACGGACGTGGGACGTGGGAGAAGACCGGCAGCCCCTACGCGATATCACCCAATTTGCAAGGAGCAATCGAACCAGAAACCAGAAACGAGTTTAATTTACAATTTACGGAATCGTCATGTCGGACGTGGGACGTGGGTATGTTACCGGAGTATATCGCAGACGACTCCATGGTGCATGGTGCAGGAACATTCCTATATCCTGACACT$'
bw = burrows_wheeler_transform(text)
sa, suffixes = suffix_array(text)
count, symbols_dict = count_of_symbol_matrix(bw)
first_occurrence = first_occurrence_matrix(bw)
l = multiple_pattern_matching(first_occurrence, bw, patterns, count, symbols_dict, sa)
for i in l:
print(i, end = ' ')
'''
'''
text = 'TGTTAGCACTACATGGTGATAAGTGGGAATGCACGACAGAACGACGAACAGCCTCGCGCGCCACCCGCGCTTCGATTCCTCAGATTCATGACCAACATAGCGTATGCCGCCGAGCTGCGAGTATCGCATCATCTGCCATTTTATTAAGCTGTGGGGCTAATAACACTAGTATACAGAAATGGATCCTCACAGTTGCCGCAGCTCGCCGTGTCCTTCCTTATGATAGCCGAGCGGCGTAACTGGCGAGAACGCTCGCCGTGTATGTAGTGGACCGGCGCTGATACAAAACTAATAGTTAGCATGCCCTCAGTGGTGAGGTGCGATCTTTACAGTGCCATCCTGAATTAAGAACATTAGAGGCGTTTCACATTTGTGTTCCCTGCAGCCGACGGAGAACTGACGGACGGATCCGATGGAAGAGTGCTTCCATCGCTCGGATCCCGAATCATAGGTAGACGGCGCAGGTACTTATCGGAGACTTTTCATAGAGTGGCTCCAGGGTGATTCAATGTCAATGATCTTAGTCTCCCCCTACGCAAAACTCGTATTTCTCGGTCCGGCACAGCTCGACACCGTCGCAACACATACAAACGTACGTGCTTCAAAAGACCTATTTCCAGGAGTTCCACGCTAGGGCATAGGAACCTAACATTGCGGTCGATCCGATCTAGCAACTAGCGGTTAGGGGTCGCCCCGAACAACTGGAACAGATGCAAGCAATAATTCGCTGAACAGGAAGACAAATAAAGGAAAGGTAGTCGGTTCCGGAAATCAGGACAAGACCCCCACGTCATCTACTGAGGCCAGAGAGTGAGTTTCCCGCATACTGGCGCAGCGCCGATACACGAGACGGCCCCGATGATCTAACTAGAGAAGATGCCTTAGGAAAACCACTCGCTAGTCTACTTTTAGAGGAACACAGCTATATGAGCATGCGTGCGAGCGTAGTTAGCACTATGCATTTGTAAACGTCTGATCTGCTCGGGTGGCAAATCACCGTGGAACCCCCTGCTGTGAGGGGGCCGACGGACAAGTAGCCCGTAATGCTCTAGGTAAGCCATTTATAGACCTCCATTAGGTATGGGAGCATTCTGCCGACTCTGCGGATTTTGAATACTAACATCCAAGTCACAACGGGAGTATAACCTTCAGGGATCATACGCTCTCGCTACGTGCTTAAGTTTGACTAGGCTATTGGACAAGGTTTTTATGTAGCCATAGCTCAATTACCAGGTCCTACCGTTATATGAGACGTCACTACTTAATCCACCCTCTAAACATAAAAATTTTTAGATTACGCCATGGGATGCGATTTGGTGATCGAGGACACGTACAACAGTGTCTAGTGAAGCCACCGCTCAGGCCGAGTCTTCTGGTAATCGATCGCTGAACGTCACCGTATAAAGACCCAAGAATGTGGGGCATAGACGCCGACAATTGGTCTTATAAAGCACTTTCAAACCAGAATAGCAAACGAGGATCCCTCAGAAAGGACTGGGTAGGTTTTGTCAACCGCTTAATCTGCCCGGAAAGGCTGACGCGACTAATTGCAGAAGCCTTACCTTGATTGCAATCCCCTATTAGGCACGAGGGTACATCCAGTTATAGTATCATAGCAGTTCTAGACATCCTTGGAGCCTCTTGCCTACAACCGAGTCCCGATCCCCGTATTCGTAATCTTCGCTCCTGCACGGTGAACCCGCTGTAATCCTGTCCCCTAGATTTGCAAATCATGGCTTATTCCTTGTAGAACCTTGTAGAACGACCTCCAGCGCCAAGATACGTACGGTACGATAATGCCACGACCGACGTTCCTACCTCCCCCTAATACATGCGGATATTATATGTGATGGTCCTGCCTAGATGTTAATCCCTTAGGTCTTATCAATGGCAACGCGAATCGTCCAATGATTAGAAAAGCTGGCGGATCGGGCTCCAAACTGAATTCGAGCGAGAGCGTGACTCGTTAGGCGGGACGCCACGCAGGGAATTAGACTTGCTCCTGTGTCTTGCATTTCTACGCTCAATGCAGTTCCAAATAAATAATGCTCAGAACTTCTCGGACTTTTAAAGGGACACAAGAATGCTAATAGTGTAATATTGGGCTTACGCCGTACCTAGAAACGACAAGTCGGAGATCAATGTTACAGCTGTAATGAGACGCCTGGGACTTAACACCTACAGCGAGTGGGCAATGATCCACACATTGAACCGAATATTATCGTATACTACATGTCTGCAGCGTACGTGGAAAGGTCGGCTCTAGCTAGTAAGTAATATCGCCATATAAGTGAAGCCGACGGTCTCACCCTCATGCTTGGCTTGTAGCCGGGAGTTAAATCCGCAGGGAGGTTATTTTTGGATATCGCATCCAGGCACTCCGACATAGCTTATTGCTTCACAGCGCGACCTGTCTTAGCGCGGGTACGGGTCTTGAATGCATAATCTGCTTCGTACAGTAGTCCTAGAGATTAACCATGCTGATTTGAGTTATGTGCACGCCGACACAGACTCCGGCTCCTCGAGTCAGCATTGGGCGCAGTGAGTTTGTAGATGCCCACTCACAACGCAAACACCAACCGGTAAGCGATTGGTTCGGGTCACTTCTTACATCAGACACAGCGCGACAGGACCCGGCCACTCCCATACCTACGCGGAGTGTTAATAATCTGTTGAGGACAATCTGATTATTCGGAGGCGCCTTATAGGATCCTATCCAAGGATGGTCGCGCCACTATCTGCTAGCACGCAACTTCTTCGAAGCGCCTCACCACGTTCTTGGGGACACCAGACTTGGCGACACCGGCACCTCAAAAGTTCCTGCTCCTACATGTTACTTGTGTGATTGAGAGTCGTTCCTACCAGTGAATCTACGCGCGTTGGTAGCCCTGCGTAGGCAGGATGATGATTTGGCCCGCAGAGATCAGTTCCATGTTCCTGTAATAACAACAAGGCGGTGGGGAATCTAACCACGCATCGAAGGCCATTCACGACGAGAATGAACTCAGCAAACCGAAAGTGCACCTGGAACCCTGGCCTCGGTGGGTCTTCTGAAGTTCGAAGCTCGGGCCACCTCTCGATAATCAAAAATGTTTACAGCGGCTCTTTATATGCAAACCGCGGTTTCCATAAATCATTAGTACAGTCTTATGAAAGTCGATCTCGCAATGCCTCAATGTCTTTGCTGATTAGATCTGTTCGAATATGCAAACTCCCATGTGATCATCAGTCCGCCCCGGCTAGCTCCCGGTCGGCCTAGGCCTCAGTCAGGCTTTGTTAATGGTATTCCATGAGTCAACTACAACTTCATCCGTAACTCAGTGCGGTACGGTACAGTCAAGAGGTGATATAGTACAGCGAGTTTTCCCTCTCCCTTATGAAACAAGGTTAGATCGAGTCGCTCAATAAGCAATTAACACAGCCGTTAAAGGCTAACTGATTCTGGCTTTGCGTCAAACTCTTTTGGTCGAGCAGTCCACTCGGATTCGTTCAACTCGGCCCCTATTAGTTTCTTACCGAGGGTACCCCATCGTTCAGAGGTCGCACTGGGACGATGGTGGTAAAGACTTACTGCACGCACCTAGGTGCCCGAACTATCGGTCACTAAGTTTCGAGGACGGAGAGGTTACGATCGCATTCACATAAACGGAACAGTACTCCTACGGAGATCCTGAGGAGGCTCACCCATCAGCACCAATACGGACGAGGTATTACTGAGGCATGTGTTCCACAACTGCTATGGCGTCGGACAAGCGAGCAGTAGATTTAGACTAGCGCAGCGAGAATTTCGCCAAGGTTTTGCAGGCAGGTCGTATGATCAACCTATGTGACACCTGGTTTTTCCGGGAGATACGGGTCCCACATCAAACTATGCCATGCGTGTAGCTAGTGTTATGAAGTACCCGTCGAAATAATAGGATTCCCGGACCAGATACCATCACGCCACAGGGACTACAGTTTACTAATTACCGGGTTGCTTGTATTTGCTTTCCCAGTCCTTCCTGGCTACCAATACGGCCCGGAATGCTTTCGCGATAATCGCACGAGGGCAAAAATGCGGTTCGGCTGGCGTTTTGAATGTAGATACGCTTTATATCCCTCCCACGAGCCCTGTTTTGTTCACAGTGGGGGCCAGCGGTCCGGGTGTGCTAGGGGTCCGCCTAATCGGGTAAAACGTTGCGGGTATTCACGCTCTCTAGCACTCGCCGAGTGACACCGGGATAGTTAGTCTCGAACCCCCGAGCAAATGATTTACCTATAGCCGGTCAGCTTAACACCGTCCAACTCCTCTACATTAATCGTGAGCCCAAAGGTCGGGTGTAATCCGACCACACGACCTAATCGTGTAAAAACGCATGCACTAACACCGGTCCGACCGGTATAATGGCCGTACCCTTTGACAGCAGACCGAGGATCCCCTGTATGTCTGTGAGAACCTTGGAGAGTGGTTTTCAACCAACTTTGTATCCCGCTGGGCTATTTCGACCTTGCCAGACGCCCAGGCCAACTGGTTTCCCCCAATTACGTGTCACTATTGTCAGCCCCGAGTACTCTATATTCATCCCTGAGGAGCAAAAATGGATCTGTCCAAACCCCTACCGACACTAACATGAGCCGTGGAAACCTTACGTTGACGGAACGTCGGATTGTTATAAGTGCTAGCCACCATCCTTTCTGCACCAAGCCCCAGCAAAGCAGCACCTTGAAGGAATTTCTGAAGAGTTCAGCGATAGCAAATACTCTCCTCTTTAGGAGCATGCTTATTAGCTACTTGGCAGGATCTGGATGCTAATTCGGTCCGTCCGTGAGCCGCGCACCCAACCTTTACTGGCGGACAGCCAAATGTCCCTAACACAGATTTTAACCGAGTCCCTAGGGCCCGCCTATATCTATCGGAGAAAACGTACCGTCACACTCGGCACACGGACTACAGACTCCACATAATAGTATGGATTTCGATCCCAGAAGCTTAAATGCATCAATTTGGAATCGACGAGACGTTGACTGCCCAGCTTGAAAGAGTTATGGGTACGTCTTTGTGTCGTGAATCGTAGTAAAGACTCCCTCTGCGCGTCTAGGGATTGATCTACTCAGGTAAGGTGGGACTAGGAAAGAGCATGATATGCCTTCAACGATCCAGTCTCGAACCAGATTCCCAGTACCTGTCGGTTCCTAGAGCCTTCAGCTAACGGAAGATGCTACCTACGAGAGGGTCAGTTCGGTCTTACCAGCCAGAATAGAACATTCCGCCCTCGCCTTCTTGCTCCGCACATTGTGACAGCGGTCAGTTAAAACAGAAGAGCCTCCAAGATGATGTCATTCATATTAAGAACTAACAGCCCTGATCGCCGACTAGTGTGAACACGTCTTCGCCGCCCACAACCTGAGGGTGAACGCGCACTGCACAGATAATCTAGCATGAATGGGATGAGGTTAATTCATCCTGCCCTGCGGTTATAGTAATTATGCTGCTTGTTGCCAGCTGCATTCGCGAGTGGGCGCTTTGCGGCAACAAGTTCCATTGTGAGTAAGGGGTCTCCTGCCCAAAGACTTCAAGTCTAGCCGCGATATTCCCCTTTTTAACACCTTGAGTTGGGGCAACGAGTCAGGCGAAACCTTTCACAATTCTTGAGACACAGCGTATATACTCAGACGATTATGTCAGGTCACCGCGACCTGAGTAGACATACCCTACGTGTGCACGGCATATTCGTGTACTTCCGTTAAAAGTTAAGAAACGCACAGCGTCCCGCAAGTGTGGTAGAGCTACGGACGACGAGGTACCGAGACCCTCCCGGTACACACTACGAGAGTCTTGGGTACGCGAGCTTGCGTTAACAACTACCATAGGATTCGAGTGCATGAAAATGCATCCCCTATTGGCAACATTATTCTTCGGGATAGCGAGCGTCCTAGATTCGTGAGGGGCATTCTAGCGGTGATTTAAGTAGTAAGATCGCGATCCAAGGTGGAGTGCCTTGCATGACGGGGCAGTTAACCTCATAATCATACAGGCAACTGGAACAGTACAAGTCCGCAAACCGGCCTCAAATTGGTCCATCATGCTCGAGCAAATATTGACTCTCTACTGTACTAAGGCCCCCTACGGTAATGTCAAGCCCTAAGAATTGACAGCCTTCCTGCTCGTCGTAAGAGCACTGCACCATGGACCACGTCGTCCTGGCCGGCGAACGCGGCATCCTAGACTCATCTTCTAATGTGCTTCTATCCGTCCCGTACTTTTGTAGCGGGGCGGAAAACATCGACTCTAACTCTGCGGAAATGTCGATGCCGAGAAGAGGTCTCCAGCGTGGCATTCCCTCTTGTGGAACAGAATGTCTATTCCGCTTATTTGTGTGGTACGGTGTACTTTAGAAGGTTGCTTCGTGATGAGCCATGGTTTCTAGGGTATATCTGCGCTCCCGGTAACCTGCTAAATCGGGGGGGCGAGGCCACTGAAAGGGAATTGGATACGCTTATACGCAGATGCCATAGACCACCCAGGCTACAGCGAGGAGAACGGGGACCAGGCAGACTTGATCCCGTTGACTAACATGCCGGTAAGTCGGGGCGACATTTGTTGTAACTAGCTACCCAGGGCATCCGAGGCGTTGAAGATGACTTTCTGAAAAACAATCTGTCACCGTCGAAGTTAGGCCCCGAATCCATTATATGGGTATTCTAGCGAATGAAAATGCCAAATGTGCGCGGCTCGGCAACTCGGCATAGGATCAGAGTGACTTGGACCTTCAGTGTGCGGCCCTTCCGTAGGCTCACAATTCGGTGTAAGAATCGTGTTTTAGGAGATGCTATTCGCACGAGACCCCAGCCAGGGCGGCGTGCGGAGAGCCCCATTGGAGGCTAACCCAGGCGGGAGGACCAGCCTATAAGTGGGTAAGCAGGAAGTCTGTAAAAGCCTATGTCATCATAGATCCGATTTCCCGACAGAAGTTACCAATAGTTGATATGCATTCGACTAGATTTCTCCGAAGGCCGGCTCTTAGCCGCGGTCCAGTTACTCTAGCCCATGTAGAGATCCCGAGTACCCAAAATAACGGACTTAAACCGATCGCAAAGAGTTGATAATATTTCTCTAGGCCGCGACTAACAGGCGCAGATCGACGCATGGTTCATTCCAACGGTCCCAAATCTCCTGATGCGAGGTTGACCTCTGAGAAAACTGGGTTGGCTCAAGTCGCTGTATAATGCGGTGGGTCACGGTGTATCGACTGGAGTGTGATTGGTGCGACGGTCCCACTACTTTCATGATCCTACCTGGTGGTGGGCTTATACACCTATTTTTTTTGGATACGGTGTAAACATAAATGTGAAGCCCGTTGGGCTTCGACTATCGGGTCCCGGGCGAAGCGTGCATCGATGTATAACAGGCGATAAAATCCGAACTTATGCAGCTTGACGATAACGTCCCCGTAAGTTATCAAAAACCAAGCGCTCGCAGCACTACTGTTCCAATGAGAACAGGAATACTCGTCTCTGTACGCTGAAAATGTTCCGCAGCGCGTCAGGTTTTTGTTTTGGTGCTTCAAACGATTTCGAATCTGCCGGCAGCGCATTAAAAGTCTCTATAAATCGCAAGAACGTCTAGCCTGATGTTGTGTTTTTGCGGGTCCGTTAAGCTTAATAAGTTATCTTGTCGGCTATGTCGGTCAATCGTCTAAGCTTCATTAACCTTAGCTCGGATCGAATGTGCATAACACCCTTACGCTAATCGCTATTCTAGACGTAGCGGTGTCCGACACACATCATACCACAGCGGAAGTGAATGCGAACGTAACGCCCTATGGTAGGTAAACGGGGCTCGTCACGCTTGTGGTTGGACTGGAGAACGTGTCGACCCTCATTCCATCTCTTCGGTACACAGTATCAAGAGCTCTATGTGAACTGTGGTTGCAAAAGCCGGTTAGCGGTTATAGCAGCGGGTTTCAAATTTATTCTTACATACATGCAAGGCAGATACGGTAAATACAGCGCACTCTGGCCATGCCACACGTTGTATTTTTCGGTTATAGTTCTAACACCTTTCTGCACCCGAGCTATCGAGGCTCATGTTAAACGTTGAGCAAATTCAAGCCACCTGCGCTGCACCTTACGAATGCTTAATCGATATGACGATGCACAGCAACACGCTGCTGGCTAGTCTAAGTAGCACCGTATTATTACCCATGTAACGAACGCCATCACCGCCCGAGGGATATTAGGTTACCCAGTTCGGAAGCCGGTAGCTAAGCAACTTGGTCACGCGGGACCCTCACAATATGGGGCAGTACTTATAGCGGCCCCCTGCATTCTTGTAAAAATTCTTCTTGCGTCTCCGTCGGTTGATTTGAGCACGGTATACCTTAGGGCCTAAAAGCGTAGGTCGGATGGACAGAAAATAGAAGTCGGAGCGCGCAACCCCATCCATGGTCTTCGCGTAAACAACCTGCGCCAGGACGACATACCATTCACGACGTTACTGGGACGCGGGTACGATTCTGTTTTTCCGACTCATCATTCATTACTCGCATACGGGGAGTGACCCACGGCGATAAATCGCGGATCCTCAAAAGAGGTGGTAGGGCATTAAGCCGGCGTTACGGGGTTGCTTCTTAAACTACATTCCATCGTGCCTCCCCATGATACTAAGTGCGGGTATGGAGTGTTTATTGCGTACTATTACTGTATGCCCTTTCTATTGCGAAATAGAGCAAGCTTCTACAACAGTAGTATCATGCTCATCTCGGTACCGCTCCGCTGCACTACGGCTTTAATGTCACTCGCATCAGTACGGTTGCGCCCAGCACTAGCGAATCGACACGCTTGCAGTGTCCGGTGGACCCCAAGCACCTATCAGTCGGGCGACCTGTGGGTCAGGGCTCACGCGATTTAGCTCCTGGCACCCCTGAAGTGCTTTGGGGTGGTCCTCGGATAACAAGCTACGTAGCGGGAATGGCCACCCTTGCTGGCTAGATGTAGAGGCGTTACCCTTATTCTAGCCGGCCGCTATACGAAACCAAGCATGCAAGGGAACGGAGCCCTATCGCGGATAGACTGGGTCGCGTTCCGCTGCTTCAGCGCTGACCGTAATAGTATTATCGGTAGCTAACCAATGGGGATGCGCTGGCCCGACCACTAAGGAAAAGCTTCCCTGCATGTAAGGACTTTGCTGGTGCCGATGGTCCTTTAACCCGCTTCTTCACTACTCGATGAGGAATCGGTGTCCCTTGAAACTCTCAAAGCTTGCACTTAACGTCACGGCAAGGTGGCTACTAGCTCAGTCGGGATTACAAAGCTGGTAATGTGACGCGGGGCGAACGATCACCGAATTCTCATCTGAGTAGCGTATTCCTTCACTGGGAAAAATGGTAGCCCCGTGGTGGATACATTGCTCCTTACTTGTCCGGTATTGCACGGAATAACGCTTCTCTCCGGTTGTTGAATAGGCAGGTAAACCTAGGGTTAAAAATCGTATGCCGTGCACACCTTGGGCTTTCTTGACGGCGCCTGGGCCCAGGACTGAGCATGTGGTGGCATTAACCGCGTGGTATACACGTCCGACAGGCACGAGTAAAAGTCCTAACCGGATCGTATTACTGCGGTCGACTCATCCAATGTGCACTAAGAAGAAATATCCGAACCCTACGTATGTCGACATCACCATAGGTGGTATCGTAAAAATCTCATATGTCGATTACCCCTAATCCGGTTATGATGAGTCTGCGAGCCCATGGGGTGCGACTAAATGTCTAGTGGTCTACTGGTTGGGGGATTTATTCTGGCCATAAGTTCCATCGCCTTTACGCAAAGCCCGAGGCTCCATCACTCCAATGTTTGAATACGAACTCTGTTGTCGCCTGACACACCGACGACTGAGCCTAAGATCTTGAAGGAAGAGCACCTAAACGGACTAGCTCCGTGTCCCTATCTGTCCAATGATTGGTATAACGAGGGACCAAAGTTCAGGGGCTGACATGATCCTACCAGGGCTTAAAGTGCAAAGTAAGAACATTATGCTAGGCACCCAGAATAACAACGCACTAACGGGACGGTGGGTGAGCGGAACGTGCCTAGGCGGGTACTCGAAGCTTACGACACTGTCTCAAAGTTAGGCAACGGAACAACACGATGGTACGATGAATTCAACAGCTGAAGTGCGTGACTACGTAGGAGTGTTGGCGACAGAGAGGTAGAGACACAACGCAATGTCATCGAAGGAGTTGTATAGGTGCTTATCTTTGGTAGGAACGCTCCGTCCTGTTCCTGTTACTATCCACAAACCCTGCTCACGAGGCTACACACGTCACCGTGCTGTTCGGTATAGGGAGTCAAGTACGCGGTGCCCTGGGCGGATCGCATCTGTACTACGCTGTCGGGGCTGGGAAGTAGAACCCTGAGCGTCCTATACGAGAAGTGGAATTTAACGAAACCCACTAGCTGTTGGGTGTGGTTACATGAGTCCCGGGCTATGCCTCATCCCCCGCGACCCTACATCGCGTATTCAAAAGTTCCTTAACACGTGCTTCGTTCCGGAGAGAGCTTAATAAATTCAGCAAGAAAATCCGGCCACGAACCAGTGCAAGGTAGTTCCATGGGGGTAGCATGATAGACTGATTCCGAGACTGATCTCCGGAACAGTTTCTCTTCTGGCTATCTTGTGTTGTATGCCTCGATGTACTTACGTGTGTTGCATATGATACGCCCACTTAGCCGCTGAAGAGGCCGGCCATAGTGGAAAGTAGCAATAAACTCTTCAAACGCAAGCGAGCAGTTGATAACAAGCTGAGATTAAGTGGTCAAGTTAGTCCGGGGGGTTATGACGTTGTTTGGTCAGTTACAACGATGTAACAGTTAAGTTGACAGCCCACGCTATGCACTGTGATGCGCGCCACAGGCGCGCTAGGCTAGGACAACCTGCAAAGCCGGTATACTTGATCGTTCACGATCCTAAGATCTAACGGATGTTATGGTATTACGTCACGGGTGCGGGCCCCCCAGTGAGCACGGCAGCGGGTGTTCCGTGTTATGTTAGGTTCGCCTAAGATAGAGTAGAGGCCGGAATGCAGTGTGGGGCGTCTTCGAGCCCATGCCTGCGACCTTACTCGAATGCGTCCTATCAGCAAGCCGGTCGTTGGGCAACGATAAGACGTATGTTAAACACAAATTTGATCGGTTTGTGCAATTAGGTTACGGTCTGATCTTGGCAAATCCGGGGTTTTGTCGTAAGGCTTGCCGAGGTGGTTCTGGCCCATGAACCTATAAGGTCCATATCAGGTAGCCCCATCTTAGATCAGGAAGGTAGCCGCAGAAGGGTAGTACCTGTGGCGCGTTCAGAGGAATCCGGGGCTTCTAGGAACGTAACGCTCTCAGTCGTGCTGTCTCTTCTAGCAGTGCCTAAGATAAATTCCACTTGAGGACTGGCTCTATGGCGTAGACTCGTATGCTTGAGGTTTACTACAAGCCTGTCGACCAAGCAATTATTCGGATCTCAGAGTAATTAGTCTCCTTGTAGTTGTCTCGACAGTTGCTTTTTGAGCTCACACGATATGGAGATTCCCTTTCCATTAATTTGCTGTTTTTAGCGTAAGGCTTGGGCTTCCCGAAGGTCCTCCCGTGTGGAGGAGAGAAAAATCGACTGCGGTATGCACGGGATACCTATGTTCGGTTAGCATCCTTAGAACAACGTACAAATTACTGGTCAACTCTGGGGAAAACCATTCGCCACTTGTCTGTAATCGGCAAGTAGCGGTCCTCGTCAGGTTTATCCTGTTCAAATACGTTTGATTCTCCTGGCGCCGAGATATACTAAAGTTCAGTGGGCTTATTCAAAATAGCGTCTGGGCGGCAGTGGGGCTAAATATTTCATTGGATATTTAGCGGGACAAAGAAGACTACCGCTATTAACCCAACTATAGAATTAGAGATGAGATCTCCTGATAGTACGGTCGTGACATTCTAACCCGGAAAGACTCGATTCAGCCCGGATTGCTACAACAAGCTATTGTAATTTATCTGACGGTACGTCGGCCCGAAGGGCGCTTGGTTAAACATGCCTTGTGCAGTAGGGATGGCGAGAAGCATTTGCGCTTTCGAGGTTGCCCGGAATAACATAACGTCATTAGGGTCGGGGAATTATACTCCTAGCTGGTGGCGCCTGTTTTATGCCTCACCATATAAATAAGGGCCTCCTAAGACTGCATTAACTCGGACGGAGGGGACAATGGACCGACTTGCCTGTACGGGCTCTTCTGCAAACATAACATATGGAAAGACGTAACGTTTAGGGCTATGAGTGTTCATTGGTAATCGATGGGCTCCTGCTCGTGCAGGATCCGATATCAGCGGACCATTTGGGCGTAAACACTGATCCTGCCGTAAATAGCACGGTAGTTCGTCAAGCCCGTTCCCACGTCCCGGCATATTAAATTTCCATCCGGGTAATTGACACTCTTCATACTATTGGTGCCATCGTGTCAGTCCAGGTTACAACGTAGATCTCTTGCCAGAGTCTTCCGTGTCATGACTACAACTTAGTTGACTATGCGGTTAACAACCGGGTCTACCGGTGTCCAATTTAGTGGTCACTGTCAATTGGTCTAGATTGAGGCTCAGCCGATAATAAGCAAATCAAAAAGGCCGGCGCCCTTTGCTTTCGCTGTTGGACCTTTGGCCCTGACACTATCTGGATTAGTAGCTGCTCCAGCAGGCTGGGTCACCAAGAGAGCATACTTAGACGGGTAAGACGTCCTTATGAGAGAGATAGTAAGAAGTCTAATTACGCTCATTAGGGCGGCCCCTTATGTTTTGATTGGGCCTGACTGACAGCACGAGTAAGCCTGTAGAAAAACATGTGAGTACATCTACCCGAACCGTTTCGGCACGAGCTACCAAAGGTGCCTTCGAAGGCCTTGGGGCATGCACACTGATCCTTTCATCCCGTTGGCGCAGTCGAGTTGTGCTGTCTGATAACCTGTCTGGCCGACCCTCGGCTGAGGGCTTTTCGCGCTCATGTCACGTTGATCGGCGCAGGAGCCGACTGGTCAGCTCCTCCGCAATCGACTGCTTACTAAAGAGGGACTTTGTCTCTTTTTTTTCTGCTACGCCCTATCAATGGTTTTATCTGTTACCCGAGTACTGTGAGCGGATAATATATAACTTTGTCATTCCCCCATGTATTTGACTTTAGCTTGCGACGCCTTACGAATTTGCTTAGTCCACTAAAAAAGCCCTTCGTGACTGACCGATAGAACCGGGGCGTCTACCGGGTGACTTTACGTGCTGGCGCTCATCCCAGTGCTAACTTTAGCCACCGGCCGAGACTCGTTTGATGACGAATGGAAAAAAAAGAAAGAACTGGGGCGCTACTATTGATCCCTATGGACGTCCCCCTCCCTGGCAAATCTCATAGAAGGAGATGCCCAAGTGATCAAGACTTTCCTCGGACCGACCCGTATGTTGAATAGAGCAGGTGACCGTTTCGATGCGCTTGTCCCTTGACTTAGAGTATTCCTATGCGAAGGGCCCACGCAGAATCGCAGCAAACACTGCTAATCATAAGCGACTATTGATCATAACGTGCTGGCGACGTTCGCGCATACAACGCCCTGGTACTCGTTCCCCCGCCCCTATACTGGTTGCACCTACGTCAGAATGCACAGGCGATCGCCGCTTAATGCAAATAGACGCCATGGATGACCCCGGCGGCTACGGCCGGCGCCGCGGGGTCAGGGAAAGTGCATAGGATAGCGTCGCTCACTCGCCGGTTCGGGTCGAGGTGTAGTCCCAAACGGCTATATGCTCCATTATGAAAAACTGGCTCGGGGGCGAATTGAATCACCGACCATGACACCCCCCCCCCCACCTTGCCAACATTGAAAAAGCTGCATGTGCATCGCAGAATAACTCGAAACTGATTACCGCTGTCCTATGAGTGTTCTACTCCGCTTAATCCAGCACGCGGAACTTCAGATGCCGCGCGGCGGTCGAGGCTGACTAGGCCGCAAGTATAAGTTAGACATGAAGTCCTGATCGAGAAACTAAATAGGAGAGTTAAATGATGCCCAGAATTGGAAGTGGAGTTAGACCTAGGGCTCGTCCGCACGGTCAGACATGTGCAAGAGTCCAGGTCCTTCGCGATGGGTCCTACCCGTATACGCTCTGTGACCAGATCAAAGTACTATCCGAATAACGTGTCCCCGGCTAGAAAGGGCGCCCGTAGTATATTACTTCGGCAGAACAGATCGTTTAGTGATGTGTTGATCTAACGGCCTTGATATGCAGCGGATTAAGAGTTTGCCATCGACAAGACCGTTCTTGCTTGCGACAAACGACTCCGTACATGAGGACGAGTGGCATCCTGCGGACCGATCCCGTTGTGGCTGGCGCAACGATTCTTTGAGACGACGAAGGACGACAGAGCCAATCAGAAAATGCAATTCTATGTCGTAGCTGTACCGTGTGCACCAGTTTAAATTATACGGATCGCAGCTCAAAGGCTCTATTATCCAAACTTTGCTACACCGGGGATTATGGCAACGCGTAAGCCTGGAGCTACGGTGACGCAACCTCAAAATCAGCTTGTTTAGACCTATAGCATGCGTCACGCCTAGTTTATCGAGACTTAACTTGACGCGACGACCCCTGGGGTCAGCTGCCGAATCTAAGAAGTACTAAGACTCGTGAAAGTGGGTTAGGTACTTTTCTTTAAAGCTCACAAGGATCAGCCTGCTGCCTTATGGGTCTTCCCTGTGTCCGGGTCAATCGTTGGGAGAAGAGTCTAAGTCTTCATACATCGTGGGGGATCTTTAAACAGGAGCTAACACATTTTATGGGATCTTTCCCATTGATGCCTCAATTATACTTGGACGCGATGGGACAGTTCGGATCGGATGGAACTGAAGACAGGATGGCACGCACCAATTGTAGCTAGCTCTATCAGAGCCTATTTCGTGTCATGTCAGCCGGAAGGGGGCGCTGAGAGGGATTCGCGAGGTTACCATTCTACCTACGCCACTGCCGCGCCTCAGTATCCACGGAGGACTGCTGCTCCTATTCGGCATTTTGGCTCGGCCCGATTCTCGTAGCGCAGTGGAAGTAAATGACAGTTCTTCGACATGCCCATACAACTTTGAACAGATCCTTCAGAGATAAATTATTGTCTTCATTGAGTGGTTGAACTTTAACTTTGCGGCAAATGTAGAGACAGATCCGGGCCACATACTCTCATATCTTTTCGGCGATCAACATGTGGGAAGCCCCAGGTCGACAGGACGAAAGGATAAGATTCCCATCGTCGTAGAGCGCGTTTCCGCAGGGATCAGAAGGCAGTTCCTGCACTGACTGGAATTGTATACCGCCTCAGAACTTGCACCAGCATTATAACCCCACTTTGTATCACTGAATTGAAGTTGAGTGTGCTGAAGTACTATTTGAGTGAATGTGTCGCAGCTATCCCTGTAAATCAGTTGCGCACAACTACGCATGCTTTGCGTGAGTCCACCGGAGGGCGTATCCCCCATTATTTTAGCCTGGGACTTAGAGATAGAACCCGGTATCCGGGGGACACGCAGGAGACCAGGTCGGTACCGGTACCTATAGCCATCATCGCTAGGGAGCTCTTGTAAAGTCTTTGAAACCTTTTGGGAGTCGGCCTATTCGTGATGTATTACACCAAGTATTCCGACCTAACGAGTGTAGACCGCTTCTGATTTTATCTTTTTTTTTTTAGGTCGGCGTATGATAGCAGACTTGGTACTGGGCAACGCGATTCTCGTTAACGCGACCTACCCGCACTCTCACAAAGGGTCATTATCGTTCTAAACGCAAAGAGCTTGCATGACTAGAACGGGCATATACAAGAGTCGATGCTGCGCAAGAATTTAACTAATCCAGCTTCCGATACCACCCGGGGGAGTCACACAAAAACAACCCTTGTGTAAGTCCCGATTTATCTTAAATTGGCCGTGATCACTAGCCGTAATGCATAATCGTTACGATCCTTTCTAGACTTTCGCCGCGCCCAAGGCTCGCTGGCCTAGGGAAAAGTAATGTCAGGGACGGCCGACTACTGTCGATGCCGTGACTGCCTACGATTAGGTATAGCATTAAGCAAATTTTTTTTATAAGAAATGTTGTGAATGCAAGCGTGTAACCACGATTGACCCGTGACGTGTAGTCGTATATTTGAATCGATCATGGTCCATCGTGTGCGTACCAAGCGCAAGCCACATTTCGGCGCGGCGGAGATCAGAACGGGTTAAGCATACTGGGACATGACCAATGCGGCTAGCACCATACTCCCTGGCCGCTGTTCACCCCTTGGGAGTGCCTCTCTGGGGAAGGATCTACTTCATCTCGACGTCGTGCCACAGACCCTTTGAGGGTTAATGCTGGGCCCCGGTTAGTTAGATTGAGGATGTGCCAGGATGATACTTAATTGACCGCGATCCGAGCACGTAGGAATTGGGACAATCACATGAGGGTATGCTAGCTGTTTGCTTCACCCCTTTTCAATATGCGCTGCCCTACCGGATGTATAGCCTGAGGGCTAGCGCGAGCGTCGACCCACCACCGTAGGTCCTCTTCGAATGGATGTATTTTGCTCACTACTAAAATCCGAACGAAAACGACAATTAGAGTCCTGCAACTGCTGTTCGACGCCAGGGCTACTTGTATGCTAACATCCCATTGACGCGGTCTAAGTTCTGAAGAGCCCATACGGCAAATCCCGCATAGTCTTGTGTTATCCTAAGGTACTGTGAATAAGGTACGTTTTGGTAATTAACGGGTCCAACTGAGAGAGATTGAATAGACCCCCGTTATCTTCAACCGCGTCATTTAACGTGCGGTTGGAGCGTCGCATTTCTTGTAAGGGTCTCGTTAGTGATCGTTGCAAAACGCCCCGTATAACTATATAGAAATTGGGTGTTTCTGAAGTCCCCATACAGAAGAGTGTAGGGGAAATGGGCCTTTAGAAATTCGAGAGTACGTAACGCTAATGAATTAAGCAGGCACACCCCCACCACCGCCTCGGATCTCACCGAATGAGAGCATAATGTCACCAACCAGCTCTGCGCACCCACTCTCTTAGCATGCTTGGAGTTTTGATATGTTTTCGTACGGGTACCATCATCCCTATGACTATGCTCTGTAGTACGCTACTCACATGTACAGCTACGCCTGTAACATTGCAGTTAAACGCAGGAATACCGGTCAAGGCAGATTGGGTGCGTCTACAGAACGGCTGGGCTCTCTACCCCATTCTTAAACCCCCATAGCGCGAGGTAGGATTTTTCTCCAAAGGTATGCCATTAGCTGAGATTGGCGCCGGCTCCCAACACATTACTCGAACTAATGTATTATCTATTTGCCGTATTGGTGTTGGTCGCATGATAAAGTGTTGACTAGGTGGTCCTTACCCACATAGCGCTTCTGGAGCACAGGAACTATAGCTTTCCCGATAAAACACCCTAGGTTCTACGTTCCTACTTAGTGCGTCCAAATTCCTTGATAGCTCCTTCACTAGAGCAGCTGTAGAGCAGCCCCGTCCAAGTCGCCGCGCTGCCTTGGTCACTTAAGATCGTTGCGGGAAACAGCTCCAGCTTAAGCCTTTAAGTTTATGTGGGACTAACATGCCCATCAGACCACTAACGGGAGGGCGATCTAAAGCTATAATCCAAAAGACGACGCCACCTTCAGATTTCTTCCGTGATGGGAACATTCTACTCTTCGAGCAACGATCACCGGCGTCCTCAACCTATGATATCACACTTTGGCAGCCTGACAATTGCGTGGGCCGAATCATGTTAGAGGCACTGACAAAATTTAACTGAGGTACAGGCCAGCCAGATTTTATATCTAACTCAGACTAAATAGGCAGTCAGCCAGACGAGTGATTGATGGGCGATCCCATCGGGTTTCTATTTCGTATCCAGCTTTAGCAAATTACCGTCACGCTGGAAGGCCAGCCCTCCGGGTGACAGCATGAGTCTGTACTGCCGTCCGAACGTAAAACCGGTGGCAGTAGACTTTACCCCAGACCTGGTTTGATCGGGGAGTTAGAAGACTCGTTGCTGCTCGCTGCAGGCAACTAAGTACTCGCCCCTCGCCATTCCAACGTTTTGTACATTCGGGACCAGCGCAAGTTTGACAGGGCTAGGGAGACAAGGATGACTTACTTTGCGACCCAAGGGATCTGGGGTTCACTACAATACGGATTCAGAACCTGCCCTTGAGGTACCCCTGTAGGATAGTTCATAGCTCTCTTCTACTGAAGTGGCACCCAGCCATTCTAAGAATTCTGTATCCGAAAGATTTAAACTTACTGTCAGCATTCTTCTACGATCTCTTCAGATCTCGGTGGCTGACGGTATCGTTTCCACACAGGGCAACCATTATACCTCGATGCACTTTCTAAGAAGGCGGCGGTTTACCGAAATAGGAGCGAGTGGTGATAGTGGCGTGATGACTGAGGCACCACTTTGGAATCCCCAGGGGCAACGTTGCTCCACTCGCTCAGCTTATCACCCTGCCATGCCCCTAGTTCACGATTCCCGCGACGGTAAGCTATTGCGCAAGGGTATATTCGCGTTGCAACGGAAAAGCCTTGTTCTCGTACGAAACCGTCGTTTCGCGGCTAGCTTGAGGCAATGGCAGTTAGGAGAATATGGACTTATTTAGCTATGAGTAAGGCACGTGTATAGATCACGGCGTTGTAGCACAACAGGGGAGCTAGACCTCTTCTATGGATCTTAGTACAGCGGAAGACATCGAAGCTCCCCCGCGCGGAACCATTTGGGAGTCATTTTTGTCACTGTTACCACAATGGACTCGGTCAACTGCGCGCACAACCTTCGACTGTTCATAGGCGAATCGGCTATTTAGCCTGACTAGGTGACGCTCGAGGATCTACCGACTCGGCAAGCACTCTCTATGCGTAAGACGCTGGACGGGATAGCGAAGCCGGTACGCGCCGGAGAATTTCTACAAATGTCGCGCTCCGAGTATTGACACGCCACAGAGGATAGGGCAGAGTATCGGTGGAAAGGTATGGGTTTGGTTTCAGAACACGCATTAACCACAGGTCGGGTATCAAACATACGCTTTCTTGCACCGTATGGCTTGACGTCCTACTGCTTATACGGACTGGGACGGGGCATAAACGTATGTAGTTCGACTAAACAGAGTCACTCTACAAGTGCACAATGACTGAACTATAATTGGGCCAAGTTGGTGTTGAAGTTCGAGAGGACAGCGTAACTTATACCCTCAAGGGGAATCCAGTTGGAAGCCAATCTGTAACGTTACTGATTGCGGATCCAGATTCGTTACTGACGAAGTTCGCAAGTGATAATAGCTGCTTCTGACATGGTGGCCGGTCTGTTAGACAACTCCCGTTGTGCCGTTGAACAGGGATATCTTCTCCGGAAACACCTCGGATACAACATCATAGTTACTTACTGCAGTTTCTTGAGCACCGATGCCTACGACCATTATCCCCAAACTCCGACAAGACTGAGTCCGTTTAACACGTCAAGAACGTGCCTCTGGAAGTTGCGCGATCGTGTCTCGGACTATAATACTTAAGCAACGGATCTCCTCTACTATATTTAACCGCACTGGCGATACGGCGAAGGAGACCCTTACTCTTGACGAGGAGCTTGCGCAATTCGCCGCGACGCCGATGTACGCGGTCAGCCCCGAACCTAAGAAGCTGCTTGCGTCGATTGCTTCAACGCAGAGGCTGTTAAGACTAAAGGAAATTTATACTAGATTACGGGATCGTCTTGAAGCATAATACATATCGCTTAGAGTCCTCTACAGATATTCAGAGAGCTGTGGATCTCCTTAAGAGAACGTAGGACCCGCTGTCAATGATTTGGGAATGCCTGAGGACTCAGTTGACTCCCTCGCGTAATCTTCCTACACAGATCCGATTTATCATTACATCCGACCCTGGGGCCAGGAAGAACCTCGGATAGACGCATGCTTCTAATACTCGAGTG$'
k = 5
indices = partial_suffix_array(text, k)
file = open('trie_output.txt', 'w')
for key in indices:
file.write(str(key) + ',' + str(indices[key]) + '\n')
print(str(key) + ',' + str(indices[key]))
'''
'''
bw = 'CTTGCACGACCTGTACGCCGGGTAGCAGTCTGTATTCCCCGCAACTCGCTCACTTGTAAACCGGTCTCCAGCCACAATCGGGAGACCCTTAATATTGCAACTCTGATACTTCTACGCGCCCACTCGTCCAGTACCGACATGTCATGAACGTTCTTTCGCCATCGGTGCTAAGGAATGACATCAACCGATCAGCCAAATAGTATGCGGCTAAAAGAGCTAGATATGCAACGCCAATTCTCCAGGGTTGGGGCACCCTATATTCACCACGTTTCATGATTCGACCTCTTAAGTAGGAAGCGATCAACGTCCTTAGGTCCGGTGTAGAGGCCTACCATACCTCCAAAGACCTTTAACGATCGCTAGTATTGGGGGCCCGTTAAGTTGACATCCATCCTTCAGACGCCACGTTGAGCCCAGGTCCAGTGAGCCTTGTTGAAGGTGCCACGCCCGGTGATCTTCTTTTCCTCACTGTCTTTGAGAACGGGAAAAGAAACCTCCTCGTCCGGCCTCGCAATCGTCAACTACATAGAATGCATGCCACCCATGCGGGCTGAAGGGTACATGAATTCCCTCATTAGTCCAGCCAGCACTATCTTAGAGATTCAAGCCCAGACTGCGGATGTCACAGTCCATTAGAAGACGGGAGCAGTTTTTGCGGTTAGCCTCGTAACACCGGAGTGTGGACATGCTACCCTCTCACTTTCACGGAACGTGTATATGTGTGAATAGACCGATCACCAGACGGATGCTAGTTTAATCCGCTTCCCTTGATCGGTCATCAACATTAAATCATCATTGAGACTAGCGAAACAGCCGAGATTATCGGGGAAATACGTTGTGACTATGTCCTCCAGGCATACATCTTTCTTTCAGGACACCTAGCTTAACCAGGCGTGTCGGCAGAAAATGGATATCGCGGTAAGTGTTACGTCAAATTTCTAACGCAACCAACGTTCACGCCGCCTGGCTGAGAAAAACGAGTTGCTGGGAGAGAACGCTTCGGGACCCCTGAACTTACCGAGTCCATACTTTGCACCGATCTGTTTCCTCAGACAGGTTGAGCCGAATGGTTGATCAAAAATAACGCAGGTTCAGGTTTAACCCGTTTGCCCCGGGCTACATCAGTGACTACCCGGTCACGACTTCGGCAGTGCTGGCCAGGTTTTTTCGTACCGATATTCCATGCATGCTAGCGAAGGATGTCAGTGGCCGGCGGCGGATAGATCTCGTCCTCGATCCGCGTCTATGTTGCCAGATCATTCCCCCTAGAGGCTGGTGCCGACTTATAAAACACTCACTTGGCGCAGCAGGATGAGTGTTTGCGTTGGCCTTTACGAGGCTATACTTTTGTATGGACTAATCTTCGCTCAAACGGCGCCAGGCACTGAGCCGCGGCGTGGGCACCTGGCACTCAAGATGTCTTGCCCGCAAGTAGGCTGGCTGCCCTTGAGTGATCACTGTTAATCCACTTCCCTGCTTTGAAACAACCATCACCGCATGAACACTAGCGTCCTCGTGGTGAATCACCCGGGTGTCAATTTATTATCCAGCTGTTATACGTAATCAACGGCCTTGCGCCCTTAACGCTAACATGCACCTACGCATAATTGCAACACGGGCGTTGGCTTGCGAAAGTATCAAAAAATAAAGATGAAAGGAACAACTGGAAATAACCACCGTCGACGTCTCCTGGTATGGAAAAATCACAGGTTCGCCTACATGGGACTTGGCGTCGATAATCATGCGAAAGAAAGGCTTTTTGTCACTCGTTGGCGTATTATGCGGCTAGCAAGCCAATCACGACCATAAATCCACGATAGGTAGATACAAGATTAGTTAGATATAGAGGGCTCTACGCACACAGAGAACCTGCAATATGAGTCCGGGAAACTCCGCCATGATACGGTGGACGGGCTGTTGGTAATGCTTACAAGGTGATTGCGAAAATAGAAGGAGTGTCGACACGGGCGTATCCCATTTCTTAAAAGTACACGGGGGCAACTTTGAGGTGCGGCGTAAGTAACCAGTAGAACCTTGGTAGGCATAACGTTCCTAGATGTCAGTTAGAACGTCGTGTGCTTATCCACAGCCTTTATAGTTGTCTGCTGCCAATAATAGACCATCGTACGGATTGATCTGGGACGCGAACTAAACGTGTTTCACCGCTGGATGGGTGATTTGTGGCCGTGCGTAGTTAGGCAAAATCGAAGCTTCGTCGCATGGAAGCAGTCCTTAGAAGCCCATAGGAAAGGTGGAGATACAAACCCTTACAAGACACCTATGCGGTAGGTCAAAACCCTGGGGCGCGTCTAGGATAAACAGACCGGTAGAGCGGTCGCGTACGGGTTTCAATACACACTCCGGACGACAAACCTCATTTATCTGAAGCGATGCACATTGCGCGCGTACCACGCTACAATCAAGGTGGATGCGGAACAAATTCTTCCAGGCTTTGCTGAGGCGGCATAGACCCCCTGTTGATGATCTTCCGGGCAACGTAATCAGACCGAGTCCGGCCAGTACATGCGAAGAGTGGACCATATGTAGCACGCGTAGACAGCACAGAGTCAATCGACTTTGGAAGATGATTAAGCCCGAGCGTCTGAGAACACCCCGGGTAATGTCGAAGACAGTAGCGGTTGCGTCTCTTCTCGTGCTTGGGGGAAGTGGCCACACGGGTTGTCTCTGATTAATACGGGTAACGCCCTCATTGGCTCGAATTTGCTCGGGGTTATACGTAGCCTGGGTGAGGCAACCTTGGCCACTGCAACCCAGCCATGTAAAACCGCGCAAGTGAATGTGTTGGTAGAAAGTGCTTCAATGCAACGTCCACGAGGCACCACAGAGGTATCTCTGGAGAAAGCCGAGAACCTCTTGCAACGCCCAGAACGTCCGAGCCGACTGAGAATAATGCGTCCTGGGCACTGTGAGTCTGAGCGGAAGATATAGCTACTTGCGGCCTCCACCTGTCCCCAGGACCAACACCCCGAGATCGCACGCTAGTAGACGTTGTAGCCTGGGGTATCACGGGCTTTCCGTAGGCTCCTGCGCAACCCCTGAGCCCGACCCCACATTCATGTGGCGTACCGGAAATCTAGCCAGCTGGCATGGCTTCACTCCATGAAGAGATTTACTAAAGTTAGAGCAAGGTGAAAAGGCAGGCGCTTAGTAGACCTCGTCCGAATGTGCGCCCCCAACGGGCGCTTACTGGCGCCTACCATGCTACGCGGGGTCAAACGGCGGAGACAACTGAAGTCTCACTCACGCCCGTCTACAGAGAACAGCATCCCGCTCCTAGGGACAAAAACGGCCTGGAAGGGGATCAACGCTGCTTCGACAGGAACATACATCCGTTAGCAGCGCCTGGTCTGGCATAATGATGTTTAAACATACTGTAGTAGATGGGGCGAGTTGGAGGGTTTTTGCAAACCTAACGAGTTAGGTTGCAAACCCATTGGGTACAAGTACGGTATTGTATGCGCACATATGCGTAGTTACGTACCGTGTCATAACGCCCTTGGCAGTCAGAGTGAATACTACAGAATCGTATGACTCTAGGCCTTGCCTTTGTCCATTCCGATATTTCCTAACGGTTGGTACCGACGAGCCTAAATTACTCCCCTACTCACGACGAGCTCTAGCCCGTAAATTATAATCGTGCATCCCGCGAAGAGACCGCTTCTGTTACTAAATATTGCGGTTAGTCGTGCTCTTAGCATGATTTAACCATAACTCACATGGCGTCAATTGAGGGATCTTCATGCGACCCGTAAACTTGATTTGAGGAGAAGTCCACCCCAGCTCCTATCGTTATTTTTAATTGCCTGTCAGTTAGCATCGACGCCGTAATTTCTCGGTTACCAGATGATCCGCCCCTGACTTAAGCATTGTACCTTTAACTAGTCTCAAGGAGAAGCTTGAGAAGCCCGTTTGACTCCAATAAACAACCGAAAAACGGGTGAGTCAAGTAATGACGCGATAGCCTACTGCCCCATAAATCTATAGTCATAGTCCGAAAGGGCCCCCAGACGAACGACCATTCGAGGCACCTATGGAATGCCCCCTTGTTGGTGTCGCTATCGCAACGGGCGTACACCTGCGCTCCCTAATTAGCGTCTACTCAAAATCAAGTTACCTTAAACCTGGCCTGGATACGGTGAAGTTGTTGTTGTGGGCTCCCCTACACTATTACCGAGACTGTCGAGAATACGTGTGCAGCCGGTGGTGACTGTATAGGCTGCTGCATCTAAGGAAGTAAAACGGTCTGCGCGACGGCTTATCCGATGAAGTTAGACGTCAGCCAGCACCAAGCAGGGTACCAGCTATCCCAGGATCATTGGCTTTATCAGAATCGGATACCTAGGCTCGCTAACGAGCATCTCCGGTACGTTCGGAAACTAGTTTGGTACAGTTATAGGGCCATAATTCCAAATTGCTTCACGTAAATCGTCTTTGTCTGTCGGTATTCTATTCTTGAAAATCTCGATGCCTACCAAGGTAATAGTGAGGTGACCGGGTTCAAGTCCTACACTTTCGCGCTAACATGTGCACTCTAGACCTCAATAGGCACAATGGAGCGATTCAAGCGCCTCTATCCCCCTGTATAATGAATAGATCACACAGGGCTTATTCCAAAGGATCCCGACGTTGGTGGACGCTGTCCGCCAACTGGAAACGGCGAGGACACTTTGGTTCGGGATCAAGACATTTACCGGGATATTAAGATCGATGAAATCACACGAGAACCGACCAATTCGGCAAATGGGGGTTAATACGAGGCCTAGTGGTCCTAAACGATAAGGATCCTTAAAACAAATCCTTGGGTATCAAACCTTGACACCTCGTTGACATAAGCTTGTTGTGAGCCGTACGTGAGAAAACCTAGGGCGAGTCGAACCAATGAGCTGTTTTCAGATTTAGATTATCGAGAGGTTCACCACAGCCCTGGTCCGACACATCTACCGTGTGGCAGATAACGTCCTGCAATAAGGATCTTTGCAAGGTTTTCTTTGGGATCCAAAGAACGATGAGCATGTCTCATGTTCGCTCGCGTATCCCGCAGGTCCGTCCCTGTGTCAACGCACGAGTAACCGATATCGGTGTTCGAGGTTATGCTTTAATCCTGGAAGTGATCCCCCCTTTTGGAAAGCTTCACTATAGCCCGTTGCCGATTAGGTCAAGAGCTTCGTCCGCCAACTCGGTTGGGAAGCCCGAGTGGCCCTGACCCGGTTTCGGAGGGGTAACTAAATTGCACCAGTACCGACCCCTCATAGTCGTTCGCAAAGCTCCGCAGTCAGCCGTAGCACGCTGTCCTACGTCAGGCCGTACGTAAAAAGACGACCCAGCCTACTCTCTTAGAGATGTCCTATTGCAGTACATACTCAATTTTGAGACGCTTGCCATTTAGCAGCTCTAATGGGTCATATGAGTGAGAGTAAAGTATTTGCATGACACTTTTCCTTAACATATAGATTGTGGACGTGGGAATATCACACCTACATCGTCAGTAACTACCCTACCGGGTGAATTCGGGTAGCGCGGACATACAATTCAAATACGTACAATAAGATTCCGGTGTCAAACCGCTACAGCGCTCTTCCCCGATAAGCTGTATCTGCGGGCACAGCGTCTCACGATGACTACTGCTCTGCCGTTTTCGCTCATAAACACCCATAGTGCAAGCCTGCAACATGGAACATCACTCTACCAGCAATTATAGGGACATGCTAATGGGTACAAATCCAGTCGCCCGCCCGACTCGCCCCTTAAGTTCCCCGAGAGCTATGTTGTATATCGTCCGCTCAAGACTCTGGGTAGTCAAGTCCGCAAAGGACGTCCTTGTCGGCTTATCACTCCTCCCCGCAAGCCCTCTGGCGTGACGTCTGGGTTGTTTTCCTACTCGCCCGTAGTCTAATTTACTCCCCTCGTGGACGTATCCAAAATCTCCATGAGTGGTAGGAGGGTGCCGACTCCAGTTTTGCTCCATTCCGTCCAATGCCCCAAGTCCGACGCCCAAAGTTCTGATTAATAACCCTGCGGGCGAATAGAGCGTACCTTGGGTTGATTATATTCTGAGGTTTGGAGTAACGATCGCTAGGTGCAGATGTTGTTTGAGTACTAAATTGGCTGATGTTTGCAACCGCTTCCACGAAAGAGCAGCTAGCACGCAGAAAATAACGAGCCGGTTCACAGGATGCAGGCTACTCCGCCGCACAACTTCGCCCTTATCAGTCCAATAGACGATTCGCACTCAGAAATCGGTAAGCGGGTGATGGGCCTCGTCGTATTTCGTTCCGTAGTAATCCAATTCAGCGATTAATATTTGTCGTGGAGCGGATCCGATGCCCAACCAGTGTGTTAATGGGCGTCCCAATAGGATGATTGCCAGAATACATCACGGACAAGTTATCTGTAGGGAGCTGAACGTGCTTTAGCGATGAGTCACACGTGTAAAGTGAGCGATTTGGAGGTACTCTCCTTCGAGTGTCGAAACACCAATCCCAGAAAAGATTTACGCTCCCTCAGACGTAATCGGTCTATATGATGAGTGGCACCAAATAGGGCGGAGTAGTCTTAAGGGGCTGCACTCGCCCATAAGGCCTGCTGGGTAATGCCCTCATACCCAATCCACCTCGGTACGGTAGGGTGCTGAGGCATGCTACGGACGAGATTGGTCGTGTGCAAGTAAATCTCAGTTGTGTAGATGTCTACACCTTAATGGTTCTGTAGCGTACAGACACCCCAATTGGTTGAGAATACGAGACTGGCATAAGATTCAGTATACGCAGTGACCTTATAATCACTCGACAAGTGCCTGGTGTCGAGTCTTTTGACAGTAATCCTCAGCGGAGAAGAGGCACTCTATTACTAGATCTGCTTCATTATTTTGGATGGTATTTGGGAACGGCTAGGGCCTAACGATCTTGGTCGCAGAAGATTCTAATTTGGACTCTATCCGGCCGGGCACGAACGATCTCTACAATTGCAGCGTGGCAGCGATCAATCGAGTGATTTCCGGTCGTAAGCGGACCACGCCGTCCTTCTAAGGTTCCCCGACCACGAGGAACCAACGACTGACGTTCCGGAAGCACTAGAGCGCCCGGCAACAGCCGGGCATCCACAACGCGGACATGATGTCTCTCGACTGTGCCTGTAGATCATAGCCGCTCGTCTACCCCCTTACTTTTGGGGCCCAATTGCAACCAATATGGGTCACGTTCTGACCGCCTATAGGGCACGCGGGTGGAATAGGTGGCGAGTGTAAACAGCGCTGATACAATATCACATAAAACGACTTGGTCAGTAACTGCATCGCCTTCCCCTTCTACGTCCTTCGAATCAGGCCCTGGTTCATTTTAGCGACTGGGTACATACAATCCTAATCACGGTCTCGCTTGCTGCACAACAGACGCGTCTAGAGTCCAGAGGTATAGTCGGCGTGGTCTAGACATCAAGAGAAGTGCTGACCAAAGTAAAACCGTGGAAAATTTTATGAACCCTGACTTAGATGAGAAAGAATGGGCCGAATTCTACCCATGTCATACCTTTCTCGCACGACCAGAAATGCCTTGCGGCATGTAAGCGATAAAATGTATTCTCACCATAAGAAAGCCGGTAAGTGTGACCTGGACCGATCCTGTGAAGCACTGAACGTATTTTCTGAGCTCTCTGGACAAGGATACATTCCTGCACGTTTCTAATAATGTAGGTCAAGTTGTGGGGTCTGGCGTGAATTAGTCGTCCCTCCCTTTATACAAAGATTGGTTTTTCGCAACACGGCGTCACCTGCGCACCTCCCGCAGGCCCAAGGTGTTTAATACCAAAGACCCCGACTACTACTGACTCGAGTTCCGACATTCGAGCTGGCTCCTATGACATGAGCCGACGGGCAGGGGAGGGATGCCCGTCCGACCCATTCCGTTGCCGATAGTGCCCAAAGGTGCCGCATCGTTGCTACGATAAGTCCGGCCAAGAAGTATTAGGCTCGCTGATTGTGTGCTATCCCGTTTTTGCGGGGGCCCCTGACCCCGTCAGCCGCATCTGGCTATATCGCTGCTTCAATCACGGTCGGACTTGTCAATAAGCCGTGGCATTAGGAGACTGATACGAAAAGGAGATGACTATTAGGAACCGGCCATAGAATACTTTACAACCCGTGTCGGTTCAGAATAGGTCCCCATTTGTGTAGGACGCGGGGGGCGGCGGGGAACTGTTTTTGTGCACTGAGAATTGCGTGAGTACAACGAAAGGCTTAACAATTCGGCTCAGACCCGGGTAACCCGTGGGTAAGTCTAAAAAGAAGGGCGTCATGGAGGACGTTTATAATTGGTCGACACCAGGCAAGACGTAAAACCTTTTCCGGTACGAGTTTCGCATCGGGCTCGCCCTAAGGACGTGCCCTAGCTCATCTACATTCGGTCTGCAGAGAACTTGAGTGTTAGTAGGTACTGGTTATTATAGAACGCATAGATATAGTTTATGGTTCGCCCTGCGTCTGAACTTAGTTGCGTGAACCGCCTCGTGCTCGGCGGCTAGCTAATGTGCTGGGTGTCTTATATCCCGTTGAAAAGCCATAATCTGTCCAAACGTCGCTCCGATTAATACCCTCTCTGGTACCACGGGCCCGCGCCTCTAGGGTTTTTGCTTATAGCGGGTCGTGTAAGGATACGGGGGCTCCGAGCGGTCTATATTAACGTTAAGGGGACACACATGCCGTCGTCCACTAAGTTGGTAAGGATGATTTTACTGCGTGTCTTTAAGAGTCGCTCCCGCACAACGTACAGTAGGCGCCTTCTAGTTCTGGCGAGCAAAAAAGTGTTGGGAAGTTCCGAGAAGGAGACAAATGAGCCACATAATAATGGATGGTATTACACCGATAGGAGTTGATCGTAGAATTAGTTGGCCTTTAGTGGAATGGAAGCAAACTAGTGTACTCCCAGAGCTTAATAGAGAGGTAATCGGATCTATCCGGTAAAGAACTGTCTACACGAGTGATCCTGTCACAACCCATTATTTGCCTTTGCCGTGTAACCCAACCCCATAATGACCGTATGATACCGCAATGGGCATCTTTGACAATACCGAAAACTGGTTTTGTGAGTCCACTGACTGTATAATAAGGAACCGATGATATTGAGGTGTGCTGCGGCTGGCCTGAACTGAATACTTAAGAATAACGCATTAGTAGTTTCCCCCGGGCCACAAAGATCTGCAAAGATTTTCCACCCGGCCCGTGTCAATTACCATGATGGGGTTCAGAATTCAGCACACGATAACACTTGTCAATTTGGGCCAAGAATTCAAGATAACTAGGATTCCTCATGGTGCCCCTCCGAATGCTGCTTTTGGTAAGGGGTAAAGGACCCTGACGAACTGACCTACAATGTCCTGCGACCAGTCACTAATGTTCGAGTGCTGTTACACGCGCGAAAAGGTGCACCTCCTCGCAGATAGACACGTCCTGGATACCTGGGTTGTTATGGGCAGCTGGGAGGAGCTTTATCAACCTTGCTACCGGGGCAACAAAACGATTCCGCTTTTGCCGCCAATACGTTTTCAGAACCGGTAGTATCCTATTTTTATCACCGCAGGGTGCAAGGCTCTCAAGCCGGCTGTCAAGGGCAGTGCATGCACCACTGGTTAGTAAAGGCTACGTTGCAGAATGGCTGTCAATAGCCAAATGGGGGATTTCAACTTGGTGTTTTTTAATGGAACGCATAATCAATTGGCCCAGTTTCTTACTCGTTCCTATTCCGACGATCAACTTCGAGCCATACTCGATAGATGTGCAATCAACGTTAATCCCAGCATCTTTCATGCTGCCGCAATCTTTATCAAAAGGGGATAAAACTTCACTTACCGAATGCGTCACAAATCTGGGTGCGCTCTCTGGAAGTGCGACTGGGTACAACTTCGCACTAGTATGGAGCGGTTTTGCTGAGCGAGGGGGCAGGCCTTGTGGAAAAGATGGAAAACGGCATGCATGCAGTAGTTTCATTACTATATCCCAAGCGTTAGCTGTAGAGAGCTAGGCCTGACGCGAGGATCTTGGCTCTTATAGTCAAACAACACTATTTAACATCGTCGGTGTAACTACATTTACACAGTCTCTGGACTTTGCGGAAGACGCCCCCGCAACGTCTGCGTGCTGATCTGAGTCCCGAGCGCAATGTGGCCAGATTACAAGCCAAGGACACCTTTGTAGTAGGAGAAGGCCCCATCGAAAGAATAAAACAATGAAGCAGTACCCACACTTTGAAGAGAAGTTTTCCGATACTCCGGCGGCTTATCAACCCCTCTCACGAGTCTTCTTCTTCCCCGGCTACACAAGCCCCTGGTGGTCGTCTTAAGGCGAGGTTCGCAATGTCGTCTGGCGGATGTACGCTCTTGGCTAGTCCTTACAGCTCTTGAGCAACTACGATCTTGGTCAGGCTCTCGAGTCCCCGTGGGGGTGCCCACATTTTGGTGGAGGAAAAGTGAGTGAGTAGGGGGCATAGTGGTCCTAGCCAGTATATTTCTCATAGTTCTCGGTAGGCTCCAGGTCGTTGTATGCCGTACGGGTAGCCAATTCTTGGTCATGCGACCGGTAGCGCAGAAACAAGTCCGTGCATACCTGTCTCTTACCTTGCGAGCATAAGGCTGTCAGATGCGTCATAGTGCTTGCGTGTTATTCTACGGCGGTGTGACTAACCGAAAACTTTAAGAATCTTTCTGACAACTTAGTCCTACTGTGATAGCCTCTTTAAAGTTATAGGTGATGGCCCGGAAATGGTCAGTATATATAGGCGCCGGGTATTCTAGAAGCGCCTTTGCACTTGCTTCAATGCTCATATATGATAACTGATGTCACTCACGTAATGGTCTTTACTATGGTAAAGTCTGGCCATTGATGATGAGGGAGCAAGAACACTAGAATCGCCTCCAAAATGAGGGGATAAACTTTCTGTACTTACACATGGAGCTTCCCTTCCTTATTCTACGGCATCTTACAAGGACATCGTAACTAAAGTGGGATAAAGGGGTCACTACCAAAGACGCGGAGGCGGTAATCTTCCCGCTGCCCACTACATAGATAGTACCCGGAGCCGTCCTGTCGGTAAACCGCGGGTTTGGCTCCAAACCGGTCTCACACTACTGACGTCTAATGGCTGAAAATCAGGACCCTCGCTGTTTAGAGATGACAACCTAGCCGCTTGGAGTGTTGCGCCTAAGGGCAAATCGCGCAACCTCGTGAGGACTTGCGAGTTTAAGTTAGGTGCCTACATTCTTCACATGCAACTCTGTCCACGGAATGTACACCGCATCAAGCGTGTCTCTGCCCGGTTTGCGAACATAAAGACGTTGAGCTCTGGAATGTACCTGTGAAGAGAAATGCCCCATTACAGTTGGTTACTCCTGACATTGGCCATACAACCGCCCTGCGGAATATCGTAATCAGACTACGGCTCCGCCCCAGTGCCCCTGATAGGATCCAAGTATGGTTGACCTAGGCCCTATGCGCTATTCCTCGGCCCTGATACGGCCGATAACCAGATGAAACGGGGGAATGTCTACTTCGACGGACTTGGCAGGCGATGTTATTAGGTGAGTAGCCCAACAGTGCTAGGAAGGCGAGCCATTGCACCCGCTGTAACAACATGTAACCAAAGTATTGATACTTTGCTCCCTAAAACTGGACAGATTACGACCCCTATTCGGCGTGATCCACAACTCAAATACGCCGCGACGACTCCACACCATTTTAATTTGTGGTGCGCGGTCAGTCAGCTTAGCCTAACCCTATTCTAAATCGACCCGTCTCATGACAGCACGTCTGGTACATGGATCGTCCTGGGCGACTAATATGCAGGGGGTAGGGTCATCGACGTACCCGCGTCTTTAAGACATTTGTAGTGTTTATCGATAAGTGTTCATTGACGTAGTGGACTCGGGTATATGGATCTATCCCTAAGTAACTTTTATCCCTGCGCCCGAAACCCCCAAGATACATCAGGGAAACTTGTAACCCAAAGCCGACCTCCCACAATAGTGTGGTTGTGTCCGCAACCGTAGCAAGTTTGCGAGGAAACATTGTTTCTGTATTGATTTCCTTTTAGGTAAGCGGTCTCACACCTATCCTACTCCAGACTCCAGAGGAGCTCACATATTATTTCTCCGCCTTATATGAAAAGCAAATGTACTTCCCTATGTGTTGCCCCCATTACTGGTCAAGCAAAAGGCTCTACTACTTCCAGTGGCGGCACCCGGCAAGGCAGCGCATTTCACCGGGGAGAACCAAATACAGGTATTGGACGTACATAACCCTAGGGAGATTTCCCTTCCTTCAACCGATACCCTAGGTCTGAGTCACGAAACCCTCGGCAGCAAGATATTCCAAAGCACCACTCCTACACGTGCCAGAGGTTCAATTTTGGAGAACTTGATGCCCACCCAGTAGGTCGATACGTGAACGCGACCACTTGTTCAGAATGCACTTCATCGTGTCGGACTACGCCAACTGAACCGAAATACCAGGGGAGCCCACTCCCGGGCGAGTGACTTCAACTGGTCCAGCCGAAGGTGAGGCTGCGATATGCAAGACCGAGACGTGTACGACACGCGATTGGAAGTTGAGATGCATCTTCACTGGCCGGAGTTAGCTCGGCGCTCCTCATGGCGCAGGGTCGACCACAAGAAACTGCATAGTGCAGCATTTGCAGCGCGTCATTTGTATCGAACTCCTACACATTTTTATGATACAGACATGATTGTTTCGGACCGGAAAGGGATAGGTCACCCTAAGACCACGAGGTGCTCAACCAAGCTCTCAGCTCGGGGCTTGGAGCCAGCTTTATAAGTCGATTGGGAGCCGGAAATCTCGATTTTACAGGGCCACAAGTATAGCCGATCACGGGCAAAATCCTTGATTTAAGCTCGCTCGCACCTTAGAGGTTAGGTAGTGGATCACGGCGCTAAAAGGATGTTAAATCCAGCGTATGTGTCCATAGTTCCGTTCCCTAGTATGACTTGACGCACATCATGAGAGCACCAGCAACAGTCTTTCTAGTGGCCAGTTTTAATGCCCTCGGGGTGTCAGCTCCTGCTGGAAACACATTCGTCAGCGGGGTCCAACCTATAGTTGATGAAAATTCCATGTCTTCCGTATGATTACCGGAGAACGTGACTGTCACAAACCAAGTTCTCCCATGGCACTCTGGCTAATTGTTGGGCAATTACCCACGTCTAGACCTTAAAACCTCTGCCCATCAGATTGATATGACGGGCCCATTCATCGTTCCGTTGCGCCTCGCTGCCAGCCTCGTTTGACCGGCTACCAATCTGGGCAGTATGTTCTGTCTGTAAACATACTGCAGGGGTACGTTGACATTAAGTGCCAATGCAGTCCATGATATACATCCAATTGCTCGGGAGACCGCGTGTTAGCGACGAAGTGCGTACGAGTGGTCCCATTATCTTAGGACATCAGTACATGTGCGAACGTCGACTAACCCAATGCCTATCGAGTTTCCAGTTAAAACCGGCCCCCAATAACCTCGATCCCTGGGCCTCTGTCAGCCAAAAGATTGAACCGCAGTCTGTGAATGACACGGGAGATCCAGGGTGTATACCATGTAAACATTCAATACCAGACAGCCGGCCAGGACGAAACTGCAGTAGACGTCAAAATACGCCCCGCGACCCGCCCTTGATACCAACAACAAGCATGGGCCTTGACGTGATCGACGGAAAAATGGTACGTGACGCGCACGATGAAGGTTTAGCTATCAGATATCCCTTGCGGTTCGTGCGCAGCTTCATTTCTAATGAAGCTCACCAAAGGTAGCTAACTAAACAGGGGGGCTCACCTCAATCGAAAGGAGTAAGCGAGTCGCCTTAGAGGGCCCGCGCTATCCACATTGTCAGAAGACATCGGAAGATAGTCATAGGGCTGGTCTTATCTGAGCAAGCTCCGGACACGTACGCGCAGCGTGTATCGGCCCCCCGAGGCGTATCGCATGCCGTCCTGTACCAGAACGAGAGAAGCATGCCTGTTCGAGGATAGATCTACAAACTAGAGCGCATGCAAGGCGGCACTGCACTGCACTCAAAAAGAACAGGAAAAACGCGAGCCTCGCGAGTGGGCCTAGTTGACCAGGATTAGTCCAATTTCTGCTCGGACCAATTTTATTGTTTTACATGATAATCACCCCTCCTAGGGGGTGTCGGCTGACTGACATTAGAATGAGCTGAGTGTGTGGTTGCCTACCTCCCCAATAGTCCGTCTAATAAAGAAGCAGTCCGTTATGGATCAGAACCACTAGTTGTCACGCTCTGCCTTGAAGTAGCTGTCTCAGTGGGGTCGTTGGAATACTTAATAGAATACTGGTTACAGGTGCAATCTCTCCTACCGAAGTCGGGGATGTTTGATGTGTACTATAACCCGTAAAAGCGTGCCTAGGCAGGGAGATCTTTAACGTTATTCCACACGCTTGGACTTTAAGATCTTGGAGATGTTAGTACTTAGTCGCGGACCGTACATGGGGTCCGCGACTGATCAGCCTCACTCTTCCCGGAAGAAATTCTCGCCCGTAAACGCCGTGCCCTCGTTAAGGCTAGACGTATCTCTGGGCGTTCCAACCGGCTGATCAGCACACCCGTTGCCTCACGTAAGGGGAGAAAACCATTGCGTGTAAGTGTTCGCCACAATTTTTACAACGAGGCCTAGTCGGTGAGTTCTGTCTTGTACACAAAAAATAATGGCCCCGGTAATGATTCACGAAAACTTCCAGACCAGCGAATAAATAACATCGCTTCCTCAATGCCGGTCTGGTCAGAAGGATACTGGGAGATTCCCCCTGCAGGTAATGAGGTTGCTAGAGGCTAACGGTGAAGCAAAGTGATCGGCCGATAGTGAGACGTTTCTCTCGGGAATCCCCCGACACACTGTCTCCTACCCAACTGGTCCAAGAACGCAATAAGTTAAGATCGCTGTCTGCCCCAATTTTCCTGGCAAGGACACATTGCAGGGGTAAACTGCTAGGGTCCATTATGAGAGGAGGTAATAAATTCGACACGAGCGTACTTACGAGGACCGCGCCACTGGAAGGCGCCCCTAGTGTGCGCAACATCCACGGGCCGGTACCATTCAACGAACGTCTCCCTGCATGCACAAAACGGGTAAGTTTACCCGTCAAGTGCCATGTCGGGACTAGCAGTCATATATATTTTTAGGAGAAACACCCGCCCTCACTACCCGGCACGCTCTGATGAGCATAAAGCCAGGACACGCACTAGATTGTGTCCGGTGAGTAGATGAAATTCTTACCAATCGGCTCCGACCGACGGCAACTCAAGTATGTTCCCACGCTCACGTAATGTTCACATCTCAGAGATGACGCCCACGAGCATGAGAGGAAAAGTAAGCTAGAATTACCTGGCGGACGCGGGGCACTGAGAGGCTAGGAGGTACCGATTCCTCCATTACGTTATGGTAGGTGCACTATAATTCCCGCGAGGTCATCTATGAGACTAGATCTTTCGCGATCTTCATACGTACACCTTCATAACTAATACGGAGACGGCCCTGCTTGAGGTGTGTGCGTACATATGGCAACTCACCCCCGAATGCGTATTCCCGGACTAGTATCTCATACCTGTCGTCCCACGCCACATTCGACTTGTGTCACCAGTGGAACAGGATTCGCTCGTACGTCGGGATTCATCTGGTTGTGGTTAACGACTGCGTCTCGGTACCAGCCTGAATGTGTTTAGTCCATTCCATACGTAAATGTTCCCCCGTTTCAACACCTGTGAGCAATTAGATTTAACCTCGTGTTAATACTCGCGAGAGTGTGATATCCAAATCGGACATTAGGATATATGGTTGCGACCAAGCTTCCGGAGGGCGTCCTCACCACGCGGTTCTAAGTCAAAATCCCCTACCTGCAGACAGAAATGGGCGGCGGGCCAGGCTTGCTGTCACGGAACCGTGGTAGTGCTGGGTCTTATCTTGTCGGACTAAAGCATGATATGTTGCCTAGTATGTGACCAAGTCAGCTTTAGTAGTACGGTCGCCTATGCTATCCAGGGCGAGTACATCGGCACTGACATTATTTGGTACCGTACAGTCGAATTCTCGACAGCTTGTCTTTCTTGGTGATATTTCAACCAACAGCCGCACACGCTTATGATTAATATTGTCGAAGCACCCGAATAAAATTAGCTGGGCGTTGAGACCAAGCCGTCCGAGTAAATAAGTCAGTGCACGACACTGCAGAGGGTGGAGGCATTTCAATCCCTACTTCCCCGGTGTTCGCTGAGCATCTTTACCTTGAGCACAGACGGCTTCCCAACTTTAATCTCGGGAGCCCGCCTAGAGTGTATTCCCCTATTGTTTTCGGAAGGCCAATGGCAACGCTATCACACCACAAGCTAACGGGAATATCAGCTTGGACAGTGGTAACGGCGTTGCTTTGATCTATGGAAAGGAAAGTGTTTTACCTCGACTTCTAGTATATTAGGTGAAGTCCCAACCCCTATACGGTTGCTGATAACCGACGCATGTCAGTGTAGTCAATAATTCGGCAGTCCACTTGCGCGAACAGCCAGTATGGCCTCGTTACAAGGCAGTGAGTGTAAGGATTGCTGCAATATGGATCTCCTGAACAGCCTTCCTTACAGAAACATGATCTCGACAAGGGCGACGTCTGCCGTGGCAAACCAGACG$ACCCCCAGCTATCAGGGGGGTGATGATACTAGATTAATTGCGCTCTCTGGGTATTCAGACGAGTCATTACGGGTAATGTCTACCGCTCTTTCCCCGTAACATAGGCGCTGACCGCTAATCGATCTTGATATCCTACTGTGCAGATACAGCCGTGCAGATTGTGTCACCGACGCGGTGGATACACTGACGCGCACACCCACAACGTCGAAATCTGTTCTGTACCCTGGTTTGCAGTCCCAGGTCTACACAGGAAGCACCGGGATCGGTGGTCAAGGCGTACTCGCTGCGTGTCGACGTGACGGGTAGGGATGAACTGAGGCGGATTGAGTCAACAACAAGAGGACGGTAAGCCGTCAGATCTATTTTTAAGGGTGGCCAGCACCCTACGGCGTGCCATAAGAGACCCATACAGTCTCTGAACAAGATGGGCATCCCACACTGTTATCGACACTTCTTGAACTATGGCTTCAGATGGATCTCAACGCTCTGCGGACGCCGAGCGAAAGATGCGAAGGTATTTACAAAGCCTATGCCATTCCAGAGCTTCGCAAGACGCACCCTCGGAGTGATAAGACATCAATTCAATTAGATACAGGGAGGTATCCCGAATACTTACCTTTAAGTTACATCTTATGCATGTAAGCTAAATATGTGTAGCGCCGCCCAAAGCGTATCGTAGTGTGCGCTCGTGCCGAGCAAAGGGGTTCGACGCCCTGAAGCGCCGATCGGGCGCTTGTGCCTCTGAGGCTAGCGGCTTGGTGCTTTATTTGCTGCTATGCTACGGCTCGTCTAAAGCCAGGGTTGACAGAGCACCCGAATTAAGCGGTTTCCCAGATGAAGCGAGCAGCGTTAGTTCCCCCGGAAGTGTCTCTCACGGTCTTAGTGACCCGACCCCGGCCAGCTATGATGTTTTTGACTACTCATCACATTTTGGGCTAGAATCTGCCTAAGCACCAATGCTATCCGGGCGCATGGTTCCTATTATATGAATACGACGCGGCTTTACGGCGTGTCTTGTTAAGCTTAGTTTTCATGGCGAGTAGGGGTCGCCGACGATACGAAGTATCATGTCGACGGATCCAAACGTAAGCAATGAACCAGCGAGGTTAGAGGCATAATTAGGTACCTACTTGCATTCTTGTCTAGAAAATCTGTGAAATAGCACTTGAGAGACAACCCCGGAGTCCCCTATTGCCAAATTATGTGCGTGTACGGCATTATACCCCTGATATTCGCCCCTCAACATGCGCGGAAAATACGGCATGTAGTGTCACATTAACTCCCGCCGGATCGGGTACACTTCCTAGTGCTGACGGCTATGCTGCTATCTCCAGATAATCCGACCAGCCACAAACGATCCATATAACCCAGCTCTTAGGTGGGGCTATATACTTCAACCCGAGTGTCAAATGTAGCGTCGGAAAGAAGGAGTCCTCTTGATCTGTCAAACTCTCCAGGACCAAATTATAGCTCACCGTTGTGGGTTTCCGGAGGCACTAAGGGGCAACAACAAGACGTATTATGAGGGGGCATTACCCTGAGGGTAGGTCTCAGGGCCCCCCGCAGAGCTGATGCGGTGCTATCGGAAACTCTTGCTGGAAGAAGAAATTAACATCACATTTGCGTCCAACGACATGCCATGTCGATCTATGAGGACCCCCAAGCGCAAGCTGTAAAGGTATCGAACTTTAAAGTAGCGGCGTAAAGAGCAATACGCGAGCGAAACAATGTTCATCTGTTAAACCCGGTCACTAATAACGCAGGCTTCCGAAGGACACGAGAACGTGGACCGTTACTTATGATGGTATTGTCCATAGTACAATACAGCTAGTGTGCAGGCAGGAAGAACGATGCCTGAACCGCTTAGCAGGTGGATAGACGTGGTACCGGTAAATTGGCGTGATCGGAAGAGCAAGTCGTCCGTACAGGCTACAGCAAGTGTGTGTTGCCCTCCACAAGAACTCCGGCGTCTGCGGTCTCCAGTGATTCGACTGTATGGCTCGGATGGGGGTAGCCCTACAGGGGCTCGTGTCTAGCCCGAAGTGTGCACAAAACGGATCTGGTACATCACACGACACTGTGACCCAGGAGGTAGACATACGTCTTCCACTCACGAGTCGCTTTTTACAAGCAAGTCATCGACACGCAATTTCAGTGACTACTATCGATGAATTAGACTAGGGTGTACATTACGGACAATTCAGGTCATCTAGCAGCAAAAAGTTTGTATCCGACGAGCAGCCGAAACCGCCTGAAAATGGAGATCCGGAGTTTGGGTTTCGACTTGCTTCTCCTCGACTGGGGACCTACAGCTGCCACATATGGAAGAGGTGACACCTTTACAGAAAAGCCATGTCAGTAGTACGAACAGTAACTGTTGCTAATAAACTTTACGGCAATTATTTAGTGGGCAAACGCTTGGCGTGGTCTCAACCGAACTAACAAAAGGTCGTAGTTGACATGCTAGACCGCGTCCGAGTACGAGGGGGTACTAGGGTGGCGTATTGTATAGTAATGGGCCTTCTTTTTTAACCGCCCTGTCTGTGGTTATTAGTCCTCACTTCATCTGGGAGGAAATCCCCGAAAGCGGACTCGCAACGGAAGCTTACAATGCGATTGAGCAGCATTAGACCCACACCAACTAGCTATTATATTAGATACCGCAAGCGCGCTAAAATGTGAAAGAGTATGCATCTGCCTCGGGGCTCCAGATCCGTAATACAGATCCGCCCCCGGCCACTCGCCTAAAAACATGCTGACTCTCCACTTCTGCCAGAATTGTCGAGCTGATTAACCCCTATACCAACTAAGTTTATATTCGTACGTCATAAGAAGTATGCACTGGTCCCGGTCGCAAAAATAAACGGAGAGGAAGCTAGGTGGGACTGGTGCGAATTCCCTTAACAAAACAATATCTGCCTGCAGTACCTATCGAAAACCATGGTGAGCTATTTACACACGCGCATCATTGACGTGTCCGGTTCTAGGAGGCCAATGCACGAGGTAAAGGAACCTCGGGAAGCTCAAAATTCTTTTTTACTCACTAACAAAAACGTTAGATTGTAGCACGTCGAAAAAACTATTTCAAGTGTATTCGCTTTTAACGGCTTACATACGTTCTCTGACGACGACTTCTCGGTTTACCTCAATGAATTTGCTCCCGATGCCTTTGGCAGGAGCCGACTATCAGGATGCGCGCAGACGTCGGGTACTAGCTCCCAGCAAAATGCGTTAATCGGAGACACACTGTGTCCAGTGGCCACTTTTCTTTATCCTGCTGTACAAGGAATAACCA'
file = 'patterns.txt'
patterns = patterns_input(file)
count, symbols_dict = count_of_symbol_matrix(bw)
first_occurrence = first_occurrence_matrix(bw)
l = better_bw_matching(first_occurrence, bw, patterns, count, symbols_dict)
for i in l:
print(i, end = ' ')
'''