commit day 19, 20 and 21

19 and 20 are incomplete and nothing is optimized
This commit is contained in:
Juan José Gutiérrez de Quevedo Pérez 2020-12-21 22:48:27 +01:00
parent 8969db5c8c
commit de03aad9d6
9 changed files with 2577 additions and 0 deletions

66
19/1.py Normal file
View file

@ -0,0 +1,66 @@
with open("input") as f:
content = [x.strip() for x in f]
def parse_rule(rule):
name, rule = rule.split(": ")
rules = rule.split(" | ")
rules = [x.split(" ") for x in rules]
return name, rules
def expand_rule(rules, rulename):
rule = rules[rulename]
for i in range(len(rule)):
for x in range(len(rule[i])):
if rule[i][x].startswith("\""):
yield rule[i][x]
else:
yield list(expand_rule(rules, rules[rulename][i][x]))
def max_length(rules, rule):
if rule[0][0].startswith("\""):
return 1
elif len(rule) == 2:
return max_length(rules, [rule[0]])
else:
retval = 0
for x in rule[0]:
retval += max_length(rules, rules[x])
return retval
def validate_message(rules, rule, message):
if max_length(rules, rule) != len(message):
return False
if rule[0][0].startswith("\""):
return rule[0][0][1] == message
elif len(rule) == 2:
l = max_length(rules, [rule[0]])
return (validate_message(rules, [rule[0]], message[:l]) or
validate_message(rules, [rule[1]], message[:l]))
else:
retval = True
pos = 0
for x in rule[0]:
l = max_length(rules, rules[x])
retval &= validate_message(rules, rules[x], message[pos:pos+l])
pos += l
return retval
part = 0
rules = {}
messages = []
for c in content:
if not c:
part += 1
continue
if part == 0: # parsing rules
name, rule = parse_rule(c)
rules[name] = rule
if part == 1: # reading messages
messages.append(c)
retval = 0
for m in messages:
if validate_message(rules, rules['0'], m):
retval += 1
print(retval)

12
19/einput Normal file
View file

@ -0,0 +1,12 @@
0: 4 1 5
1: 2 3 | 3 2
2: 4 4 | 5 5
3: 4 5 | 5 4
4: "a"
5: "b"
ababbb
bababa
abbbab
aaabbb
aaaabbb

609
19/input Normal file
View file

