commit b8ab70840b1568b02685b9416d8746fffe54e695
parent 13c0d281b76f83a2cbccb298f9fe75c12fc8e737
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date: Tue, 12 Dec 2023 19:13:24 +0100
Added solution for 12
Diffstat:
A | 2023/12/12a.c | | | 63 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/12/12b.c | | | 68 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/12/example.txt | | | 7 | +++++++ |
A | 2023/12/in.txt | | | 1000 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
4 files changed, 1138 insertions(+), 0 deletions(-)
diff --git a/2023/12/12a.c b/2023/12/12a.c
@@ -0,0 +1,63 @@
+#include <inttypes.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define N 1000
+
+#define MAX(a,b) ((a)>(b)?(a):(b))
+#define MIN(a,b) ((a)<(b)?(a):(b))
+#define ABS(a) MAX((a),-(a))
+
+#define isnum(c) (c == '-' || (c >= '0' && c <= '9'))
+
+char *buf, line[N];
+int s, n, a[N];
+
+int readl(int nums[], char *buf) {
+ int64_t i;
+ for (i = 0; *buf; buf++) {
+ if (!isnum(*buf)) continue;
+ nums[i++] = atoll(buf);
+ while (isnum(*buf)) buf++;
+ }
+ return i;
+}
+
+int isgood(char *line, int a[], int n) {
+ int b[N];
+ memset(b, 0, N * sizeof(int));
+ memcpy(b, a, n * sizeof(int));
+ for (int j = 0, c = 0; *line != ' '; line++) {
+ if (*line == '?') printf("Error!\n");
+ if (*line == '.') { j += c; c = 0; }
+ if (*line == '#') { c = 1; b[j]--; }
+ }
+ for (int j = 0; j < N; j++)
+ if (b[j])
+ return 0;
+ return 1;
+}
+
+int arrange(char *line, char *buf, int a[], int n) {
+ while (*buf != '?' && *buf != ' ') buf++;
+ if (*buf == ' ')
+ return isgood(line, a, n);
+ *buf = '.';
+ int x = arrange(line, buf, a, n);
+ *buf = '#';
+ int y = arrange(line, buf, a, n);
+ *buf = '?';
+ return x + y;
+}
+
+int main() {
+ while ((buf = fgets(line, N, stdin)) != NULL) {
+ n = readl(a, buf);
+ s += arrange(line, buf, a, n);
+ }
+
+ printf("%d\n", s);
+ return 0;
+}
diff --git a/2023/12/12b.c b/2023/12/12b.c
@@ -0,0 +1,68 @@
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define N 200
+#define T 5
+#define isnum(c) (c == '-' || (c >= '0' && c <= '9'))
+
+char *buf, line[N];
+int64_t s, m, n, p, a[N], mem[N][N][N];
+
+int64_t readl(int64_t nums[], char *buf) {
+ int64_t i;
+ for (i = 0; *buf; buf++) {
+ if (!isnum(*buf)) continue;
+ nums[i++] = atoll(buf);
+ while (isnum(*buf)) buf++;
+ }
+ return i;
+}
+
+int64_t f(int64_t j, int64_t i, int64_t k) {
+ if (mem[j][i][k] != -1)
+ return mem[j][i][k];
+ if (i > n || k > a[i])
+ return mem[j][i][k] = 0;
+
+ int64_t ret = 0;
+ if (j == m)
+ ret = i == n && k == 0;
+ if (line[j] == '#' || line[j] == '?')
+ ret += f(j+1, i, k+1);
+ if ((line[j] == '.' || line[j] == '?') && (k == 0 || k == a[i]))
+ ret += f(j+1, i+(k>0), 0);
+ return mem[j][i][k] = ret;
+}
+
+int main() {
+ while ((buf = fgets(line, N, stdin)) != NULL) {
+ n = readl(a, buf);
+
+ /* Multiply strings by T (1 for part 1, 5 for part 2) */
+ for (m = 0; line[m] != ' '; m++) ;
+ for (int64_t t = 1; t < T; t++) {
+ memcpy(a + t * n, a, n * sizeof(int64_t));
+ line[t*(m+1)-1] = '?';
+ memcpy(line + t * (m + 1), line, (m + 1));
+ }
+ m = T*(m+1);
+ line[m-1] = '.';
+ line[m] = 0;
+ n *= T;
+ a[n] = 0;
+
+ /* Reset memoization table */
+ for (int64_t j = 0; j <= m; j++)
+ for (int64_t i = 0; i <= n; i++)
+ for (int64_t k = 0; k <= m; k++)
+ mem[j][i][k] = -1;
+
+ /* Compute solution */
+ s += f(0, 0, 0);
+ }
+
+ printf("%" PRId64 "\n", s);
+ return 0;
+}
diff --git a/2023/12/example.txt b/2023/12/example.txt
@@ -0,0 +1,6 @@
+???.### 1,1,3
+.??..??...?##. 1,1,3
+?#?#?#?#?#?#?#? 1,3,1,6
+????.#...#... 4,1,1
+????.######..#####. 1,6,5
+?###???????? 3,2,1
+\ No newline at end of file
diff --git a/2023/12/in.txt b/2023/12/in.txt
@@ -0,0 +1,1000 @@
+#???#?#?.?##?#?.#. 7,5,1
+??#?#?#????.????#? 6,2,1,1
+.#????????.??? 5,1,1,1
+?#.??.??????? 1,1,1,2
+#.???#?##.??.????. 1,1,1,2,2,1
+?????????.??? 7,1
+?#?.?#????# 1,2,3
+.????..??#?. 3,2
+???..?#?.##???##.?#? 2,2,3,2,2
+??#?.#..???? 3,1,2
+??##?#???????? 5,1,1
+#????????#??#?? 1,10
+.?????????? 4,1
+.??#?##???#???## 6,1,1,4
+?#?#?.?#??.??????#? 4,1,4,2
+?##?#??#???? 7,1
+##???.?????. 2,1,1,1
+.???....??#?. 1,4
+??#.#??.#.??#??? 1,2,1,5
+.???##?#?#???.#. 1,8,1
+?.??#?..#?.?? 1,2,1,1
+..??#????????##? 5,4
+?#?#???#?#? 4,1,2
+??#??????## 3,2,2
+.??##??????#?????? 3,5
+?##.?.????????.?.?#. 2,1,1,4,1,2
+.?#?#?.???? 4,4
+???.??#??????##? 3,4,6
+????#??????#? 3,1
+##?????#?#???.?. 11,1,1
+#?#??.???#?#??.?#??? 1,2,1,3,1,5
+???#??#?????????? 1,1,1,8
+#???#??.#??? 1,1,1,4
+?????.?.?? 1,2,1
+#??#?#?????????#. 6,1,1,3
+????.#?.?#.. 1,2,1
+???????.#.### 1,3,1,3
+???#??.??#? 5,1
+#?.?##?#??#??? 1,7,2
+??????#.?????.?. 5,1,2,1
+??#????????????# 1,2,1,2,1
+????#?#?????#? 1,4,2,2
+.##?.??#?#. 2,1,1
+?.###.???# 3,1
+?#.?????#??.??? 1,8,1
+?##?.??#???? 4,5
+?#?.??.?#??. 1,2,3
+?#????.?#???????#?? 2,1,4,1,1,3
+.??##???????#?.??? 12,1
+?#??.????.#??#..? 4,1,1,1,1
+?????????#?#?.# 2,1,2,1,1
+#??#??#.?#?#???? 5,1,4,2
+?####???????..?. 11,1
+????#?#??#. 2,3,2
+???????#??????#?? 3,7,2
+?????##?##.???? 10,2
+???????#????#?#?#### 1,1,1,1,10
+???????.??#???#? 2,1,1,1,3
+???#.?#??????. 1,6
+??##?##??????????.?? 14,1
+?#?##????#?.? 4,2
+?????.#?#?. 2,4
+..???#??.??????.? 4,2
+#??##??#?.#.?..# 1,5,1,1,1
+?#..???????.?## 2,1,1,3,3
+#?.????#?##? 1,7
+.??.?##????##?????? 2,5
+??????.###?##??? 3,7
+????#??????#?.???? 1,11,1,1
+?#?#?###?##???#.???. 12,1,1
+.#????#?.??????? 1,1,3,2,1
+.?#???#####??.#???? 10,1,1,1
+??#?.#.?#??#??# 1,1,1,5,1
+#??#?????? 1,4,2
+????.??.??##?#?.?#? 1,2,1,4,2,1
+?.???.??.? 3,1
+???##????.???.?? 1,3,1,1,2
+??.??#????.?.??# 2,1,2,1,3
+.??????#?. 1,2
+?..?????#????? 8,1
+.??#????????????.? 6,5
+??#?.????#? 2,2,1
+??#??.#?.??? 1,1,1,1
+??#??#??###??? 4,7
+??.??#????#?#?.. 8,1
+?..???????.?#??? 1,1,2,5
+???????.??.#??? 4,1,2,1,1
+????????#??.#? 7,1
+??#.?????? 2,2
+??#????.???## 2,1,5
+??.??#?#.##?? 2,4,2
+.???.####?#?? 1,7
+?.#?????#????## 1,1,10
+?#??.###?###???..#? 3,8,1,1
+#.?##?????#?##?? 1,4,6
+?#.?###???#?#????#? 1,11,1
+?##?#????.???. 9,3
+???#???????#.?.? 1,1,1,3,1
+??????.????#????## 3,1,1,4,1,2
+.?#?#?.#???#? 1,1,2,2
+?.???.?#?#?????????# 1,1,1,5,1,1
+??#.??????? 1,2,3
+#?#??.??.?.??#?#?? 3,1,1,6
+.?#??#?#??????#?# 5,4,5
+.#????##???? 7,1
+???##???.?#?.?? 8,2
+?#???????.?# 4,1,1
+#?#?????.??#???? 1,1,1,1,6
+?#??#?????? 4,1
+?????#???????#.#? 1,9,1,1
+#????.???#???#?#???# 1,1,9,1
+??.#??#.?? 1,4
+.????.?.??.?.?.#??#? 2,1,1,1,1
+?????.?##. 2,3
+?.#???##??? 1,4
+.#??#???#?? 1,7
+?????#?.?.??#???.?.? 6,4
+????.?#.?#????? 2,1,3,1
+??##?#????#??? 6,3
+??????.?#.?.?.?? 1,3,1,1,1
+.#??.#?#.. 3,1,1
+#?.?#???.????? 1,2,1,2
+.??.?.?.?? 1,1,1
+??????#??#??..?.? 6,1
+?????.??...#?#??#? 2,6
+??..???..??.???#???? 2,6
+?.????#?????..???? 1,7,1
+.?####??#?#??.?#.. 10,2
+?.??##.?#? 1,4,2
+?#?.??.?????.?. 3,1
+?#???###???. 2,4,1
+#????#???.#??##???.? 2,5,5,1,1
+.??#??????#? 3,3,2
+??#.##?#?#? 2,7
+?#?.?.???? 2,1,2
+??#??.##??????? 1,5,1
+?#..??#??#?#?#?..#?? 1,1,9,1
+?#??.?????#?#? 3,1,5
+??.???#????#..?? 1,9
+???????#####?.??. 2,2,6,2
+????#???????.? 2,1,1,1
+????????#.?#. 1,1,1,2
+???.????###?####???? 2,2,8,1
+???.#..??#??###? 1,1,1,7
+?#???..?.??. 4,1,1
+?#?..?????##?#???.?# 2,1,9,1
+?.????.?????? 2,3
+??#?????????##. 1,5,5
+???..??.?.?? 2,1,1,1
+#.?#?.#?##???? 1,1,5,1
+?#????##.?.???.#??# 5,2,1,2,1,1
+?.#.?..?.? 1,1
+?#??#?????##?? 2,1,6,1
+.#???.?????.. 4,4
+.?##??#?#???? 3,2,1,1
+#.#.?###???.#?#.?. 1,1,6,1,1,1
+???#.##?#????#.?# 2,1,4,4,1
+?#???#????.????#?#.? 1,4,1,2,3,1
+#??????#??#?.??.##.? 12,2
+???#?????.?##??#??? 5,7
+.???##????????.#?. 7,4,2
+#??.?????.???.?? 2,3,1,1,1
+????.??#???? 2,5
+?????#??.#.???? 1,2,2,1,4
+???#?.???????#? 4,1,3
+??.???#???.?#??.? 1,5,1,1
+...?##?????.?#???. 3,2
+.??##??????#?. 5,3,2
+.??##?????????? 3,4,1
+#???????.?? 1,4,1
+#.???##????.??#??? 1,1,7,1,1,1
+???????.#?# 1,3,3
+??.?#?#?#.?? 2,1,1,1
+????#???##?#?? 4,7
+?.##??.?###?#?#? 4,9
+????#????#??????# 1,2,8,1
+????..???? 2,2
+???#?###?.?? 7,1
+?#?.??.????# 2,1,2
+.??###?#.?.???? 5,1,1,1,1
+?#.???????## 1,1,7
+#??.??#???#?.?? 2,2,1,2,2
+???.???#???????# 2,4,1,2
+#?#..?.???????##. 1,1,1,1,6
+???.???..? 2,3
+.??..???????.??#??.? 6,4
+.?#????????#?.?? 1,5
+??#??????##?#?#?#.? 3,1,9
+?.??#???????#?# 2,9
+?????????? 1,7
+??##..?.?#??#?#???? 3,1,1,2,1,2
+??????.#??? 3,1
+#?.??#??#???.??.?#. 2,8,1
+??.????#.????#??#? 2,8
+???#?#????#?.????? 1,7,2,1,1
+????.?.??.??#??. 1,1,2,4
+????#?.??? 3,2
+..??#?##??.??? 6,1,1,1
+??????.????##.?? 3,6
+?##?????????#?#?? 4,2,6
+??.?#?????????? 2,1
+?.???.??.?????#??? 1,2,1,7
+.????#????.???#??# 1,7,2,2,1
+????.?#?#. 2,1,4
+.??.????..??#?#????? 2,7
+?.?##?###??#????# 11,2
+?#???#?#?????????#? 8,3,1,2
+?????.?????##??????? 1,2,7,1
+???#????#?.??? 5,1,1,1
+?.?????.???##??# 5,2,2,2
+?###?????.??????#. 9,1,1,1,1
+.???????..##? 5,3
+?#??????#..? 1,6
+??.#??????.?. 1,1,5,1
+.?????.?#??? 1,1,1,1
+?#???????????? 1,1,9
+#?##???#????????? 1,2,3,1,2
+#?.?##????##??# 1,11
+?.????.?#????#??? 1,2,8,1
+?#.???#??# 1,2,2
+.??.????????#??#.? 1,1,2,1,4,1
+????.?#.????#.?. 1,1,3
+.#?#?.?#??? 4,3,1
+?.?????#?? 1,2,2
+?????.??????#?? 3,9
+???#?#?##??##????.? 7,7
+##?#.???.?. 4,2,1
+??#??##??#? 1,1,6
+##??????#??????#??.# 3,3,4,3,1
+??.?#??.#?????????? 4,2,1,2
+.?#??##??.?# 1,5,1
+??.??#???#???.?.??? 1,7,1,1,2
+??.#.?..#?.?#??????? 1,1,1,2,1,4
+.#????###?#?.#?.??# 2,8,1,3
+.##??#?????.?# 3,3,1,1
+##???#???????.? 10,1,1
+??????#??.#?..# 7,2,1
+#?..??#??????#?#??? 2,15
+???????.?#? 1,1,3
+.?.?#..?#?##? 1,5
+?#??#?.??#???#.????? 1,1,4,2,1,2
+???.?#?????# 1,1,3,1
+??.????##??.??? 2,3
+????.????#??#?#? 2,1,7
+#??#????.???#.?? 1,3,1,1,1
+?#????????# 3,2,1
+.???.?#?.#?.?#. 3,1,2,1
+?#??#????. 2,2,2
+??.????????#. 1,5,3
+.??????????.. 2,4
+???.???..#??. 2,2,3
+.#????##??# 1,6,1
+##???#???????? 2,4,2,2
+??????#??##?. 6,4
+.?#?##.???#??? 4,2
+#.#.#???#..?##? 1,1,1,3,4
+?#??..????#? 1,1,2,2
+??##????#?##???????# 2,11,2
+.?#??.?..?. 3,1
+??#???????#?..?.# 1,1,8,1,1
+#???##??#?#??.?.? 1,10,1,1
+?#??.???.???? 2,1,1,2
+???????#??#..???? 6,1,2,1
+??????.#?#?##??.#? 1,1,7,1
+????#???#?#???#??. 1,1,13
+.?????????#?? 1,6
+??.?#?.?## 2,2
+..?.??##?... 1,3
+?.#??.????. 3,3
+.?###????#?.????? 9,1
+????.###.?? 1,3
+.#??????.#?? 5,1
+????.?.???.. 2,1,2
+?.#????.?#... 4,1
+???#??###? 1,1,4
+???####?.?? 1,5,2
+?.??###?###??#?..#? 5,3,3,2
+..?#.????. 2,2
+???..??#???? 1,3,1,1
+??.???#?.?.????#.?? 5,4
+.???????#?##????#?? 1,12
+?#?.?##???.?#???? 3,3,3
+#?##?#?#?#??.?#.?? 1,6,3,2,1
+?####?.?.#??????#?? 5,8
+..???????##??.???#?. 11,1,1
+??.?##??..????#? 1,3,1,1,3
+#???#?...# 1,2,1
+#????????. 3,4
+?.??.??.##??? 2,4
+???.?.##?# 1,4
+??????#?#?. 1,4
+????????.#?#?..?#??? 6,4,5
+??.???#??#???#?? 1,9,1,1
+?#?#????.?#?##. 6,4
+??#?#?.????#???? 2,2,6,1
+?.?.?????#?????#.?? 1,1,1,5,1,1
+????.?????????????? 2,1,2,1,1,4
+??.?.???.. 1,1,1
+.#?.?#???.#?.??? 2,3,1,1
+?.??#??#????.??.?? 1,10,1,1
+.#.?#???#??.??#??#?? 1,2,1,1,1,3
+?.?#???#?? 1,1,4
+????#??#.?#?????##?? 5,2,7
+?????#?.???#?????? 6,4,1
+?.?????.???#????. 1,5
+????#????? 3,1
+?#.#????#..#?##??#?? 1,6,7,1
+?#??#?.??????? 5,1,2,1
+??#.?????????#??#.?? 1,1,10,2
+?????????.#?..???? 3,1,3
+.???..??.??? 1,1,2,1
+#??#???.#??.??##?? 4,3,4
+#.##??????#???#???? 1,5,7,1
+?#??.??.?.?#? 3,1,1,1
+#?????#####???? 1,2,9
+??#???#?.#???#?????? 3,2,6,3
+#????##?.?##???? 1,1,4,3
+??..#.#??#. 1,1,4
+.?.?##?????????????? 1,8,4
+?##???????#?##?#. 4,1,6,1
+?#?#????#?##? 8,2
+????##????# 4,1,1
+????##..?#??????.??? 3,4,2,1
+???#?#.?????#?#?.? 4,1,1,4,1
+.#?#?????.??#?#??. 7,1,1,1
+?.????????.#.?.???? 8,1,1,1
+?????????##??? 1,7
+???.#??#???#?????? 1,8,3
+?#???????????????? 9,1,1
+?##?????????.???? 4,1,1,1,1
+??????#?#?## 1,1,1,4
+?????.#?#??#.?#? 5,6,2
+?#?#.?.??# 3,3
+????#???.?#?? 3,3
+.????#????#.?????. 6,2,1,1
+???.?#???.??.?. 1,4
+???#?.???.#??.?? 4,1,1,2
+??????#?.?.?#?#???? 4,5
+.?????????.#??#??. 1,1,2,1,2,1
+?#????#???#???????# 8,1,1,3
+??..#???#?????????? 1,3,9,1
+??#.???????? 1,1,1,2
+?????..??##?#???? 2,1,5,1
+???#?#???##??#? 1,1,1,4,1
+??#?.????? 4,1
+????.????????#?. 1,9
+?.??##???.??..???.?? 7,1,2,2
+.??.??????? 1,1,2
+??????#?#?? 8,1
+.??????##????? 2,5
+?#?.????.?? 2,1
+???#???#?? 4,2
+.???.?..###??####??? 1,1,10
+?#?????????? 4,2
+.??#?.??##? 2,3
+??####??.??????. 5,2
+?.?##?.?.???#? 1,3,5
+#?????.?##??.?? 1,4,3,1,1
+..?#??#?.????? 4,1
+?#????#?.?#?### 1,1,6
+??#..#??.? 2,3
+?#???##.??#???.# 6,5,1
+??#????#?? 3,1
+.??.????#????##??? 1,1,2,7
+????.#??.?.? 1,1,1,1
+.#?##?.???.?#????#?? 1,3,3,2,2
+..#..??#??.?##. 1,5,2
+?#.???????????.? 1,1,1,4,1
+.?##?????#?? 3,6
+??..????#.? 1,2,1
+????#??#?? 1,2,1
+???##??##.? 1,2,2
+??????#????.?? 1,3,2
+??.?????.??.. 2,3,1
+?..#?????????.???? 5,2,1
+#.?????#???#?????? 1,5,1,1,1
+?????#?.?.#??? 6,3
+????.#?.?.?.?###? 1,1,1,1,3
+????.?#???.??.???# 1,1,1,1,1,4
+.#???.????#??##????? 2,1,10
+?.?????#??? 1,6
+#??.?#..#???#?? 1,2,1,1,1
+???#.?????????##. 4,11
+???#.???#???.?.??? 4,2,1,1,2
+??#????#??????#??? 6,1,2,2
+?.#?#??????? 4,5
+.#.?.????? 1,1,1
+?##??#?????????..??? 3,7,1,1
+????????.?###??#???? 3,3,11
+??###??.??? 5,3
+????.???????##?#? 1,1,4,3,2
+??#.???.????? 1,1,2,1
+??#?????#.? 3,2
+??#??#???#????....?? 14,2
+???##??????##?#. 6,3,1
+..???????.??# 4,3
+??#?.?.?..???#? 1,2,1,3
+..?.????#?.? 1,1,1,2
+?????#?????????#? 2,2,7
+?#????.#??#? 2,1,2,1
+?#?#????.?..??#?#?? 6,6
+.??##.????.?#??#?#? 4,3,8
+?.#??.?.?. 1,1,1
+??#?.??????? 3,6
+.#?#?..???###????# 4,11
+???#.??#.#???# 3,3,1,1
+??????#?????? 1,1,8
+#..?????.?##?#??? 1,5,5
+##????.??.? 5,2
+??##.???????#? 1,2,2,4
+?#??.?.??#?. 2,1,1
+?????.??#?#????#??. 4,11
+??????...??.?#?? 2,1,3
+..?##?????????. 3,4
+.#??#???..#??.#?.?. 4,3,2,1
+??#???#????#?#?????? 1,1,5,3,1,1
+#??.???#.#????????? 1,1,1,6,1
+????##?????#???#.? 5,8
+??#???#?#???# 2,7
+??????#?#??? 3,1,1,1
+??????.#??##?.????? 2,2,5,2,1
+??#?#???#?#??#???.. 10,3
+????##??##.????.? 8,1
+.?#.??#??. 2,4
+#.???###??#???? 1,1,10
+???.#?#??..? 2,3,1
+.???#???..?.?.?? 7,1,1
+??????#???? 1,1,5
+?##???##???#????##?? 7,3,3
+??#????.?????#????? 1,2,1,1,6,1
+???????#.??.???#???? 1,6,1,1,1,3
+??????#??#.?.?? 9,1,2
+??#.???.#?##? 2,2,5
+.??##??????#???? 6,5
+.???###.???##??#. 6,1,3,1
+??.?.?????? 1,2
+??#??.?.#??????? 4,1,1,5
+?#????#.?????.??. 7,5,1
+?.??#??.?. 1,1,1
+??#???#????.?? 8,1
+#.???.????.???##?? 1,1,1,1,1,5
+.#?#?????????..?##.# 1,1,1,4,2,1
+?##.??.?.?#? 3,2,1,2
+#.??.?????# 1,6
+.?#?#??????##???? 5,3
+?.?#?????##? 4,3
+?.?.?.?##????????#? 1,12
+??.??..??###?. 2,1,4
+?..###????#?.?????? 9,1
+?????????##????#??# 14,2
+?...#?##?.????????.. 1,4,5,2
+.??????#?.? 1,4,1
+?..???###??.???.## 1,8,1,2
+????#?##?#??#????# 1,10,1,1
+??????#??##?#??.???. 9,3
+?..?#????#?.#?.#? 1,8,2,2
+???????.#? 4,1
+????##???.? 1,2,2
+.##?..#???.?? 3,4,1
+???.???????#???????? 1,1,3,3,1,2
+?????#??#??#??.???? 1,10,2
+..???.?#???.??????? 2,1,2,1,1,3
+???#????##??##?? 1,8,4
+???#??#???.?????? 9,3
+?????.??##?# 1,1,3,1
+??#??#???.????. 6,1,4
+???##???#?#?? 1,4,4
+??#??##??.????#? 6,5
+?#??#???##????#?? 5,5,1
+???#??#??? 4,1,1
+???##???###?.?..??? 5,5,1,1,1
+?#?.???.???? 1,1,1,1
+#????????. 1,4
+#?????.?????###? 3,1,3,5
+#???.?#???#??#.#???? 4,3,1,1,5
+??.??????#???#?.?? 2,1,1,1,1,2
+???#??#??#?? 5,1
+???.??...????##?.? 3,2,1,1,2,1
+?.???#?????#??? 1,4,1
+?.???#?..?? 1,3,1
+.?...???.##??? 1,2,2,1
+?????#?#.?.# 7,1,1
+?????#?????????#??.. 10,3
+??????.#???#.????#. 6,5,1,3
+??.?????.. 1,2
+?????????? 1,1,1
+#?#?.??.??.?##??# 3,2,5
+#???##??###.???.?.?? 11,3,1,1
+??#??#?##?..#?? 1,8,1,1
+.?????????#?? 1,1,2,2
+?.??#?#?#???#.?.?. 1,8,1,1,1
+?????#??##??## 1,11
+#.?????#???#..?##.? 1,9,3
+?.#???.?#?#?##?#???? 1,1,11
+.????#?#?.??#??##.# 6,7,1
+.?...??#??.??#??? 5,2
+?.?.??.??? 1,1,1
+????.?.#?#????.. 3,5
+?.?#?.?#??? 2,2,1
+.?????#??.?????#?. 2,4,6
+????#????????????#? 1,2,6,4
+#??#????.?.???. 8,2
+??.?#?##?#?# 1,6,1
+???#????????? 2,1,1,1
+.?#??..???. 3,3
+.???.?.?????? 1,1,1,1
+?????????#?. 1,2,2
+??.?#??.#??? 3,4
+???#??#??..? 1,1,2,1
+????#??##???.???.?? 9,2
+?#?#..#??#? 4,5
+???#???#??#?? 5,2,2
+#???##?##.#??????.? 3,2,2,4,1
+??#??#??#.?.#?##???? 1,4,1,1,7
+#??????.??. 1,3,1
+#???????.???..????. 8,1,1,1,1
+?#?.??#?.??#???#??? 1,1,1,2,4
+?##??.?.???# 3,1,1,1
+#??###.?????.? 6,2,1,1
+.#?.??#?.? 2,3,1
+..?#?????????.? 3,7
+??.???????#???#? 1,4,8
+???##?.????# 1,4,3
+.??#?##.#??????#. 2,2,1,3,1
+??#??.?#.?##. 5,2,3
+??####??.?.?##?.. 6,4
+??#????????#?.??# 11,2
+??..??..#? 1,1,2
+????##????.?..?.#.? 5,2,1,1
+?.?#?.#?.? 1,1,1
+?.?#?#?#?.?###?? 7,3
+?#??##?????# 6,2
+?#????????#. 3,2,1,1
+???##??#???#?.. 1,2,7
+??.??#????#? 1,8
+??#??..??? 2,1
+?#???????.??.#? 1,1,1,1,2
+.????#?????????????# 1,17
+????????.?? 1,2,1
+?.?##?#?#??.###?. 3,4,3
+????..???????? 3,1,1,1
+?#????.?.??? 3,1,1,2
+???????#????#?????? 2,2,1,1,4,2
+.??????.??.??? 3,2,3
+.?##??#?.?.#?.?##??. 2,2,2,3
+??#?#??#?? 3,2
+?#?.?.#?.?##?#?#? 3,1,1,8
+#?.#.?##?.???????? 1,1,4,1,6
+????????.????#??? 6,6
+???????#?#??#? 6,1
+.??.##??.??? 1,3,1
+??.????#?#???? 8,1
+?#?.?#????####????? 1,10
+?#..???#?????? 2,1,2,2
+.#?#?####??#?.#?#?. 12,3
+.?#?.?#.#?# 3,1,3
+.#??##?#?#?#???#???# 11,1,1,1,1
+.????##?#..??#?.? 8,3
+?..???.?#??#?#???. 1,3,6,1
+?##.?????? 3,2
+??#?????###?? 6,3
+?????????#???##?#?? 7,6,2
+#????##??##??#??.# 1,1,2,7,1
+???#???#????????? 4,8,1
+?.??.??.?? 1,1,2
+.??#??#?#?????????? 11,1
+.##?#?????# 5,1,2
+#???????.? 2,4,1
+??????.???#??? 1,1,3,2
+????????#?. 2,1,3
+????##??#??.### 1,8,3
+??.?#??###? 1,7
+?.?.?.??#??????.? 1,7
+#.??.???#? 1,2,1
+??.#????????? 1,4,1,1
+????????????.#?##??? 9,5
+#?#??.??.#.? 1,2,1,1
+??###????.????#???? 9,6
+???#?????????#?????? 7,4,1
+#?.??.?????#. 1,2,3
+#??????.?? 5,1,1
+?.?#?#?.?#.?.? 1,4,1,1
+??.?###?#??#????#? 1,11,2
+??.?????.# 1,1,1
+???.??#?#?.?????#?#? 1,1,1,1,7
+?.??.????#?#??? 1,8
+#?..???.???. 2,2,1,1
+#???#??#.?.???? 8,3
+?.???????.??#???. 5,6
+??##?..?.? 5,1,1
+..?#?.?##??##????## 1,8,3
+?????.?.#??##. 2,5
+?#?###..???##????#? 6,5,3
+?#???????? 1,1,3
+?.?.?.?#?. 1,1,2
+???.?.?.??#??.??? 1,3
+??.??#???#??#. 2,3,5
+??.?#??????.#?.?#.? 2,1,1,3,1,2
+#????#??#????. 1,1,7,1
+?#?##.?#??????????# 4,2,4,2,1
+???.#?????##?###??? 1,1,13
+.?#??#?.??#??. 6,2
+##??##?..?#??#??. 6,7
+#?.?.?????? 1,4
+.?.#??.?#? 1,1,1
+??#?.#?#?????.. 3,1,3,1
+???#.?.?.?##??#?.? 1,1,1,3,1,1
+?????#??#? 1,1,2
+??##.????. 2,1,2
+..##???#?? 2,4
+####??#?#??#?#?. 4,1,7
+?##?##????#??? 5,4
+???#??????#?#?. 6,7
+????.?#??#?#.?#??# 1,1,2,3,2,1
+????.#????#? 1,1,1,2
+?.##...?.????? 2,3
+.???#.??#?##?????##. 1,1,1,6,4
+..?#????????##?. 5,6
+?.#?.#??#? 1,5
+.?????.???##??###?. 1,1,11
+?.#??#?.?.???#? 1,5,1,1,1
+?#??#????.?? 1,1,1,1
+????.?#?????##? 4,1,6
+???.??#.#? 3,1
+??.#??...?.???..? 3,1,2
+???????#??#?#?#?? 4,6
+??#?#??#?#?##?.?? 7,4
+?##??.??#? 3,1,1
+?#.?.#?????##??#? 2,1,6,3
+#.#????#??#?????? 1,1,1,6,1
+??????#??..??????? 2,1
+????#?#?..??#??.#. 1,6,1,1,1,1
+?#?????.?.?????.##. 5,1,1,1,1,2
+??#?#?#????#?#?????? 15,1
+.??????.#?? 1,1,1
+??????.?????##?.??. 2,5
+???#?#..#?#. 3,1,3
+.?#??..#?##??. 4,6
+???##??.??#?.?????.? 6,3,5
+????????????###???? 4,10
+?????.#?.?# 4,2,1
+??????.##? 2,1,2
+.???.???.? 1,1
+.??#??#???????#.. 7,2
+.?????#??.??????? 8,2,1
+?.####?##?? 7,1
+..????.???? 2,1,1
+??.????????? 1,2,2,3
+?.?..?????????? 1,1,3,2
+?#??????#.#.?#? 5,1,1,1
+??.?.?#???# 1,1,3
+?????#.?#?????#?.? 4,8
+?#??##?????.?? 2,2,2
+?#..?????..?????#?? 2,4,2,1,1,1
+.??.??#??#?? 2,5
+?????..#..??##. 3,1,3
+??##???#?#?.?#???.?? 1,6,2,1,1,1
+???#?????#??. 5,1
+.????#?#??????? 7,1,3
+???#???##.##??.?? 5,2,3,1
+.???#?#?#?#??????# 13,2
+?#?????????##??? 1,2,3,3,2
+??????.?.???### 1,1,1,1,6
+.?.????#?#...??#?#? 1,6,1,3
+????#??????? 1,4,1
+???.??#??.? 1,2,1
+.?#??#???.#??# 7,4
+??#.?..?##?.?..? 1,4
+???.??.#???????? 3,1,1
+..?????#?.?.???? 5,3
+????###??????#????? 7,10
+##??#?#..#?????#?#?? 7,11
+????.?#?#???#???#? 2,11
+?????#?#?#????#??. 1,9,1,1
+.#.?.#??#??#?#?? 1,1,9
+???#????.?..?????.. 1,3,1,1,1,2
+?????????#?#?.? 1,1,5,1
+??#?.??.????..??. 4,1,4,1
+.#?#??##???#?# 1,11
+.??#??##??#????# 11,2
+.?..#??#??.????# 1,1,1,1,3
+?#?#????..???. 6,2
+?.????????#?##????? 1,2,6,2,3
+???..????? 2,1
+?#???##???#?#?.? 1,8
+???????.?#?#?? 4,3
+??#.??.?#??#?? 1,1,5
+??#..#???.???????. 1,1,1,1,1,4
+??.???.?#??#???. 1,2,6
+?????.?#?.## 3,2,2
+.?#??????.??.? 6,1
+..????#?###???????# 1,14
+??#????#?. 4,1
+????????.??# 1,1,2
+..?.??????????#??#. 1,2,1,1,6
+?.?#????.?#????#.? 1,5,6,1
+.?..????#???.??.?.? 6,2
+?.#???#..#????#??? 1,1,1,6
+.??.?.#??????#??? 1,1,1,3,4
+?#####???.?#?? 7,2
+??.????#?#.????? 1,6,2
+????.??##?? 1,5
+#???#?#?.#???..##? 1,1,1,2,4,3
+?#?#??.#?? 1,2,3
+????????.???? 8,1
+.#????#??#. 1,6
+?????..???#?#????.? 2,1,10
+???????????#??.# 2,1,7,1
+???#???.??#??##??.?? 4,8,1
+??#????????? 3,1,2
+#?.?#????##?????? 1,3,9
+.????###?....#?. 7,1
+#?#?####??#?#.? 9,1,1
+.??#??#?###?????? 3,6,1
+???#??####????????#. 2,7,1,1,1
+????.#??#??.???? 2,1,4,1,1
+?.?.?#?..#? 1,1,2
+.#?.?#???? 2,4
+???.#????#??.?# 1,1,1,3,1
+#??#????#???..# 1,3,1,4,1
+###.??.##???#??????? 3,1,2,10
+????#?###???? 1,7
+?#?#.?#????. 3,2,1
+.???####??# 1,5,1
+.?#??#??.#?? 2,4,3
+???..#?#?#??#??.. 1,10
+#??.###...#.?#??## 1,3,1,5
+???#?.??#???# 3,5
+?#??.?#?#.??. 1,1,3,1
+???#???.????#?????? 1,4,5,3
+.#.#???.??##?#???# 1,1,1,2,2,1
+?.???????????# 3,6
+??...##.?.?? 1,2,1,1
+?#??..#??#?.???#. 1,1,2,1,4
+???.???#??. 1,4
+????##?????? 7,3
+###.#???##.#?#??.? 3,6,3,1
+??????????? 2,3
+????#.??#? 5,3
+???..????#????##??#? 2,1,1,10
+??..#.?????? 2,1,3,1
+#?????????.?????. 3,1,3,2,1
+??.#?#????#??#???? 4,5
+????#..??.?#??#? 1,2,1,2,2
+?.????????????? 1,8,1
+#???#?..????#?#?? 1,1,2,8
+.#???###???????#?? 2,11,1
+??????.?????##? 3,1,8
+?.#???.#?. 2,1,2
+???.##???#. 1,2,1
+?#?.?#???#? 2,1,3
+???.?#?###..?? 1,5,1
+????????#?.#? 1,7,1
+#??.#?????#. 2,2,4
+??????.???# 5,1,1
+#.???.??????? 1,2,1,1
+????#?????#? 1,5,3
+.?#????#.?? 1,1,2
+?.#?#??.???#?#? 1,1,1,1,6
+?#.????????#???#???? 1,1,3,4,1,1
+???#????##?????.##.? 1,2,6,1,2
+????#?#.?????.. 5,1
+.???????.??## 1,1,2,4
+.?.?##?#?.?? 4,1
+#????????.?#?#?.?. 1,2,1,2,1,1
+?.???????.# 1,5,1
+??.??###?##?.?? 1,7,1
+??????..?.?? 1,1,1
+.?.#.#??.??.??? 1,1,3,1,1
+??#???#???#?#??.?# 1,1,6,1
+??.?#?#?#??# 7,1
+.?..?.#???#??#????. 1,12
+?????.##?? 3,4
+?????????? 1,2
+#?.#??????????#?? 1,1,12
+??????????????????? 1,8,1,4
+????#???????????.??? 1,1,6,2,1,1
+?.#???#????.??.? 6,1,1,1
+??#???##?????#?## 3,3,1,5
+??????????????.?# 1,4,1,2,2
+?..??#???????? 1,11
+?.#??.?.??? 1,1,2
+?#??#####???#???.??? 16,1
+?#????????????.??? 6,4,3
+?.???##???###? 4,4
+?.?.?????#???? 1,10
+??#?..?... 1,2,1
+.###?.?#?????? 3,4
+??#.???#.?###??? 1,1,4,4,1
+?????.##????#.?????# 3,7,2,2
+?????###?.?? 3,5,1
+???????#????#.?.???# 1,1,9,1,3
+#??.?????.##?.?# 3,3,3,2
+?.?.??#?.? 1,1,1
+?#??#??##?#??????#?? 1,7,1,1,1
+?????#.?#?????#.#?#? 1,3,8,4
+#?.??.#???????#???#? 1,1,1,1,2,6
+.#?.#?.?#.????? 2,1,2,3
+??..?#???.???? 1,3,1
+##???.?#?#. 3,3
+.??#???..?? 2,1,1
+..#??..#?. 2,1
+?#??#?#?????..?# 2,3,1,1,2
+?????#.#??? 3,1,4
+??????.?.#??##?.?? 4,5
+???#?????#?.?##.?? 1,3,1,2,3,1
+???#?.??..?# 1,1,1,1
+.#??.?.?????.?.??#?? 3,3,1,5
+#?#????#????..#? 4,5,1
+????.???????##?? 1,1,7
+?????????#????????# 1,1,1,7,2,1
+..??#??##??.. 3,4
+???????.?.#?.#.? 6,1,1,1,1
+.???##.#.#??# 1,3,1,4
+.??..??.?..?#?#? 1,2,1,3
+???..#?.??##??? 1,2,4
+?...??#??#???. 6,1
+.???#??..???.???#??? 3,2,5
+??????..?.???#??? 1,1,1,1,5
+#???.?..?.??? 4,1,2
+#???#??.?.???? 1,3,1,3
+??????????.?.?# 7,1,1,1
+?##???.#???????#?... 5,10
+???.???##?????#? 1,1,4,1,1
+?.????.???? 4,2
+?.????##??.??? 1,5
+????.?#??????##?### 1,2,9
+?????#?.?????#?? 5,1,4
+.?.#?.#?#?.???## 1,2,4,5
+##??#??##?? 2,7
+??#?###???#???? 7,5
+?#???#?#.???????# 3,1,1,6,1
+?#?.??????#?????? 3,2,7
+????????????....?? 9,1,1
+#?.?#?##??## 1,9
+????#??###????.?? 1,9,1
+??#???????..?? 8,1
+?.?#?????#?.? 2,4
+??.?.#?.?#?#??#??..? 1,1,1,9,1
+??#???????? 4,1
+??????????#??.???# 3,6,1,1,2
+?????.???? 1,1,2
+??#????.#????##??.? 1,1,1,8,1
+?..#.#...? 1,1,1
+?#?##??#?.????##???# 8,1,4,1
+#????#?#?.#??#???? 1,1,5,1,1,2
+#?#????.???#.? 1,2,1,2
+??????????..? 1,2,4,1
+.?##??.?????..??.? 2,4
+#??#??????.?.##?.??? 8,1,2,2
+#?.???#.##???###?# 2,2,1,2,6
+##?#??????..? 4,1,1
+?#????????#.#.??.?? 1,1,5,1,1,1
+#????.?#....?. 5,2,1
+.?#?#???#??? 6,1
+?????#??#??? 1,4,4
+.??????.????? 3,2
+???#.??????. 1,1,1,3
+.????#??#???###???? 1,4,4,2
+.?##.#????.?# 3,1,1,1
+?????#?#??#? 1,9
+.???????????.##? 4,2,2
+..???#??.?##?#??###? 6,4,3
+??#????#.???#?#?##?? 6,1,1,8
+..??#?????????? 1,3
+?.?#???????? 4,2,1
+.?.?#??.#?..?#?#?? 1,4,1,5
+??????.#????.#?.? 3,4,2,1
+??#??#??.###?. 5,3
+..?..??#?#??#??. 1,8
+..??..?#???#??.? 2,3,3
+??.#???###??.???. 1,3,4,1
+??????#?##????#??#?? 11,2
+?#?.???##?.#??#? 3,6,2,1
+.#?####?.#?#?# 6,1,3
+?#.?.????? 1,1,3
+??#??#?...???? 5,2
+?.?##??##????.? 1,11
+?##?????#??#.?? 11,2
+??.???#..?#?#???? 1,1,2,2,5
+?##??#???##?????#. 2,2,7,1
+??#????##?.?. 3,4
+??.??#.??.???#?#?? 2,1,1,1,1,6
+???#..?#?. 2,1,1
+??????####??###???# 1,12,3
+????#?##??#.##? 1,1,4,1,2
+#.??#??##??#?..?.?# 1,9,1,1
+?#???????.??.#?????? 1,2,1,1,7
+????.#?????????##? 2,2,7
+???.###???#?#?# 1,3,5
+???#..???##????? 2,2,2,1,2
+.??#???#.. 1,1,1
+#?????#????? 1,1,2,1
+?.????..?????#? 1,3,3,1
+?.???.?#????#??#.#?# 2,9,3
+?##.??.##.??.??? 2,2
+???#???.?? 2,1,1
+?????.?..??#?? 1,1
+.???????#..???# 2,2,2
+?????##??##? 1,7
+???#????##????. 1,2,6
+.#?.??.??? 1,1,2
+??????.??#?? 1,1,4
+#.?????????????##?? 1,2,10
+.??????##??.?###??? 7,4
+.??##??#??#.?????? 4,4,1,1,1
+#??????.?? 1,3,2
+??##???#?????#?. 4,2,5
+???????..??? 4,3
+??#??#??#?? 1,1,2
+???.????#?? 2,5,1
+??##?????.?. 4,2
+????#??#?.#? 4,2,2
+?????#??.??. 2,3,1
+?.?#?#?#??#???#???.? 13,1
+#??#?#??#??.????? 11,2,1
+?????#??.? 1,4
+?????#..??????#????? 2,2,6,1,1
+??#?.?.??????? 4,1,2
+?#?????#??????#???? 1,1,4,3,3
+?????##.??.??##?? 4,4
+.##?.?.#?#?.?#??#??. 3,1,4,6
+#???#.#?#?.???#??? 1,3,4,1,4
+???.??##?#?#?? 1,9
+.#?????.?.?????## 6,1,1,1,3
+#?#?????##.#?#??? 1,8,1,1,1
+?..#??.?????? 3,1
+.#?##??????. 1,4,2
+?.???????. 1,2
+????..??.????. 3,1,3
+#.?##???#????.??.? 1,4,1,2,2,1
+??.??.??#????.??? 1,1,5,2
+?.??#?.#?. 2,2
+??##??.#.??.????? 5,1,2,1,2
+#?.?.#??#???#.?.?? 2,1,1,2,2
+??#?.?#?.??????? 3,2,3
+##?##????????#?. 6,5
+?.???#?????.??? 1,5,1,2
+????#???.???#?#?.? 6,1,5,1
+??#???#.??#?????##? 5,1,10
+????.?#??#?????? 1,1,5,1,1
+??????####???? 1,8
+?.????..?? 1,3,1
+??.??##??###?..? 4,5
+???#????????? 4,3
+.#???.??#. 4,2
+????#?.#?????##??? 1,1,1,1,5
+?.???.??#??.???? 1,2,3,1,1
+.?#?.??##.?? 3,4
+??.#.??#.? 1,3,1
+???????#..?? 7,2
+???????##???.??????? 8,5
+?##?##?????.?#?# 7,1,1,1,1
+?.??..?.?.?. 1,1,1,1
+??????#??.??? 2,4,1
+..???#?.##?# 2,2,4
+???#???#.??????#?#. 8,1,3
+.###????.????. 6,2
+????###??#???????? 7,5,3
+.#????.???#???????? 5,1,3,3
+.???#?#??#?. 1,7
+????????#???#..#?? 11,1
+#??#.??.#?#?.?? 4,1,1,1,1
+???????????????? 6,2
+??.#?????. 2,6
+?##????#??##? 2,1,2,2
+?.#.??##??????#??? 1,4,7
+#??.#?????? 2,1,3
+??##.???#?? 3,2,1
+??#???????..??#. 2,4,3
+?..?#.???#???? 2,1,2,1
+??.?#??.??#?..??.# 1,1,1,2,2,1
+#..???#??? 1,6
+?????.?.??.??#?????. 2,1,1,1,3,4
+?????????.#? 3,1,1
+??#????#?..#.???.??? 3,5,1,1,1,1
+???.?#..???#?? 1,2,5
+??#??#??#?.#?# 7,3
+??#????????#????#??? 1,11,1,1
+??#.???????#? 2,4,1
+??.?????????# 5,1
+.?#?##??#?.#?????? 5,1,1,1,1
+??????###??# 1,1,5,1
+..????#?.??.??? 5,1,1
+???.????### 1,4
+???...?#???###???#?? 1,14
+????????????#??.#? 1,7,1,1,1,1
+????##??.???..#. 1,5,1,1,1
+..##??.??##?? 4,6
+????#?##???.?? 2,5,1
+#??..?#???????????? 2,2,6,2
+.?#???#??????? 2,7
+??.#.#..????###.? 1,1,1,7,1
+.??#.???###.?? 3,4,2
+??????#?#.??? 4,3,2
+????#?..???##.? 2,2,1,2,1
+.?????#?#?? 2,4
+#??.????#? 2,4
+???..#???#??? 2,7
+..????????##. 1,3