{-
  Day 3 input
-}
module a3-input where

open import Data.Nat
open import Data.List hiding (lookup;allFin)
                      renaming (map to mapList)
open import Data.Vec

input : List (Vec ℕ 12)
input =
  (0 ∷ 0 ∷ 0 ∷ 1 ∷ 1 ∷ 1 ∷ 1 ∷ 1 ∷ 1 ∷ 0 ∷ 0 ∷ 1 ∷ []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  (0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  0 ∷  0 ∷  []) ∷
  (1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  0 ∷  1 ∷  0 ∷  []) ∷
  (0 ∷  1 ∷  1 ∷  0 ∷  0 ∷  1 ∷  1 ∷  1 ∷  0 ∷  1 ∷  0 ∷  1 ∷  []) ∷
  []


------------------------------------------------------------------------------
-- Testing the translation of definitions
------------------------------------------------------------------------------

{-# OPTIONS --exact-split              #-}
{-# OPTIONS --no-sized-types           #-}
{-# OPTIONS --no-universe-polymorphism #-}
{-# OPTIONS --without-K                #-}

module Definition08 where

open import Common.FOL

postulate
  P  : D → Set
  op : D → D

-- In this case the proof term `Pb` is referenced in the types of the
-- definitions of `c` and `d` via the `where` clause. Therefore in the
-- translation of `c` and `d`, we need to erase this proof term.

-- TODO (2016-04-02): This test case is invalid after fixing #22.

-- foo : D → ∀ {b} → P b → D
-- foo a Pb = a
--   where
--   c : D
--   c = a
--   {-# ATP definition c #-}

--   d : D
--   d = op c
--   {-# ATP definition d #-}

--   postulate bar : d ≡ op a
--   {-# ATP prove bar #-}

-- We need to have at least one conjecture to generate a TPTP file.
postulate bar : ∀ d → d ≡ d
{-# ATP prove bar #-}


-- Andreas, 2014-09-02

module _ where

module Data where
  data D : Set where
    A : D

module _ (A : Set) where

  open Data using (D; A)

  x : D
  x = A


------------------------------------------------------------------------
-- The Agda standard library
--
-- Support for reflection
------------------------------------------------------------------------

module Reflection where

open import Data.Bool as Bool using (Bool); open Bool.Bool
open import Data.List using (List); open Data.List.List
open import Data.Nat using (ℕ) renaming (_≟_ to _≟-ℕ_)
open import Data.Nat.Show renaming (show to showNat)
open import Data.Float using (Float) renaming (_≟_ to _≟f_; show to showFloat)
open import Data.Char using (Char) renaming (_≟_ to _≟c_; show to showChar)
open import Data.String using (String) renaming (_≟_ to _≟s_; show to showString)
open import Data.Product
open import Function
open import Relation.Binary
open import Relation.Binary.PropositionalEquality
open import Relation.Binary.PropositionalEquality.TrustMe
open import Relation.Nullary
open import Relation.Nullary.Decidable as Dec
open import Relation.Nullary.Product

------------------------------------------------------------------------
-- Names

-- Names.

postulate Name : Set

{-# BUILTIN QNAME Name #-}

private
  primitive
    primQNameEquality : Name → Name → Bool

-- Equality of names is decidable.

infix 4 _==_ _≟-Name_

private

  _==_ : Name → Name → Bool
  _==_ = primQNameEquality

_≟-Name_ : Decidable {A = Name} _≡_
s₁ ≟-Name s₂ with s₁ == s₂
... | true  = yes trustMe
... | false = no whatever
  where postulate whatever : _

-- Names can be shown.

private
  primitive
    primShowQName : Name → String

showName : Name → String
showName = primShowQName

------------------------------------------------------------------------
-- Terms

-- Is the argument visible (explicit), hidden (implicit), or an
-- instance argument?

data Visibility : Set where
  visible hidden instance′ : Visibility

{-# BUILTIN HIDING   Visibility #-}
{-# BUILTIN VISIBLE  visible    #-}
{-# BUILTIN HIDDEN   hidden     #-}
{-# BUILTIN INSTANCE instance′  #-}

-- Arguments can be relevant or irrelevant.

data Relevance : Set where
  relevant irrelevant : Relevance

{-# BUILTIN RELEVANCE  Relevance  #-}
{-# BUILTIN RELEVANT   relevant   #-}
{-# BUILTIN IRRELEVANT irrelevant #-}

-- Arguments.

data Arg-info : Set where
  arg-info : (v : Visibility) (r : Relevance) → Arg-info

visibility : Arg-info → Visibility
visibility (arg-info v _) = v

relevance : Arg-info → Relevance
relevance (arg-info _ r) = r

data Arg (A : Set) : Set where
  arg : (i : Arg-info) (x : A) → Arg A

{-# BUILTIN ARGINFO    Arg-info #-}
{-# BUILTIN ARGARGINFO arg-info #-}
{-# BUILTIN ARG        Arg      #-}
{-# BUILTIN ARGARG     arg      #-}

-- Literals.

data Literal : Set where
  nat    : ℕ → Literal
  float  : Float → Literal
  char   : Char → Literal
  string : String → Literal
  name   : Name → Literal

{-# BUILTIN AGDALITERAL   Literal #-}
{-# BUILTIN AGDALITNAT    nat     #-}
{-# BUILTIN AGDALITFLOAT  float   #-}
{-# BUILTIN AGDALITCHAR   char    #-}
{-# BUILTIN AGDALITSTRING string  #-}
{-# BUILTIN AGDALITQNAME  name    #-}

-- Terms.

mutual
  data Term : Set where
    -- Variable applied to arguments.
    var     : (x : ℕ) (args : List (Arg Term)) → Term
    -- Constructor applied to arguments.
    con     : (c : Name) (args : List (Arg Term)) → Term
    -- Identifier applied to arguments.
    def     : (f : Name) (args : List (Arg Term)) → Term
    -- Different kinds of λ-abstraction.
    lam     : (v : Visibility) (t : Term) → Term
    -- Pattern matching λ-abstraction.
    pat-lam : (cs : List Clause) (args : List (Arg Term)) → Term
    -- Pi-type.
    pi      : (t₁ : Arg Type) (t₂ : Type) → Term
    -- A sort.
    sort    : Sort → Term
    -- A literal.
    lit     : Literal → Term
    -- Anything else.
    unknown : Term

  data Type : Set where
    el : (s : Sort) (t : Term) → Type

  data Sort : Set where
    -- A Set of a given (possibly neutral) level.
    set     : (t : Term) → Sort
    -- A Set of a given concrete level.
    lit     : (n : ℕ) → Sort
    -- Anything else.
    unknown : Sort

  data Pattern : Set where
    con    : Name → List (Arg Pattern) → Pattern
    dot    : Pattern
    var    : Pattern
    lit    : Literal → Pattern
    proj   : Name → Pattern
    absurd : Pattern

  data Clause : Set where
    clause        : List (Arg Pattern) → Term → Clause
    absurd-clause : List (Arg Pattern) → Clause

{-# BUILTIN AGDASORT    Sort    #-}
{-# BUILTIN AGDATYPE    Type    #-}
{-# BUILTIN AGDATERM    Term    #-}
{-# BUILTIN AGDAPATTERN Pattern #-}
{-# BUILTIN AGDACLAUSE  Clause  #-}

{-# BUILTIN AGDATERMVAR         var     #-}
{-# BUILTIN AGDATERMCON         con     #-}
{-# BUILTIN AGDATERMDEF         def     #-}
{-# BUILTIN AGDATERMLAM         lam     #-}
{-# BUILTIN AGDATERMEXTLAM      pat-lam #-}
{-# BUILTIN AGDATERMPI          pi      #-}
{-# BUILTIN AGDATERMSORT        sort    #-}
{-# BUILTIN AGDATERMLIT         lit     #-}
{-# BUILTIN AGDATERMUNSUPPORTED unknown #-}
{-# BUILTIN AGDATYPEEL          el      #-}
{-# BUILTIN AGDASORTSET         set     #-}
{-# BUILTIN AGDASORTLIT         lit     #-}
{-# BUILTIN AGDASORTUNSUPPORTED unknown #-}

{-# BUILTIN AGDAPATCON    con    #-}
{-# BUILTIN AGDAPATDOT    dot    #-}
{-# BUILTIN AGDAPATVAR    var    #-}
{-# BUILTIN AGDAPATLIT    lit    #-}
{-# BUILTIN AGDAPATPROJ   proj   #-}
{-# BUILTIN AGDAPATABSURD absurd #-}

{-# BUILTIN AGDACLAUSECLAUSE clause        #-}
{-# BUILTIN AGDACLAUSEABSURD absurd-clause #-}

------------------------------------------------------------------------
-- Definitions

-- Function definition.
data FunctionDef : Set where
  fun-def : Type → List Clause → FunctionDef

{-# BUILTIN AGDAFUNDEF    FunctionDef #-}
{-# BUILTIN AGDAFUNDEFCON fun-def     #-}

postulate
  -- Data type definition.
  Data-type : Set
  -- Record type definition.
  Record    : Set

{-# BUILTIN AGDADATADEF   Data-type #-}
{-# BUILTIN AGDARECORDDEF Record    #-}

-- Definitions.

data Definition : Set where
  function     : FunctionDef  → Definition
  data-type    : Data-type → Definition
  record′      : Record    → Definition
  constructor′ : Definition
  axiom        : Definition
  primitive′   : Definition

{-# BUILTIN AGDADEFINITION                Definition   #-}
{-# BUILTIN AGDADEFINITIONFUNDEF          function     #-}
{-# BUILTIN AGDADEFINITIONDATADEF         data-type    #-}
{-# BUILTIN AGDADEFINITIONRECORDDEF       record′      #-}
{-# BUILTIN AGDADEFINITIONDATACONSTRUCTOR constructor′ #-}
{-# BUILTIN AGDADEFINITIONPOSTULATE       axiom        #-}
{-# BUILTIN AGDADEFINITIONPRIMITIVE       primitive′   #-}

showLiteral : Literal → String
showLiteral (nat x)    = showNat x
showLiteral (float x)  = showFloat x
showLiteral (char x)   = showChar x
showLiteral (string x) = showString x
showLiteral (name x)   = showName x

private
  primitive
    primQNameType        : Name → Type
    primQNameDefinition  : Name → Definition
    primDataConstructors : Data-type → List Name

-- The type of the thing with the given name.

type : Name → Type
type = primQNameType

-- The definition of the thing with the given name.

definition : Name → Definition
definition = primQNameDefinition

-- The constructors of the given data type.

constructors : Data-type → List Name
constructors = primDataConstructors

------------------------------------------------------------------------
-- Term equality is decidable

-- Boring helper functions.

private

  cong₂′ : ∀ {A B C : Set} (f : A → B → C) {x y u v} →
          x ≡ y × u ≡ v → f x u ≡ f y v
  cong₂′ f = uncurry (cong₂ f)

  cong₃′ : ∀ {A B C D : Set} (f : A → B → C → D) {x y u v r s} →
           x ≡ y × u ≡ v × r ≡ s → f x u r ≡ f y v s
  cong₃′ f (refl , refl , refl) = refl

  arg₁ : ∀ {A i i′} {x x′ : A} → arg i x ≡ arg i′ x′ → i ≡ i′
  arg₁ refl = refl

  arg₂ : ∀ {A i i′} {x x′ : A} → arg i x ≡ arg i′ x′ → x ≡ x′
  arg₂ refl = refl

  arg-info₁ : ∀ {v v′ r r′} → arg-info v r ≡ arg-info v′ r′ → v ≡ v′
  arg-info₁ refl = refl

  arg-info₂ : ∀ {v v′ r r′} → arg-info v r ≡ arg-info v′ r′ → r ≡ r′
  arg-info₂ refl = refl

  cons₁ : ∀ {A : Set} {x y} {xs ys : List A} → x ∷ xs ≡ y ∷ ys → x ≡ y
  cons₁ refl = refl

  cons₂ : ∀ {A : Set} {x y} {xs ys : List A} → x ∷ xs ≡ y ∷ ys → xs ≡ ys
  cons₂ refl = refl

  var₁ : ∀ {x x′ args args′} → Term.var x args ≡ var x′ args′ → x ≡ x′
  var₁ refl = refl

  var₂ : ∀ {x x′ args args′} → Term.var x args ≡ var x′ args′ → args ≡ args′
  var₂ refl = refl

  con₁ : ∀ {c c′ args args′} → Term.con c args ≡ con c′ args′ → c ≡ c′
  con₁ refl = refl

  con₂ : ∀ {c c′ args args′} → Term.con c args ≡ con c′ args′ → args ≡ args′
  con₂ refl = refl

  def₁ : ∀ {f f′ args args′} → def f args ≡ def f′ args′ → f ≡ f′
  def₁ refl = refl

  def₂ : ∀ {f f′ args args′} → def f args ≡ def f′ args′ → args ≡ args′
  def₂ refl = refl

  lam₁ : ∀ {v v′ t t′} → lam v t ≡ lam v′ t′ → v ≡ v′
  lam₁ refl = refl

  lam₂ : ∀ {v v′ t t′} → lam v t ≡ lam v′ t′ → t ≡ t′
  lam₂ refl = refl

  pat-lam₁ : ∀ {cs cs′ args args′} → pat-lam cs args ≡ pat-lam cs′ args′ → cs ≡ cs′
  pat-lam₁ refl = refl

  pat-lam₂ : ∀ {cs cs′ args args′} → pat-lam cs args ≡ pat-lam cs′ args′ → args ≡ args′
  pat-lam₂ refl = refl

  pi₁ : ∀ {t₁ t₁′ t₂ t₂′} → pi t₁ t₂ ≡ pi t₁′ t₂′ → t₁ ≡ t₁′
  pi₁ refl = refl

  pi₂ : ∀ {t₁ t₁′ t₂ t₂′} → pi t₁ t₂ ≡ pi t₁′ t₂′ → t₂ ≡ t₂′
  pi₂ refl = refl

  sort₁ : ∀ {x y} → sort x ≡ sort y → x ≡ y
  sort₁ refl = refl

  lit₁ : ∀ {x y} → Term.lit x ≡ lit y → x ≡ y
  lit₁ refl = refl

  pcon₁ : ∀ {c c′ args args′} → Pattern.con c args ≡ con c′ args′ → c ≡ c′
  pcon₁ refl = refl

  pcon₂ : ∀ {c c′ args args′} → Pattern.con c args ≡ con c′ args′ → args ≡ args′
  pcon₂ refl = refl

  plit₁ : ∀ {x y} → Pattern.lit x ≡ lit y → x ≡ y
  plit₁ refl = refl

  pproj₁ : ∀ {x y} → proj x ≡ proj y → x ≡ y
  pproj₁ refl = refl

  set₁ : ∀ {x y} → set x ≡ set y → x ≡ y
  set₁ refl = refl

  slit₁ : ∀ {x y} → Sort.lit x ≡ lit y → x ≡ y
  slit₁ refl = refl

  el₁ : ∀ {s s′ t t′} → el s t ≡ el s′ t′ → s ≡ s′
  el₁ refl = refl

  el₂ : ∀ {s s′ t t′} → el s t ≡ el s′ t′ → t ≡ t′
  el₂ refl = refl

  nat₁ : ∀ {x y} → nat x ≡ nat y → x ≡ y
  nat₁ refl = refl

  float₁ : ∀ {x y} → float x ≡ float y → x ≡ y
  float₁ refl = refl

  char₁ : ∀ {x y} → char x ≡ char y → x ≡ y
  char₁ refl = refl

  string₁ : ∀ {x y} → string x ≡ string y → x ≡ y
  string₁ refl = refl

  name₁ : ∀ {x y} → name x ≡ name y → x ≡ y
  name₁ refl = refl

  clause₁ : ∀ {ps ps′ b b′} → clause ps b ≡ clause ps′ b′ → ps ≡ ps′
  clause₁ refl = refl

  clause₂ : ∀ {ps ps′ b b′} → clause ps b ≡ clause ps′ b′ → b ≡ b′
  clause₂ refl = refl

  absurd-clause₁ : ∀ {ps ps′} → absurd-clause ps ≡ absurd-clause ps′ → ps ≡ ps′
  absurd-clause₁ refl = refl

_≟-Visibility_ : Decidable (_≡_ {A = Visibility})
visible   ≟-Visibility visible   = yes refl
hidden    ≟-Visibility hidden    = yes refl
instance′ ≟-Visibility instance′ = yes refl
visible   ≟-Visibility hidden    = no λ()
visible   ≟-Visibility instance′ = no λ()
hidden    ≟-Visibility visible   = no λ()
hidden    ≟-Visibility instance′ = no λ()
instance′ ≟-Visibility visible   = no λ()
instance′ ≟-Visibility hidden    = no λ()

_≟-Relevance_ : Decidable (_≡_ {A = Relevance})
relevant   ≟-Relevance relevant   = yes refl
irrelevant ≟-Relevance irrelevant = yes refl
relevant   ≟-Relevance irrelevant = no λ()
irrelevant ≟-Relevance relevant   = no λ()

_≟-Arg-info_ : Decidable (_≡_ {A = Arg-info})
arg-info v r ≟-Arg-info arg-info v′ r′ =
  Dec.map′ (cong₂′ arg-info)
           < arg-info₁ , arg-info₂ >
           (v ≟-Visibility v′ ×-dec r ≟-Relevance r′)

_≟-Lit_ : Decidable (_≡_ {A = Literal})
nat x ≟-Lit nat x₁ = Dec.map′ (cong nat) nat₁ (x ≟-ℕ x₁)
nat x ≟-Lit float x₁ = no (λ ())
nat x ≟-Lit char x₁ = no (λ ())
nat x ≟-Lit string x₁ = no (λ ())
nat x ≟-Lit name x₁ = no (λ ())
float x ≟-Lit nat x₁ = no (λ ())
float x ≟-Lit float x₁ = Dec.map′ (cong float) float₁ (x ≟f x₁)
float x ≟-Lit char x₁ = no (λ ())
float x ≟-Lit string x₁ = no (λ ())
float x ≟-Lit name x₁ = no (λ ())
char x ≟-Lit nat x₁ = no (λ ())
char x ≟-Lit float x₁ = no (λ ())
char x ≟-Lit char x₁ = Dec.map′ (cong char) char₁ (x ≟c x₁)
char x ≟-Lit string x₁ = no (λ ())
char x ≟-Lit name x₁ = no (λ ())
string x ≟-Lit nat x₁ = no (λ ())
string x ≟-Lit float x₁ = no (λ ())
string x ≟-Lit char x₁ = no (λ ())
string x ≟-Lit string x₁ = Dec.map′ (cong string) string₁ (x ≟s x₁)
string x ≟-Lit name x₁ = no (λ ())
name x ≟-Lit nat x₁ = no (λ ())
name x ≟-Lit float x₁ = no (λ ())
name x ≟-Lit char x₁ = no (λ ())
name x ≟-Lit string x₁ = no (λ ())
name x ≟-Lit name x₁ = Dec.map′ (cong name) name₁ (x ≟-Name x₁)

mutual
  infix 4 _≟_ _≟-Args_ _≟-ArgType_

  _≟-ArgTerm_ : Decidable (_≡_ {A = Arg Term})
  arg i a ≟-ArgTerm arg i′ a′ =
    Dec.map′ (cong₂′ arg)
             < arg₁ , arg₂ >
             (i ≟-Arg-info i′ ×-dec a ≟ a′)

  _≟-ArgType_ : Decidable (_≡_ {A = Arg Type})
  arg i a ≟-ArgType arg i′ a′ =
    Dec.map′ (cong₂′ arg)
             < arg₁ , arg₂ >
             (i ≟-Arg-info i′ ×-dec a ≟-Type a′)

  _≟-ArgPattern_ : Decidable (_≡_ {A = Arg Pattern})
  arg i a ≟-ArgPattern arg i′ a′ =
    Dec.map′ (cong₂′ arg)
             < arg₁ , arg₂ >
             (i ≟-Arg-info i′ ×-dec a ≟-Pattern a′)

  _≟-Args_ : Decidable (_≡_ {A = List (Arg Term)})
  []       ≟-Args []       = yes refl
  (x ∷ xs) ≟-Args (y ∷ ys) = Dec.map′ (cong₂′ _∷_) < cons₁ , cons₂ > (x ≟-ArgTerm y ×-dec xs ≟-Args ys)
  []       ≟-Args (_ ∷ _)  = no λ()
  (_ ∷ _)  ≟-Args []       = no λ()

  _≟-Clause_ : Decidable (_≡_ {A = Clause})
  clause ps b ≟-Clause clause ps′ b′ = Dec.map′ (cong₂′ clause) < clause₁ , clause₂ > (ps ≟-ArgPatterns ps′ ×-dec b ≟ b′)
  absurd-clause ps ≟-Clause absurd-clause ps′ = Dec.map′ (cong absurd-clause) absurd-clause₁ (ps ≟-ArgPatterns ps′)
  clause _ _      ≟-Clause absurd-clause _ = no λ()
  absurd-clause _ ≟-Clause clause _ _      = no λ()

  _≟-Clauses_ : Decidable (_≡_ {A = List Clause})
  []       ≟-Clauses []       = yes refl
  (x ∷ xs) ≟-Clauses (y ∷ ys) = Dec.map′ (cong₂′ _∷_) < cons₁ , cons₂ > (x ≟-Clause y ×-dec xs ≟-Clauses ys)
  []       ≟-Clauses (_ ∷ _)  = no λ()
  (_ ∷ _)  ≟-Clauses []       = no λ()

  _≟-Pattern_ : Decidable (_≡_ {A = Pattern})
  con c ps ≟-Pattern con c′ ps′ = Dec.map′ (cong₂′ con) < pcon₁ , pcon₂ > (c ≟-Name c′ ×-dec ps ≟-ArgPatterns ps′)
  con x x₁ ≟-Pattern dot = no (λ ())
  con x x₁ ≟-Pattern var = no (λ ())
  con x x₁ ≟-Pattern lit x₂ = no (λ ())
  con x x₁ ≟-Pattern proj x₂ = no (λ ())
  con x x₁ ≟-Pattern absurd = no (λ ())
  dot ≟-Pattern con x x₁ = no (λ ())
  dot ≟-Pattern dot = yes refl
  dot ≟-Pattern var = no (λ ())
  dot ≟-Pattern lit x = no (λ ())
  dot ≟-Pattern proj x = no (λ ())
  dot ≟-Pattern absurd = no (λ ())
  var ≟-Pattern con x x₁ = no (λ ())
  var ≟-Pattern dot = no (λ ())
  var ≟-Pattern var = yes refl
  var ≟-Pattern lit x = no (λ ())
  var ≟-Pattern proj x = no (λ ())
  var ≟-Pattern absurd = no (λ ())
  lit x ≟-Pattern con x₁ x₂ = no (λ ())
  lit x ≟-Pattern dot = no (λ ())
  lit x ≟-Pattern var = no (λ ())
  lit l ≟-Pattern lit l′ = Dec.map′ (cong lit) plit₁ (l ≟-Lit l′)
  lit x ≟-Pattern proj x₁ = no (λ ())
  lit x ≟-Pattern absurd = no (λ ())
  proj x ≟-Pattern con x₁ x₂ = no (λ ())
  proj x ≟-Pattern dot = no (λ ())
  proj x ≟-Pattern var = no (λ ())
  proj x ≟-Pattern lit x₁ = no (λ ())
  proj x ≟-Pattern proj x₁ = Dec.map′ (cong proj) pproj₁ (x ≟-Name x₁)
  proj x ≟-Pattern absurd = no (λ ())
  absurd ≟-Pattern con x x₁ = no (λ ())
  absurd ≟-Pattern dot = no (λ ())
  absurd ≟-Pattern var = no (λ ())
  absurd ≟-Pattern lit x = no (λ ())
  absurd ≟-Pattern proj x = no (λ ())
  absurd ≟-Pattern absurd = yes refl

  _≟-ArgPatterns_ : Decidable (_≡_ {A = List (Arg Pattern)})
  []       ≟-ArgPatterns []       = yes refl
  (x ∷ xs) ≟-ArgPatterns (y ∷ ys) = Dec.map′ (cong₂′ _∷_) < cons₁ , cons₂ > (x ≟-ArgPattern y ×-dec xs ≟-ArgPatterns ys)
  []       ≟-ArgPatterns (_ ∷ _)  = no λ()
  (_ ∷ _)  ≟-ArgPatterns []       = no λ()

  _≟_ : Decidable (_≡_ {A = Term})
  var x args ≟ var x′ args′ = Dec.map′ (cong₂′ var) < var₁ , var₂ > (x ≟-ℕ x′          ×-dec args ≟-Args args′)
  con c args ≟ con c′ args′ = Dec.map′ (cong₂′ con) < con₁ , con₂ > (c ≟-Name c′       ×-dec args ≟-Args args′)
  def f args ≟ def f′ args′ = Dec.map′ (cong₂′ def) < def₁ , def₂ > (f ≟-Name f′       ×-dec args ≟-Args args′)
  lam v t    ≟ lam v′ t′    = Dec.map′ (cong₂′ lam) < lam₁ , lam₂ > (v ≟-Visibility v′ ×-dec t ≟ t′)
  pat-lam cs args ≟ pat-lam cs′ args′ =
                              Dec.map′ (cong₂′ pat-lam) < pat-lam₁ , pat-lam₂ > (cs ≟-Clauses cs′ ×-dec args ≟-Args args′)
  pi t₁ t₂   ≟ pi t₁′ t₂′   = Dec.map′ (cong₂′ pi)  < pi₁  , pi₂  > (t₁ ≟-ArgType t₁′  ×-dec t₂ ≟-Type t₂′)
  sort s     ≟ sort s′      = Dec.map′ (cong sort)  sort₁           (s ≟-Sort s′)
  lit l      ≟ lit l′       = Dec.map′ (cong lit)   lit₁           (l ≟-Lit l′)
  unknown    ≟ unknown      = yes refl

  var x args ≟ con c args′ = no λ()
  var x args ≟ def f args′ = no λ()
  var x args ≟ lam v t     = no λ()
  var x args ≟ pi t₁ t₂    = no λ()
  var x args ≟ sort _      = no λ()
  var x args ≟ lit _      = no λ()
  var x args ≟ unknown     = no λ()
  con c args ≟ var x args′ = no λ()
  con c args ≟ def f args′ = no λ()
  con c args ≟ lam v t     = no λ()
  con c args ≟ pi t₁ t₂    = no λ()
  con c args ≟ sort _      = no λ()
  con c args ≟ lit _      = no λ()
  con c args ≟ unknown     = no λ()
  def f args ≟ var x args′ = no λ()
  def f args ≟ con c args′ = no λ()
  def f args ≟ lam v t     = no λ()
  def f args ≟ pi t₁ t₂    = no λ()
  def f args ≟ sort _      = no λ()
  def f args ≟ lit _      = no λ()
  def f args ≟ unknown     = no λ()
  lam v t    ≟ var x args  = no λ()
  lam v t    ≟ con c args  = no λ()
  lam v t    ≟ def f args  = no λ()
  lam v t    ≟ pi t₁ t₂    = no λ()
  lam v t    ≟ sort _      = no λ()
  lam v t    ≟ lit _      = no λ()
  lam v t    ≟ unknown     = no λ()
  pi t₁ t₂   ≟ var x args  = no λ()
  pi t₁ t₂   ≟ con c args  = no λ()
  pi t₁ t₂   ≟ def f args  = no λ()
  pi t₁ t₂   ≟ lam v t     = no λ()
  pi t₁ t₂   ≟ sort _      = no λ()
  pi t₁ t₂   ≟ lit _      = no λ()
  pi t₁ t₂   ≟ unknown     = no λ()
  sort _     ≟ var x args  = no λ()
  sort _     ≟ con c args  = no λ()
  sort _     ≟ def f args  = no λ()
  sort _     ≟ lam v t     = no λ()
  sort _     ≟ pi t₁ t₂    = no λ()
  sort _     ≟ lit _       = no λ()
  sort _     ≟ unknown     = no λ()
  lit _     ≟ var x args  = no λ()
  lit _     ≟ con c args  = no λ()
  lit _     ≟ def f args  = no λ()
  lit _     ≟ lam v t     = no λ()
  lit _     ≟ pi t₁ t₂    = no λ()
  lit _     ≟ sort _      = no λ()
  lit _     ≟ unknown     = no λ()
  unknown    ≟ var x args  = no λ()
  unknown    ≟ con c args  = no λ()
  unknown    ≟ def f args  = no λ()
  unknown    ≟ lam v t     = no λ()
  unknown    ≟ pi t₁ t₂    = no λ()
  unknown    ≟ sort _      = no λ()
  unknown    ≟ lit _       = no λ()
  pat-lam _ _ ≟ var x args  = no λ()
  pat-lam _ _ ≟ con c args  = no λ()
  pat-lam _ _ ≟ def f args  = no λ()
  pat-lam _ _ ≟ lam v t     = no λ()
  pat-lam _ _ ≟ pi t₁ t₂    = no λ()
  pat-lam _ _ ≟ sort _      = no λ()
  pat-lam _ _ ≟ lit _       = no λ()
  pat-lam _ _ ≟ unknown     = no λ()
  var x args  ≟ pat-lam _ _ = no λ()
  con c args  ≟ pat-lam _ _ = no λ()
  def f args  ≟ pat-lam _ _ = no λ()
  lam v t     ≟ pat-lam _ _ = no λ()
  pi t₁ t₂    ≟ pat-lam _ _ = no λ()
  sort _      ≟ pat-lam _ _ = no λ()
  lit _       ≟ pat-lam _ _ = no λ()
  unknown     ≟ pat-lam _ _ = no λ()

  _≟-Type_ : Decidable (_≡_ {A = Type})
  el s t ≟-Type el s′ t′ = Dec.map′ (cong₂′ el) < el₁ , el₂ > (s ≟-Sort s′ ×-dec t ≟ t′)

  _≟-Sort_ : Decidable (_≡_ {A = Sort})
  set t   ≟-Sort set t′  = Dec.map′ (cong set) set₁ (t ≟ t′)
  lit n   ≟-Sort lit n′  = Dec.map′ (cong lit) slit₁ (n ≟-ℕ n′)
  unknown ≟-Sort unknown = yes refl
  set _   ≟-Sort lit _   = no λ()
  set _   ≟-Sort unknown = no λ()
  lit _   ≟-Sort set _   = no λ()
  lit _   ≟-Sort unknown = no λ()
  unknown ≟-Sort set _   = no λ()
  unknown ≟-Sort lit _   = no λ()


{-# OPTIONS --without-K --safe #-}

open import Definition.Typed.EqualityRelation

module Definition.LogicalRelation.Properties.Symmetry {{eqrel : EqRelSet}} where
open EqRelSet {{...}}

open import Definition.Untyped
open import Definition.Typed
open import Definition.Typed.Properties
import Definition.Typed.Weakening as Wk
open import Definition.LogicalRelation
open import Definition.LogicalRelation.ShapeView
open import Definition.LogicalRelation.Irrelevance
open import Definition.LogicalRelation.Properties.Conversion

open import Tools.Product
import Tools.PropositionalEquality as PE

mutual
  -- Helper function for symmetry of type equality using shape views.
  symEqT : ∀ {Γ A B l l′} {[A] : Γ ⊩⟨ l ⟩ A} {[B] : Γ ⊩⟨ l′ ⟩ B}
         → ShapeView Γ l l′ A B [A] [B]
         → Γ ⊩⟨ l  ⟩ A ≡ B / [A]
         → Γ ⊩⟨ l′ ⟩ B ≡ A / [B]
  symEqT (ℕᵥ D D′) A≡B = red D
  symEqT (Emptyᵥ D D′) A≡B = red D
  symEqT (Unitᵥ D D′) A≡B = red D
  symEqT (ne (ne K D neK K≡K) (ne K₁ D₁ neK₁ K≡K₁)) (ne₌ M D′ neM K≡M)
         rewrite whrDet* (red D′ , ne neM) (red D₁ , ne neK₁) =
    ne₌ _ D neK
        (~-sym K≡M)
  symEqT {Γ = Γ} (Bᵥ W (Bᵣ F G D ⊢F ⊢G A≡A [F] [G] G-ext)
                       (Bᵣ F₁ G₁ D₁ ⊢F₁ ⊢G₁ A≡A₁ [F]₁ [G]₁ G-ext₁))
         (B₌ F′ G′ D′ A≡B [F≡F′] [G≡G′]) =
    let ΠF₁G₁≡ΠF′G′   = whrDet* (red D₁ , ⟦ W ⟧ₙ) (D′ , ⟦ W ⟧ₙ)
        F₁≡F′ , G₁≡G′ = B-PE-injectivity W ΠF₁G₁≡ΠF′G′
        [F₁≡F] : ∀ {Δ} {ρ} [ρ] ⊢Δ → _
        [F₁≡F] {Δ} {ρ} [ρ] ⊢Δ =
          let ρF′≡ρF₁ ρ = PE.cong (wk ρ) (PE.sym F₁≡F′)
              [ρF′] {ρ} [ρ] ⊢Δ = PE.subst (λ x → Δ ⊩⟨ _ ⟩ wk ρ x) F₁≡F′ ([F]₁ [ρ] ⊢Δ)
          in  irrelevanceEq′ {Δ} (ρF′≡ρF₁ ρ)
                             ([ρF′] [ρ] ⊢Δ) ([F]₁ [ρ] ⊢Δ)
                             (symEq ([F] [ρ] ⊢Δ) ([ρF′] [ρ] ⊢Δ)
                                    ([F≡F′] [ρ] ⊢Δ))
    in  B₌ _ _ (red D) (≅-sym (PE.subst (λ x → Γ ⊢ ⟦ W ⟧ F ▹ G ≅ x) (PE.sym ΠF₁G₁≡ΠF′G′) A≡B))
          [F₁≡F]
          (λ {ρ} [ρ] ⊢Δ [a] →
               let ρG′a≡ρG₁′a = PE.cong (λ x → wk (lift ρ) x [ _ ]) (PE.sym G₁≡G′)
                   [ρG′a] = PE.subst (λ x → _ ⊩⟨ _ ⟩ wk (lift ρ) x [ _ ]) G₁≡G′
                                     ([G]₁ [ρ] ⊢Δ [a])
                   [a]₁ = convTerm₁ ([F]₁ [ρ] ⊢Δ) ([F] [ρ] ⊢Δ) ([F₁≡F] [ρ] ⊢Δ) [a]
               in  irrelevanceEq′ ρG′a≡ρG₁′a
                                  [ρG′a]
                                  ([G]₁ [ρ] ⊢Δ [a])
                                  (symEq ([G] [ρ] ⊢Δ [a]₁) [ρG′a]
                                         ([G≡G′] [ρ] ⊢Δ [a]₁)))
  symEqT (Uᵥ (Uᵣ _ _ _) (Uᵣ _ _ _)) A≡B = PE.refl
  symEqT (emb⁰¹ x) A≡B = symEqT x A≡B
  symEqT (emb¹⁰ x) A≡B = symEqT x A≡B

  -- Symmetry of type equality.
  symEq : ∀ {Γ A B l l′} ([A] : Γ ⊩⟨ l ⟩ A) ([B] : Γ ⊩⟨ l′ ⟩ B)
        → Γ ⊩⟨ l ⟩ A ≡ B / [A]
        → Γ ⊩⟨ l′ ⟩ B ≡ A / [B]
  symEq [A] [B] A≡B = symEqT (goodCases [A] [B] A≡B) A≡B

symNeutralTerm : ∀ {t u A Γ}
               → Γ ⊩neNf t ≡ u ∷ A
               → Γ ⊩neNf u ≡ t ∷ A
symNeutralTerm (neNfₜ₌ neK neM k≡m) = neNfₜ₌ neM neK (~-sym k≡m)

symNatural-prop : ∀ {Γ k k′}
                → [Natural]-prop Γ k k′
                → [Natural]-prop Γ k′ k
symNatural-prop (sucᵣ (ℕₜ₌ k k′ d d′ t≡u prop)) =
  sucᵣ (ℕₜ₌ k′ k d′ d (≅ₜ-sym t≡u) (symNatural-prop prop))
symNatural-prop zeroᵣ = zeroᵣ
symNatural-prop (ne prop) = ne (symNeutralTerm prop)

symEmpty-prop : ∀ {Γ k k′}
              → [Empty]-prop Γ k k′
              → [Empty]-prop Γ k′ k
symEmpty-prop (ne prop) = ne (symNeutralTerm prop)

-- Symmetry of term equality.
symEqTerm : ∀ {l Γ A t u} ([A] : Γ ⊩⟨ l ⟩ A)
          → Γ ⊩⟨ l ⟩ t ≡ u ∷ A / [A]
          → Γ ⊩⟨ l ⟩ u ≡ t ∷ A / [A]
symEqTerm (Uᵣ′ .⁰ 0<1 ⊢Γ) (Uₜ₌ A B d d′ typeA typeB A≡B [A] [B] [A≡B]) =
  Uₜ₌ B A d′ d typeB typeA (≅ₜ-sym A≡B) [B] [A] (symEq [A] [B] [A≡B])
symEqTerm (ℕᵣ D) (ℕₜ₌ k k′ d d′ t≡u prop) =
  ℕₜ₌ k′ k d′ d (≅ₜ-sym t≡u) (symNatural-prop prop)
symEqTerm (Emptyᵣ D) (Emptyₜ₌ k k′ d d′ t≡u prop) =
  Emptyₜ₌ k′ k d′ d (≅ₜ-sym t≡u) (symEmpty-prop prop)
symEqTerm (Unitᵣ D) (Unitₜ₌ ⊢t ⊢u) =
  Unitₜ₌ ⊢u ⊢t
symEqTerm (ne′ K D neK K≡K) (neₜ₌ k m d d′ nf) =
  neₜ₌ m k d′ d (symNeutralTerm nf)
symEqTerm (Bᵣ′ BΠ F G D ⊢F ⊢G A≡A [F] [G] G-ext)
          (Πₜ₌ f g d d′ funcF funcG f≡g [f] [g] [f≡g]) =
  Πₜ₌ g f d′ d funcG funcF (≅ₜ-sym f≡g) [g] [f]
      (λ ρ ⊢Δ [a] → symEqTerm ([G] ρ ⊢Δ [a]) ([f≡g] ρ ⊢Δ [a]))
symEqTerm (Bᵣ′ BΣ F G D ⊢F ⊢G A≡A [F] [G] G-ext)
          (Σₜ₌ p r d d′ pProd rProd p≅r [t] [u] [fstp] [fstr] [fst≡] [snd≡]) =
  let ⊢Γ = wf ⊢F
      [Gfstp≡Gfstr] = G-ext Wk.id ⊢Γ [fstp] [fstr] [fst≡]
  in  Σₜ₌ r p d′ d rProd pProd (≅ₜ-sym p≅r) [u] [t] [fstr] [fstp]
          (symEqTerm ([F] Wk.id ⊢Γ) [fst≡])
          (convEqTerm₁
            ([G] Wk.id ⊢Γ [fstp]) ([G] Wk.id ⊢Γ [fstr])
            [Gfstp≡Gfstr]
            (symEqTerm ([G] Wk.id ⊢Γ [fstp]) [snd≡]))
symEqTerm (emb 0<1 x) t≡u = symEqTerm x t≡u


{-# OPTIONS --cubical --safe #-}

module Analysis where

open import Data.List       using (List; []; _∷_; map)

open import Relation.Binary.PropositionalEquality using (_≡_; refl)

open import Harmony
open import Music
open import Note
open import Pitch

-- test of analysis

accompF : List Pitch
accompF = f 4 ∷ a 4 ∷ c 5 ∷ []

xx = pitchClassListToSet (map pitchToClass accompF)
--yy = showPitchClassSet xx

zz : xx ≡ IV-maj
zz = refl


-- Andreas, 2015-08-11, issue reported by Martin Stone Davis

-- {-# OPTIONS -v impossible:10 -v interaction.give:20 #-}

open import Data.AVL using (Tree; empty)
open import Data.Vec using (Vec)
open import Data.String using (String)
open import Relation.Binary using (StrictTotalOrder)
open import Data.Nat.Properties using (<-strictTotalOrder)

empty' : Tree (StrictTotalOrder.isStrictTotalOrder <-strictTotalOrder) (Vec String)
empty' = empty {!!}

-- ERROR WAS:
-- An internal error has occurred. Please report this as a bug.
-- Location of the error: src/full/Agda/TypeChecking/Monad/Trace.hs:56

-- Currently Agsy gives nothing, which is also a weird.
-- It does not report "No solutions found".
-- Somehow, some parts of the solution are not in scope, which might
-- give an internal error that is caught, causing Agsy to discard
-- the solution.


-- Copatterns disabled!
{-# OPTIONS --no-copatterns #-}

open import Common.Product

test : {A B : Set} (a : A) (b : B) → A × B
test a b = {!!}
-- Should give error when attempting to split.


------------------------------------------------------------------------
-- Concrete syntax used by the mixfix operator parser
------------------------------------------------------------------------

module RecursiveDescent.Hybrid.Mixfix.Expr where

open import Data.Nat hiding (_≟_)
open import Data.Vec
open import Data.List using (List)
open import Data.Product
open import Data.Maybe
open import Data.String using (String)
open import Relation.Nullary
open import Relation.Binary.PropositionalEquality

open import RecursiveDescent.Hybrid.Mixfix.Fixity

-- Name parts.

NamePart : Set
NamePart = String

-- Operators. arity is the internal arity of the operator, i.e. the
-- number of arguments taken between the first and last name parts.

data Operator (fix : Fixity) (arity : ℕ) : Set where
  operator : (nameParts : Vec NamePart (1 + arity)) ->
             Operator fix arity

-- Predicate filtering out operators of the given fixity and
-- associativity.

hasFixity : forall fix -> ∃₂ Operator -> Maybe (∃ (Operator fix))
hasFixity fix (fix' , op) with fix ≟ fix'
hasFixity fix (.fix , op) | yes refl = just op
hasFixity fix (fix' , op) | _        = nothing

-- Precedence graphs are represented by their unfoldings as forests
-- (one tree for every node in the graph). This does not take into
-- account the sharing of the precedence graphs, but this program is
-- not aimed at efficiency.

mutual

  PrecedenceGraph : Set
  PrecedenceGraph = List PrecedenceTree

  data PrecedenceTree : Set where
    precedence : (ops : (fix : Fixity) -> List (∃ (Operator fix)))
                 (successors : PrecedenceGraph) ->
                 PrecedenceTree

-- Concrete syntax. TODO: Ensure that expressions are precedence
-- correct by parameterising the expression type on a precedence graph
-- and indexing on precedences.

mutual

  infixl 4 _⟨_⟩_ _∙_
  infix  4 _⟨_⟫ ⟪_⟩_

  data Expr : Set where
    _⟨_⟩_ : forall {assoc}
            (l : Expr) (op : Internal (infx assoc)) (r : Expr) -> Expr
    _⟨_⟫  : (l : Expr) (op : Internal postfx)                  -> Expr
    ⟪_⟩_  :            (op : Internal prefx)        (r : Expr) -> Expr
    ⟪_⟫   :            (op : Internal closed)                  -> Expr

  -- Application of an operator to all its internal arguments.

  data Internal (fix : Fixity) : Set where
    _∙_ : forall {arity}
          (op : Operator fix arity) (args : Vec Expr arity) ->
          Internal fix


module bee2 where

open import Bee2.Crypto.Belt

open import Data.ByteString.Utf8
open import Data.ByteString.IO
open import Data.String using (toList)
open import Data.Product using (proj₁)
open import IO

-- beltPBKDF : Password → ℕ → Salt → Kek

main = run (writeBinaryFile "pbkdf2" (proj₁ (beltPBKDF (packStrict "zed") 1000 (packStrict "salt"))))


module Data.Real.Base where

open import Data.Float renaming (Float to ℝ) public