~rootmos/AoC

237d3c1d18310d90ce1f1f09972e0cf916a7d2eb — Gustav Behm a month ago e49569b
Add a naive solution to AoC 2023 #12a (always fun to find a nice use of the list monad!)
3 files changed, 1083 insertions(+), 0 deletions(-)

A 2023/12.example
A 2023/12.hs
A 2023/12.input
A 2023/12.example => 2023/12.example +6 -0
@@ 0,0 1,6 @@
???.### 1,1,3
.??..??...?##. 1,1,3
?#?#?#?#?#?#?#? 1,3,1,6
????.#...#... 4,1,1
????.######..#####. 1,6,5
?###???????? 3,2,1

A 2023/12.hs => 2023/12.hs +77 -0
@@ 0,0 1,77 @@
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Main where

import Qulude

--import Data.Array ( (!) )
import qualified Data.Array as Array
import qualified Data.Array.ST as STArray
import qualified Data.Either as Either
import qualified Data.List as List
--import Data.Map ( (!) )
import qualified Data.Map as Map
import qualified Data.Maybe as Maybe
import qualified Data.Sequence as Seq
import qualified Data.Set as Set

data Spring = Operational | Broken
  deriving ( Eq )

instance Show Spring where
  show Operational = "."
  show Broken = "#"

data Complete = Complete [Spring] [Int]
  deriving ( Eq, Show )

data Damaged = Damaged [Maybe Spring] [Int]
  deriving ( Eq, Show )

type Parse = [Damaged]
parser :: Parser Parse
parser = many record
  where record = do
          ss <- many $ char '.' $> Just Operational
                   <|> char '#' $> Just Broken
                   <|> char '?' $> Nothing
          spaces
          spec <- int `sepBy` char ','
          newline
          return $ Damaged ss spec

