diff options
author | Jack Sangdahl <[email protected]> | 2024-12-24 23:02:46 -0700 |
---|---|---|
committer | Jack Sangdahl <[email protected]> | 2024-12-24 23:02:46 -0700 |
commit | d1869cdafed42f453c70925df04ffa6ef5f76997 (patch) | |
tree | 57e67bcc4c18c427a94285dfc07b512b9e1dcc99 | |
parent | 376cefbd0eaf9e2581554fcedce3294bbbee91bd (diff) | |
download | aoc-master.tar.gz aoc-master.zip |
-rw-r--r-- | 25_2024.py | 37 | ||||
-rw-r--r-- | data/25_2024.txt | 3999 |
2 files changed, 4036 insertions, 0 deletions
diff --git a/25_2024.py b/25_2024.py new file mode 100644 index 0000000..faad597 --- /dev/null +++ b/25_2024.py @@ -0,0 +1,37 @@ +input = "data/25_2024.txt" +data = open(input).read().strip() +shapes = data.split("\n\n") +keys, locks = [], [] +for shape in shapes: + G = shape.split("\n") + rows = len(G) + cols = len(G[0]) + G = [[G[r][c] for c in range(cols)] for r in range(rows)] + is_key = True + for c in range(cols): + if G[0][c] == "#": + is_key = False + if is_key: + keys.append(shape) + else: + locks.append(shape) + + +def fits(key, lock): + rows = len(key) + assert rows == len(lock) + cols = len(key[0]) + assert cols == len(lock[0]) + for r in range(rows): + for c in range(cols): + if key[r][c] == "#" and lock[r][c] == "#": + return False + return True + + +ans = 0 +for key in keys: + for lock in locks: + if fits(key, lock): + ans += 1 +print(ans) diff --git a/data/25_2024.txt b/data/25_2024.txt new file mode 100644 index 0000000..6b1883b --- /dev/null +++ b/data/25_2024.txt @@ -0,0 +1,3999 @@ +..... +.#..# +.#.## +.#.## +.#.## +##### +##### + +##### +##### +##### +##### +.###. +.#.#. +..... + +..... +..... +..#.. +..#.. +.##.# +.##.# +##### + +..... +..... +.#... +.#... +.#.#. +##.#. +##### + +..... +..#.. +.##.# +.##.# +.##.# +##### +##### + +..... +.#... +.#.#. +##.#. +##.#. +####. +##### + +##### +##### +.#### +.#.#. +...#. +...#. +..... + +##### +###.# +###.. +###.. +.#... +..... +..... + +..... +..... +.#... +.#... +.#.#. +.#.#. +##### + +..... +#.... +#...# +##.## +##.## +##### +##### + +##### +##### +#.#.# +..#.# +..#.# +..#.# +..... + +##### +##### +#.#.# +#...# +....# +..... +..... + +..... +...#. +...#. +.#.## +##.## +##.## +##### + +..... +....# +.#..# +.#..# +.#..# +###.# +##### + +..... +.#... +.#..# +.#..# +.##.# +.##.# +##### + +##### +.#### +.#### +.#.#. +.#.#. +...#. +..... + +..... +.#.#. +.#.#. +.#.#. +.#.## +##### +##### + +..... +#...# +#...# +#.#.# +#.#.# +#.### +##### + +##### +##### +.###. +.###. +.##.. +..#.. +..... + +##### +#.#.# +#.#.# +#.#.# +..#.. +..... +..... + +..... +#.... +##.#. +##.#. +##.#. +##.## +##### + +##### +##### +##### +##.#. +##.#. +#.... +..... + +..... +..... +.#... +.#... +.#.#. +.###. +##### + +..... +..... +#.... +##... +###.. +####. +##### + +..... +#.... +#...# +#...# +#.#.# +#.### +##### + +##### +##### +.#.## +...## +....# +..... +..... + +..... +#.... +#...# +#...# +#...# +#.#.# +##### + +..... +.#..# +.#..# +.#..# +.##.# +.#### +##### + +..... +..... +..... +...#. +#..## +#.### +##### + +##### +#.##. +..##. +...#. +..... +..... +..... + +##### +##### +#.### +..#.# +..#.. +..#.. +..... + +##### +####. +####. +.#.#. +.#... +..... +..... + +##### +###.# +.##.# +.##.. +..#.. +..#.. +..... + +..... +...#. +...## +#..## +##.## +##.## +##### + +##### +##.#. +.#.#. +.#.#. +...#. +...#. +..... + +..... +#.... +#.... +#..#. +#.### +#.### +##### + +##### +##### +.#### +.##.# +..#.. +..... +..... + +##### +##### +##### +#.#.# +#.#.# +#.#.# +..... + +##### +.##.# +.#..# +.#..# +.#... +.#... +..... + +##### +##### +#.##. +..##. +..##. +..#.. +..... + +..... +..... +..#.. +..#.. +.###. +.#### +##### + +##### +##### +.#.## +.#.## +.#.#. +.#... +..... + +##### +.##.# +.##.# +.##.# +..#.# +....# +..... + +##### +##### +##.## +#...# +#.... +..... +..... + +..... +#.#.. +#.#.# +#.#.# +###.# +###.# +##### + +##### +##### +##### +.##.# +.##.. +..#.. +..... + +..... +.#.#. +.#.#. +##.## +##.## +##.## +##### + +##### +##### +##### +###.# +#.#.# +#...# +..... + +##### +####. +#.#.. +#.#.. +..#.. +..#.. +..... + +##### +##.## +##..# +##... +##... +#.... +..... + +##### +#.#.# +#.... +#.... +..... +..... +..... + +##### +##### +#.##. +#.#.. +..... +..... +..... + +..... +..... +..... +.#... +.#.#. +####. +##### + +##### +##.## +.#.## +...## +...## +....# +..... + +##### +##### +.#### +.#.## +.#.## +....# +..... + +##### +###.# +###.. +##... +##... +#.... +..... + +##### +#.### +..#.# +..#.# +..#.. +..... +..... + +##### +.#.## +.#.## +.#.#. +...#. +...#. +..... + +..... +..... +.#... +##.#. +##.#. +##.#. +##### + +##### +##### +#.##. +..#.. +..#.. +..#.. +..... + +..... +..... +...#. +...#. +.#.#. +.#.## +##### + +##### +###.# +###.# +###.# +.#..# +.#..# +..... + +##### +##.## +##..# +.#... +.#... +..... +..... + +##### +##### +##### +#.### +#.#.# +#...# +..... + +##### +##### +.##.# +.#..# +....# +..... +..... + +..... +#.... +#...# +##.## +##### +##### +##### + +..... +..#.# +#.#.# +#.### +#.### +#.### +##### + +##### +##### +####. +.#.#. +...#. +..... +..... + +..... +.#.#. +.#.#. +.#.## +##.## +##### +##### + +##### +##### +##### +.#### +.#### +.#.#. +..... + +..... +.#... +.#.#. +.#.## +.#.## +.#.## +##### + +##### +##### +##### +##### +.##.# +.#... +..... + +##### +.#.## +.#.## +.#..# +.#..# +..... +..... + +..... +..... +..... +#.#.. +#.##. +####. +##### + +..... +.#.#. +##.#. +####. +####. +####. +##### + +..... +....# +#..## +#..## +##.## +##.## +##### + +##### +#.### +...## +...## +...#. +...#. +..... + +..... +..... +..#.. +..#.. +.##.# +##### +##### + +##### +.###. +.###. +..#.. +..#.. +..... +..... + +..... +..... +...#. +..### +..### +.#### +##### + +##### +##### +.#### +.#### +.#.#. +.#.#. +..... + +##### +#.#.# +#.#.# +#.#.# +#.#.# +#...# +..... + +##### +##.## +#..## +#..## +#...# +#...# +..... + +##### +##### +.#.## +.#..# +.#..# +.#..# +..... + +##### +##### +##### +####. +##.#. +#.... +..... + +##### +##### +##### +###.# +###.# +.#... +..... + +..... +..... +.#... +.#.#. +.#.#. +##.#. +##### + +##### +.###. +..#.. +..#.. +..#.. +..... +..... + +##### +#.### +#.#.# +#.#.. +#.... +..... +..... + +..... +..... +#.... +#.... +##.#. +####. +##### + +..... +..... +..#.. +..#.. +..##. +#.### +##### + +..... +..#.. +.##.# +.##.# +###.# +###.# +##### + +..... +.#... +.#... +###.. +###.# +##### +##### + +..... +..... +.#..# +###.# +##### +##### +##### + +..... +...#. +..##. +..##. +.#### +.#### +##### + +##### +.###. +.##.. +.##.. +.#... +.#... +..... + +##### +####. +#.##. +...#. +..... +..... +..... + +##### +.#### +.#.## +...## +....# +....# +..... + +##### +.#### +.#.## +.#.## +.#..# +.#..# +..... + +..... +..... +#..#. +#..#. +##.## +##### +##### + +##### +###.# +###.# +.##.# +.##.# +.#..# +..... + +..... +..#.. +..#.# +..#.# +.##.# +###.# +##### + +..... +.#... +.#..# +##.## +##### +##### +##### + +..... +..#.. +#.#.. +#.##. +#.##. +##### +##### + +##### +###.# +##... +.#... +..... +..... +..... + +..... +..#.. +.##.. +.###. +.#### +##### +##### + +##### +####. +.###. +.#.#. +.#... +..... +..... + +##### +#.### +#.##. +#.##. +..#.. +..... +..... + +##### +##### +.#### +.#.## +.#.#. +...#. +..... + +..... +....# +#..## +#..## +#.### +#.### +##### + +..... +.#... +.##.. +.##.. +.###. +####. +##### + +..... +..... +#.... +#...# +##.## +##.## +##### + +..... +..... +..#.. +.##.# +.##.# +###.# +##### + +..... +..... +#.#.. +#.#.. +####. +##### +##### + +##### +.#### +.#.#. +.#.#. +..... +..... +..... + +..... +..... +...#. +#.##. +##### +##### +##### + +##### +.##.# +.##.# +.#... +..... +..... +..... + +..... +#.... +#.#.# +#.#.# +#.#.# +#.### +##### + +##### +##### +#.##. +#.##. +#..#. +#..#. +..... + +##### +##### +###.# +###.# +#.#.# +..#.. +..... + +..... +..... +.#... +##... +##.#. +##.## +##### + +..... +.#... +.#..# +.#..# +.##.# +.#### +##### + +##### +#.##. +#.##. +..##. +...#. +...#. +..... + +..... +#.... +#.#.# +#.### +##### +##### +##### + +..... +.#.#. +.#.#. +.#.#. +##### +##### +##### + +##### +#.### +#.##. +#.##. +#.#.. +..#.. +..... + +..... +.#... +.#... +.#... +.#..# +.##.# +##### + +..... +....# +....# +#...# +#.#.# +##### +##### + +##### +###.# +###.# +#.#.. +..#.. +..... +..... + +##### +#.### +#.### +#.#.# +#.#.# +..#.# +..... + +##### +####. +#.##. +#.##. +#.##. +...#. +..... + +##### +###.# +###.# +#.#.# +#.#.# +....# +..... + +..... +#.#.. +#.#.. +#.#.. +#.##. +#.##. +##### + +##### +#.#.# +..#.# +..#.. +..#.. +..#.. +..... + +..... +..... +..... +..... +...#. +#.### +##### + +..... +..... +..... +#.... +#...# +#.#.# +##### + +##### +###.# +.##.. +.##.. +.#... +..... +..... + +..... +..... +....# +#.#.# +#.#.# +#.#.# +##### + +..... +....# +.#..# +.#.## +##.## +##.## +##### + +##### +.#### +.#### +.#### +..#.# +....# +..... + +..... +..... +.#... +##.#. +##.## +##### +##### + +##### +##### +.#### +..##. +..##. +...#. +..... + +..... +..... +#.#.. +#.#.. +#.#.. +####. +##### + +##### +#.### +#.### +#.#.# +#.#.. +..#.. +..... + +##### +####. +####. +####. +.#.#. +..... +..... + +##### +##.## +##.#. +#..#. +...#. +...#. +..... + +..... +...#. +...#. +...#. +..##. +.###. +##### + +..... +..... +..... +#..#. +#..#. +##.#. +##### + +##### +##### +####. +.#.#. +.#.#. +...#. +..... + +##### +####. +.###. +.###. +..##. +..#.. +..... + +##### +.###. +..##. +...#. +...#. +...#. +..... + +..... +....# +....# +..#.# +#.#.# +##### +##### + +..... +..#.. +..#.# +..#.# +.##.# +.##.# +##### + +..... +#..#. +#.##. +#.##. +#.### +#.### +##### + +##### +#.#.# +#.#.# +..#.# +..... +..... +..... + +..... +.#... +###.# +###.# +##### +##### +##### + +..... +..... +#.#.. +###.. +###.. +####. +##### + +..... +.#... +.#..# +##..# +###.# +###.# +##### + +##### +#.### +#.### +..### +..### +...#. +..... + +..... +..... +..#.# +..#.# +.#### +.#### +##### + +##### +##### +#.### +#..## +#...# +..... +..... + +..... +.#.#. +.#.#. +.#.## +.#.## +.#### +##### + +##### +##### +##### +.##.# +..#.# +..#.# +..... + +..... +.#... +##..# +###.# +##### +##### +##### + +##### +##### +#.### +#.#.# +#.#.# +..#.. +..... + +..... +.#... +##... +##.#. +##.## +##### +##### + +..... +#.... +##.#. +##.#. +##### +##### +##### + +..... +..... +..#.. +..#.# +..#.# +#.### +##### + +..... +..... +#.... +#.#.# +#.### +#.### +##### + +..... +....# +.#..# +.#.## +.#.## +.#### +##### + +..... +....# +....# +...## +...## +#.### +##### + +..... +#.... +#.... +#...# +#.#.# +###.# +##### + +..... +..#.. +..##. +..##. +..### +.#### +##### + +..... +#...# +#...# +#.#.# +#.### +##### +##### + +..... +.#..# +.#..# +.#..# +.##.# +###.# +##### + +..... +#.... +#...# +#...# +#..## +##.## +##### + +##### +.###. +.###. +.#.#. +...#. +..... +..... + +##### +##### +.#### +.##.# +.#... +.#... +..... + +##### +#.### +#.#.# +#.#.# +#.#.# +..... +..... + +##### +##.## +##.## +#..## +#..#. +..... +..... + +..... +..... +..#.# +.##.# +###.# +###.# +##### + +##### +##### +###.# +###.# +#.#.. +..#.. +..... + +##### +#.### +..##. +...#. +..... +..... +..... + +##### +##### +.#### +.#.## +.#.## +...#. +..... + +##### +##### +#.##. +#.##. +..#.. +..... +..... + +##### +##.## +##.## +##.#. +#.... +..... +..... + +##### +###.# +##..# +#...# +#.... +#.... +..... + +##### +#.### +#..#. +#..#. +#..#. +#.... +..... + +..... +..#.. +..#.. +.##.# +.##.# +###.# +##### + +##### +##### +.#### +.#### +.##.# +..#.. +..... + +##### +#.##. +#.##. +#.##. +#..#. +#..#. +..... + +..... +.#... +.#..# +.#.## +.#.## +##.## +##### + +..... +..... +#.... +#.... +#.... +#.#.# +##### + +..... +.#... +##... +###.. +####. +##### +##### + +##### +#.#.# +#.#.. +#.#.. +#.#.. +..#.. +..... + +##### +.###. +.#.#. +.#.#. +..... +..... +..... + +##### +##.## +##.## +##.#. +##.#. +.#... +..... + +..... +#.#.. +#.##. +#.### +#.### +##### +##### + +..... +..... +..... +#..#. +##.#. +##### +##### + +..... +..... +..#.# +#.#.# +##### +##### +##### + +##### +##### +##.#. +#..#. +#.... +#.... +..... + +..... +.#... +.#..# +##.## +##.## +##.## +##### + +..... +..#.. +..#.. +#.##. +#.### +##### +##### + +..... +...#. +...#. +.#.#. +.#.## +.#### +##### + +..... +....# +#...# +#...# +##.## +##.## +##### + +..... +#.... +#.#.# +#.#.# +##### +##### +##### + +##### +###.# +.##.# +..#.# +..#.. +..#.. +..... + +..... +..... +#.#.# +#.#.# +#.#.# +#.### +##### + +..... +..... +..... +..... +#.#.. +#.##. +##### + +##### +##### +#.### +..##. +..##. +...#. +..... + +..... +..... +.#..# +.#..# +##..# +##.## +##### + +..... +#...# +##..# +##..# +##.## +##.## +##### + +##### +##### +#.### +...## +...#. +..... +..... + +..... +..#.. +.##.. +###.# +###.# +##### +##### + +..... +.#.#. +.#.## +.#.## +##.## +##.## +##### + +##### +##.## +##.## +##.## +#..## +#...# +..... + +##### +####. +####. +#.#.. +#.#.. +#.... +..... + +##### +.#.## +.#..# +.#... +.#... +.#... +..... + +..... +..... +#.... +#.#.. +#.#.. +###.# +##### + +##### +##### +.###. +.#.#. +.#... +.#... +..... + +##### +###.# +###.# +##..# +.#... +.#... +..... + +..... +.#..# +.#..# +.##.# +.##.# +.#### +##### + +..... +..#.. +.##.. +.##.. +.##.. +####. +##### + +##### +#.### +#..## +#...# +..... +..... +..... + +..... +..... +...#. +...#. +.#.## +##### +##### + +##### +.#### +.#.#. +.#... +.#... +..... +..... + +..... +...#. +.#.#. +.#.## +.#.## +.#.## +##### + +..... +....# +#...# +#..## +#..## +##.## +##### + +##### +.##.# +.##.# +.##.# +..#.# +..#.. +..... + +##### +##### +.##.# +.##.. +.##.. +..#.. +..... + +##### +#.### +#.#.# +#.#.. +#.#.. +..#.. +..... + +..... +.#... +.##.# +.##.# +.##.# +.#### +##### + +..... +..#.# +..#.# +..#.# +.#### +##### +##### + +..... +....# +....# +..#.# +..#.# +#.### +##### + +..... +#...# +#...# +##.## +##.## +##### +##### + +..... +...#. +#..#. +#..## +#.### +##### +##### + +##### +###.# +.##.# +.##.# +..#.. +..... +..... + +##### +###.# +.##.# +.##.# +.##.# +..#.# +..... + +##### +#.### +#..#. +#..#. +#.... +#.... +..... + +..... +#..#. +#..## +#..## +##.## +##### +##### + +##### +.#### +..### +..### +..#.# +..#.# +..... + +##### +##### +##### +##### +##.## +.#..# +..... + +..... +..... +....# +....# +..#.# +#.#.# +##### + +##### +##.## +##.## +#..## +#..## +....# +..... + +##### +##.## +#..## +#...# +..... +..... +..... + +..... +..... +..... +...#. +#..#. +#.### +##### + +..... +...#. +...#. +#..#. +#.##. +#.##. +##### + +..... +..... +.#..# +.#.## +##### +##### +##### + +##### +.#### +.#### +.###. +.###. +.#.#. +..... + +##### +##### +.#.## +.#.## +.#.## +.#..# +..... + +##### +##.## +##.#. +##.#. +#..#. +#.... +..... + +##### +#.##. +#.##. +#.##. +#.##. +...#. +..... + +..... +.#... +.##.. +###.. +###.# +###.# +##### + +..... +..#.. +#.#.. +#.#.. +###.. +####. +##### + +..... +#.... +#..#. +#..#. +##.#. +####. +##### + +##### +.#.## +.#.#. +.#... +..... +..... +..... + +##### +##### +##.## +#..## +#..#. +#..#. +..... + +..... +#.#.. +#.##. +#.##. +#.##. +##### +##### + +##### +.#### +.###. +..##. +..#.. +..... +..... + +..... +.#... +.#..# +.##.# +.#### +.#### +##### + +..... +#.#.. +#.#.. +#.##. +#.##. +##### +##### + +..... +.#... +.#... +.#..# +##.## +##.## +##### + +..... +...#. +...#. +#..#. +#..#. +##.#. +##### + +##### +##### +###.# +.##.# +.#..# +....# +..... + +..... +.#... +.##.. +####. +####. +##### +##### + +..... +..... +....# +.#..# +.#.## +##.## +##### + +##### +##### +###.# +.#..# +....# +..... +..... + +##### +##### +###.# +.##.. +.#... +..... +..... + +##### +#.### +#.### +#.##. +#.##. +#..#. +..... + +..... +.#... +.##.. +.##.# +.##.# +.#### +##### + +##### +#.### +#.##. +..#.. +..#.. +..... +..... + +..... +#.#.. +#.#.# +##### +##### +##### +##### + +..... +...#. +#..#. +#..#. +##.#. +##.## +##### + +##### +.#### +.#.## +.#.#. +.#.#. +.#... +..... + +..... +...#. +#..#. +#..#. +##.## +##.## +##### + +..... +..... +..... +...#. +.#.#. +.#### +##### + +..... +#.... +##..# +###.# +###.# +##### +##### + +##### +.#### +..##. +...#. +..... +..... +..... + +..... +#...# +#...# +#.#.# +###.# +###.# +##### + +..... +...#. +#..#. +#.##. +#.### +##### +##### + +..... +...#. +...#. +#..#. +##.## +##### +##### + +..... +#.... +##..# +##..# +##.## +##### +##### + +##### +#.### +#.### +#.##. +#.#.. +..#.. +..... + +##### +.#### +.#.#. +.#.#. +...#. +..... +..... + +##### +#.### +#..#. +#..#. +#..#. +..... +..... + +..... +#...# +#.#.# +#.### +##### +##### +##### + +##### +###.# +###.# +###.# +##..# +#.... +..... + +..... +..... +...#. +...## +#.### +##### +##### + +..... +#.... +#.... +#.... +##.#. +##.## +##### + +##### +##.## +##.## +##.#. +.#... +.#... +..... + +##### +##### +#.#.# +#.#.# +#.#.# +..... +..... + +..... +.#.#. +.#.#. +.###. +####. +##### +##### + +..... +..#.. +..#.. +.##.# +.#### +##### +##### + +##### +##### +.##.# +..#.# +..... +..... +..... + +..... +...#. +...#. +...## +#.### +##### +##### + +..... +...#. +#..#. +##.#. +##### +##### +##### + +##### +##### +##### +#.#.# +#.#.# +....# +..... + +..... +..#.. +#.##. +#.### +#.### +##### +##### + +..... +.#.#. +.#.#. +.#.#. +.#.#. +.#.#. +##### + +..... +#...# +#.#.# +#.#.# +#.### +##### +##### + +##### +##.## +##.## +##..# +.#... +..... +..... + +..... +...#. +...#. +.#.#. +.#.#. +####. +##### + +##### +##### +##### +.#.## +.#.## +....# +..... + +..... +#..#. +#.##. +#.### +##### +##### +##### + +##### +.##.# +.##.. +.#... +..... +..... +..... + +..... +.#... +.#.#. +.#### +.#### +##### +##### + +##### +#.### +...## +...## +....# +..... +..... + +..... +.#... +.#.#. +.#.#. +.#.#. +##.## +##### + +##### +#.#.# +#.#.# +#.#.. +..#.. +..#.. +..... + +..... +..... +.#.#. +##.#. +##.## +##### +##### + +##### +.#### +.###. +.#.#. +.#.#. +.#... +..... + +..... +..... +#..#. +#..## +##.## +##.## +##### + +..... +...#. +...## +...## +..### +.#### +##### + +..... +.#... +.##.. +####. +##### +##### +##### + +##### +##### +#.### +#..#. +...#. +...#. +..... + +##### +#.### +#.### +..### +..#.# +..#.. +..... + +##### +.#### +..#.# +..#.# +....# +..... +..... + +##### +##### +###.# +.##.# +.##.# +.#..# +..... + +..... +..... +#.#.. +#.#.# +#.#.# +#.### +##### + +##### +##### +####. +#.#.. +#.#.. +..#.. +..... + +##### +##### +#.### +#.##. +#.##. +..#.. +..... + +..... +..... +...#. +..##. +#.### +#.### +##### + +..... +...#. +.#.#. +.#.#. +.###. +##### +##### + +..... +..... +#.... +#.#.. +#.#.. +#.##. +##### + +##### +##### +##.#. +##.#. +#.... +#.... +..... + +##### +#.#.# +#.#.# +#.#.. +#.#.. +#.#.. +..... + +##### +.#.## +.#..# +.#..# +.#..# +....# +..... + +##### +##.#. +#..#. +#..#. +...#. +...#. +..... + +##### +##### +##.#. +.#... +..... +..... +..... + +..... +..... +...#. +#..#. +#..## +##.## +##### + +##### +##### +.#### +.###. +.##.. +..#.. +..... + +##### +.##.# +.#..# +.#..# +.#..# +.#... +..... + +..... +#...# +#..## +#..## +#.### +#.### +##### + +..... +#...# +##..# +##..# +###.# +###.# +##### + +##### +##.## +#..## +...#. +..... +..... +..... + +##### +##### +###.# +###.. +##... +#.... +..... + +..... +#.... +#.#.. +###.. +####. +##### +##### + +##### +####. +#.##. +#.##. +#..#. +#.... +..... + +##### +##### +.#### +.#.## +.#..# +....# +..... + +..... +..#.. +..#.. +..##. +.###. +.#### +##### + +##### +##.## +#..#. +...#. +...#. +...#. +..... + +..... +..#.. +..#.. +..#.. +.##.. +####. +##### + +..... +#.... +#.#.. +###.# +###.# +##### +##### + +..... +..#.. +..#.. +..#.# +#.#.# +#.### +##### + +..... +..#.# +#.#.# +###.# +###.# +###.# +##### + +##### +##.## +##.## +##..# +.#..# +....# +..... + +##### +.#### +.#### +.#### +.##.# +..#.. +..... + +##### +####. +.###. +.###. +.#.#. +..... +..... + +##### +##### +##### +#.### +#.#.# +#.#.# +..... + +##### +##### +#.### +#.### +..#.# +..#.# +..... + +##### +#.### +#..## +#..## +....# +..... +..... + +##### +##### +##.## +##.## +#...# +#...# +..... + +##### +##### +#.##. +#.#.. +#.... +..... +..... + +..... +..#.. +..#.. +..#.. +#.##. +####. +##### + +..... +..#.. +..#.. +..#.# +.##.# +###.# +##### + +..... +.#... +.##.. +###.. +####. +##### +##### + +..... +....# +...## +#..## +##.## +##.## +##### + +..... +..... +....# +#.#.# +#.### +##### +##### + +##### +.#### +.#### +..### +...## +....# +..... + +##### +##.## +##.## +.#.## +...## +....# +..... + +..... +...#. +...#. +#..#. +#..#. +#.##. +##### + +##### +##### +####. +####. +##.#. +.#... +..... + +##### +##### +#.#.# +#...# +#.... +#.... +..... + +..... +..... +..... +.#.#. +.#.#. +.###. +##### + +..... +...#. +...#. +...## +.#.## +##.## +##### + +..... +...#. +#.##. +#.##. +#.### +#.### +##### + +..... +#...# +##.## +##.## +##.## +##.## +##### + +..... +..... +..#.. +.###. +.#### +.#### +##### + +##### +#.### +..#.# +....# +....# +....# +..... + +##### +##.## +##.## +#..#. +...#. +...#. +..... + +##### +.###. +.###. +.###. +.#.#. +.#... +..... + +##### +.#### +.#### +.#.## +.#.## +....# +..... + +..... +..... +..... +.#... +.##.# +###.# +##### + +..... +..#.. +..#.. +#.#.# +###.# +##### +##### + +##### +.###. +..##. +..#.. +..#.. +..#.. +..... + +##### +####. +.##.. +..#.. +..#.. +..#.. +..... + +##### +##.## +##.## +.#.#. +..... +..... +..... + +##### +#.### +#.##. +#.##. +#..#. +#..#. +..... + +..... +..... +..... +..#.. +..#.# +.#### +##### + +..... +..... +#.... +#.#.. +#.#.. +####. +##### + +##### +##.## +.#.## +.#..# +.#..# +..... +..... + +..... +...#. +...#. +..##. +#.##. +#.##. +##### + +##### +.###. +.###. +.##.. +.##.. +..#.. +..... + +..... +#.... +#.... +##.#. +##.## +##### +##### + +..... +..... +.#... +##... +##... +###.# +##### + +..... +..... +#.... +##..# +###.# +###.# +##### + +##### +###.# +.##.. +.##.. +..#.. +..... +..... + +..... +..#.. +..#.. +.##.. +####. +##### +##### + +..... +..... +#..#. +##.#. +##.## +##.## +##### + +##### +.###. +.##.. +..#.. +..#.. +..... +..... + +##### +#.### +#.### +..##. +..#.. +..#.. +..... + +##### +##### +##### +##.## +#..#. +..... +..... + +##### +####. +###.. +###.. +###.. +.#... +..... + +##### +.#### +..##. +..#.. +..... +..... +..... + +##### +#.### +#..## +#..#. +#.... +#.... +..... + +..... +.#... +.#... +.##.. +.###. +##### +##### + +##### +#.### +#..## +#..## +#...# +..... +..... + +##### +##.## +.#.#. +.#.#. +.#.#. +.#... +..... + +##### +###.# +###.# +###.# +#.#.. +#.... +..... + +##### +##.## +##.## +##..# +#...# +#...# +..... + +..... +..... +..#.. +#.##. +#.##. +#.##. +##### + +##### +##.## +##.## +##.#. +#..#. +...#. +..... + +..... +..#.# +..#.# +..#.# +#.### +#.### +##### + +..... +.#... +.#... +.#.#. +.#.## +##### +##### + +##### +#.### +#..## +#...# +#...# +#...# +..... + +##### +##### +###.# +###.# +.##.. +..#.. +..... + +##### +####. +###.. +.##.. +..#.. +..... +..... + +##### +###.# +###.. +#.#.. +..#.. +..... +..... + +..... +..... +#.#.. +#.#.# +###.# +###.# +##### + +##### +##### +###.# +##..# +##... +.#... +..... + +##### +##### +##### +##.## +##..# +.#... +..... + +..... +..#.. +.##.# +###.# +###.# +##### +##### + +##### +#.##. +#.#.. +#.#.. +#.#.. +..#.. +..... + +##### +#.### +#.### +..##. +...#. +...#. +..... + +..... +..... +..... +.#..# +##..# +###.# +##### + +..... +.#..# +.#..# +.#..# +###.# +###.# +##### + +##### +##### +.##.# +.#..# +.#... +..... +..... + +##### +#.##. +#.##. +#..#. +#.... +#.... +..... + +..... +.#... +.#.#. +.#.## +.#### +##### +##### + +##### +.#### +.###. +.##.. +..#.. +..#.. +..... + +..... +..... +...#. +#.##. +####. +##### +##### + +..... +.#... +.#... +##..# +##..# +###.# +##### + +..... +...#. +..### +#.### +#.### +##### +##### + +..... +..... +.#.#. +.###. +.#### +##### +##### + +##### +####. +####. +####. +##.#. +.#... +..... + +##### +.#.## +.#.## +.#.## +.#..# +.#... +..... + +##### +####. +##.#. +##.#. +.#... +.#... +..... + +##### +###.# +#.#.# +#...# +#...# +..... +..... + +##### +.###. +.#.#. +.#.#. +.#... +.#... +..... + +##### +##### +###.# +.##.# +..#.# +..... +..... + +##### +##### +##.## +#..## +....# +..... +..... + +##### +#.### +#.#.# +#...# +#.... +..... +..... + +..... +.#... +.#..# +.##.# +.##.# +.#### +##### + +..... +..... +..... +#..#. +##.## +##.## +##### + +##### +##### +##.## +#..#. +#..#. +...#. +..... + +##### +###.# +###.. +.##.. +.##.. +..#.. +..... + +##### +##.## +##.## +#..#. +#..#. +...#. +..... + +..... +.#... +.#... +##... +##.#. +####. +##### + +##### +#.### +#..## +...## +....# +..... +..... + +##### +##### +#.#.# +..#.# +..#.. +..#.. +..... + +..... +#.#.# +#.#.# +#.#.# +#.### +##### +##### + +##### +##.## +##.#. +##.#. +#.... +..... +..... + +..... +.#... +.#... +.#..# +##.## +##### +##### + +..... +..... +..#.# +.##.# +.##.# +###.# +##### + +..... +#.... +##... +##... +##.#. +##.## +##### + +..... +..#.# +..#.# +#.#.# +#.### +##### +##### + +..... +..... +..... +....# +..#.# +.##.# +##### + +##### +.###. +.##.. +.##.. +.##.. +.#... +..... + +..... +..... +...#. +.#.#. +.#.#. +####. +##### + +..... +...#. +...#. +..### +#.### +#.### +##### + +..... +..#.. +..#.. +..#.# +.#### +.#### +##### + +..... +..... +.#.#. +####. +####. +##### +##### + +..... +.#... +.#..# +.#.## +##### +##### +##### + +##### +#.### +#.#.# +#.#.. +#.... +#.... +..... + +##### +###.# +#.#.# +#.#.# +#.#.# +....# +..... + +..... +..... +#.... +#.... +#.#.# +#.### +##### + +..... +#.... +#.... +#.#.. +#.#.. +#.##. +##### + +..... +..... +.#... +.#... +.#..# +##.## +##### + +..... +..... +.#... +.##.. +###.# +###.# +##### + +..... +#.... +#.#.# +#.### +#.### +#.### +##### + +..... +..... +.#..# +.#..# +##.## +##.## +##### + +##### +##.#. +.#.#. +.#.#. +.#... +.#... +..... + +##### +##.## +##.## +##.## +##.#. +#..#. +..... + +..... +.#... +.##.. +.##.. +.###. +.###. +##### + +..... +..... +..... +#.#.. +#.#.. +###.# +##### + +##### +#.### +#.#.# +..#.# +..#.# +..... +..... + +##### +##### +##### +###.# +###.. +.#... +..... + +##### +#.### +#.#.# +#.#.. +#.#.. +#.... +..... + +##### +##### +.#.## +...#. +...#. +..... +..... + +..... +.#.#. +.#### +##### +##### +##### +##### + +##### +#.#.# +#...# +#...# +....# +..... +..... + +..... +....# +.#..# +.#..# +##..# +###.# +##### + +..... +..... +...#. +#.##. +#.##. +####. +##### + +##### +##### +##### +#.### +...#. +...#. +..... + +..... +..... +.#... +.#.#. +.#.#. +##### +##### + +..... +..#.. +.##.. +.##.. +.###. +.#### +##### + +..... +.#... +.#... +.#..# +.#.## +.#.## +##### + +..... +#.... +#...# +##.## +##.## +##.## +##### + +##### +##.#. +##.#. +.#.#. +..... +..... +..... + +##### +##### +###.# +##..# +##..# +#.... +..... + +##### +.#.#. +.#.#. +.#.#. +.#... +.#... +..... + +..... +..#.. +..#.. +.##.. +.##.# +.#### +##### + +##### +.#### +..#.# +..#.# +..#.# +..#.# +..... + +##### +.#### +.#### +.##.# +..#.. +..... +..... + +..... +#..#. +#..## +#.### +#.### +##### +##### + +..... +...#. +...## +.#.## +##.## +##.## +##### + +..... +..... +..#.# +.##.# +.#### +.#### +##### + +..... +..... +....# +#.#.# +###.# +###.# +##### + +..... +..#.. +#.#.. +#.#.. +#.##. +#.### +##### + +..... +..... +.#... +.#... +.#.#. +##.## +##### + +..... +.#.#. +.#.#. +.#.## +.#### +##### +##### + +##### +##### +##.## +##.#. +#..#. +...#. +..... + +..... +..#.. +..#.. +..#.. +.##.# +.##.# +##### + +##### +##### +#.### +#.##. +..##. +...#. +..... + +##### +#.### +#.### +..#.# +..#.# +....# +..... + +##### +##.## +##.#. +##.#. +#.... +#.... +..... + +..... +#.... +#.... +#.... +#..#. +##.## +##### + +##### +##.## +#..#. +#..#. +#.... +..... +..... + +##### +###.# +###.. +###.. +#.#.. +..#.. +..... + +..... +..... +...#. +..##. +..##. +.###. +##### |