@ -0,0 +1,609 @@
104: 114 114
13: 114 77 | 29 105
100: 20 114 | 111 29
80: 98 29 | 102 114
81: 29 10 | 114 89
97: 114 51 | 29 124
94: 114 67 | 29 64
74: 65 114
131: 111 114 | 65 29
123: 118 114 | 39 29
17: 29 70 | 114 70
46: 89 29 | 94 114
110: 114 50 | 29 65
62: 29 33 | 114 72
5: 81 29 | 2 114
16: 29 12 | 114 103
69: 114 3 | 29 59
12: 121 29 | 128 114
43: 97 114 | 25 29
45: 64 114 | 48 29
133: 132 29 | 70 114
67: 114 114 | 29 29
106: 29 64 | 114 132
31: 29 92 | 114 38
10: 29 67 | 114 65
65: 29 114 | 29 29
113: 68 114 | 68 29
37: 64 114 | 104 29
7: 56 114 | 129 29
128: 115 29 | 112 114
117: 7 114 | 49 29
47: 29 86 | 114 60
32: 79 114 | 64 29
86: 111 29 | 65 114
91: 29 5 | 114 66
4: 79 29 | 68 114
3: 29 68 | 114 20
92: 29 43 | 114 62
70: 114 29
39: 114 127 | 29 35
83: 29 132 | 114 111
9: 29 125 | 114 63
130: 29 36 | 114 108
27: 111 114 | 132 29
41: 67 114 | 104 29
90: 114 50 | 29 20
89: 14 21
61: 114 47 | 29 126
50: 29 29 | 114 29
38: 114 9 | 29 57
29: "a"
63: 29 69 | 114 99
105: 114 70 | 29 132
77: 14 114 | 20 29
51: 19 29 | 129 114
109: 29 120 | 114 30
54: 65 114 | 79 29
30: 20 114 | 40 29
72: 29 22 | 114 28
111: 114 21 | 29 114
84: 24 29 | 17 114
127: 50 29 | 48 114
125: 29 58 | 114 88
75: 50 114 | 20 29
118: 114 106 | 29 76
19: 21 111
115: 29 50
98: 40 29 | 50 114
126: 29 134 | 114 4
103: 29 109 | 114 15
26: 114 50 | 29 64
95: 114 96 | 29 123
101: 45 29 | 78 114
18: 29 122 | 114 110
58: 74 29 | 4 114
102: 70 29 | 50 114
0: 8 11
28: 53 29 | 119 114
21: 29 | 114
11: 42 31
122: 114 111 | 29 65
66: 114 80 | 29 71
24: 20 114 | 50 29
25: 114 55 | 29 46
87: 36 114 | 32 29
55: 131 29 | 32 114
76: 70 29
44: 1 114 | 61 29
1: 52 114 | 130 29
96: 18 114 | 13 29
112: 48 114 | 64 29
71: 129 114 | 131 29
134: 114 50 | 29 48
22: 3 114 | 113 29
2: 107 29 | 26 114
99: 83 29 | 53 114
49: 100 114 | 37 29
35: 104 29 | 104 114
53: 48 29 | 132 114
48: 29 21 | 114 29
116: 29 17 | 114 6
121: 32 29 | 54 114
93: 29 16 | 114 44
119: 29 111 | 114 70
59: 79 29 | 48 114
34: 29 79 | 114 48
78: 29 64 | 114 79
107: 50 29 | 65 114
114: "b"
129: 14 29 | 104 114
15: 41 114 | 90 29
20: 21 114 | 29 29
60: 114 104
57: 117 114 | 82 29
52: 75 29 | 85 114
85: 70 29 | 40 114
40: 114 29 | 29 114
124: 23 114 | 34 29
33: 116 29 | 84 114
36: 114 68 | 29 132
88: 133 114 | 27 29
68: 29 114
8: 42
56: 29 132 | 114 40
6: 132 114 | 79 29
64: 114 114 | 114 29
23: 21 40
82: 87 114 | 101 29
14: 21 21
79: 29 29
120: 114 67 | 29 132
73: 95 29 | 91 114
42: 73 29 | 93 114
108: 29 48 | 114 111
132: 114 114 | 29 114
aaababbaaabababaaabaaabb
bbabbababbbabaababbbbbbabababaaa
baaaaaabaababbbbbaaaaaababbbbbaababbaaaaaaaaaaaa
bababbbbaabaabbaaabababbaabbabab
ababbaaabaabbabbbbaaabba
aaaabaaaababbbababbaababaabbabbababaaabbaabbbbabaabbabababbbabbbaababbaaabaaabbb
ababaababbaabbbaabbaabba
abaabbbabbaabbaaaabababaabbbaabaabbbbbaababbaabb
abbaaaabbbaabababbabbaabaaababaa
aababababaabaaabaabaabba
bbaabbbaabbabbaaaaaabbba
bbaabbaaabbabbaaaabaaaabababbaababbabbbaabbbaabb
abbabbbaabbbbabaabbabbbaaaabaaab
aaaabaabaababbbaaaababbb
baaaabaabbbbaaaabbaaabba
aabbaaaaabbbaababaaabbaaaaababaa
abbaababbaaabaaabbaaaaba
bbbbbbabaaaaaababbaabababbbaaaabbaaabbba
baaaabaaabababbbbaabbbaa
ababbbaabaaabaaabaabbaaabaabbbbaaaababab
babbbabaabaaaaaaaabbbaba
ababaabaabaaaaaabbaaaaab
aaaaabbabaaababbaaababbb
bbaaaaaaaababbbaaaaabbabbbaaabababaabbbaaaaabbaa
baaaabbababaabbbabaabaabaabbabbbaaabbaabbababaab
bbaabbabababaababbbbaabbaaababab
baaaabbbbaaababbabbbbaaa
ababbabababababaaaabaaba
abbabababbabaaabbbbbabab
ababbbbbaababbbbbbaabbbabbabbaba
abaaabbbbbabbaaabaabbbab
abbabbaabbbbbbabaababaaa
aaaaabaabaababbbaaaaabbaaababbaaaaabbbbbababbbbababbaababaabaaaaabbbbaabbbbbaabbbaabaaba
baabbababaabaaabbaaababa
bbabaabaabbaaaabbbaabbabbababbababbbbbbbaabaaabb
baabbabbaaabbbbbbbabbbba
bbaabbaaabaabaaabababbba
ababbaaabaabaaabbaabbaaababbaaab
baababbabaaaabaababbabaabbbbbbabbbbaabbbbabaaaaabbbabbbbabbaabba
abaabbbbababaabbababababaabbabab
bbbabbaaaabbbaabaaabaaaa
bbabaabbbbbbbbabbabbbaaa
abbaaaaaabaaababaabbaaba
bbaaabaabbabbbaaaaabbaaababbaaba
baabbaabbbaabaabaabaabba
aaaabbabaabbbaaabaaabbba
bbaaabaabbbaabaabbbbabab
babbbbaabbabbaaaabababba
bbbaabaabbbaabaabbaaababaaaabbbbaaaabaaabbbaabababbaaabb
baaaaabababababbaaaaaababbabbbbbbabbbbbbbabbaaaababbbbabaabaaaaabbababab
baabbaababbbbbbbbaaababbabaabbbabaaaaaaaaaaabbaabbabbbab
baaabaabbbaaaabbbabbabab
aaabaabbbbbabbbaaaaabbaa
bbbbbbabbbbababbabaaabbbaaaabbbbbaabbbbb
abababbbbaababbbbaaababbaabaabaabbbbabaabbaaaababbababbaabbabaab
babaabbabbbababbaababbbababbbbab
abaaaababaaababbbbabbabb
abaaabbbaabbbbbaabbbaaabbbaaaaabaaabaaaa
baaabaaaabbabbabbabbaaba
abaaaaaaaabbaaaabaabaabb
bbabaaabbaaaabbaabababba
aababbbaabaabaaabbbbbbba
abbabbabaabbabbabbababba
bbbbaabbaababaabaaaabaaabbaaabaa
baabbabbbbabaabaaabbabaa
aaabbabaabaaabbabbbaabbbbbaababbaaababbb
abbaababbaabbabaaabaabab
bbbaabbbbabbbbbabaaaaaabaabbaaababbaabba
abbabbabaababbbbababbabaabbabababbbbbaabbbbaabab
bbabbbbbaaabbababbababab
abbabbabaabaaabababaaaba
aabbabbaaabaabaaaaababbb
aaabbabaabaabaaaabbbbbaabbabaababbaabaabbbaaabbb
bbabaabaaaabbababaaaaaabbaaababbbabaabbbbbabbbbbbbbbabbbbbbbabbbbbbabbab
bbaaaaaababbbbaaaaaaaaab
bbaaabaabaaaabbababbbaab
ababbababababbaabbaaababaabbbbababbbaabb
ababbaaaabaabaaaaaaaaaab
baaaabbbbabbabaabaaabaaabaaaaabb
baaaaaabaaabbabaababbbab
abbabbaabbaaaaaabbaababbbbbaabbbaaaaaaab
baabaabaaababbbabbaababbababbbbbaabaaaaaabaabbabbaaabaabbaaabbbbbbbaaabaabbababa
abbbbaabbbbbbaaababbbbbaabababbbbbbbbaab
bbbababbbaaaaabaabbabaaababaabbabbaaaaabbabbabab
aaabbbbbaaabbbbbbabbaaba
bbaabbaaabaaabbbababbbba
baabbaaabbabaabbbbabbbbbbbababaaaaaaabbbabaaabaabaaabbabbbbabaaababaabaababbbbaa
bbaababbbbaaabbbbababbaabbbaaababbaabbaa
babbbbaabaabbaabbabbaabb
bbbbbbabaaababbabbbabaab
babbbbbaaaababbabbabbaba
bbaabbabaaabaabbbabababbbbaabbaababaaaabaaaaaabaaabaaaaabbabbbbabbababaaabbbabbb
baaaaabaabbaaaaababbbbab
babababaabaababababaabbbabbaabbbaabbaababaababaaabaaabab
bbbbbaaaababbbbbbabbabab
baabaaabaaabbbabababbbab
bbaaaabaaaaabbbababbbaabaaaaabba
ababababbbaabbbbbabaaaba
bbbabbbabbabaaabbbbabbaa
bababbaaabbbbabaabbaabbbbaabbabbbbaababaabbbaaabbbabbabb
aabababaabbabbabaababaab
babbbababbbaaabaabbaabba
bbabaababbaaaaaabbbbbbbb
baababbaabaabaabbbbbabab
baaabbaabbaabaababbaabbbbaaaabababbbbabbbbbbabba
abbabbaaabbbbabaabbbbaabababbbbbaaabbbababbaabaabbbbbaba
abbaaaaaababaabbaababababbbaabaabaaaabbabbbbabbababaaababbbbbabaabbaabba
aabbabbbabababaabaaabbbb
bbbabbbababbbbaabbbbbabb
abababaababaabbbbaabaabb
aaababbababbabaabbaabaaaabababbbaaababbaababaabaaaabbbbabbabaaaa
baabbababbbabbbabbbabaab
aaaaaabbbaabbaaaaabbbbbaaababbbabaaaaaaa
bbaababbabaaaabbaaabbaaa
bbaabbbbbaabaababaabaabbababbbba
abbabbaabbaaaabbaaababbabbabaabaaabbbbbabaabaaaa
baaaabaabaaabbaaaabaabba
aaaabbbbaababbbabbabaaaabbbabaab
aaabbbbbbbbbbaaaabbabbbabaaabbbb
babbbbaabaabaaaabbabbababababbaaababbabbbbbabaaabaaaabaaaaabaaaabbabaaaa
bbabaaaaababbaababbbbbab
babababaaaabbbabaaaaabbb
abbbbabbababbaabaaaabbabaabaabababbbabba
bbabbbbbbaaabaaaababbaabbaababab
baaaababbbaaababbaaabbbb
bbabbaabaaabbabababbbaaa
abbabbaaaabbabbaababbbba
bbbabbbaabbaaaabbabbbbab
bbaabbbabaaaabbaabbaabbbaabaaaababbaababbbbaabababbbabbabbbbbaba
aabbabbabbabbababababbbbabbaabba
aabbbaaabbabbaaaabbbbbab
baaaabaaabaaaabababaaabb
bbaabbbaabbaaabababaaaaa
baaaabaabbabbaaababbbaaa
bbaabbaabaabbabaaababbab
babaabbaabbaaaaaaaaaaaaa
bbaaabaabbabbaaaaabbaabb
aaabaaababbbabbbaaaababababbaababaabbbba
abbaaaabbbaabbbaaabbabaa
ababaaabaaaababababbbaaaaaaabbaa
babaabbaaaaaabbaaaaaaabbbbaabbaabaabbabbbbbaabab
aababbbbaaaabbababaaabbbbaabbaaabbbbbaaaaabbbaabbabaabaa
abaabbbbbaabbaaaaababbbaabaaaaaaababaaaa
babbabaabbaababbabbaaaabbaaabbbb
baaaabaaabaabbbaaaaabbabbbabbaababbbaaaa
abbbbababaabbaababaaaaab
babaaaaababbbabbabaabbab
bbaaaabbaabbaaabbbaaaaba
aabbaaaabaabbaaabaabbaabbaababab
bbaabbaabaabbabbaaabbbabbbbbabbababaabab
bbabaabaaaabbabaabaaaaab
bbabababbabaabbabbbabaaaabbbaaaaabaaabaabbababba
abbbbabaabaaabbbbabaaaba
ababbaaaaabbabbabbbbaaab
aaabbbabbbaabaabababaabaabbaaaaaaaaaaabbaaabbbbbbbababba
aaabbaaaabbbaababababababababbbbbabbbbabbbaabbbbaabbaaab
bbaabaaaababbbaabbbabbaa
abbaabaababbbababaabababababbbaa
babaabbbaaabbbabaaabbbbbaababbbabaabbbbaabaababb
abbabbbaaaaaabbababbbbaabbabaaabbababbaaaaabbabbababbbba
aaababbaababaababaaabbab
ababaabbbbbbbabbaabbbbab
aababbbbbbbbbaaaaaabaaba
abaaaaaabbbbaaaababaaabb
abbbaabaaabbaaabaaababbbbabaababbbaaaaab
bbbbabaabaabbaababbbabbb
bababbaaabbaababbabaaaaa
ababbababaaabbaababbabbabbaabaabbbbbabaaabababaaaaaabababbbbaaba
baabbabbbbabbaabbbbabbaa
abababaabbaaababaabaabaaabaabababbabbbba
abaaaaaaaaaabbabbababaaa
aaabaabbaaaaaabbbbbbabba
baaabaaabaababbbaaabbaaa
bbbbbabbbaabbabaaabbabaa
bbababbbbaabaaabaaabaaba
aabbaaabaaaabbabbbabaaabbaaabbba
babaabbaaabbaaabbabbbaba
abbabbabbaaaabbabbbbbaba
aaabaabaabbbababbbababab
ababbaabababbaabbbabbabb
aabaabaaababaababbaabaababaaabbaababbbbbbbbbbaab
bbabaababbaaaaaaaaabbabababaaaaababbbaaa
baabaaabaabaabaabaababbaaaaababb
abaaaaaaaaabbbabaaaaaaab
aaaabaabbbbbaabbabbbaababaaaaaabaababbbaaabbbaabaaaabbba
bbabaababbaaababbababbbb
abaaabbbbaaabaaababaaaaa
abbbaaabbbbabaaabaaaaababaaaaaababbbabbbbabbbbab
bbbabaaaabbbbbbbababbabababbaaba
babbbbbababbbbbbaabbbabb
bbaabaabbbabaababaabbbba
bbabbaabbabaaaababbababb
babababaabbaaababaaabbbb
ababbbaababbaaaaababbabb
aaaabbababbaaababaababab
baabaababbbabaaabaabbbaaabbababbbbbbabba
bbbaabbbbbababbbaaaaabbaaaaababa
abbbbaabbbaaaaaababaaaaa
bbaaababaabbbaaaaaaabaaa
bbababbbaababbbbbabbbabb
bbabbaaabaaaaababbaaabaaaabbaaaaaaababaa
bbabbaaaabbabbbaabaaaabbaabbabaa
baabbabbaababbbbbabbbaab
ababbaabaabaaaababbababb
babaabbbbbbaabbbbbbbaabbbbabbbaabaabbbaaabbbbbbaabbbbbab
abbaaaabbaaaaabaaaaabbababbabbaaababaabbbbbbbbabaaabbbaa
aabbbbbaababbababbaaaaba
abbababaaabababaabbaaabb
bbbaaababbaabbaabbaabbabaaababbbbaabbbbbabbbbaaaaabaaaaa
abbabbaaaabbabbabaaabbbb
abaabbbbbaabaaababbaaabb
aabaabaaabababbbbaabaabb
aaababbababaabbaabbabbaaababbbbbabbbbaaa
babaabbbaabbbaaaabbabaab
baaabbaabaaaabbaabbbabaa
bbabbbbbbabaabbbbbbaabbababababbbaaabaabbababbbabaabbbbbbbababaa
baabbaaababaaaabbbaaabba
bbabbaaaaababbbabaababaa
bbbbbbabababbabaaabaabbbbaaaabbaababbaaaaaaababbbaaababa
abbbbaabaaaababbaaaabbbaabbbbbab
abbabbabaaaaabbaababaabaaaaaaabaabaabbabbaaababa
bbbababbabaabaaaababbbaaababbabaabbbabbaabbbaaaa
bbbaabaaabaaaabbbabaabaa
aaababbaabbbbabaabbaabba
baaababbabaaabbbabbabaaabaabaaaaabbbbbba
ababbaababbaaaaabbbbabab
bbababbbabbbaaabaabbabbbaabaabab
ababababbbaabbbabbaaaaba
babbabbaaaababbaaabbaaba
abaaaabaabbaaaaaaabbbabb
babbaaaababbabbabababbbb
bbabbbbbbbababbbabbbaabb
baabbabaaabbbbabbbaaaabaabaaaaabbbabbbbbaabaaaabbaaaabbaabbaaaaabbbbbabb
abaaabbbabaaaabbbbabbbaa
bbbabbbabbaababaabbbabab
abaabaabaabbbaabababbbab
babbaaaabbbbaabbbabbbababbbabbabbaaaaabb
baabbaaaaabbabbbbbbbabaaaaababbaaababaaa
abbbbabbbaaaabaabbbbbbaa
bbbbaaaaaaaaababaabaaaaa
baaababbabbbaabaababbbba
bbaabbbaabaabaabbbbaaaab
abaabbbababaabbbabbbabba
baaabbaaabbbbabbbbabbbba
aabaaababaaabaaaaaaababb
baaabaababaabbbbabbaabbbbababbabbbaaabaabbbbabbb
aaaabaabbaabbaabbbaaabbb
aaabbbababbbbabaaabbbbbb
bababbaabbaabaabbbbbabaabbabbbbbaaabbaabbabaaaaa
bbbabaaababaabbabbababba
baabbaabaabbaaaabbbaaaab
abbaaaabbbbbaabbbaaaabaabababaaa
baaaaabababababbaabaaabb
abbbabaabbbbabbbbabababbaabaabbabbaaabbbbaabaababaabbabb
aabbaaabbbbababaabaaaabbabbaabbbaaaaababbaabbbba
baabbaabaaaaaabbbabbabbababbaaaaabbbabbb
bbbababbabaabaabaabaaaabbbbaabaababbbabaaaaabbbabbbabaabbbbaaaab
abaabaabbaabbababbbbbaba
aaabbbbbbbbbbabbababaabaabbbabba
bababbaabbbbbabbbbaababbbabbbabaabaabababbabaaabbbabbaba
abaabaaabbbbaaaababbbababbbbaaab
bbaabbabbaabbaabbabaaabb
abaaaababbbaabaaabaaaabbbabbbbabbbbbbaab
aabbaaabbbaabbbbaabbabab
baaababbbbaababbbaaaaaaa
ababbaaabbabaaabaaaababa
bbabaabbaaabbbbbabbbbbbbabaabaaaaabaaaaa
baabbababaaaababaabaaabaaababbbababbbbbabbabbbab
abaaabbaabbaaaaabbbababbaababbab
baaaaaabbbbaaaaabbbbbbaaabbabbba
ababbaaabbaabbabaabbabaa
aabaaababbbaaabaabaabaaaabbaababaababbabaabbabaa
abaaaababbabaaaaaababbbbbbababaa
babaabbabbbbabaababbabab
abaaaaaaabbbbbaababababbbaaabaabbbbbaaaaaaababaaabaaaaab
aaaabbabbaabbaabaaabbbbbbabbababababbbba
bbbbabaabbaababbbbbbbaba
abbabaaabaaababbbbbbabab
baabbabbabaaaabbbbbbbaab
bbaabaaaaabbabbabababbbb
bbabaaaaaaaabaabbbbbbbaa
abbbbabbbbaaaaaabababbba
bbbbbbabaaaabaabbbbbaaaaaaabbaab
babbabbaabbbabbababaabababbbbbbaabaababaaaabbbaaabbbaaba
abbbbbaabaaababbaaababbb
bbbaababaabbabbababaabaaaaaabaabababbbbaabbbbbababababbbbbbaaababaabaabb
baabaaabbababbababbbbbbabbbbaaabababbbab
abbabababababbababababba
abbabaaaaaabbbbbaababbbbaabaaaababaaaababbabbbba
abaaaaaaaaababbababaabaabbbaabbbaaababbbbbbaaaaabaaabbaa
bbbbbaaabaababbbbabbbbab
bbaaababbabaabbbbabababbabaabaaababbbbbababbaabb
aaaabaabbababbaabbabbbaa
aaaabbbbabbbaaababbabaaaabbbbabaabbbbabbababbbabbabbbaabaabbababbabaabaa
babbabbaaabaaaababbababb
aaabaabbabbbbabbbbbaabab
ababbbaaabbabaaabababaab
abbbbababaaaaabaaaababbb
ababbbbbbbabaabbaaabaaaa
abaabbbaabbbaabaaabaaaaa
bababbaaaaabaabbabaabbab
bbabbaaaabaababaaaaababa
babaabbaabababbbaabbbaab
babbbabaaabbabbbbbaaabbb
baaababbbaabaababbabbaaaabaaaaaabaabbbbaabbababb
babbbbbbbbabbababbbbaaaabaabaaaaabababaabbbbbbbaaaaaaaaa
baaabbaabaabbabababbaaab
bbbababbabaabbbbbabbbbab
aabbaaababbaaaabbabbaabb
bbaaaaaabbbaabaaabbbbabbbbbababbaaabbbbbbbbabaaaabbbabab
abbababababababaabaaaaaaaaababab
baabbabaaaaaababbabaaaaa
aabababaabaabaaaabbbbbba
abaaabbaabbabababababbbb
abbabbaaabaaaaaabbbababbaababababbbaabaabababbbabbababbaaabbbaba
babbbbaaabaaaaaabababbabaaaabbbaabaabbbaaabaabbb
baaaaaabbaaabbaaaaabbbbbbbbbbaab
abaabbbaaabababaabbbbbbbabbaababbbabbaabaabbabbbbbababaabbbaabab
bbaaaabbaaabaabbbbabaaaaabaaabbbbbabaaaaaabbbbaa
abaabaabbababababbbbabba
babababbbbaabbaababbbbbbbabaabbababbbbbbbaaaaababababbba
ababbbbabbabbbaaabbaaaaaabbbabaabbbbbabb
baabaaababaaaaaaaabababb
aabbbaaaababbbaabbabbaaabbbaaaaaababbbab
abbabbbabbaabaaaaaaabaaa
aaaaaabaaaabbbabaabbbaab
aaaaababbaaabaaabaababbabaaaabbbbaaababababaababaabbaabb
babbbababaaaabbbababbbaaabbbaaabaabbaaaaaaaabbabaaabbaab
bababbabaabbabbaaabaabab
babbbababbabaabababbabab
bbabbaabaabaabaaabbabbbb
abbbaaabbbaabaababbabbbaabaabbaa
aaaaaabbbbbabaabbabbbbabbbbbbbbbabbabbbbbabbabab
aababbbaabaabaabbbbbaabbaabaabbbbbbabbbaababaaaa
baaabaaababbbbbbaabaabbbaabbabbbabbaaaaabbaaabbaaabbaaba
baabbababaababbbabababaabaaabbbaaabbbbaa
bbabaabbbaaaaaabbbbabbbabbabbbbbabaaaabbbaabbbbaabbabaab
baaaaaababaaaaaaaaaababa
aabaaabababbbbbaaaaaaaaa
abababaaabaaabbaaaaabaaa
baabbaababbaaaababaaaabaabababbaabaababbaabaaabb
babbbababbabaaabaabbbbbabbabaaaabaaabbbb
abaabababbbabbbaaabbbbab
ababaababbababbbabbaaaaaaababbbaaaaabbaaabaababb
aaabbbabbbaabaabbbbaaaab
baaabbaaabaaaabaaabbbbab
bbbaabaabbabaaabaababbbbbabbaaaabbaaabbb
bbabaaababaabaaaabbbaaabababaabbabbbabbbabbaabba
ababaabbabbaaaaaabbbbbaabbabaabbbbbaabaabbbabaabaaaababb
babbbabaabbaaababbaaabba
baaaabbaaabbabbbbabbbbabbbabbaba
bbbbbaaaaaaaababbaaaabbaabaaabab
bbaabbaaabbbbabbbbbbaaab
ababaabaabaaabbbabbbabab
bbaabbaabaababbababbbaaa
bababbaaaabbaaabbaaaababaaaaababbbabbabbbababbbb
baaababbbaaaabbaaaabaaba
bbbabbbabbaaaabbbbbaabbaabbbaaabbabbabbb
bbaabbbbbbaaabaaaabbaaaababbabab
abaabbbaabaaaaaaaaaabaaa
aababbbbaababababbbabaab
aabbaaabaaabbbababbabbabbabbaaaaaaabbbaa
baabbabbabaaabbaabaabbaa
bbaababaaabbbbbaabbabbababaabbbbababbabbabbbbaaa
babababaaaaaababaabbbaba
bbababbbbbbbbabbabaabbbbbbababbabbbabbbb
aabababbaabaaababbaabbbbbbaaaaaaabbbbaaaababbabbaaaaaaaaabbabababbbbbbbbaaaaaaaaaaaaaaba
abbbbbbaaaabbbbababaaaba
baabaaabbaaaaaababbbbbba
bbaabbaaabbbbbaababababbbaabbbba
babbbbaababaaabbaaababaabbbabbaabaaabbabbabaaaaabbabbbba
babaaaabbabaaaabbaaaabbaaabbbbab
ababbababaaaabbaaabababb
bbbbbbababababaabaabbbba
bbaababbabbaaababababbba
aaababbabbaaabaaaabbabbaaaaabaaabababaaa
abaabaaaabaabababbbbaaba
ababababaaababbababaaaaa
bbabaaabaababaaabbabaaabbababbab
baaabbaaaabaaabaaaabaabbbaaaaabaaaaaabaababaababbaaababaabaabbaa
babbbbbaaabbabbbbaaaabbaaaabbbbbaaabaaba
aababbbaaaabbbaaababbaaabbaaaababbabaabbbaaababababaaaabaabbaaaa
bbbaabbbbbaaaabbbbaaabaaaabbabbabababaaa
abbaababababbaaabaaaabababbbaababbbaabbbabbabaab
aabbbaaaaabbaaabbbbbaaab
baaaababaabbabbbaaababab
abaabbbababbbbbbbbaaabba
babbbbaababababbaaababbb
baaababbaabbbababbaaabbbbbaaaaabbaaaaabbabbaaaaa
bababbaabbaababaaabbaabbabbaaabbbabbaaabbabbbabbaaabbaaa
bbaabbabbabbabaabbaabababaabbabbaabbaaaaaababaaabababbbb
baabbaabbbaabbaabbbbbaab
babaaaabbbbbabaabbaaabba
bbbabababbbaaabaaaaaababaaabbabb
bbababbbaabaaaababbbbaabbaaaaababbababbaaabaaabbaabbbbbb
aaaaabbaabaaabbbbabbaabb
abbbbaabaababbbbabaabaabbbbbbbbb
abaaaabaaaabbbabaaabbbbbbbbbaabababbaabb
bbbbaabbaabaaaababbabbababbabbabaababaaa
abbbaaababbaaabaabbbabba
bbaabbaaabababaaabbbabba
aabababaabbbbbaaaaaaaababbbbbaabaababbab
bbabbaababbaababaabbbbab
bbabaaaaaaaaabbababbbbbbbbaaaabbaabaabbbbbbbbabaabbbabbbbababaab
aaaaaabbaaababbaaaabbaab
bbaababbabaaaababaabaaabaaaaabaa
aaababbabbbabaaaabbbaabb
babbbbbbbbabbbbbaaaabaabbabaaaaabbbbabbb
baaabaabaaabbbabababbbab
aabaaabaaabaabaaabbbaaaa
abaabbbabbabaababbbbbaaaababbbabaabbaabbbbbabaab
aabbabbbababbabaabbbabbb
bbbaaabaabababbbbbbbabab
bbbbaabbbbbbaaaaaaaabbabbbabbbbabbbaaaab
abaabaababaaabbabbabbaba
bbbabbbaaaaabaabaaaabbbbaababaabababaaab
aaabaaabaabaaaabbbaaaaabbabbabaabbabababbaabbbabbaaaabbbbabbbbaaabaabbaababbbabbaaaabbbb
bbbababaabbbbabaababaaab
babaabbbabaabbbaabaaaabbabbbbbba
bbaaaabbaabaaaababababba
abbaaaaababaabaababbbaaabaabbbabaababaaa
aabbabbbabbaaababaaaaaabaabaababaabbbabb
bbaabbaabbabaaabababbabb
baabbaaaaabbabbbaabbaaba
aaaabbbabbaabbbbbaaaaabaabaaaabbaabababaabbbbaaaabbaabbababbaabaaabaaaab
bbbabbbbaababbabbbbbbbaabbaaaabaaaabbbababbbaabbbaabaabaabaaaababbbbbabbaabbabbb
aaabbababbaaaabbbaaaabbabbaabaabbaababab
bbaabbbaababaabbbabbaaba
abbbaababbabbaababbbbbaaabababbbbbbaaaaabbbbbbbbbbbbaaba
ababababbaaaaaabbbbbaaba
bbbbbaaabaaaaaabaaababbaaabaaaaa
aaaabbababaababaaaabbbabababbaabbbaababbabbbbbbaaaaaaaabbbbabbbbbbbbabab
aabaabbbbabbbabaaabaabab
aabaabbbababaabbbbaabaabbabbabaaabbbaaaabaabaabb
baaaabbabbbabbbabababaaa
baabaaabbaaaaababbbabababbaaabbb
babababababbaaaabaaabaabbbbbbbbb
abbbbaabbaaaababbaaaabbbaababababbbbbbbabababaabaabaabba
bbbabaaaaabbbbbaabbaabba
abababbbbaaababbaaabbabb
abaabaabbabaaaabababbbaaaaababaabbbaaabb
aaaababbbaabbaabaaabbaabbbbabbbbaaabbaaabbbaaaab
aaababbabbbabbbababababaabbaabaa
bbaaaabbaaaaaabaaabababb
abbbbaaabbbbbabbbaabaabbaaababaaabaabaaabbaabaaaabbbbbbbbbbbbbabababaaab
bbbbaabbaabaabbbaabaaaababaaabaaaaabaaba
abbabaaabaaaababbbbbbbababbbbbbbabbbaaaa
bbaabbbbababaabbaaababab
aabaabaaaaaabaabbbababaa
aabaaabaabbbaaabbbbababaababbaab
babbbbbaabababaaababaabbaabbbaab
bbabbababbaabbbbbbaaabaaaaababbaabbbbbbbaabbbbab
bbaababababbbbbabbabbaaababbbabb
aabababaaababbbabaaaaabb
babbaababaabaaabababbaababababaababbbbbb
bbbaabbbbbbaabbaabbbaabb
bbabbaaabbaababbaabbabbbbaabaabbaabbbaba
abbbbbbbabababaabaaabbab
abaaabababbbbbbaabaaabbabaaaaababbbbaaabaaaabaaabbaaabab
abbaabbbabbbbabaaabaaabb
bbababbbabbabbbabbbabbbbabbabbabbabaaabaaabaabbbbbbaaaaa
baaaabaaabaaabbaabbbabbb
aababbaaabbbabaaabaaaaabbbbbabbb
aaabbbbbaabbabbaaabbaaaaaaabbababbaabaabbbbaababaabbbabbbbabababbabbbabb
bbbbbababbabaababbaababaabaababaaaababbbaaabbbaabaabaababbababab
aaababaaaabaaabbaaabaaba
baababbbaaaabbbbbbbbabab
abababbbbbabaaaaaabbbaaaabbabaaaababbbab
ababababbbbbbaaabbaabbbaaabbbbbaababbbbbaaaabaaabaaabbbbbbaaaaabbabaaaaa
aaaaaaaaabaaabaaabbabaabbaabbaaaabbbabbabbababbbbbababaabbbbabab
baaabaaaabaaaabbbbaaaaab
babbabbaaaabbabaabbbaaaa
abbbaababbbababaaababbbbbabababbbbaabbabbbbbbbaabbbbbaba