check :: Complete -> Bool
check (Complete ss spec) = f ss spec
  where skip _ i [] = (i, [])
        skip t i (s:ss) | t == s = skip t (succ i) ss
        skip t i ss@(_:_) | otherwise = (i, ss)
        f ss [] = case skip Operational 0 ss of
                        (_, []) -> True
                        (_, _) -> False
        f ss (t:ts) =
          let (_, ss') = skip Operational 0 ss in
          let (i, ss'') = skip Broken 0 ss' in
          if i == t then f ss'' ts
          else False

arrangements :: Damaged -> [Complete]
arrangements (Damaged ss spec) = fmap (\ss-> Complete ss spec) $ f ss []
  where f [] acc = return $ reverse acc
        f (Just t:ss) acc = [t:acc] >>= f ss
        f (Nothing:ss) acc = [Operational:acc, Broken:acc] >>= f ss

partA :: Parse -> Int
partA = sum . fmap (length . filter check . arrangements)

--partB :: Parse -> Parse
--partB = id

main :: IO ()
main = with parser $ do
  run "12.example" "a example" partA -- 21
  run "12.input" "a input" partA -- 7191
  --run "12.example" "b example" partB
  --run "12.input" "b input" partB

A 2023/12.input => 2023/12.input +1000 -0
@@ 0,0 1,1000 @@
?????#?#?.?#?#. 7,3
#??#?#.?.?????? 6,1,5
??#??????#???.? 4,3
?.?..?..????? 1,4
????????.?##???????? 3,1,1,4,1,1
?#??###?#????#?. 6,2,3
???..????# 1,3,1
?#??????#??. 4,2
??.?????#??#? 2,1,5
.?#?.###??. 1,5
?.???#?##?? 1,7
?#???..?.#? 2,2,1
????##???#?.??. 5,2,1
???.???#???? 1,1,3,1
.##?#????.?? 8,1
????.?.?#?? 2,3
.??#??###??#?? 3,4,3
??#???????. 3,1,1
??#????.??##?? 2,2,3,1
??##???.??#???#??? 3,7
.??#.?????..????#?. 1,1,5
.???????.??#?? 7,3
.?#??????.?#???..?? 8,4,2
.?##?.##??? 3,2
???#?##??????.???.?? 1,8,1,1
?#?#?#?.??? 3,1,2
..??#???.?###????.?. 1,4
?#?????.??#??##????? 3,1,5,1
?????##.????????#? 7,6,2
???#??.?.?##.#???##? 2,3,3,7
.??#???#.?????????? 3,1,1,1,1,2
??.?#??#?..?#??? 6,3
??..????#.# 1,2,1
???.#?##??? 1,7
?#??..??????.#? 3,4,2
??.#??????? 2,5,1
?.#??#?????.# 1,1,4,1
?##?#?#???#? 7,1
???#.??.?.?# 3,1,1
.??.????.??#??.#?# 1,3,3,1,1
???#?##??.?.??#?? 8,1,4
?#...?#??.??? 1,4,1
?????#.????#??. 1,1,6
#?????????? 1,4,2
???.?#??#?.? 2,1,1,1
?#?#???##? 4,3
??#???#?#?##???????? 3,12
.#??#??.?????? 5,2
?#?#???#?????. 9,1
#??#?#??##????##?.## 1,14,2
?#????.????????##. 2,2,10
.?##.??.?? 3,1,1
?.??..??#???.?? 1,1,2,1
??????.?.#.????? 5,1,1,1,2
?.?#?????? 1,2
??#####??.#?? 8,1
?#?#???.#?? 2,1,3
.??????.#? 2,1,1
?..???????#????. 4,1,1
??#?.####?.? 2,5,1
???#??.?.????.? 4,1,1,1
.?.??.???#?.?#???.. 1,4,5
??#?..?#??? 1,2
.#?????#??#? 2,4
.?##?.???????? 3,3
??.#???????#??.? 1,5,5,1
.?#..???.? 2,1
??.##???????#.# 1,6,2,1
??????#?????#??.??? 1,1,3,3,1,1
?#?????????#??????# 5,4,4
???#??#??????#???.? 4,8
?#??????????#?#?#?.? 5,9
?.?#?#?.??. 4,2
#.??????.#.?###???. 1,1,3,1,3,1
???..#??.# 3,2,1
??#???#????.????? 11,1,1
?????.#???? 4,1,3
#.#?.?##??#???? 1,1,3,1,1
???#????????????# 8,1,2,1
??????.?????? 1,3
???.???..???#???? 3,3,3,2
????#..??#?.?? 1,1,3,1
??#??.?#?????? 3,6
??.???#???? 2,7
#.?#???#.??#.? 1,3,1,1
?.?????#?#?#..?# 1,8,1,1
????###??? 1,6
???.?????.??? 1,2,1,2
.#.?.???.???.?#???? 1,1,1,1,1,4
?????#???##?.? 5,3
.??.???????? 1,1,2,1
?#?.???#.#??.?? 2,1,2,1,1
.?#.#?..?? 1,2
?????.#?##.?.?##. 2,4,3
.?#?.??????.# 3,2,1,1
##.?????????. 2,3
#???????????#? 3,2,2,3
??????##?##?????? 1,5,3,1
??????##??#???? 3,6
..#??????.?#. 6,1
.?#.##?#.??#?? 2,2,1,4
???#???.#.?. 5,1
..????#???#??.#. 10,1
??#????..?# 5,1
???????##??? 2,3
?#?#?????? 3,1
????#????#?#? 1,2,2,2
..?.??#???.??. 1,1,2,2
??#???#??#.??. 4,4
??##???.#?.?.##? 6,2,1,3
.??.?#??#???# 1,5,2
????.?##???? 1,1,2,1
?#????????????#? 2,6,5
?#??????.???? 7,1
#??#??#..?#??? 5,1,1,1
#?#.#?#????#??? 3,8
#?#???#.???.?? 3,1,1,1
???#??#?#?###.??? 12,1
?.????#???????? 8,1
?.?#?.???..#????? 3,1,6
#??????.?????????? 2,1,1,6,1
????#???.?.??#?## 1,4,1,1,4
????.???#??#.?????# 4,4,1,2,1
????.????? 1,1,2
.?##????#.??.. 7,1
.?..??#.?? 1,1,2
??#?#??????#???.#.# 5,2,2,1,1,1
??????????##??# 1,2,2,5
??..?????.? 3,1
???????.#??????? 1,4,5,1
?#?.?.#?.??? 1,1,1
??.?.#???#?#?###?# 1,1,1,1,9
?.?#.???????#.? 1,1,2,1,1
???#?.?#??.???. 1,2,1,1,3
.#??..##???.?.?#?. 1,1,3,1,1,2
?.#?##.???? 4,1
????#?#???#?#?.#?## 1,11,4
?.#???#?##?#?#??#? 1,1,8,1,2
??????#?###??# 3,6,1
??????.??#??.?#?.?#? 1,1,5,3,3
...?#?.??..?#??? 2,2,3,1
?.?#???##??###?##?. 1,16
..#?#???#???.?##?? 1,3,2,1,3
??.???????????? 6,2
?.????.??#??#?##???? 1,9
#?.#???#????#???#?#? 1,1,1,5,1,1
#??#?.??.?#..?#?? 1,2,2,4
?##??#?##??.??.????? 9,3
??????.??# 1,1,1
?#???#??.??.?#?? 6,1,1,1
?#??#??##???.?#. 9,2
..?????.??. 1,2,1
??..??#???. 1,5
.??#?..?????.? 3,1
?#?????????#?.??.# 1,1,5,1,1
.??????.##?.?..?#?? 5,2,2
.???##.#??#???#?? 1,2,2,3,2
?????.?.?# 5,1
??????#?????#???#??# 6,6,5
?#?#.???#????# 4,3,2,1
??.?.?#????. 1,3
?..?#??#??.?.????## 1,6,1,1,2
?#????#????#.? 7,3
#?.????#?? 1,1,4
.?.???.??? 1,1,1
#?#?###?????.? 11,1
.?????.??#????## 1,9
.???#?????.#??.?? 7,1,1
??.????#.?#?.?????? 2,3,2,1,2
?#?##???#???#???#. 4,7,1
???????????????# 1,3,1,5,1
.????#.?###?#??? 4,4,1,1
#????.??.???#.?? 4,2,1,1,1
?????#???#?? 4,1
??????????????#. 8,2
?????#?????#? 1,8
#???.?.#??##?.???? 1,1,1,6,1,1
?#???.?.?? 1,1,1
??.?#??????#????? 2,3,3,2
??.?????#??#. 1,2,2,1
?..?#??????#??.???# 1,11,1,1
??#????##??###?.??? 1,3,9,2
????????.???..? 2,2,1,3
?#.??#???.??#??# 1,5,2,1
.#.???????#???????. 1,8,4
?#???###?..??.?.??? 7,1,1
?.#??.??#?##.??? 1,1,6,2
...##?#???????????. 2,10,1
??##.?.???##?.??.. 4,1,1,3,2
#.??#???.?#????#? 1,1,2,1,6
??#?#??###?????.???? 14,1
???????.??.?????? 4,1,1,1,2
?##???.????.#??#?? 6,1,1,1,1
??###?.?..?.#?#???? 6,1,1,1,1,1
#???.##.?? 2,2,2
.?.#?.#..??#?#???.?. 1,1,1,8,1
.#?.#???.???#?#? 1,3,5
#???????????###??? 8,8
?????#?##?#? 2,6
###?#?.??? 6,1
.?#??.????. 3,3
#???????.?#.??.# 2,5,1,1
?.#?#???##???.???.?. 1,3,7,1,1
.?##????#.?#???#? 7,5
????#.???#?#.#. 3,1,2,3,1
?.?????#??#.? 4,4
.??..??#?? 1,4
#?#?#??.???????#?? 7,1,1,1,1,1
??#??????????? 4,3
?#???#???.??..#.???? 2,4,1,1,1,1
??.#??.???##?.?? 2,1,5,1
?#??##?.?????..#?? 1,4,1,1,1,1
?.#??..#..?? 3,1,2
?????.##???? 4,6
????..?#???.??### 1,1,3,5
???????.?????????#?? 1,3,10
?#.???????????#??.# 2,1,2,1,5,1
#?#??#???#?.????#?# 3,5,7
??????##?????????.? 4,3,5,1,1
?#??.?????.#????#? 1,1,5,2,1,2
????.??#?????????. 2,4,3,2
??#.????##?. 2,1,4
#.???.?????.??? 1,1,3,1,1
???#.#####?#??##??#? 1,1,14
??????????.?. 1,4
.????????.?.???. 3,1
?#??????..? 3,2,1
#?#.??..???. 1,1,1,2
?#??#..????????? 5,5
.?#?#????##?????.?.. 2,7,1,1
???????####.????### 7,6
?..??#????#?#??#?#?. 10,5
.????#???#??.?#??? 10,2
?.?#?#?##?.?..??. 8,2
?.???..?####??#??.?# 1,2,10,1
.?????#?#??#? 2,5,1
?.??????.?#??????. 4,6
?????????.#???????.? 1,1,1,1,1,5
.????#???.##?#?#??.? 2,7
?.????##?? 1,5
?????.?#??? 3,1,2
.???##.?#.???????.#? 5,1,1,1,2,2
#????#?.???#? 3,1,4
.????.??##? 2,1,3
????.???.?..#?????#. 4,2,5,1
??..??#?#?#.? 2,5,1,1
??#?#?..??.??. 6,2,1
???.????#?#???? 1,1,6
.????.???.? 1,2,1
.#.?????.??..#. 1,4,1,1
?#????#???.?????..?. 2,4,4
?.??##??#????.??? 1,9,1,1
??.?.??#???#.#..?? 1,1,5,1,1
#??#?#??..??.?????. 7,1,3
#??#?#.##.??#?##?? 1,4,2,3,3
????#.#???? 1,2,1
??????????#?##??? 6,7
?..#?#??#????? 1,1,1,6
?.???###???#??##.? 1,4,6,1
????#??.??? 1,3,2
??###??????? 5,3
??????..??????.. 2,2,3
??#??#???? 2,1,1
?#????#????.? 4,5
????????????#?? 4,1,2,1,1
???#.#.??????#?#?#?? 1,1,1,13
?????????.???#??#? 8,4,2
?.?.??#????#??. 1,8
?#?##???#??. 5,2
.?#??##.??? 5,2
#???????.????#???#? 2,1,3,6,2
??#??#?#?????.?? 8,1,2
#.????#?.???????#? 1,6,4,1,1
?#.##?###? 1,7
????????#?????#??? 5,4,2
#????#..??. 2,1,1
?????#?#??. 1,5
??????#??#? 3,3,2
#??##?#???..???? 1,2,4,2
?#.?#.?##??? 1,1,5
.??.?#???#?...? 1,6
???#???#???#.??##??? 1,3,1,1,3,1
???.#?#???#?????? 1,7,3
??.???????#??#?# 1,1,3,1,1
?#.?###??#.?#??? 2,4,1,1,1
##????#.??.??.#?.?? 5,1,1,1,1,1
????#?##??..### 8,3
.??#?.#????..????# 4,1,1,3,1
???##?????##???? 5,1,3,1
??#?#???#???.?.?#.? 11,1
??.????#.?.#??# 1,1,3,1,4
?#?.?##???????# 2,5,5
?#.##??##?..???? 1,7,2
??#??.?##??.???.?# 3,5,3,2
??#?????##?#. 4,5
.????.??.?.#??? 2,2,1,1,1
??#??.???? 1,3,1
?????????????#. 5,1,1,1
???#.???.? 1,1,2
#???????.????? 8,4
..?#?.?#.? 1,1,1
????...????#??# 1,1,1,3,1
??#??#????#? 5,3
?.??.???##? 1,1,3
?????????????. 5,3
?.##???????.##??? 6,1,2,1
?#?????.##?.?#?#?? 2,1,2,4
????.?#?##???.?? 1,1,5,1,1
?#?????#.?.? 3,3,1
???#??#.?#???#?? 1,5,1,1,1
?#??#??.???# 1,3,1,1
??????##??#??????? 1,6,2,5
?#?#????#??.?????? 11,1
.?#??..?#? 2,1
.?????#?.??## 1,3,4
???#???#.?#.# 4,1,1,1
??#?.?????? 3,2,2
?????.#?#? 2,1,2
.???#?.????#???.?. 4,8
???###???#..?#??. 1,6,1,2,1
????..??#???????? 2,5,2
???.?????#?#?#?.? 2,1,5
.????##.?.????.??? 2,2
??.?#.#??..?#?#?. 1,1,2,5
?...?#?###?..?##???. 5,5
?????.#?#? 1,3
??##???.?????... 5,4
???##????. 4,1
.????..??#.? 4,2
.??#?.?.?##?##???#?# 2,12
.????#??????..#.???# 11,1,2
??????.#?# 3,3
.#?????.??? 1,4,1
??????#????????????? 10,6
???#??##???#?? 6,1
??#???...#.???? 4,1,1
?????#??..?????#?? 5,3
?##??##?##?. 3,7
.??.??.???.?.?.? 2,1
??.?#????..???#???? 1,4,7
.????#??????##?#?# 1,1,1,7,1
???????.?????#????# 6,8,1
?####????.?? 9,1
??????????##??#.???# 2,10,1,1,1
??????....#?.???? 3,2
...???.????.???##.. 2,3,3
.???#??#?..??????# 6,3,3
#.?????##????#? 1,1,4,4
?..?#?##??#?#??.?# 1,12,2
?.?#?????..????????. 7,6
??????#?#????#??#.?? 1,13
??#????.?? 2,1,1
??????????#??#?##.? 3,8
##??????#?.? 6,2,1
#.????###????????##? 1,1,13
??#???#?????. 1,8,1
#.#?????#???##????.# 1,3,9,1,1
?????#?#??#?????# 1,1,12
??###??????#?? 5,1
?????##??.#?.# 1,6,1,1
?###???#??##?.? 5,6
?.?????#?#.???????.. 1,2,2,1,4,1
?#.??#??????.#? 2,4,1,1,1
.???##?#?????? 6,3
??????????? 6,1,1
?.?????##?#???#???.? 1,1,1,2,8,1
????#.?#.?#???.?? 3,1,1,4,1
#..##?.???#?#??. 1,2,1,4
#???#??.#??????.?? 2,2,3,1,2
?????##??? 4,1
?.?.???#?. 1,1,1
??????????.????????? 1,6,1,3,2
.??????##?????#?# 2,4,5
.#????#???#?##..? 3,2,5
??????##?. 3,2
?.??.????#?#?#?.??? 1,1,4,1,1,1
#????.??##???????## 1,1,1,6,1,3
???#????.???#.?.??? 6,1,1,1,1,1
??.?.#.?.?#? 1,1,1,1
?????#..????#?#?#?? 2,1,7,1
???????#... 2,1,1
?????????????# 1,4,2
#???#????? 2,5
.???#???.?##??#?#.? 3,3,3
.?#????.?.###?. 5,4
.?#.??##?????.??#? 2,4,3,4
?????.#?##?????#??? 2,2,6,1,1,1
.????????.?#??# 6,2,2
?????#??#?#????## 1,10,2
.?????.???????#??? 1,1,2,1,1,4
???#?#?#..??? 8,1
??##??????..?. 4,1
..#????..?#?.. 4,2
?????#.???.?.?.???# 1,3,1,1,4
#??..????#?? 2,2,1
?#??.????##??????.. 1,1,1,1,6
.#?.???.??.?##??#? 1,1,1,1,3,1
.???#?###.???#?????? 2,1,3,1,6
##?#..?.??#?????.??# 2,1,1,2,2,3
#?#???.#?.#?..#?? 3,1,2,1,3
????#???.? 2,3
.??#?????.??????. 6,2,1
?#?#??#??#???.? 4,1,3
?#???.??????.#??#? 4,2,4
?#?#.?#??#??#.??..? 1,1,1,5,1,1
#?????#????#?#?? 4,3,1,3
????##????.??#?. 3,4
???.???##??.??..? 3,6,2,1
?.??????????##???? 1,5,5,1
?#?#?..?????? 3,4
?.???#?....????#. 2,3
?.??????????#??? 1,1,2,5
?#???##.??#?.?#???.# 2,3,3,5,1
#..????.##.#? 1,2,2,1
???.?#????? 4,1
?#?.??..??#? 2,1,2
?#?.???.?#?#?#.? 2,2,6
???..???#??.# 2,1,2,1
.#?.?.#??? 2,3
???###?#??#? 1,8
?##??##?????.??? 6,2,3
.??#??#??.???????. 6,5
??.???##?.?????#.. 2,1
???#?..?#?#..? 2,3
?.?.???#?..? 1,2
?#????????????###? 10,5
?????????. 2,2
?#??##??##???? 3,7,1
.?##???##.???.?. 2,3,3,1
??.?#??.???.?. 3,1
?#????#??#? 3,2,2
??#??.????#?#?. 3,1,6
?##?#..???? 2,1,1
??.##?..????. 1,2,1,1
?.?????#.?????#??.? 1,2,2,6,1
?###.??.?? 3,1
?.#?#?#.????##? 5,7
?#??.???#?#.??#..? 4,3,1,1,1,1
?????#????#????## 1,2,8
??###?#????#???.#?.# 1,5,5,1,1,1
.?#?#????#???#.??#?? 12,3
????#?##??????###?.? 1,6,5,1
.#.????????#?????? 1,5,3
???...????#.? 2,2,1,1
#????####?????#??? 1,1,5,1,1,1
#????#????. 6,1,1
.?#??.???.?# 3,2,2
#???.?#?..?.? 4,3,1,1
.#??##?#???? 5,1,1
???##?..#??##?#. 4,7
??#???##?????? 9,2
#????.??#. 3,2
?.????#?#???#? 1,1,9
?#?#????#???#??? 6,1,4
??#.??.?#?#???????. 2,2,1,8
??.??.??..? 2,1,1
?#..#?##?..#?.#?#.?. 2,4,1,3,1
??#?????????#?? 5,8
?.????#???? 1,3,1
.????#??#?.?#####.?? 6,5
?##??????.??. 2,1,1,1
???###???..??? 6,2
?????.???..#?.? 1,1,2,1,1
??..#????? 3,1
???????.?.. 1,2,1
?.#...#??????#?.??? 1,1,8,1
.??####?#?????#?.? 10,1
?#?#.?#.##?? 4,1,4
???..??????? 1,1,5
.?#???.?.???? 3,1,2
.#?#??..?????. 5,1
?.??#??#???????? 9,1
.#..???.??.??#? 1,2,1,1,1
?#???#??#??????? 2,5,2,1
???#???.??#??##? 1,2,1,6
??????#???#???#?? 1,1,5,4
????.##.?#?.?.## 1,2,1,1,2
??#??..??? 2,1
.#?.#????? 1,4
?????.?.#?? 3,3
#????#?????..? 3,2,1
?????.?#?#??.??? 1,1,1,3,1
??#????.#.??#? 4,1,1,2
?#???..???????????? 1,1,1,1,1,3
??.???????#??????## 10,4
?????###????#?... 5,2
?.????#????#???# 1,10
.#??.?###?##????#?# 1,1,10,1,1
?????#???????????#?? 2,13
??.#?#??.?#????????? 1,1,1,1,11
#???#.?????.??? 1,1,1,2,1
?.??#?????????? 1,1,8
..??#?##???#??????. 6,2,2
???????.?.????### 1,1,6
.??#???#.???? 6,1
.??#.????#??#??????? 1,9,2
?#????????#.?. 5,4
????????##??. 2,4,1
?????.#????????. 1,2,1,2,2
??????.????#... 1,4
?.?####????.??##??? 7,6
.????#####..?????#?# 8,5,1
##???.???#? 4,2
??????#????? 1,4
??##?..??. 4,1
.??.##?.????? 1,2,1
????.#???##.?.? 1,6
?.?#???.??#??.??# 1,3,1,4,3
???#??????. 3,2
##??.?????# 2,1,2
?.??????.????????? 1,3,2,6
.??????????.???..?.? 6,1
#??????#?#?????? 1,1,6,4
#?.?#?.???? 1,2,1
???.????#?##?#??# 3,1,10
???????#?????#??. 4,3
.???##?#??? 5,2
..????#????## 1,2,4
??.???.??? 1,1,1
#?#??##??#???#?? 10,3
??#?#???#.? 4,2
???#??#?????##?? 6,4
?.????#?#??#??.???.? 11,2
##???????? 3,1
????#?.?#??????????# 2,2,2,1,1,4
?..??###?#????#?. 1,1,3,1,5
?#?#??##??#??.?.#?.? 2,5,3,1,2,1
.???.?.?.#? 2,1,1
#?##??#???????????# 12,3,1
?..?.??#???#?.?? 1,8,1
.?.?#.????????? 1,5
??.??.?#?? 1,2
??????##??#?.? 1,8,1
?.?.???.??? 1,1,2
???#?????.#?. 1,5,1
????##?..??.?? 7,2,1
???????##? 3,3
??????#???? 2,7
????????????..? 7,1,1
#.??????????#?? 1,3,2,1
.???#??#?##???????.? 9,1
????????###??.????.? 13,4
?????.#????## 1,1,3
#??##?#?#?.????# 10,2,1
?.????#???? 1,5,1
.?#?????#? 3,2
???##.?.?? 1,2,2
..?????.???.?#????? 3,1,1
???#?.???#??.?#??#?# 3,4,6
?#????.????##?#?? 4,3,5
?#?#???###?.?..?? 10,1
.???.??##??##?? 1,9
?????#.???#? 5,3
?##?????##?? 2,1,5
.??..???#?#???.???.? 1,6,2,1,1
??#??##??#?#?? 7,1,1
#?????.?##? 2,1,3
???.#???.#?##?.#?#? 3,1,1,3,3
??#??#.???.???#?? 4,2,5
???.?#???? 1,3
??#?#?.??????# 5,5,1
???.?????? 2,2
?.?????.?.??? 1,2,1,1
????????????????.?.? 1,8,1,1,1,1
#.???????##?.?.? 1,1,5
?#???????? 5,3
??#?.#????? 1,2,1
.??.##??.???#??. 1,3,6
???????.#??? 3,1,1,2
??#?#?.??.#?.? 4,1,2
??#???#??###..???. 1,1,8,1
?.??#??.#?? 4,3
.?.???#???#? 1,9
?#?.???..? 3,1
##??#???????.# 7,1,1,1
???.?#?..?.?????? 1,1
.#.??##?#???????? 1,6,1,1,1
?#???##?#???? 1,9
#??..??###?.??? 1,5,1
????????##????#? 10,3
#???#???##?? 1,3,1,3
?.??????..???????. 6,3
???#???#???.??# 8,3
??#?.??.??.??????#? 3,1,2,2,2
.????????.?#?????? 1,2,1,1,2,2
.?#?????#..???# 4,2,2,1
.???#?#??#?#??.#? 1,9,1
????#?????# 2,2,2
???#???##? 3,3
?.?#..?????#???. 1,1
??????#????# 1,1,5,1
#???.??#??##?????##? 1,2,6,7
?.???#????.?? 2,2
#.???#?#???#???#???. 1,15
???????.?#.????????? 2,2,2,1,1,5
??.?#???##????..? 1,11,1
??#?##??.#?????. 6,1,1,1
?#??#.??#? 1,1,1
??##????.?????? 5,1,1,1,1
??????????????? 6,1,1
.???##??.?#??# 5,1,1
????.??.#? 1,1,1
..#.?#?#?##??##??#? 1,13
?.???##??.???#.?# 1,7,1,1,1
?.????.??#?##?#?##.? 1,1,1,11,1
???????????? 1,6
????.?????#??#???# 1,2,1,5,1,1
?.??##???##.# 9,1
??.???#???????? 1,1,1,3,1
.??.?.????##?##..? 1,6
?#??.#?????. 2,3,1
???..#??.???.???? 3,1,3
..????#???#??? 7,1
?#????.?????.#?? 4,5,2
??#??????? 6,1
??????.#.#? 6,1,1
??.?..?##? 1,1,4
??#?.?#?.?#? 1,2,1
.?#.???????#? 2,2,6
??.?????..????#???# 2,9
???##?#.??#??? 2,2,1,5
???#??????#?????. 3,6
?.??????#?.?.???? 3,3,1
??.????.?#? 4,2
?????????.??.??? 6,2
?#..???..??#?..?. 1,2,2,1
?...???##????.??.??? 8,1
????#???#?#?????.# 5,1,1,3,1
??#??#??#??.????? 11,1,1
??#??#?#?#? 2,7
??#???????.?#??????? 1,1,1,2,7,1
?##??.????#??#?##? 4,10
?#????#.??.? 2,1,1,1
???#??.??.????.??.? 1,3,2,4,2
????#????.?.?# 4,1,2
?#?##????#.?#.??#?#? 10,1,1,1,1
???#?.??????.?? 5,2
?????????#??#? 3,5
.??.#??.??? 1,1
?####??#.#.#?.? 4,1,1,1,1
#?#??.??????. 5,3
.?#???.?.?. 4,1
..??.?#???...??#?..? 1,3
.???...???#?#?###?? 3,11
???.????#??#.???.? 1,1,5,1,2,1
??????.?..?? 1,2,1,1
??.????#?.??.#?.? 1,2,2,1,2
??#?#?????. 3,4
?#?#??#?????.. 6,3
???#??#??#????? 1,1,2,1,1
?#.??.??#???#??? 1,7,1
?.???#?#???? 3,4
???#???.????##.? 1,6
?###?#??.##????? 4,2,2,2,1
.?.??????????.# 4,3,1
????#??#???#???. 2,4,4
????.?#??? 2,4
??.?#????##???????. 1,15
?#???.??.?#????.#. 2,2,1,5,1
??????.?????# 5,1,1
??.?#.???#?. 1,2,1,2
..#?#???.??.? 6,1
.?#??...?#???? 4,3
?#..???#?... 2,5
#.?#??#????????????? 1,12,4
?.#..?.#.?###? 1,1,1,4
?#??##??.. 1,4
??##?#????#??#?. 5,7
??##??#?#?????.?.## 11,1,1,2
???##?.???. 2,3,2
?#?????#???#.##?# 2,6,1,4
????.#?#????#?? 1,2,1,4,1
#.??..?????????? 1,1,7
?.#?.?#.?????#?. 1,2,1,2,1
??????###?.? 1,5
??#???#???????? 10,1
.??#??????#?. 5,1
???#.??#?.?# 1,2,4,1
??.#???#??#?? 1,6,3
?#?#.????? 4,1,2
??##??...???# 6,1,1
???#??????. 3,1,1
?????#?#??##????. 7,2,1
???.?#??????#??#??. 1,3,3,4,1
.??????????.?????.?? 7,1,2,2
?##?..??#?.??.????#? 4,2,1,5
??##?????# 5,1,1
?..??????? 1,2,1
.??.#??.???# 1,1,1,1
????.#?????..?.?# 1,4,1,1,1
##???#..?# 6,2
??????.???? 1,1,2
?.#??###?#? 6,1
.???#???.???? 4,2
???#???.??###?#? 1,1,1,7
?#??#??.#?#??####? 2,1,9
.#??#????.?# 1,1,3,2
.???.?.???#????. 1,7
????????..#.???. 3,1,1,1,1
????##??##??? 1,6,2
?.???#????? 1,5,1
???.??#??.?.? 3,2,1,1
.??..??#??.?. 1,4,1
.#??.???????#??#?#? 1,1,10
?.??#????.?#. 6,2
????.?#??#??#??.???? 2,8,3
.????#???#.????? 9,1
??.????##.?#.??? 1,2,3,1,1
.#.??#????#????##.## 1,1,9,2,2
????#..?#? 3,1
????##.#.?##.???..? 3,2,1,3,3,1
?#.#?#..??? 1,3,1
##???#?????????##?. 8,1,6
???...#??#? 1,4
.??.?????#?#?????? 1,1,10
?.??????#?##??. 2,2,4
..??#?????? 3,1,1
??####????????.?? 7,1,1,1,1
????#?##??.????..?. 6,1
???#?#???.?# 6,2,1
????#?????#.?.?##. 1,5,1,3
?.#???.??????#. 4,3,1
?.???#??.????#. 4,5
?#?##?#??. 4,1,1
?#??##?????.?##? 7,2,4
?#??##?????????##? 2,6,2,3
.#?#?#?##??? 3,6
.##?.????.. 2,3
????????????????# 4,1,1,4,2
?????#????.????## 1,5,1,4
?.#..?#?###??#? 1,8
?????##??????.??? 1,11,2
.?#??#?????.? 8,1,1
?????#??????#?## 7,7
?..##??#?#?? 1,2,1,3
???????#.. 4,1
??.???..?????? 1,1,4
????#???#??#? 5,1,1,2
????#?????.????#? 8,1,1
????.?.????. 3,1,3
.?####?.??????????.? 4,9
#.?#?##??????. 1,4,3
#.?###?#??????..##?? 1,5,2,1,4
.?#.??????#.? 2,1,2,1
#.?.????#?? 1,1,5
?#???.?#??#? 2,1,4
?????#?#?? 2,3
??#.###???.???? 2,3,1,2
.???..#???. 1,1,1
?.?#???#??.?#. 1,1,5,1
???#???.????#??#?#?? 6,11
???#???????? 3,6
#.?.??????#?????#?? 1,1,5,5
??#?#???..??? 7,1,1
?#?#??#?##??????? 3,12
..?????.??????.?#? 4,1,3,2
?#?.#..#?#????#???#. 2,1,1,1,6
?.?.##???.?? 2,2
?.???##????###??? 1,7,6
????????##???? 1,3,3,1
.??...?#?..??#?#?? 1,5
?.#??#??.???.#??? 6,1,1,3
?.??#?????# 1,3,1
.????????#?#??#???? 1,1,1,8,1
????????.?#?? 2,2,1,1
..????????.?. 1,1,2,1
??.#.?????? 1,1,3
..?#?????####???. 1,10
?#???####????# 1,9,1
???##?#????#???? 1,10,1
?????#????#???.# 1,3,1,2,1
.#????#???.#??.?. 6,1,3
???????.????????.?? 1,4,4,1,2
?.??.#?????#. 1,3,2
.##???#?#?#?..???.. 10,2
#??..?????#?.?.?? 1,1,6,1,1
?##?##??#?? 5,1,1
???????... 2,1
#????????? 1,1,2
???.??#??#?#? 1,9
.??#?.?#?#??????? 1,9
.?##?#.?##??.?##? 3,1,4,4
?..#?????.? 1,2
?.????##?#.? 1,1,5,1
??#?????????? 3,2,1
??...?.???#???##.?. 1,6
??#?????????### 5,2,3
?#????????#?#? 2,1,2,2
??????####?????##??. 1,11
???..???#?.#?? 2,5,2
???.?????# 2,4,1
?#?#???#??..#?? 9,2
#?.??.??????#?#???? 1,2,2,8
?..??#???.?#???? 3,1,2
##?#?.##???# 4,6
??##?.????##???.. 4,6,1
????.????? 3,3,1
???????..?? 1,2,1
??????.???#?.#?.??. 4,4,1,2
??.??#??.#? 1,2,1
?..????#?????? 1,6
?????#.?..????.#?? 4,1,1,1,1,1
?.#??.#?###?????##. 1,1,5,3
.?..#?.?.?#??#???? 1,1,1,5,1
#??#?#?##????? 6,2,1,1
??####..#?? 4,3
?#??##????.?#?? 6,1,3
??#???#?#?? 3,1,1
??.##?????? 2,2,1
???????.?#?#..?#.?? 1,4,2,1,1,2
???????.#??# 4,1,1
???.?.###??#???? 1,6,2
??...?#?#? 1,4
??.#???#???.??????#? 2,3,2,3
.?###??.?.?#????. 5,5
#????##????.?????? 8,1,1,2
??.??#???? 1,1
?.?#???.#.? 2,1
?#.?.??##???.?#? 2,1,2,1,1
??????...?? 2,1,2
#???##??#????#?#.?# 14,1,1
?#?????.?# 1,1,1
?#?.#.??#???? 2,1,7
????#??..??? 1,3,1,2
?.??#?#?.?.?. 1,5,1
?..??#?#??.?#.#?..# 1,4,1,1,1,1
.?#????.????. 1,3,1,1
.#???.?.#??#???.#?# 3,4,1,3
??..?#??#???##??#?? 1,2,7,3
????.?##?????.???#. 1,1,5,1,1,1
?#?????##??.#.?.?.? 6,2,1,1,1
?#??#????.?#.???#. 8,1,1,2
#???.##?.?. 1,1,2
#.#?..?.?#?#.? 1,1,1,3
???#??.#?#???????? 5,8,2
?#???#?.??#?.???.. 3,3,2,2
.##??????.##??? 2,3,5
?#??#???#?#??##?? 4,1,1,4
???.??#?#?#?##? 1,10
????##?###??????? 1,13
????#?.??#?? 1,1,5
????##???#???# 1,6,1,1
.????.?.???????? 1,1,1,1,4
??????#?.?????? 1,1,3,2
???.??.??#??##.#. 1,1,1,7,1
??.?##???# 1,4,1
?????????. 3,1
.?????#??. 2,3
??#??###???.?.?#?#? 8,1,1,5
?#????.?.??????#???# 1,1,1,7,1,1
?#.#?##?.##? 1,5,2
?#???#??#??.?????? 1,2,1,4,1
??#??#????.##???? 6,4
.#???????#????? 3,5,2
.???.???#? 2,1,2
?#??????##???.# 2,1,6,1
?????#?#?? 1,4,2
?..#??#???? 1,4,1
.#?????#??#??#? 2,4,6
.#??.?.?????? 1,1,1,2
.?????##.??.?#??? 1,3,1,4
?.?#???#??.????.? 5,1
?#???.##?. 3,3
?????????#??.?? 4,2,1,1,1
????..?#?#?#?# 1,2,8
???????#.????.???? 5,1,1,1,2,1
??#?.?####??? 2,4,1
##??.##??#???#.??# 4,5,2,2
?##?.????##??#???#? 3,2,6,1
#???.?????????? 1,2,1,7
#?.?#??##??#??#??. 1,1,10
??#???????????# 3,1,1,1,2
.??#???#??#.? 8,1
?#?????##??. 2,6
??#??.???..?..# 2,3,1,1
????.?????#?#?. 1,2,4
??.???#?.???????#.## 2,2,4,1,1,2
??#???##.?? 1,1,2
?#??????.????##?? 5,1,3
.???#?#??.??. 3,2,1
?????#???? 1,2,1
?.?.?#??.??#?#????? 1,2,1,1,3,2
??.?????.?????##? 1,1,1,1,8
??#.??.??#?..??? 2,1,1,1,2
???#??.#?.???#?#?. 4,1,1,1,4
.?#??.??#?#?###??#.. 2,10
???.??#..?? 1,3,1
?##?#.??..#...##???? 4,1,1,6
?????##???#??.#??.. 10,3
.#.???????? 1,2
??#.?????? 2,2
#?????#?.?? 8,1
????.??##?. 1,3
#??#?#?????#?.?? 7,1,2,1
????#?.???#???##???. 1,4,1,9
?????????#? 1,4
.??#??#????????#??. 4,3,6
??#?????#????????.?? 2,2,7,1,1
#?.??#????.????.. 1,6,1,1
?????#???? 2,4,1
....???...????#.? 1,5
???????..??#?#?? 1,2,3,1,1
?#?##??#???#???????? 15,1,1
#???#?????#? 2,3,3
#????.?????????? 3,1,4,1,1
?#?????#?? 1,4,1
??.?#??#?# 1,3
.??#????.????. 6,3
?#??##.????????#?#.? 5,1,1,1,3,1
??????????.#?#? 5,3
.??????#?..? 1,1,1,1
????#?????#????##??. 1,14
????.??.??#?? 1,1,1,4
##?#???#.???.?. 6,1,1,1,1
.???..???###??? 1,1,9
??.?#????#???. 2,5
.???.??###? 1,4
??#???#?..#?????#?? 7,1,1,5
?????#.??#? 5,2
??.??#.#????#?????? 2,3,1,9
??##?#???.?? 1,7,1
??.????##?? 2,2
?.??.#?#??????????? 1,2,3,2,1,4
?#???.?????. 1,1,1,2
.?#??????? 4,1
??#?#?.???????????.? 5,1,1,1,1,1
??#?.???#???.?? 3,6
???????###?????# 4,5,1,1
???.??.??.??#???##? 1,1,1,1,2,3
??#?#????##.???#?. 5,2,2,1
?.???.??#??#.?#? 1,3,1,2
?#.?????#. 1,1,2
?.????#???????#???? 1,4,10
??.?????##?. 1,1,6
??.#.##?????#???##? 2,1,10,2
??.?????.#???.#??? 1,1,1,1,1,3
???#??##.????? 7,1
?????????????#?##? 3,7
?#?????##?#???? 5,6,1
????##????#???#?# 7,8
.?.???#???.#???? 1,6,1,1
??.#?.?.?.?? 2,1,1
???????..??? 2,2,1,1
??#???.????#. 3,2,1
?.?????????.??????.? 1,9,1,1,1,1
.?.?????.???..??? 3,1
?#.?.?##????##?.. 2,8
#.?????##????#?#.. 1,7,3
?#?????.??##??#.??? 5,6
??????.????????. 2,1,1,2,1
??#?.#?#??#? 3,1,2,1
##???.?#???.??..#?? 2,2,4,1,2
#?????##?.?????#?#? 1,1,3,8
??????.##??? 1,5
?##??.??.?? 3,2,2
????#?###?#?.?##??#? 12,3,2
...?#?..?#?#? 2,4
??????????.?#.??#?? 8,1,5
.#????#??##?.?#??? 11,3
?.##?.????????#??##. 2,9,2
??#??#?#????##????.# 13,2,1
.???###??????### 6,5
.?????##????. 1,4,1
???????.?##? 3,3
??#????.?.???????# 1,2,1,6
???????????##? 4,6
??#???#?????? 4,1,1,1
.?##??#.?#?#?##??. 2,1,8
?#??????#?#???#. 6,3,1
?????##???????.?#??# 2,2,4,1,1,2
??.???#.??? 4,1
.??????????.? 2,1
????.?.???.#? 3,1,3,1
.?#?#?###?.## 2,1,4,2
..???#?????##. 4,3
?????.?????#?#?? 1,1,1,3,1
#??##????????????#? 1,3,4,5
??????#?.?? 2,2,1
????.?.?????? 3,1,2
.?????.?#.#??### 1,3,1,1,4
??.?.??#?. 1,1,2
.?#??##?.?. 1,3
?#..??????##?? 2,1,5
????????#????????. 1,1,2,1,3
#????###???????#? 3,3,1,4
?#???????.... 1,4,1
?????.?.???## 1,1,2
?????.##?# 2,4
??????..?? 2,1,1
#??##?#?....### 1,3,1,3
.??????.?.#???.??. 5,1,2,1
##???#??.???#?????? 2,3,1,1,4,1
???????.?#??? 7,1,1
?????.?.?#. 4,1,2
??#?.?.???#?#? 2,1,5
.?.?#????? 1,4
??#??.?.??? 3,1
.#??.###???.?? 1,1,5,1
??##???#??.??# 4,5,2
?????#???#? 5,1