diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..a6218fe
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/python/day11.py b/python/day11.py
new file mode 100644
index 0000000..240ee57
--- /dev/null
+++ b/python/day11.py
@@ -0,0 +1,15 @@
+path = 'res/01/input'
+
+space = []
+
+with open(path, 'r') as file:
+ for line in file:
+ space.append([1 if c is '#' else 0 for c in line])
+ if '#' not in line:
+ space.append([0 for _ in line])
+
+ind = set()
+for i in range(len(space[0])):
+ if '#' not in [space[i][j] for j in range(len(space))]:
+ ind.add(i)
+
diff --git a/res/11/example b/res/11/example
new file mode 100644
index 0000000..986aad4
--- /dev/null
+++ b/res/11/example
@@ -0,0 +1,10 @@
+...#......
+.......#..
+#.........
+..........
+......#...
+.#........
+.........#
+..........
+.......#..
+#...#.....
diff --git a/res/11/input b/res/11/input
new file mode 100644
index 0000000..2f7ce04
--- /dev/null
+++ b/res/11/input
@@ -0,0 +1,140 @@
+................................................#.........#............................................#....................................
+..#.............#......#.............................................#...........................................................#..........
+..............................................................#..............................#..............................................
+.................................................................................................................#..........................
+...........#...........................#...............................................#..................................#.............#...
+............................#..................#.....#..........................#...........................................................
+..................................#................................#........................................................................
+...........................................................................#................................................................
+.....#...................................#......................................................#.......................#...........#.....#.
+.....................#........#....................#....................................................#...................................
+......................................................................#.....................................................................
+...........................................................#.................................#..............................................
+........#..................#....................#....................................................#......................................
+#.............#....................................................#..............#.............................#...........................
+...................#.............#...................................................................................#...............#......
+.............................................................................#.............................................................#
+.........................................................................................................#..................................
+....#...........................................................................................#...........................#.....#.........
+.....................#.......................#.........#....................................................................................
+#............#.........................................................................#....................#...............................
+................................#..................#...........#......#............................#...................#.......#............
+.......................................................................................................................................#....
+...................................................................................#........................................................
+.........................#.............#...................................................................................#................
+............................................................................................................................................
+..........#..............................................................#......#.........#..........#......................................
+............................................................................................................................................
+.................................................................................................#............................#.............
+................#...............................#............#.....................#........................................................
+.#........................#..........................#......................................................#.......................#.......
+.......#....................................#................................#..............................................................
+.................................#.....................................#..................................................................#.
+........................................................#.............................#...............................#........#............
+.....................#...................#.....#...............#............................................................................
+.............#...................................................................................................#..........................
+................................................................................................#.....#...............................#.....
+.................#................#................#........................................................................................
+.#..........................#.............................#.......#.......#................................................................#
+.............................................#.............................................................#................................
+...........#.................................................................................#...............................#..............
+.....................#.................................#.......#..................................................................#.....#...
+.......#..............................#..............................................................#......................................
+#...............................#.....................................#...............#........................#.......#....................
+...........................................................................#.....#.........................................................#
+...........................................................................................#................................................
+........................................................#................................................#.......................#..........
+.........#............#............................................#.................................................#.....#................
+............................................................................................................................................
+......................................#......#........................................................#.........#...........................
+.............#.....#......#..........................#......................................................................................
+......#................................................................................................................................#....
+.............................................................................................................#..............................
+..#.......#.............................#.....................#..................#........#.................................................
+............................................................................................................................................
+......................................................................................#...............................#.....................
+..................#...........................#...........................#.........................#.........................#.............
+............................................................................................................................................
+......................................#..................................................#.........................................#........
+.......................#.....#................................................................#.............#............#..................
+.....#.............................................#.............#..........................................................................
+.............#...........................................................#.......#..................................#...........#...........
+.................................#..........................................................................................................
+.............................................#...........#..................................................................................
+.......#......................................................#............................#.........#........#.............................
+.....................#................................................#...........................................................#.........
+...............#...................#...............#.......................................................................#................
+#..........................#......................................................................#.........................................
+.............................................................................#..............................................................
+...............................#......#.................#..............................................#..........#.........................
+...........................................................................................................................................#
+.................#......#.......................#....................................#.....#..............................#.................
+.........#.............................................................#..................................#.................................
+....................................................#............#............#.........................................................#...
+..#.........................................................#........................................................#..........#...........
+............................................................................................................................................
+............................................................................................................................................
+.......#...........................#..............................................................#.........................................
+....................#...................................#................................................................#..................
+..............................#.............................................................................................................
+..#......................#.............................................#........#..........#................................................
+..........#.............................#......................#................................................................#...........
+.....................................................................................................#......................................
+......................#.............................................................................................#......................#
+#................#..................................#........................................#.................#............................
+...................................#......#.......................#...........#..........................................#.............#....
+............................................................................................................................................
+..........#..............................................#..................................................................................
+............................................................................................................................................
+....................#......#..........#.......................#......#....................#..........#.......#..................#...........
+...#.........................................................................#..............................................................
+..................................................................................#..............#..........................................
+........#.......................#..........#................................................................................................
+..............#...........................................................................................#.................................
+................................................................#.......................................................................#...
+.......................#................#.....................................................................#.............................
+....#............#............#.................................................................#.....#.....................................
+...................................................................................................................#........................
+...........................................#..............................................................................#.................
+.......#.........................................#.......#.......#.....#...............................................................#....
+................................................................................#...........#.....................................#.........
+...........#.....................................................................................#..........................................
+..............................................................#.............................................................................
+...............#.........#..........#........................................................................#..............................
+...........................................#......................................................................#......#..................
+....#...............#.......................................................................................................................
+......................................................................................#..............................................#......
+...............................................#...............#..............#.................#...........................................
+.#.........................................................................................#.........................#......................
+................#......#................#................................#..........................#...........#...........................
+......#......................#.....................#.......#................................................................................
+.............................................#...........................................................#...............#.....#........#...
+...........#.........................................................................#......................................................
+............................................................................#...............................................................
+.........................................................................................#............................#.....................
+...................#...................#.....................#....................................#.............#...........................
+.................................#..........................................................................................................
+.......#......#...........#..................................................................................................#.....#........
+.......................................................................#..............#........#.............#..............................
+......................#..................#......#..............#..............#.....................................#..................#....
+..........................................................................................#.............#...................................
+.........#..........................................#..............#.......................................................#................
+.............................#..............................................................................................................
+.............................................#...................................#..........................................................
+................#..................#........................................#......................................#........................
+....#.................#.................#.............................................#.................................#..................#
+............................................................#.........#..................................#..................................
+......................................................#...................................#.................................................
+.................................#..................................................................#.......................................
+.................................................#...................................................................................#......
+............................................................................................................................................
+..................#.............................................#.............#.........................#................#..................
+.........#.................................................#...........#.............#........#..............#............................#.
+...................................#.........................................................................................#..............
+............................................................................................................................................
+#.....................#...................................................#.......#...............................#.........................
+..............................#.................#........#..........................................................................#.......
+..............#........................................................................#....................................................
+...........................................#.............................................................#..............................#...
+.................................#...................................................................................#...........#..........
+...........#.......#.......#...........................#.....#................#......................#........#.............................
diff --git a/res/12/example b/res/12/example
new file mode 100644
index 0000000..e925935
--- /dev/null
+++ b/res/12/example
@@ -0,0 +1,6 @@
+???.### 1,1,3
+.??..??...?##. 1,1,3
+?#?#?#?#?#?#?#? 1,3,1,6
+????.#...#... 4,1,1
+????.######..#####. 1,6,5
+?###???????? 3,2,1
diff --git a/res/12/input b/res/12/input
new file mode 100644
index 0000000..826f19c
--- /dev/null
+++ b/res/12/input
@@ -0,0 +1,1000 @@
+?.???#????? 1,3,1
+..???#??????#?????? 3,6
+???#??.????. 4,1,1,2
+??#?????????#?##?? 4,4,2,4
+??..???.????#??? 2,1,6
+?#???#.????.??. 2,1,1,2,2
+#??.???### 1,1,5
+?????#?###?#???.???# 3,9,1,1,1
+###????.??#####.??? 6,5
+.?##???.#? 3,2
+?.?#??#??..# 3,1,1
+?.?????.?????? 1,3,1,3
+.#.?#?.???. 1,3,2
+??#?#????#..???????? 5,1,4,2
+??.?#??##?? 1,1,2
+?????.????##?#? 1,1,7
+?#?#??..#?. 5,2
+???.#???.????#???? 1,1,1,1,6,1
+?.??##?#????? 6,3
+??..??#?#????????.# 1,1,1,1,4,1
+??????##???????? 2,4,6
+?##..?##?##??.?#.? 2,8,1,1
+???#??.?###.?????. 3,3,2
+..#?...?#?? 2,4
+#?.?#.?.???#?#? 2,1,1,1,4
+???##?.??#?.?? 6,1,2,1
+.#????.??? 1,2
+?.?..##??#?#?#??.. 1,1,2,4,1,1
+?#??#?#??#?#?.??#?? 11,4
+??#?##??##???? 1,8
+???#??.#?? 2,1,2
+??#???#??.#.?#??#??? 3,2,1,8
+????#???.???# 1,1,2,2
+??#?.????? 4,2
+???????..?##???.? 4,6
+???.??????.??? 1,1,6,2
+???.#???????.#??? 1,1,2,1,3
+?.#????????? 1,1,1,1
+?#???????????.??#.?. 5,1,1,1,1,1
+????##?##?#???#?#??. 1,10,2,1,1
+???#?.?.?? 5,1,1
+.????#??#.#??# 1,4,4
+?????..??##.?..?? 1,4
+#?#???#?##??.??????? 1,10,1,1
+??.????#????#????? 1,1,12
+#?.#.???###???#??? 1,1,1,6,1,2
+?.???.?????????#.?? 1,4
+?##?###?????##.#??#? 7,3,1,2
+???#?????? 3,1
+.?#????#?#?.#???#?? 7,1,2,2
+.?#??.??.####.#? 1,2,4,1
+?.?.?????##.?.?.#.? 1,1,4,1,1,1
+.????.??#??????## 1,3,5
+?.###???????? 1,3,2
+????????????. 7,2
+???.?###.##???#?.?? 3,4,6,2
+??#?#?###??????.?? 7,3
+#.??#????? 1,1,3
+.??#?#?.??.?#? 3,2,1,3
+?.?#????.?. 2,1
+???.?#??#????? 2,6,1
+#??????##????? 1,1,8
+???.##..??#?#?#.??? 1,2,1,1,3,1
+???.?????#??????? 2,6,2,3
+????#???#??#??.??#?? 2,9,3
+??????????.?#? 3,1,3,3
+??#?#????#? 1,1,4
+#??##???#???? 10,1
+#?.??????#???.# 2,7,1,1
+??#?.???#??????. 1,8
+.?##?????#?? 3,3
+?....??????.#.?. 1,5,1,1
+.???#.????? 2,1,2
+??#??????#?#????##? 1,16
+##?.#?????#???.#??? 3,2,3,2,2,1
+???##???##????.???? 10,3
+??.???.???#?.?? 2,2,3
+.??#????..???# 5,1,4
+?#?.?#?#??#?#???? 1,12
+.?#??.??#?? 2,3
+?#?#???#????? 4,4,2
+.???#..????#? 1,5
+?##?#??????..???? 8,1,1
+#?##??.?#.#???##???? 6,1,1,6
+#??.????#?? 1,1,6
+#???#????.??????#??? 1,3,1,1,7,1
+?.?#?#?.?#????. 4,1,2
+##??.#?????.# 2,1,2,1
+?.????????##??# 6,4,1
+?..#....?# 1,1,1
+?##??.??#??#? 4,2,3
+??#??????????? 3,4,3
+.#???.???????? 3,5,1
+???.?.????????.? 1,5
+????##????? 3,2,2
+???##?##???#??????# 10,2,1,2
+?#?.???????#? 3,1,1,1
+???#????#??# 1,2,4
+?.??#..??? 1,3,2
+?.??#???.??? 3,1
+??????#??## 1,6
+.?#?.#???? 2,1,1
+?????????##.? 1,7
+?..?.?.?#??? 1,4
+.?#??#????????#.#? 3,1,2,1,1,1
+?.???.?#??.. 1,2
+?#?#????.##?##???# 4,2,5,1,1
+?#.#??#?#?#?? 1,8
+##?.????##? 3,6
+?????????? 1,2,1
+??.#??.#??. 1,1,1
+?#??#.??#???.?#. 5,3,1,1
+??##?#?????. 5,2
+?.??#?????? 3,2
+#????????? 1,7
+??.#?..???#? 1,5
+##???##?#?? 2,4,2
+?#?.??#??.?.? 2,3,1
+???##???.??# 1,5,1,1
+?#??.?.?#.????# 1,1,1,3,1
+?.?.#.?????????#.# 1,1,1,6,1,1
+??#?????#???##??#?## 5,12
+?#???#?????. 7,2
+???.?#???? 1,2
+???.??????.?#??#?? 2,1,1,2,1,1
+???#?.#?##? 2,1,5
+?#??.??.?? 3,2,1
+??#.???#.???. 1,2,1,2
+??.??????????##..??? 4,7,2
+???#??.##?????.. 1,1,7
+???#????#..#?.??? 6,1,2,1
+????????#? 1,4,1
+###?????.####.?? 5,4
+?#?##??#.??. 7,1
+?#????????????#?? 2,6,1,1,1
+.?#?????#??? 2,5
+??#????#####?#.# 4,6,1,1
+?????#???#??? 2,6,1
+.?..????.#?? 1,1,1,3
+..?????#?#?###?. 1,10
+?.##??#??.??.???#? 2,2,1,4
+???????.#????#?#?.# 1,1,1,8,1
+???#?.??.??? 5,1,1,1
+??.?#???#?????.? 1,2,5,1,1
+.??.???#?##? 1,1,1,2
+.?#.?#?????# 1,1,3,1
+#?##?????###???????. 1,2,1,7,1,1
+.##???#.??#??.? 3,2,1,3,1
+??###.??.?????? 5,1,1,2,1
+?.??####??????.#???? 7,2,5
+?????#?.?? 3,2,1
+???????.??#?? 1,2
+.?.???#?#??.? 1,1,5,1
+????.??.##???. 2,2
+??.#????##???? 1,1,1,6
+?.???##????.??. 1,1,5,2
+????.??????##?#??? 2,11
+??????#?####???# 12,1
+?#???.???# 3,1,3
+?????????#?#? 1,2,6
+???.??#.?. 2,3
+..#..?#?.??.# 1,3,1,1
+?#?#???#.#?#.?? 3,3,1,1,1
+?#?##?????? 6,3
+.?#???#.?.?##?#????? 2,1,1,9
+??.??#???## 1,3,4
+.#?.?????..?#??? 2,4,5
+?#????#.??? 3,1,1
+??.#???#?###????## 1,1,13
+???.###???#???.#. 2,7,1,1
+.????.?.?????? 3,1,3
+#???????????..#.. 4,1,1,1,1
+?.?.##??.??.????. 1,1,3,2,4
+???????.????? 4,1,1,1
+??#??#.????.?? 6,3,1
+???#?????##????##?? 1,3,1,10
+?#???#????.?##?. 1,1,2,2
+??????#?.???#.? 1,3,1,2
+##???????? 5,3
+?#?###?.?.???????# 6,1,1,1,1
+???????.#?? 1,1,2
+.????.??#?.?#.??.. 2,2,1
+??????..?.?.??.. 4,1,1
+#???#??#??????##? 2,1,10
+??????..#.???. 1,1,1,3
+??????????#????# 6,3,1,1
+??.?????.? 2,2,1
+?.?????#???.??# 3,5,2
+#?#.???#??..?#? 1,1,1,3,3
+??.??..??#.???##???? 1,2,1,1,6,2
+?.??##?##?.?.??#??? 8,4
+#????##????????#?# 1,1,2,4,4
+#?#.???#?.?????? 3,2,1,6
+#??????????..#??? 2,5,3
+????.??.??.#.#?#?? 3,1,2,1,1,3
+???#?##??? 6,2
+????????.#?? 1,1,1,2
+##?.#????#?#?. 2,1,2,1
+??#??????#??#?. 1,1,1,2,5
+????..???? 1,1,3
+.?..?#.?????.?? 1,1
+.?##??.#..?????#? 2,1,6
+??.?#..???? 1,1,2
+#??#??#???????????? 4,1,2,2,2
+..???.??????#?? 1,3,4
+?.#??.??????#? 1,6
+#??????#???##???? 1,2,4,4,1
+??.??????? 1,1,3
+.???#???##????#? 1,6,4
+??#???.????#. 3,1,4
+#?.??????? 1,1,1
+??##???????????????# 1,4,1,1,6,1
+#?????##????????? 1,1,5,2
+##?????#?##?#?.? 2,10
+##???#.?#.?##?. 3,1,1,3
+??#?.????? 3,1
+.?#.???.?#?#???#??? 2,1,1,6,4
+#???#?#??????. 1,3,1,2
+.??????.?.??. 1,3,1,1
+.??##????.? 5,1
+..??.???##??????..? 1,5,1
+.#..???????? 1,3,1
+??.???.???###.??.? 2,6
+?##????#?#..?#? 3,3,1,3
+??#.??#.???#? 2,3,5
+?#???#?????##????#.? 5,1,5,1
+??.???###?????????? 8,3
+?##?#?#?...#????#??? 7,1,5
+???#???#??#.????? 1,6,2,4
+?.?#???##.? 4,2
+.?.????####. 1,5
+?.#??.?#?. 3,1
+..?#??.??.?#?#???? 3,6
+?.??????#? 1,7
+?.????.??.?####???? 1,2,1,1,6,1
+?#..#????????? 1,1,3,1
+?#????##.???#???? 3,3,4
+.???.?#?..# 1,2,1
+.##?#?###??.??? 9,3
+#?.????#??###??##? 1,5,5,2
+?????????#. 6,1
+#?????.#?. 5,2
+??????????? 2,3
+.??#.???....#.? 3,1,1,1,1
+??.??#??????.???? 1,4,1,3
+.?#.#?#???##???#. 1,1,1,1,6
+?#..?.?.??? 2,1
+?????.?#?. 1,1,2
+??#?#??????#???? 8,2
+???..???##?????.? 2,6,1,1
+?.????..??#?.? 1,3
+???.??.?#?#.? 1,1,3,1
+?#???###?##?? 1,7
+??.####?????#.... 6,1
+???#?.#?.?? 2,1,1
+?.???#??#?#.????? 1,4,1,1,3
+?.??.????????. 1,4,1
+.?#????#???.? 4,2,1
+#?#.??.?.?###?????.? 1,1,1,1,3,3
+?#??.??##??#?##?#? 4,8,2
+.?????.#?? 1,1
+??..#?.??????#? 2,1,7
+??##????##?.?? 1,9
+?#????#?#?.?.?? 4,1,2,1,1
+?#???#??.????#? 1,4,1,2
+??.????#?. 2,2,2
+??????#.???##??? 4,1,1,3,1
+?##??##?.???.##?. 2,3,1,2
+.????????#?. 5,1
+.??.????????#? 1,2,5
+??.??##?#?.????????? 1,1,2,1,8
+#?###?????# 5,1,2
+#?.???#..? 1,3
+.??????.#?.#.? 4,1,1
+?.??.???#??#? 2,1,2,1
+????..???##?????? 1,5
+??#??????.????#.. 7,5
+?###???#?.?.???## 7,4
+??.?.?????.?? 1,3
+???#??????????? 1,1,2,1,1
+.??#.????? 2,4
+.???????.?#? 3,1,1
+#.?.#??#???? 1,2,1,2
+???#??##??????#??.?? 11,1,2,1
+#???????.?#?..?#? 3,1,1,3,1
+?#?#.?.????.??? 1,1,1,1,1
+???.#????????? 1,9
+???##??????.?#???# 9,1,1,1,1
+?..?????????.?...? 1,2
+????.#?#?#? 2,1,5
+???#????.?#???.??? 1,2,1,3,1,2
+???.##??????.?#? 1,5,1,1
+..????????#? 3,3
+?.?#??#.??????.#? 1,4,1,1,2
+?.???.??.? 1,1,1
+??????##?#?#?.????# 8,4,2,1
+??#?#?????#. 7,2
+.??#???.?.#??????##? 2,1,9
+.?##??#????.? 2,5
+.?.?##?.#.?.##.?#? 1,2,1,1,2,2
+?????#???#?. 1,6
+.#???????#????#?##?# 2,11,2,1
+???#???????.#??.?? 1,5,2,2,1
+????????.????##???#? 2,2,8
+??????###?#?????#??# 8,1,6,1
+???#?.??###.?? 1,1,4,1
+??.???#???##??.#?#?# 1,10,1,1,1
+??#?#?????#?????? 3,3,1,1,4
+..?????#?.#. 3,1,1
+??????????.??#????# 3,4,2,3
+?..?#?.??.#???#?#?. 1,3,1,3,1,2
+.???#???#?? 2,3
+?.?#?..?#?? 1,1,2
+???????#?? 1,1,3
+???.??...? 3,1
+??##.??.?????#.????? 2,6
+??#???#?#???.? 1,8
+?##??????? 6,2
+????????????#?#?? 5,4,1
+#.????#?.?. 1,1,2
+???#??.?#. 1,3,2
+#?.???#?????.# 1,1,7,1
+?###..??.??? 4,1,2
+#??????..#?? 3,1,1
+???#???#?#?#???.?? 1,13
+???????#??????## 5,1,6
+.??.???.???###. 2,1,5
+#.#???#??#?#?????# 1,1,8,1,2
+?..????##?.#? 1,1,4,1
+????###?????#??? 1,10,1
+????##?????? 2,2,4
+.?????????##?? 1,9
+.?.?##.?#?#? 3,3
+..??##?##?#?#??? 4,7
+????##????#??????? 4,4
+#??#??#??? 4,4
+??.??????#??##?. 1,1,6
+?.??#?????.#??#? 1,3,1,1,1
+.??#????#????## 8,1,2
+.?##..???..? 2,1
+??.??????? 1,2,1
+?.?#?????#?#?.#..?.? 1,11,1,1,1
+??????.?.??? 4,2
+..????????? 3,4
+???#?#?#?.?#.?? 9,2,1
+??##?##??#? 6,1
+?.?.?#???#. 1,1,5
+???#????#???##???.. 9,4
+?##???#??? 3,1
+.?#?.?.#??? 1,3
+????????????#?. 6,1,2
+.##?#??#?#?# 9,1
+?#?#.?..?. 3,1
+#????#.?.??? 2,1,2
+??..#????..??##? 2,5,3
+??##?#??.??#???##?.? 6,1,5
+??????..?? 2,1
+#??#?.????#?.#?.? 1,1,5,1,1
+???##???.#?#?? 5,3
+??#?#??.????? 4,1,1
+.#??#?#??#.?.?##?? 6,1,1,4
+.?..????.??#? 2,3
+#???#??###.#? 5,3,1
+?#?#??###?????#? 10,2
+??.?#??#.?..????.??? 1,5,1
+#??#.#??#?????.?#?? 2,1,4,3,2,1
+???##??...????????#? 1,5,1,2,5
+?#?????????????.???# 4,4,1,3
+.#?????##?????# 8,1,3
+.??##??????##?? 4,3,2
+?????#.?#?.?????.# 1,1,1,2,2,1
+???????.?#? 1,1,2
+??#.???#????# 3,1,1,3
+#?????#??? 1,3,3
+??.??#?##.#??? 6,3
+?????.?????. 1,2,2,1
+?????.????#?????? 1,1,4,1
+??##?????.?????##?? 1,5,1,2,5
+.?????#?#?#.?.#.# 8,1,1,1,1
+???#?#?????##???.?? 16,1
+????.#????.????#?? 1,3
+???#??.#??? 4,2
+??.#.?#?#?????# 1,1,5,1,2
+#?#???#.???????#???? 1,5,1,3,3
+.?#????#???????? 1,1,1,1,4
+???.???#??????## 1,1,9
+#??.?##?.???#? 1,3,5
+???.??.??..??? 3,1,1,2
+#????.#.#? 3,1,1
+?#?##?#??#?..?????## 9,2,1,2
+????.#??#???.????? 1,1,2,4,1,2
+#??..??.????? 3,1,1,1
+#???#??#????? 3,1,6
+??###??#??#?##???#. 3,2,8
+??#???.?#????? 3,5
+????##??.????#?#? 1,3,5,1
+#?.?....?#. 2,1,1
+?.##??##???#????#? 11,4
+?#?..#?.???#?#?##. 3,1,7
+?????.?.#.?.?. 5,1,1,1
+??#???.#??? 4,2
+?#..???#?#?##??#?. 1,10
+#?..??????? 2,5
+???##??????. 1,2,1,1
+#??.???????????#??? 1,1,1,7,2,1
+??.???##??#???? 1,1,3,3,1
+?####?#?#?????.???? 12,1,1
+???##?##?.#?.??#?# 1,6,2,5
+???#.?.### 2,3
+?#.#??.#?#??? 1,3,3
+???#.?##?.?.#????? 1,1,4,1,1,3
+?.#???#.?.#?.????? 1,5,1,1,4
+???#???#?????.???.? 3,2,2,1,1,1
+??#??.??####?.#?.?. 1,1,6,1,1
+?.????#????#?.??#?# 1,1,5,2,5
+?????.?????#?. 2,1,2
+?.?.?#?????.????.?.? 2,1
+?##???????#?????? 2,2,6
+????#?#???#??#? 11,2
+.?#?#...#?##????? 4,1,4
+?#?.?????###???.??? 3,10,1
+#?##????.#.????##?? 8,1,6
+???????????? 1,4,4
+.?..?.#?#??####??# 1,1,12
+??#??#????##??#.???? 3,10,2
+?????????#????#?.?? 1,4,4,1,1
+?#????????????. 1,1,6,1
+#?????##??? 8,1
+?..?.?#??#??#??. 1,1,9
+.?????#..?? 2,2,1
+?#???????????.? 7,2
+?.??.?#????#? 1,1,7
+?????##????. 2,4
+???????..#?.? 3,2
+?????#.????.?.? 6,2,1,1
+#.?.#??.??? 1,3
+???????????##?????. 1,1,8,1
+?????.#.??#?? 1,1,1,4
+????.#?????? 3,1,1,3
+????#????##???? 1,9,1
+?.???#?..#??????#? 4,4,2
+?#????.??#??#???.? 2,1,4,4,1
+.#??????#?#?##?? 2,11
+.?.???????#??? 1,1,2,2
+#?.??..??.?.#??? 2,2,2,2
+?..#?.??#???#.?##?? 1,5,4
+?#????#??#?????#???. 4,1,1,4,1
+??.??#???.?.???#.. 1,2,1,1,4
+.???????#?? 1,5
+???#?#?????? 2,4,1
+?.??#??#.??? 1,1,1,1
+?.?#...??#??#?. 2,1,5
+.??#??.???? 3,1
+#.??.???#?? 1,4
+?????.?#?#???? 1,5
+?#.?#???#.. 1,5
+#????????????.????? 1,1,1,4,2,2
+?#?.??##????????? 2,5,2,1
+???.?????.????? 3,1,5
+.?.?????#???.???? 1,9,2
+??????#??#??.#?? 1,8,2
+?#???#????. 1,2,2
+?#???#??.?#??#???? 6,2,3
+#??????#???.?.?? 3,4,1,1,1
+????.??.?.?????###?# 3,1,1,8
+#.?.?#?????.?????.. 1,2,1,2,1,3
+.?.?##???????? 7,1
+?#?????#???#?? 5,5
+#.???##??? 1,5
+??????.##? 1,1,3
+.?.????..? 1,1,1
+???#?????#?????.?.?? 1,7,1,1,1
+??????????#.??#?? 1,3,1,1,4
+.#????###? 1,7
+??.??#...?#.?? 2,2
+???????#?#?? 1,5
+??#?#?..?#???? 6,1,2
+?#?#????#????????? 2,3,2,2,1
+????.#??#? 1,2,4
+????#..??.?.?##.. 3,2,1,2
+.?#?.#?.?#????###?? 3,2,9
+.????#?#?#????????? 1,4,1,7
+?#?..#??#??. 1,6
+.?????.#????#?..#?? 1,1,1,1,3,3
+???.??.?#? 2,2,2
+???#?##??#?#.?..? 2,7,1,1,1
+##??#??#??????#? 9,1,1,1
+?#?#???#.???????. 4,1,4,1
+???##??#?#.?? 1,7
+??????#?????????? 2,1,1,2,2
+?#?##???#?? 1,2,4
+?.???##??????????? 1,14
+??.?#?????#? 1,3,2
+????#???#??.?.?????. 1,7,1,1,1
+??#??.##?##??????# 3,8,1,1
+???#??#?.???? 2,3,4
+?.??#?????? 1,4
+??#??#???#??##?? 3,3,1,2
+???????#??#?..#?#??? 12,1,2
+#?#???#????#??? 3,1,1,5
+.??..?##?#.??##....? 4,2
+##???#??.#????? 2,2,6
+?#?????.???..??????? 5,2,3,1
+???????#???#??.??.?. 2,11,1,1
+?.??#???#????.. 2,3,1,1
+..??..???#.???????? 2,1,5
+???????....? 3,1
+???#????#??#????#? 1,1,11
+??.????..?#? 1,1,2,1
+#?.?#?.???? 1,1,2
+?#????.??.#? 1,1,1,2
+???#?#???#?? 4,1,1
+???##?.?#..?.# 5,2,1,1
+???##.?#???##??#??? 5,10,1
+???#??##.??##.??? 5,2,1
+.?##?????..?##???.? 8,2
+#??#.?.??#.? 2,1,2,1
+.?#?#?.##.#? 4,2,1
+??##?.???#?#??#??#? 3,9
+.?.??###??#.#?.? 1,4,1,2,1
+??#?.?????#? 1,1,1,1
+.?#??#?##..?#??#.# 8,5,1
+?????#?#???.#.?.?? 1,2,6,1,1,1
+.???????#. 3,1
+#?#.?????????#?? 3,3,2,2
+.????..#?# 1,3
+?#????.#.?###??.??? 5,1,5,1,1
+????#..#?#??#.??..? 2,1,3,2,1,1
+????##??.#?# 3,3
+#???#?????????##?## 1,1,2,3,3,2
+#????????? 1,2,2
+..?#?????????. 8,2
+.##..???#???#?.# 2,1,1,4,1
+.???.??????.?#?.??? 3,3,3,1
+?.#??????#? 1,1,4
+?#??.????#?##?? 1,3,4
+.??????.??? 5,1
+??.??.#.??#? 1,1,3
+?#?????????..??????? 9,1
+.??#?#???????????# 5,1,1,2,2
+##???.??#??# 5,5
+???.?????# 2,2
+?#???????????#?? 5,4
+?#???#.???#.?###??#. 2,2,1,2,3,2
+#?.??????? 1,1,3
+#???#????.#?.#? 8,2,1
+?#.#.??????#??.???? 1,1,1,4,2,1
+.#?#??.?????????? 3,1,1,1,2
+??????#?????#???? 1,3,7
+????.??.?##.. 2,1,1,2
+..?#???.??.??.??#??? 4,5
+?###????##??#??#. 5,10
+?#?#????????.??? 10,1
+???#??#?.?#.??? 6,2,1
+???????##??#?????.# 1,1,6,1,1
+??????#.?? 1,1,1
+?##??##.?#???. 6,3
+.?#??#.??#?#??.? 1,1,4,1,1
+???????????????#.? 12,3
+.??#?###?.#????#?. 6,4,1
+#?????????? 4,1
+?????.????.??. 1,3,2
+??.????###?#.???. 2,7,1
+?.???????.???#??#? 1,6,1,1,3
+???..????##??#?.?? 1,10
+?????.????????? 2,7
+???.????????##???.? 2,11,1
+#?#...???????#??#??? 3,3,7
+?#.?#???#? 1,2,3
+??#?.?????#.??? 3,1,1
+???#??????? 1,3
+?????????#?#?.??.?. 11,1
+?#?????????.????.??? 11,4,2
+??????????????#.? 2,1,2,1,2
+?#.##?????#?#?# 1,4,2,1,1
+?.??.???????#???#.? 2,1,6,1
+??#????#?#.????. 3,3,1,1
+?.??.?.??#?.?.? 2,1
+??????#??? 1,2,4
+#..###???#. 1,7
+????..#.???.? 4,1,3,1
+??.???##?. 1,4
+???#.???#???.?????? 2,1,1,2,5
+?????#?##? 1,6
+##?##?#?##????????. 10,2,1
+.?..????#???? 1,1,5,1
+?#???#?.?????.#. 2,1,1,3,1
+#?????..?.#?? 5,1,1,1
+????????????? 1,3,2
+.?.???##??????? 1,10,1
+.?#?..???.###? 2,1,3
+?..??##?..? 1,4
+#?.???##?????.??.? 1,1,6,1,1
+###??#???.????# 3,1,1,1,1
+???.#???.#? 1,2,1
+???.?#?#??????. 5,1
+?????????#?#???? 3,5,1
+??????#????##?. 1,7
+??#????#????#??????? 2,15
+?????##??#?????#? 6,7
+??###?.??? 3,1
+??.##????#? 1,2,2
+??#??.?????? 2,2
+??#??????.???#####.? 3,1,7
+??#?.?..?.? 2,1
+?.??.#?#?#????.?? 1,2,6,1,2
+#?#.?..#.?????. 3,1,1,2,1
+??#???.???? 5,1
+##?????.?.??????.? 7,2,2,1
+.???#?#???? 1,8
+.?##?####.?.????? 8,4
+.?...##??#????????. 1,11
+??#..?#??? 1,1,1
+.?.??.???#?????#??#. 1,1,1,11
+?#???#???.#????? 2,5,1,1,1
+.?#?.?.?##??.? 3,3,1
+.??#?.???#??? 1,4
+?#????#???#?... 2,2,2
+.?.?#?????#???.. 1,3,1,1,1
+#???.?#??# 1,1,5
+?????????## 1,1,5
+????#??.####?? 1,4,4,1
+.??????#?#???????? 1,1,11
+?.?#.?#?.??????. 1,1,1,5
+???#?.?.????????#?? 2,1,1,1,2,5
+##????#????. 8,1
+#..###??#?#?# 1,10
+?##.??.#.???##.? 2,1,1,4
+#?##?#???? 7,1
+???#????#???## 5,1,4
+?.?#?.???#? 2,1,1
+..???????? 2,2
+???.??#???????? 1,3,6
+????.?#??#????##?#?. 1,1,2,1,2,4
+???????.?..??##???#? 1,2,1,4,1,1
+.?#????.???##????#?? 3,2,9
+?#??#.??#????????? 3,1,2,1,3
+???#??#..?? 4,1
+?.??#?..?. 3,1
+???????#?#?#?##?#? 3,4,1,5
+#?.??..????##?###? 2,1,1,8
+?..?####?#??#?.?? 1,10,1
+#?...???..? 2,2
+??????#?????? 1,1,7
+????????????#? 1,2,6
+.?.#??????#?#??? 1,2,2,7
+???##??#?#.????#???? 10,2,1,3
+.??#??#.???#? 6,5
+####????.#?#?.?.#?#? 4,1,3,1,2
+?.????.#?.?##?#? 1,3,1,5
+.??????????#.?#??. 2,2,2
+???##????#?..?. 5,2,1
+.????#.?#?#???? 1,3,7
+??.??????? 1,2,1
+#?##?????????##?? 4,1,1,1,4
+??#?#?.???? 1,3,1
+?..#???#?#??. 1,3,5
+?#????????#???? 2,11
+#?.#?.#?#?##..???#?? 1,2,6,5
+??#??????.??.??#. 1,1,5,1,3
+?.????????#? 1,1,1,1
+??##?.???#?. 4,4
+?#??????.?.?#?. 1,2,2,2
+??.#?#?????...#? 1,1,1,2,2
+...?????.?##??.? 2,3
+..??##????. 1,4,1
+????.?..???#??#?? 1,1,1,7
+.?.??????#. 2,4
+..???..#.? 1,1
+?.?????????#.?? 2,2
+??.#.?#?.?#?#?????? 1,1,2,6,1,1
+???#?????#??? 1,7
+?##?##.???#?????.?? 6,3,4,1
+??###..????#??#..?#? 4,4,2,2
+#..????#?#?#?####.? 1,1,1,1,8,1
+???#?#?###?#?.?##?.? 9,3
+.###?#?#???.??.??? 9,1
+??###???#??#? 7,4
+.#?.??#????? 2,1,1,3
+?#???#?#?.??##???#?. 8,1,3,3
+???????#?. 1,1,1
+##.?##?????????? 2,10
+#.#?.#????#? 1,1,1,1
+.#.?????????#? 1,2,2,1
+.#????.##? 1,2,2
+??????#???##? 1,3,3
+?#?#?.?#??.??? 4,3,1
+?.#??#?#?#???#?#??? 1,16
+?.#???#?#???.##????? 2,2,4,4,1
+????.??#???#??.???#? 1,2,1,1,1,4
+?##???????#???#??.? 3,1,2,4,1
+?#???.????#????.# 4,3,1,1
+???#????.???.?#??? 1,3,1,1,1,3
+???#??..#?.#??? 4,1,1,1
+.?#????.?.?## 1,1,3
+?.??##???#?.?#??.? 6,1
+?.###???#????#??? 1,4,4,2,1
+?.??##?.?#???##?. 1,2,1,5
+##??????#??#.???##?? 3,6,6
+#?.????##?#??#? 1,2,8
+???###.???#?#?#? 3,6
+#?.?.??#???#???# 2,1,5,1,2
+#?????#?????#??#? 1,1,11
+??????..?#? 2,1
+????.??????.??????? 1,1,1,2,4
+???????#???#?. 2,8
+??.????#?? 1,6
+?#.?????#.?#????.#?. 2,1,3,5,1
+?#?#??.?????#???? 4,7
+.??????.???????# 1,4
+#?#.???.?#? 3,1,2
+????#?..#? 1,2,2
+#????.#?#?.?????? 1,1,4,1,1
+?#????#?#??. 2,4
+?.#???????? 3,1,1
+??????#..???#??? 1,1,5
+????#??#???????? 6,2,1,1
+.#???#?#.##? 5,1,2
+????.??????.?.#??# 2,5,4
+??????#???#?.??#. 7,1,2,1,1
+????#???.#? 6,1
+?.??#?#????#??????? 5,5
+????#.##??.?? 2,1,2,1
+##??###?#???# 10,1
+?#????.???????##.# 3,1,1,1,5,1
+###??#?.??????? 7,3
+??#?##?..???? 4,1
+?????###???#?..? 9,2,1
+???#????#?. 6,2
+???##???#?.?###??. 3,2,6
+????#???#?##???? 2,8
+.??.????... 1,1
+??#..?????#.##?#??# 2,3,1,2,4
+.??????##?.? 2,2
+????#?.??.? 1,1,2
+???#??.???##? 4,1,1,2
+??.?##.#?.?#?? 2,3,1,4
+?????.?#??# 1,2,1
+???.??##??#? 2,2,1
+?.?#??##?##?#..?.?#? 5,4,2
+.#?#..?..?????.#? 3,1,4,1
+?#???#??????#?????#? 3,3,1,9
+#?#?#???????#?.#.?# 1,3,4,2,1,1
+???.????#??.? 2,5
+???##????#?.#. 3,3,1
+?????#?????. 1,2,2
+.???#???##?#?#?.?#.# 1,10,1,1
+?##?????###??.?..?. 4,6,1,1
+.??#?.???.? 1,2,1
+???##??????##??#?#? 4,2,2,4
+#????#?#?? 1,1,4
+????#?????? 4,4
+????#??..????#?..? 1,1,1,3,1,1
+?.??????.?#?# 1,1,1,4
+?#?????????##. 4,5
+?.###????#???? 6,1,1
+???????#?#???#?? 1,2,8,1
+???????#?#? 1,3
+?###?#??????#??????# 10,2,2,1
+?.????.??? 1,1,2
+.#?##????.?? 4,1
+??.??####??#.??# 9,2
+?.?.???.???#?# 1,1,4,1
+#?#?#?.#.?#??? 5,1,1,2
+??#?#?##???.#?#??#?? 1,9,1,1,1,1
+.???#??#??#??? 4,4,1
+???#?????.?.??????? 1,7,1,2,1,1
+?????###.#??#??.?.# 3,4,1,2,1,1
+?#??????#?????##??## 10,7
+??????????#???????? 7,4,2
+??#????#???? 7,1
+?.?#??.??? 1,2,2
+????..????????????? 2,3,4,2
+.??.???.??#? 1,1,1
+#????.??#?.???. 5,3,1,1
+???#?#??.?#???#?.#? 3,1,1,6,1
+.?????#????###?????? 12,2
+#?????#??????? 2,4,3
+?###??#???.#. 3,2,1
+??.????.??.?????##? 1,2,1,1,8
+?????.???? 1,2
+.?..?????. 1,1,1
+?.?####?#?#???????.? 1,9,1,1,2
+.????????????#??. 2,8
+?##???.???##??#? 5,7
+??????###.?#?? 1,1,4,4
+.?..?#???????? 2,2
+#??#?##??#?????#.??? 11,2,1,2
+.??#.????##.???? 2,1,2,1,1
+#???#???.??#.???? 3,1,1,3,4
+.??.???#?#?? 1,1,3
+.?#??????#?? 9,1
+??.?#?#???????##..? 1,13,1
+.??#??#?#?????##???? 1,14,1
+?#??#?#.????????? 6,2,2,1
+#?#??.???????#. 5,7
+????.#??#?? 1,5
+?#..#??????.?#? 2,6,2
+.?#...????##? 2,2,2
+.##.?#?.?.?#?.?# 2,2,1,3,1
+?????.??##?. 3,1,2
+?#???????#????????#? 2,1,2,1,5,1
+?##?.??????#? 3,1,1,2
+???.??#??.#?? 5,1
+.???#?#????###?#..? 4,7
+#????.???#?#?.?# 1,3,4,1,1
+?????#?#?.???.??.. 2,1,1,1,1,2
+.#???.?.??? 4,1
+.???#?#..? 1,3
+.?#?###???#??? 2,4,3
+?##???#??#? 2,6
+????.???##?.?? 1,1,4,1
+????#.???.??? 3,1,1
+?.??#???#??.?#. 5,1
+????.??????#???#??.. 3,7
+#.???#.????#.??? 1,2,1,3,1
+#?#?#????#???#?..?.? 14,1
+?#..??#???#? 1,2,2
+..#???.???#? 3,1,1
+?.???..???.??? 3,2,1
+#?#???????#??.??? 1,1,7,2
+??????.??.#???.??? 1,3,1,1,1,1
+?????#?#?#.????..#?? 8,2,3
+.????#.???##.? 5,3
+?#???.??.?# 3,1,2
+?.??#???.?.? 1,1,1,1
+??????...# 3,1,1
+.#??#??.?#???.??? 4,1,2,1,1
+???##?????????# 5,3,1
+?#????????#?? 5,1,1,1
+??..?#?..??.? 1,2,1,1
+.##??##?#???#?#?#? 2,5,3,1,2
+.??..#??.#?.??#???. 2,1,1,2,2,1
+??????##?????## 2,5,4
+??.??#??#????? 1,9
+???#??#??.?? 1,2,2,1
+#????.??????? 4,1,2,1
+???##.??#?#?#.#??# 5,7,1,1
+?????.?.??.?# 4,1,1,2
+#??#??##.#.? 1,6,1
+.?.??.?#?? 1,3
+?#?.??#.???.??#???#? 3,3,2,1,2,1
+??#?..??#??#???????? 2,9,1
+????#????. 1,4,1
+??#????.?????##?#?#? 2,2,1,5,1
+.???.???#? 3,1,2
+???????.??.? 2,1,1
+##?###???? 7,1
+?????????#?# 7,1,1
+.??#??##?#????#???? 2,12
+???????#?#? 1,5
+??.?#????? 1,1,1
+.?...#??#?#?? 1,2,1,1
+?????###?????#?#.? 12,1
+?#???##??## 1,8
+???#??.?.??.? 2,2
+.???.?.##??###?#???. 1,1,7,1,1
+?#??????#????.? 4,7
+????#?#????#??????? 9,1,6
+??#??..#?#? 1,3,4
+?.????##???#? 5,2
+???#????.??????# 1,1,1,1,5
+?#?#???###??#?..? 6,6
+..??????.. 1,1
+?.?#?.??#.?? 1,2,2,1
+????..?????# 1,1,2,1
+?.#??#??#.???#??# 7,1,1
+??.#??.??.???##?.??? 2,1,2,6,1,1
+??#?#..?.#??#?.?##?? 5,1,2,2,4
+.????..???? 2,2
+#???##.??.? 6,2
+.#???#??.#?#?#?## 7,8
+?.?..##??#? 1,5
+#????????.#??? 8,2
+.??.#??#???#?.?..?. 4,2
+?#???????#??#?.??# 1,1,7,1
+#???#??.??.???. 3,2,1,1
+.???#?????.. 2,1,1,1
+???????#??#?? 4,2,3
+??????.?.???..??.#? 1,1,1,3,2,1
+??.???#??..?? 1,5,1
+????#?????.????.? 7,2,1
+?.?#?#?.???#? 4,2
+.???#??#?? 1,1,3
+#????#???.?.??# 2,1,1,1,2
+#?#??.????? 5,1,1
+...#?????? 2,3
+..??..???? 1,3
+????##??????? 4,1
+?.#??.?#?.??# 3,1,1,1
+?#????#?.????? 7,1,1
+?.??#??.?.??. 3,1,1
+?#?#???.????. 4,4
+?.?...????.. 1,4
+????#?#???#?.?.# 9,1
+??.?????#?.?? 1,1,3,1
+?.#?.?.??. 1,1,1
+?.?#??#????#???.#?? 1,2,7,3
+?.??##?.?.#?.? 5,2
+??#.??#??#?.??? 2,6,1
+?.????#?#?#???? 1,4,6
+??#???..#???###????? 1,1,11
+?.???#.???.? 1,2,1,1
+?.???????.?.?###???? 1,1,1,1,3,3
+???##?#?.???.?????? 7,2,3
+????##????? 1,4
+.#?#??????#? 1,2,1,3
+??#?#?.????????. 2,1,8
+?.??#?.?#.??? 1,2,1,2
+???#??#?#.?????? 8,5
+??????#????#???? 1,13
+?.????.??.?#????#?? 1,2,1,1,5
+???.#?#?.. 1,4
+#??????#??? 3,6
+?.?###?#??..?#? 7,3
+??????#?.?.?????? 2,1,1,5
+?#???#.???###???? 3,1,1,5,2
+?????????#?#? 1,3,1,4
+?????.?????.?#??#? 3,2,4
+.#??????.#..??# 1,1,1,1,3
+.???#?###??????? 8,3
+??#????##?..?? 9,1
+.?#?#.??#?.? 2,1,3
+###???.???? 4,1,3
+?#.??#??## 2,2,3
+??..??.?#?#?##?. 1,8
+.??????????.? 3,5
+??.?#?#???... 1,6
+?????????.??????? 4,1,1,1,1
+???##?????.???? 7,4
+?##???#.?.??..?? 3,1,1,1,1
+??#??#?.???.#???# 1,1,1,1,5
+???#?##??.???. 7,2
+?????#???? 1,2,1
+#????????.??# 8,2
+??##??????#?#??? 5,5
+?.????????.???? 1,1,5,2,1
+?.??..????? 1,2
+??#??.?#?#?#????. 5,8
+????#?.???????#???#? 2,3,8,3
+..#???##.?????? 1,1,2,3
+#????#?##?#??????? 1,1,7,1,3
+#?.????????? 2,1,3
+????????.?#? 1,1,2,2
+.#?#??.?#???.##??? 5,5,2,1
+??????????#?? 9,1
+.?##?#????##? 6,3
+?.??##??#????##? 1,11
+???###????? 7,1
+#????##??##?.. 1,8
+?.??#??????????.? 5,3
+#???.???#?? 4,3
+.##??????#?.??. 4,1,1,2
+?#??????????. 1,2,3,1
+.???#?..#?.?????? 5,2
+.?#??????.?#??.?#? 1,1,1,2,1,2
+?#?##????#? 4,4
+???????#.?????#??#. 1,1,3,1,2,1
+??#?????????..???##. 4,1,2,5
+.???#.???.? 3,1,1
+?.?.?#?###??#??.# 1,1,6,3,1
+?#???#?#??..???####? 2,7,8
+.?.??????. 1,6
+#?#.?#??.??.????#? 1,1,2,1,6
+?.???????? 2,3
+..??????#??????? 8,1
+???#?????..???#?#?#. 7,8
+.#??????#?#??? 1,10
+???.??#.???. 3,1
+.??.??#?.?...? 2,3,1,1
+?.????????.###?.#? 1,1,1,1,4,2
+??#?????#? 1,1,5
+?..###?#???..???? 8,3
+???????????##.?. 1,2,7,1
+#?###.????? 5,2,1
+..?????..?????.? 3,1
+.?#??.?#.??????. 3,2,5
+?.?#.#??.? 2,3,1
+..?#????????????.? 3,2
+#????#??#???????? 9,4
+????????.#????#.?? 7,6,1
+??????#?.??##?? 2,3,3
+.????#.??? 1,1,1
+?????????????#???.?? 4,8,1
+.??#??????#? 3,4
+?.#???#.???? 1,5,3
+.?.?#??#???#???? 1,1,2,6
+.??.#??.?.?#??????? 2,1
+??..#.?..? 1,1,1
+.#???#?.#.???.???.? 5,1,2,3
+????#.????#???#..??? 2,1,3,5,1,1
+.???????????#??????. 7,4,2
+#??#??#.?.?.???? 7,1,1,1
+.?.????#?????#?????? 5,9
+????#????#???.?#??? 13,2,1
+???????#?##?..# 1,4,5,1
+??#???.???#?...## 3,1,3,2
+?????.??.???.? 2,1,1,1
+#??#??????? 7,1
+??.#???#?????? 1,2,8
diff --git a/src/days/d11.rs b/src/days/d11.rs
new file mode 100644
index 0000000..af40ab3
--- /dev/null
+++ b/src/days/d11.rs
@@ -0,0 +1,68 @@
+use std::fs;
+
+pub fn solve() {
+ let path = "res/11/input";
+
+ let contents = fs::read_to_string(path).expect("I/O error, wrong path?");
+ //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?"));
+
+ let mut galaxies: Vec<(usize, usize)> = Vec::new();
+ for (i, line) in contents.lines().enumerate() {
+ for (j, c) in line.chars().enumerate() {
+ if c == '#' {
+ galaxies.push((i, j))
+ }
+ }
+ }
+
+ let mut result = 0;
+ for i in 0..galaxies.len() {
+ for j in i + 1..galaxies.len() {
+ let (x1, y1) = galaxies[i];
+ let (x2, y2) = galaxies[j];
+ result += x1.abs_diff(x2) + y1.abs_diff(y2);
+ }
+ }
+
+ for (i, row) in contents.lines().enumerate() {
+ if !row.contains('#') {
+ let top = galaxies.iter().filter(|(x, _)| *x < i).count();
+ let bot = galaxies.len() - top;
+ result += top * bot;
+ }
+ }
+
+ let space: Vec> = contents
+ .lines()
+ .map(|l| l.chars().collect::>())
+ .collect();
+ for j in 0..space[0].len() {
+ let col: Vec = (0..space.len()).map(|i| space[i][j]).collect();
+ if !col.contains(&'#') {
+ let left = galaxies.iter().filter(|(_, y)| *y < j).count();
+ let right = galaxies.len() - left;
+ result += right * left;
+ }
+ }
+
+ println!("Result 1: {result}");
+
+ for (i, row) in contents.lines().enumerate() {
+ if !row.contains('#') {
+ let top = galaxies.iter().filter(|(x, _)| *x < i).count();
+ let bot = galaxies.len() - top;
+ result += top * bot * 999998;
+ }
+ }
+
+ for j in 0..space[0].len() {
+ let col: Vec = (0..space.len()).map(|i| space[i][j]).collect();
+ if !col.contains(&'#') {
+ let left = galaxies.iter().filter(|(_, y)| *y < j).count();
+ let right = galaxies.len() - left;
+ result += right * left * 999998;
+ }
+ }
+
+ println!("Result 2: {result}");
+}
diff --git a/src/days/d12.rs b/src/days/d12.rs
new file mode 100644
index 0000000..e7570fd
--- /dev/null
+++ b/src/days/d12.rs
@@ -0,0 +1,122 @@
+use std::{collections::HashMap, fs};
+
+use rayon::prelude::*;
+
+pub fn solve() {
+ let path = "res/12/input";
+
+ let contents = fs::read_to_string(path).expect("I/O error, wrong path?");
+ //let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?"));
+
+ let result: usize = contents
+ .par_lines()
+ .map(|line| {
+ let (springs_str, nums_str) = line.split_once(" ").unwrap();
+ let nums: Vec = nums_str
+ .split(",")
+ .map(|n| n.parse::().unwrap())
+ .collect();
+
+ let mut springs: Vec = springs_str.chars().collect();
+ springs.push('.');
+
+ let mut cache = HashMap::new();
+
+ count_spring_arrangements(&mut cache, springs_str.as_bytes(), None, &nums)
+ })
+ .sum();
+
+ println!("Result 1: {result}");
+
+ let result: usize = contents
+ .lines()
+ .map(|line| {
+ let (springs_str, nums_str) = line.split_once(" ").unwrap();
+ let nums_tmp: Vec = nums_str
+ .split(",")
+ .map(|n| n.parse::().unwrap())
+ .collect();
+
+ let nums: Vec = nums_tmp
+ .iter()
+ .cycle()
+ .take(nums_tmp.len() * 5)
+ .map(|i| *i)
+ .collect();
+ let springs: String = std::iter::repeat(String::from(springs_str))
+ .take(5)
+ .collect::>()
+ .join("?");
+
+ let mut cache = HashMap::new();
+
+ count_spring_arrangements(&mut cache, springs.as_bytes(), None, &nums)
+ })
+ .sum();
+
+ println!("Result 2: {result}");
+}
+
+fn count_spring_arrangements(
+ cache: &mut HashMap<(usize, usize, usize), usize>,
+ springs: &[u8],
+ in_broken_group: Option,
+ remaining_broken: &[usize],
+) -> usize {
+ if springs.is_empty() {
+ return match (in_broken_group, remaining_broken.len()) {
+ (None, 0) => 1,
+ (Some(x), 1) if x == remaining_broken[0] => 1,
+ _ => 0,
+ };
+ }
+
+ if in_broken_group.is_some() && remaining_broken.is_empty() {
+ return 0;
+ }
+
+ let key = (
+ springs.len(),
+ in_broken_group.unwrap_or(0),
+ remaining_broken.len(),
+ );
+ if let Some(&result) = cache.get(&key) {
+ return result;
+ }
+
+ let ways = match (springs[0], in_broken_group) {
+ (b'.', Some(x)) if x != remaining_broken[0] => 0,
+ (b'.', Some(_)) => {
+ count_spring_arrangements(cache, &springs[1..], None, &remaining_broken[1..])
+ }
+ (b'.', None) => count_spring_arrangements(cache, &springs[1..], None, remaining_broken),
+ (b'#', Some(_)) => count_spring_arrangements(
+ cache,
+ &springs[1..],
+ in_broken_group.map(|x| x + 1),
+ remaining_broken,
+ ),
+ (b'#', None) => count_spring_arrangements(cache, &springs[1..], Some(1), remaining_broken),
+ (b'?', Some(x)) => {
+ let mut ans = count_spring_arrangements(
+ cache,
+ &springs[1..],
+ in_broken_group.map(|x| x + 1),
+ remaining_broken,
+ );
+ if x == remaining_broken[0] {
+ ans +=
+ count_spring_arrangements(cache, &springs[1..], None, &remaining_broken[1..]);
+ }
+ ans
+ }
+ (b'?', None) => {
+ count_spring_arrangements(cache, &springs[1..], Some(1), remaining_broken)
+ + count_spring_arrangements(cache, &springs[1..], None, remaining_broken)
+ }
+ _ => unreachable!(),
+ };
+
+ cache.insert(key, ways);
+ ways
+}
diff --git a/src/main.rs b/src/main.rs
index 4b13c93..39693d8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -3,7 +3,7 @@ pub mod days;
fn main() {
- days::d10::solve()
+ days::d12::solve()
//_all_days()
}