diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,8 +1,10 @@
 # Builds and tests this Haskell project on "GitHub Actions"
 #
-# 2021  Rudy Matela
+# 2021-2023  Rudy Matela
 #
 # some docs: https://github.com/haskell/actions/tree/main/setup
+#
+# The official haskell docker image: https://hub.docker.com/_/haskell
 name: build
 on: [push]
 jobs:
@@ -11,24 +13,26 @@
     steps:
 
       - name: Cache ~/.cabal/packages
-        uses: actions/cache@v2
+        uses: actions/cache@v3
         with:
           path: ~/.cabal/packages
-          key:          v1-${{ runner.os }}-cabal-packages-${{ hashFiles('hello.cabal') }}
+          key:          v1-${{ runner.os }}-cabal-packages-${{ hashFiles('*.cabal') }}
           restore-keys: v1-${{ runner.os }}-cabal-packages-
 
       - name: Cache ~/.cabal and ~/.ghc
-        uses: actions/cache@v2
+        uses: actions/cache@v3
         with:
           path: |
             ~/.cabal
             !~/.cabal/packages
             ~/.ghc
-          key:          v1-${{ runner.os }}-cabal-ghc-latest-${{ hashFiles('hello.cabal') }}
+          key:          v1-${{ runner.os }}-cabal-ghc-latest-${{ hashFiles('*.cabal') }}
           restore-keys: v1-${{ runner.os }}-cabal-ghc-latest-
 
       - run: du -hd3 ~/.cabal ~/.ghc || true
 
+      - run: make --version
+
       - run: haddock --version || sudo apt-get install ghc-haddock
       - run: ghc     --version
       - run: cabal   --version
@@ -36,50 +40,54 @@
       - run: ghc-pkg list
 
       - name: Check out repository
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
 
-      - run: cabal update
+      - run: git --version
+
       - run: make install-dependencies
 
-      - run: make
-      - run: make test
-      - run: make haddock
+      # 2023-07: some projects were failing with missing base for GHC 9.6.
+      #          Here we compile through cabal only provisionally.
+      # - run: make
+      # - run: make test
+      # - run: make haddock
       - run: make test-sdist
-      - run: make test-via-cabal
+      #- run: make test-via-cabal
+      - run: cabal configure --enable-tests --enable-benchmarks --ghc-options="-O0"
+      - run: cabal build
+      - run: cabal test
+      - run: cabal haddock
 
 
   test-with-ghc:
     strategy:
       matrix:
         ghc:
+          - '9.4'
+          - '9.2'
           - '9.0'
           - '8.10'
-          - '8.8'
           - '8.6'
-          - '8.4'
           - '8.2'
-          - '8.0'
-          - '7.10'
-          - '7.8'
     runs-on: ubuntu-latest
     needs: build-and-test
     container: haskell:${{ matrix.ghc }}
     steps:
       - name: Cache ~/.cabal/packages
-        uses: actions/cache@v2
+        uses: actions/cache@v3
         with:
           path: ~/.cabal/packages
-          key:          v1-${{ runner.os }}-cabal-packages-${{ hashFiles('hello.cabal') }}
+          key:          v1-${{ runner.os }}-cabal-packages-${{ hashFiles('*.cabal') }}
           restore-keys: v1-${{ runner.os }}-cabal-packages-
 
       - name: Cache ~/.cabal and ~/.ghc
-        uses: actions/cache@v2
+        uses: actions/cache@v3
         with:
           path: |
             ~/.cabal
             !~/.cabal/packages
             ~/.ghc
-          key:          v1-${{ runner.os }}-cabal-ghc-${{ matrix.ghc }}-${{ hashFiles('hello.cabal') }}
+          key:          v1-${{ runner.os }}-cabal-ghc-${{ matrix.ghc }}-${{ hashFiles('*.cabal') }}
           restore-keys: v1-${{ runner.os }}-cabal-ghc-${{ matrix.ghc }}-
 
       - run: du -hd3 ~/.cabal ~/.ghc || true
@@ -94,9 +102,8 @@
       - run: ghc-pkg list
 
       - name: Check out repository
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
 
-      - run: cabal update
       - run: make install-dependencies
 
       - run: make
@@ -110,12 +117,12 @@
     needs: build-and-test
     steps:
       - name: Setup Haskell's GHC and Cabal as required by current Stackage LTS
-        uses: haskell/actions/setup@v1
-        with: # lts-18.14
-          ghc-version: '8.10.7'
-          cabal-version: '3.2'
+        uses: haskell/actions/setup@v2
+        with: # lts-19.19
+          ghc-version: '9.0.2'
+          cabal-version: '3.4'
 
-      - uses: actions/cache@v2
+      - uses: actions/cache@v3
         with:
           path: ~/.stack
           key:          v1-${{ runner.os }}-stack-${{ hashFiles('stack.yaml') }}
@@ -124,5 +131,5 @@
       - run: stack --version
 
       - name: Check out repository
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
       - run: make test-via-stack
diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -42,6 +42,7 @@
 eg/pow
 eg/tapps
 eg/tree
+eg/bst
 eg/replicate
 eg/setelem
 eg/sort
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -2,11 +2,12 @@
 GHCFLAGS = -O2 -v0 \
   $(shell grep -q "Arch Linux" /etc/lsb-release && echo -dynamic)
 HADDOCKFLAGS = \
-  -i $(shell find ~/.cabal -name express.haddock | tail -1) \
+  -i $(shell find ~/.cabal -name leancheck.haddock | tail -1) \
+  -i $(shell find ~/.cabal -name express.haddock   | tail -1) \
   -i $(shell find ~/.cabal -name speculate.haddock | tail -1) \
   -i $(shell find /usr/share/doc/ghc/html/libraries -name template-haskell.haddock | tail -1) \
-  $(shell grep -q "Arch Linux" /etc/lsb-release && echo --optghc=-dynamic)
-HADDOCK_FILTER = grep -v "^Warning: Couldn't find .haddock for export [A-Z]$$"
+  $(shell grep -q "Arch Linux" /etc/lsb-release && echo --optghc=-dynamic) \
+  | grep -v "^Warning: Couldn't find .haddock for export [A-Z]$$"
 INSTALL_DEPS = leancheck express speculate
 
 EG = \
@@ -28,6 +29,7 @@
   eg/spec \
   eg/tapps \
   eg/tree \
+  eg/bst \
   bench/candidates \
   bench/ill-hit \
   bench/longshot \
diff --git a/TODO.md b/TODO.md
--- a/TODO.md
+++ b/TODO.md
@@ -3,29 +3,14 @@
 
 A non-exhaustive list of things TO DO for Conjure.
 
-* test `conjureCases` from `deriveConjurable`;
 
-* consider not breaking in some cases (increased crossproduct of patterns)
-
-* reduce the number of `deconstructions` considered:
-
-	1. place a `traceShowId` in `deconstructions :: [Expr]`
-	2. run the GCD example
-
-		[_ `mod` y :: Int,x `mod` _ :: Int,_ `mod` x :: Int,y `mod` _ :: Int,0 `mod` _ :: Int,0 `mod` _ :: Int]
-
-	3. there's no need to go variable by variable.  Just generating expressions
-	   with a _single hole_ should be enough.
-
-
-
 ### for later
 
-* allow specifying properties that need to be true
-
-* allow recursion under any lazy functions (discover them by testing!)
+* pretty-print top-level if and case expressions?
 
-* pretty-print top-level ifs?
+* consider not breaking arguments in some cases
+  (increased crossproduct of patterns).
+  but which cases?
 
 * exclude magic numbers?  e.g.: `1+1`?
 
@@ -49,5 +34,5 @@
 
 
 This file is part of Conjure,
-(C) 2021 Rudy Matela,
+(C) 2021-2022 Rudy Matela,
 Distribued under the 3-Clause BSD license.
diff --git a/bench/candidates.hs b/bench/candidates.hs
--- a/bench/candidates.hs
+++ b/bench/candidates.hs
@@ -75,3 +75,13 @@
     , prim "||" (||)
     , prim "not" not
     ]
+
+  -- Degenerate case:
+  -- lots of redundancy, since 0 `mod` 0 = undefined
+  -- Speculate is not able to discover that x `mod` x = 0
+  -- nevertheless useful for observing candidate filtering
+  -- through other means
+  printCandidates 9 6 "gcd" (undefined :: Int -> Int -> Int)
+    [ pr (0::Int)
+    , prim "`mod`" (mod :: Int -> Int -> Int)
+    ]
diff --git a/bench/candidates.out b/bench/candidates.out
--- a/bench/candidates.out
+++ b/bench/candidates.out
@@ -869,8874 +869,11186 @@
 Candidates for: ? :: Int -> Int -> Int
   pruning with 10/23 rules
   [3,3,4,10,17,26,54,93,162] direct candidates, 0 duplicates
-  [3,11,42,117,346,955,2714,7510,20754] pattern candidates, 0 duplicates
-
-rules:
-x * y == x + y
-x * y == y + x
-x + 0 == x
-0 + x == x
-dec (x + y) == x + dec y
-dec (x + y) == y + dec x
-dec (x + y) == dec x + y
-dec (x + y) == dec y + x
-(x + y) + z == x + (y + z)
-(x + y) + z == y + (x + z)
-equations:
-y + x == x + y
-y + dec x == x + dec y
-dec x + y == x + dec y
-dec y + x == dec x + y
-x + dec 0 == dec x
-dec 0 + x == dec x
-y + (x + z) == x + (y + z)
-z + (x + y) == x + (y + z)
-z + (y + x) == x + (y + z)
-y + dec (dec x) == x + dec (dec y)
-dec (dec x) + y == x + dec (dec y)
-x + dec (dec 0) == dec (dec x)
-dec (dec 0) + x == dec (dec x)
-
-direct candidates:
-
-x ? y  =  x
-
-x ? y  =  y
-
-x ? y  =  0
-
-x ? y  =  dec x
-
-x ? y  =  dec y
-
-x ? y  =  dec 0
-
-x ? y  =  x + x
-
-x ? y  =  x + y
-
-x ? y  =  y + x
-
-x ? y  =  y + y
-
-x ? y  =  dec x + y
-
-x ? y  =  dec y + x
-
-x ? y  =  dec 0 + x
-
-x ? y  =  dec 0 + y
-
-x ? y  =  x + dec x
-
-x ? y  =  x + dec y
-
-x ? y  =  x + dec 0
-
-x ? y  =  y + dec x
-
-x ? y  =  y + dec y
-
-x ? y  =  y + dec 0
-
-x ? y  =  x + (x + x)
-
-x ? y  =  x + (x + y)
-
-x ? y  =  x + (y + x)
-
-x ? y  =  x + (y + y)
-
-x ? y  =  y + (x + x)
-
-x ? y  =  y + (x + y)
-
-x ? y  =  y + (y + x)
-
-x ? y  =  y + (y + y)
-
-x ? y  =  dec x + dec x
-
-x ? y  =  dec x + dec y
-
-x ? y  =  dec x + dec 0
-
-x ? y  =  dec y + dec x
-
-x ? y  =  dec y + dec y
-
-x ? y  =  dec y + dec 0
-
-x ? y  =  dec 0 + dec x
-
-x ? y  =  dec 0 + dec y
-
-x ? y  =  dec 0 + dec 0
-
-x ? y  =  x + (dec x + y)
-
-x ? y  =  x + (dec y + x)
-
-x ? y  =  x + (dec 0 + x)
-
-x ? y  =  x + (dec 0 + y)
-
-x ? y  =  x + (x + dec x)
-
-x ? y  =  x + (x + dec y)
-
-x ? y  =  x + (x + dec 0)
-
-x ? y  =  x + (y + dec x)
-
-x ? y  =  x + (y + dec y)
-
-x ? y  =  x + (y + dec 0)
-
-x ? y  =  y + (dec x + y)
-
-x ? y  =  y + (dec y + x)
-
-x ? y  =  y + (dec 0 + x)
-
-x ? y  =  y + (dec 0 + y)
-
-x ? y  =  y + (x + dec x)
-
-x ? y  =  y + (x + dec y)
-
-x ? y  =  y + (x + dec 0)
-
-x ? y  =  y + (y + dec x)
-
-x ? y  =  y + (y + dec y)
-
-x ? y  =  y + (y + dec 0)
-
-x ? y  =  dec x + (y + y)
-
-x ? y  =  dec y + (x + x)
-
-x ? y  =  dec 0 + (x + x)
-
-x ? y  =  dec 0 + (x + y)
-
-x ? y  =  dec 0 + (y + x)
-
-x ? y  =  dec 0 + (y + y)
-
-
-pattern candidates:
-
-x ? y  =  x
-
-x ? y  =  y
-
-x ? y  =  0
-
-x ? y  =  dec x
-
-x ? y  =  dec y
-
-x ? y  =  dec 0
-
-x ? 0  =  x
-x ? y  =  y
-
-x ? 0  =  x
-x ? y  =  0
-
-x ? 0  =  0
-x ? y  =  x
-
-x ? 0  =  0
-x ? y  =  y
-
-0 ? x  =  x
-x ? y  =  y
-
-0 ? x  =  x
-x ? y  =  0
-
-0 ? x  =  0
-x ? y  =  x
-
-0 ? x  =  0
-x ? y  =  y
-
-x ? y  =  x + x
-
-x ? y  =  x + y
-
-x ? y  =  y + x
-
-x ? y  =  y + y
-
-x ? y  =  dec (dec x)
-
-x ? y  =  dec (dec y)
-
-x ? y  =  dec (dec 0)
-
-x ? 0  =  x
-x ? y  =  dec x
-
-x ? 0  =  x
-x ? y  =  dec y
-
-x ? 0  =  x
-x ? y  =  dec 0
-
-x ? 0  =  0
-x ? y  =  dec x
-
-x ? 0  =  0
-x ? y  =  dec y
-
-x ? 0  =  0
-x ? y  =  dec 0
-
-x ? 0  =  dec x
-x ? y  =  x
-
-x ? 0  =  dec x
-x ? y  =  y
-
-x ? 0  =  dec x
-x ? y  =  0
-
-x ? 0  =  dec 0
-x ? y  =  x
-
-x ? 0  =  dec 0
-x ? y  =  y
-
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? x  =  x
-x ? y  =  dec x
-
-0 ? x  =  x
-x ? y  =  dec y
-
-0 ? x  =  x
-x ? y  =  dec 0
-
-0 ? x  =  0
-x ? y  =  dec x
-
-0 ? x  =  0
-x ? y  =  dec y
-
-0 ? x  =  0
-x ? y  =  dec 0
-
-0 ? x  =  dec x
-x ? y  =  x
-
-0 ? x  =  dec x
-x ? y  =  y
-
-0 ? x  =  dec x
-x ? y  =  0
-
-0 ? x  =  dec 0
-x ? y  =  x
-
-0 ? x  =  dec 0
-x ? y  =  y
-
-0 ? x  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y
-
-x ? y  =  dec x + x
-
-x ? y  =  dec x + y
-
-x ? y  =  dec y + x
-
-x ? y  =  dec y + y
-
-x ? y  =  dec 0 + x
-
-x ? y  =  dec 0 + y
-
-x ? y  =  dec (dec (dec x))
-
-x ? y  =  dec (dec (dec y))
-
-x ? y  =  dec (dec (dec 0))
-
-x ? y  =  x + dec x
-
-x ? y  =  x + dec y
-
-x ? y  =  x + dec 0
-
-x ? y  =  y + dec x
-
-x ? y  =  y + dec y
-
-x ? y  =  y + dec 0
-
-x ? 0  =  x
-x ? y  =  x + x
-
-x ? 0  =  x
-x ? y  =  x + y
-
-x ? 0  =  x
-x ? y  =  y + x
-
-x ? 0  =  x
-x ? y  =  y + y
-
-x ? 0  =  x
-x ? y  =  dec (dec x)
-
-x ? 0  =  x
-x ? y  =  dec (dec y)
-
-x ? 0  =  x
-x ? y  =  dec (dec 0)
-
-x ? 0  =  0
-x ? y  =  x + x
-
-x ? 0  =  0
-x ? y  =  x + y
-
-x ? 0  =  0
-x ? y  =  y + x
-
-x ? 0  =  0
-x ? y  =  y + y
-
-x ? 0  =  0
-x ? y  =  dec (dec x)
-
-x ? 0  =  0
-x ? y  =  dec (dec y)
-
-x ? 0  =  0
-x ? y  =  dec (dec 0)
-
-x ? 0  =  dec x
-x ? y  =  dec y
-
-x ? 0  =  dec x
-x ? y  =  dec 0
-
-x ? 0  =  dec 0
-x ? y  =  dec x
-
-x ? 0  =  dec 0
-x ? y  =  dec y
-
-x ? 0  =  x + x
-x ? y  =  x
-
-x ? 0  =  x + x
-x ? y  =  y
-
-x ? 0  =  x + x
-x ? y  =  0
-
-x ? 0  =  dec (dec x)
-x ? y  =  x
-
-x ? 0  =  dec (dec x)
-x ? y  =  y
-
-x ? 0  =  dec (dec x)
-x ? y  =  0
-
-x ? 0  =  dec (dec 0)
-x ? y  =  x
-
-x ? 0  =  dec (dec 0)
-x ? y  =  y
-
-x ? 0  =  dec (dec 0)
-x ? y  =  0
-
-0 ? x  =  x
-x ? y  =  x + x
-
-0 ? x  =  x
-x ? y  =  x + y
-
-0 ? x  =  x
-x ? y  =  y + x
-
-0 ? x  =  x
-x ? y  =  y + y
-
-0 ? x  =  x
-x ? y  =  dec (dec x)
-
-0 ? x  =  x
-x ? y  =  dec (dec y)
-
-0 ? x  =  x
-x ? y  =  dec (dec 0)
-
-0 ? x  =  0
-x ? y  =  x + x
-
-0 ? x  =  0
-x ? y  =  x + y
-
-0 ? x  =  0
-x ? y  =  y + x
-
-0 ? x  =  0
-x ? y  =  y + y
-
-0 ? x  =  0
-x ? y  =  dec (dec x)
-
-0 ? x  =  0
-x ? y  =  dec (dec y)
-
-0 ? x  =  0
-x ? y  =  dec (dec 0)
-
-0 ? x  =  dec x
-x ? y  =  dec y
-
-0 ? x  =  dec x
-x ? y  =  dec 0
-
-0 ? x  =  dec 0
-x ? y  =  dec x
-
-0 ? x  =  dec 0
-x ? y  =  dec y
-
-0 ? x  =  x + x
-x ? y  =  x
-
-0 ? x  =  x + x
-x ? y  =  y
-
-0 ? x  =  x + x
-x ? y  =  0
-
-0 ? x  =  dec (dec x)
-x ? y  =  x
-
-0 ? x  =  dec (dec x)
-x ? y  =  y
-
-0 ? x  =  dec (dec x)
-x ? y  =  0
-
-0 ? x  =  dec (dec 0)
-x ? y  =  x
-
-0 ? x  =  dec (dec 0)
-x ? y  =  y
-
-0 ? x  =  dec (dec 0)
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  0
-
-x ? 0  =  x
-x ? y  =  x ? dec y
-
-x ? 0  =  x
-x ? y  =  y ? dec y
-
-x ? 0  =  x
-x ? y  =  0 ? dec y
-
-x ? 0  =  x
-x ? y  =  dec x ? x
-
-x ? 0  =  x
-x ? y  =  dec x ? y
-
-x ? 0  =  x
-x ? y  =  dec x ? 0
-
-x ? 0  =  0
-x ? y  =  x ? dec y
-
-x ? 0  =  0
-x ? y  =  y ? dec y
-
-x ? 0  =  0
-x ? y  =  0 ? dec y
-
-x ? 0  =  0
-x ? y  =  dec x ? x
-
-x ? 0  =  0
-x ? y  =  dec x ? y
-
-x ? 0  =  0
-x ? y  =  dec x ? 0
-
-0 ? x  =  x
-x ? y  =  x ? dec y
-
-0 ? x  =  x
-x ? y  =  y ? dec y
-
-0 ? x  =  x
-x ? y  =  0 ? dec y
-
-0 ? x  =  x
-x ? y  =  dec x ? x
-
-0 ? x  =  x
-x ? y  =  dec x ? y
-
-0 ? x  =  x
-x ? y  =  dec x ? 0
-
-0 ? x  =  0
-x ? y  =  x ? dec y
-
-0 ? x  =  0
-x ? y  =  y ? dec y
-
-0 ? x  =  0
-x ? y  =  0 ? dec y
-
-0 ? x  =  0
-x ? y  =  dec x ? x
-
-0 ? x  =  0
-x ? y  =  dec x ? y
-
-0 ? x  =  0
-x ? y  =  dec x ? 0
-
-x ? y  =  dec (dec x) + x
-
-x ? y  =  dec (dec x) + y
-
-x ? y  =  dec (dec y) + x
-
-x ? y  =  dec (dec y) + y
-
-x ? y  =  dec (dec 0) + x
-
-x ? y  =  dec (dec 0) + y
-
-x ? y  =  dec (dec (dec (dec x)))
-
-x ? y  =  dec (dec (dec (dec y)))
-
-x ? y  =  dec (dec (dec (dec 0)))
-
-x ? y  =  x + (x + x)
-
-x ? y  =  x + (x + y)
-
-x ? y  =  x + (y + x)
-
-x ? y  =  x + (y + y)
-
-x ? y  =  x + dec (dec x)
-
-x ? y  =  x + dec (dec y)
-
-x ? y  =  x + dec (dec 0)
-
-x ? y  =  y + (x + x)
-
-x ? y  =  y + (x + y)
-
-x ? y  =  y + (y + x)
-
-x ? y  =  y + (y + y)
-
-x ? y  =  y + dec (dec x)
-
-x ? y  =  y + dec (dec y)
-
-x ? y  =  y + dec (dec 0)
-
-x ? y  =  dec x + dec x
-
-x ? y  =  dec x + dec y
-
-x ? y  =  dec x + dec 0
-
-x ? y  =  dec y + dec x
-
-x ? y  =  dec y + dec y
-
-x ? y  =  dec y + dec 0
-
-x ? y  =  dec 0 + dec x
-
-x ? y  =  dec 0 + dec y
-
-x ? y  =  dec 0 + dec 0
-
-x ? 0  =  x
-x ? y  =  dec x + x
-
-x ? 0  =  x
-x ? y  =  dec x + y
-
-x ? 0  =  x
-x ? y  =  dec y + x
-
-x ? 0  =  x
-x ? y  =  dec y + y
-
-x ? 0  =  x
-x ? y  =  dec 0 + x
-
-x ? 0  =  x
-x ? y  =  dec 0 + y
-
-x ? 0  =  x
-x ? y  =  dec (dec (dec x))
-
-x ? 0  =  x
-x ? y  =  dec (dec (dec y))
-
-x ? 0  =  x
-x ? y  =  dec (dec (dec 0))
-
-x ? 0  =  x
-x ? y  =  x + dec x
-
-x ? 0  =  x
-x ? y  =  x + dec y
-
-x ? 0  =  x
-x ? y  =  x + dec 0
-
-x ? 0  =  x
-x ? y  =  y + dec x
-
-x ? 0  =  x
-x ? y  =  y + dec y
-
-x ? 0  =  x
-x ? y  =  y + dec 0
-
-x ? 0  =  0
-x ? y  =  dec x + x
-
-x ? 0  =  0
-x ? y  =  dec x + y
-
-x ? 0  =  0
-x ? y  =  dec y + x
-
-x ? 0  =  0
-x ? y  =  dec y + y
-
-x ? 0  =  0
-x ? y  =  dec 0 + x
-
-x ? 0  =  0
-x ? y  =  dec 0 + y
-
-x ? 0  =  0
-x ? y  =  dec (dec (dec x))
-
-x ? 0  =  0
-x ? y  =  dec (dec (dec y))
-
-x ? 0  =  0
-x ? y  =  dec (dec (dec 0))
-
-x ? 0  =  0
-x ? y  =  x + dec x
-
-x ? 0  =  0
-x ? y  =  x + dec y
-
-x ? 0  =  0
-x ? y  =  x + dec 0
-
-x ? 0  =  0
-x ? y  =  y + dec x
-
-x ? 0  =  0
-x ? y  =  y + dec y
-
-x ? 0  =  0
-x ? y  =  y + dec 0
-
-x ? 0  =  dec x
-x ? y  =  x + x
-
-x ? 0  =  dec x
-x ? y  =  x + y
-
-x ? 0  =  dec x
-x ? y  =  y + x
-
-x ? 0  =  dec x
-x ? y  =  y + y
-
-x ? 0  =  dec x
-x ? y  =  dec (dec x)
-
-x ? 0  =  dec x
-x ? y  =  dec (dec y)
-
-x ? 0  =  dec x
-x ? y  =  dec (dec 0)
-
-x ? 0  =  dec 0
-x ? y  =  x + x
-
-x ? 0  =  dec 0
-x ? y  =  x + y
-
-x ? 0  =  dec 0
-x ? y  =  y + x
-
-x ? 0  =  dec 0
-x ? y  =  y + y
-
-x ? 0  =  dec 0
-x ? y  =  dec (dec x)
-
-x ? 0  =  dec 0
-x ? y  =  dec (dec y)
-
-x ? 0  =  dec 0
-x ? y  =  dec (dec 0)
-
-x ? 0  =  x + x
-x ? y  =  dec x
-
-x ? 0  =  x + x
-x ? y  =  dec y
-
-x ? 0  =  x + x
-x ? y  =  dec 0
-
-x ? 0  =  dec (dec x)
-x ? y  =  dec x
-
-x ? 0  =  dec (dec x)
-x ? y  =  dec y
-
-x ? 0  =  dec (dec x)
-x ? y  =  dec 0
-
-x ? 0  =  dec (dec 0)
-x ? y  =  dec x
-
-x ? 0  =  dec (dec 0)
-x ? y  =  dec y
-
-x ? 0  =  dec (dec 0)
-x ? y  =  dec 0
-
-x ? 0  =  dec x + x
-x ? y  =  x
-
-x ? 0  =  dec x + x
-x ? y  =  y
-
-x ? 0  =  dec x + x
-x ? y  =  0
-
-x ? 0  =  dec 0 + x
-x ? y  =  x
-
-x ? 0  =  dec 0 + x
-x ? y  =  y
-
-x ? 0  =  dec 0 + x
-x ? y  =  0
-
-x ? 0  =  dec (dec (dec x))
-x ? y  =  x
-
-x ? 0  =  dec (dec (dec x))
-x ? y  =  y
-
-x ? 0  =  dec (dec (dec x))
-x ? y  =  0
-
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  x
-
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  y
-
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  0
-
-x ? 0  =  x + dec x
-x ? y  =  x
-
-x ? 0  =  x + dec x
-x ? y  =  y
-
-x ? 0  =  x + dec x
-x ? y  =  0
-
-x ? 0  =  x + dec 0
-x ? y  =  x
-
-x ? 0  =  x + dec 0
-x ? y  =  y
-
-x ? 0  =  x + dec 0
-x ? y  =  0
-
-0 ? x  =  x
-x ? y  =  dec x + x
-
-0 ? x  =  x
-x ? y  =  dec x + y
-
-0 ? x  =  x
-x ? y  =  dec y + x
-
-0 ? x  =  x
-x ? y  =  dec y + y
-
-0 ? x  =  x
-x ? y  =  dec 0 + x
-
-0 ? x  =  x
-x ? y  =  dec 0 + y
-
-0 ? x  =  x
-x ? y  =  dec (dec (dec x))
-
-0 ? x  =  x
-x ? y  =  dec (dec (dec y))
-
-0 ? x  =  x
-x ? y  =  dec (dec (dec 0))
-
-0 ? x  =  x
-x ? y  =  x + dec x
-
-0 ? x  =  x
-x ? y  =  x + dec y
-
-0 ? x  =  x
-x ? y  =  x + dec 0
-
-0 ? x  =  x
-x ? y  =  y + dec x
-
-0 ? x  =  x
-x ? y  =  y + dec y
-
-0 ? x  =  x
-x ? y  =  y + dec 0
-
-0 ? x  =  0
-x ? y  =  dec x + x
-
-0 ? x  =  0
-x ? y  =  dec x + y
-
-0 ? x  =  0
-x ? y  =  dec y + x
-
-0 ? x  =  0
-x ? y  =  dec y + y
-
-0 ? x  =  0
-x ? y  =  dec 0 + x
-
-0 ? x  =  0
-x ? y  =  dec 0 + y
-
-0 ? x  =  0
-x ? y  =  dec (dec (dec x))
-
-0 ? x  =  0
-x ? y  =  dec (dec (dec y))
-
-0 ? x  =  0
-x ? y  =  dec (dec (dec 0))
-
-0 ? x  =  0
-x ? y  =  x + dec x
-
-0 ? x  =  0
-x ? y  =  x + dec y
-
-0 ? x  =  0
-x ? y  =  x + dec 0
-
-0 ? x  =  0
-x ? y  =  y + dec x
-
-0 ? x  =  0
-x ? y  =  y + dec y
-
-0 ? x  =  0
-x ? y  =  y + dec 0
-
-0 ? x  =  dec x
-x ? y  =  x + x
-
-0 ? x  =  dec x
-x ? y  =  x + y
-
-0 ? x  =  dec x
-x ? y  =  y + x
-
-0 ? x  =  dec x
-x ? y  =  y + y
-
-0 ? x  =  dec x
-x ? y  =  dec (dec x)
-
-0 ? x  =  dec x
-x ? y  =  dec (dec y)
-
-0 ? x  =  dec x
-x ? y  =  dec (dec 0)
-
-0 ? x  =  dec 0
-x ? y  =  x + x
-
-0 ? x  =  dec 0
-x ? y  =  x + y
-
-0 ? x  =  dec 0
-x ? y  =  y + x
-
-0 ? x  =  dec 0
-x ? y  =  y + y
-
-0 ? x  =  dec 0
-x ? y  =  dec (dec x)
-
-0 ? x  =  dec 0
-x ? y  =  dec (dec y)
-
-0 ? x  =  dec 0
-x ? y  =  dec (dec 0)
-
-0 ? x  =  x + x
-x ? y  =  dec x
-
-0 ? x  =  x + x
-x ? y  =  dec y
-
-0 ? x  =  x + x
-x ? y  =  dec 0
-
-0 ? x  =  dec (dec x)
-x ? y  =  dec x
-
-0 ? x  =  dec (dec x)
-x ? y  =  dec y
-
-0 ? x  =  dec (dec x)
-x ? y  =  dec 0
-
-0 ? x  =  dec (dec 0)
-x ? y  =  dec x
-
-0 ? x  =  dec (dec 0)
-x ? y  =  dec y
-
-0 ? x  =  dec (dec 0)
-x ? y  =  dec 0
-
-0 ? x  =  dec x + x
-x ? y  =  x
-
-0 ? x  =  dec x + x
-x ? y  =  y
-
-0 ? x  =  dec x + x
-x ? y  =  0
-
-0 ? x  =  dec 0 + x
-x ? y  =  x
-
-0 ? x  =  dec 0 + x
-x ? y  =  y
-
-0 ? x  =  dec 0 + x
-x ? y  =  0
-
-0 ? x  =  dec (dec (dec x))
-x ? y  =  x
-
-0 ? x  =  dec (dec (dec x))
-x ? y  =  y
-
-0 ? x  =  dec (dec (dec x))
-x ? y  =  0
-
-0 ? x  =  dec (dec (dec 0))
-x ? y  =  x
-
-0 ? x  =  dec (dec (dec 0))
-x ? y  =  y
-
-0 ? x  =  dec (dec (dec 0))
-x ? y  =  0
-
-0 ? x  =  x + dec x
-x ? y  =  x
-
-0 ? x  =  x + dec x
-x ? y  =  y
-
-0 ? x  =  x + dec x
-x ? y  =  0
-
-0 ? x  =  x + dec 0
-x ? y  =  x
-
-0 ? x  =  x + dec 0
-x ? y  =  y
-
-0 ? x  =  x + dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec x)
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec x)
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec x)
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec 0)
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec 0)
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec 0)
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec x)
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec x)
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec x)
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec 0)
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec 0)
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec 0)
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  0
-
-x ? 0  =  x
-x ? y  =  x ? dec (dec y)
-
-x ? 0  =  x
-x ? y  =  y ? dec (dec y)
-
-x ? 0  =  x
-x ? y  =  0 ? dec (dec y)
-
-x ? 0  =  x
-x ? y  =  dec x ? dec x
-
-x ? 0  =  x
-x ? y  =  dec x ? dec y
-
-x ? 0  =  x
-x ? y  =  dec x ? dec 0
-
-x ? 0  =  x
-x ? y  =  dec y ? dec y
-
-x ? 0  =  x
-x ? y  =  dec 0 ? dec y
-
-x ? 0  =  x
-x ? y  =  dec (dec x) ? x
-
-x ? 0  =  x
-x ? y  =  dec (dec x) ? y
-
-x ? 0  =  x
-x ? y  =  dec (dec x) ? 0
-
-x ? 0  =  0
-x ? y  =  x ? dec (dec y)
-
-x ? 0  =  0
-x ? y  =  y ? dec (dec y)
-
-x ? 0  =  0
-x ? y  =  0 ? dec (dec y)
-
-x ? 0  =  0
-x ? y  =  dec x ? dec x
-
-x ? 0  =  0
-x ? y  =  dec x ? dec y
-
-x ? 0  =  0
-x ? y  =  dec x ? dec 0
-
-x ? 0  =  0
-x ? y  =  dec y ? dec y
-
-x ? 0  =  0
-x ? y  =  dec 0 ? dec y
-
-x ? 0  =  0
-x ? y  =  dec (dec x) ? x
-
-x ? 0  =  0
-x ? y  =  dec (dec x) ? y
-
-x ? 0  =  0
-x ? y  =  dec (dec x) ? 0
-
-0 ? x  =  x
-x ? y  =  x ? dec (dec y)
-
-0 ? x  =  x
-x ? y  =  y ? dec (dec y)
-
-0 ? x  =  x
-x ? y  =  0 ? dec (dec y)
-
-0 ? x  =  x
-x ? y  =  dec x ? dec x
-
-0 ? x  =  x
-x ? y  =  dec x ? dec y
-
-0 ? x  =  x
-x ? y  =  dec x ? dec 0
-
-0 ? x  =  x
-x ? y  =  dec y ? dec y
-
-0 ? x  =  x
-x ? y  =  dec 0 ? dec y
-
-0 ? x  =  x
-x ? y  =  dec (dec x) ? x
-
-0 ? x  =  x
-x ? y  =  dec (dec x) ? y
-
-0 ? x  =  x
-x ? y  =  dec (dec x) ? 0
-
-0 ? x  =  0
-x ? y  =  x ? dec (dec y)
-
-0 ? x  =  0
-x ? y  =  y ? dec (dec y)
-
-0 ? x  =  0
-x ? y  =  0 ? dec (dec y)
-
-0 ? x  =  0
-x ? y  =  dec x ? dec x
-
-0 ? x  =  0
-x ? y  =  dec x ? dec y
-
-0 ? x  =  0
-x ? y  =  dec x ? dec 0
-
-0 ? x  =  0
-x ? y  =  dec y ? dec y
-
-0 ? x  =  0
-x ? y  =  dec 0 ? dec y
-
-0 ? x  =  0
-x ? y  =  dec (dec x) ? x
-
-0 ? x  =  0
-x ? y  =  dec (dec x) ? y
-
-0 ? x  =  0
-x ? y  =  dec (dec x) ? 0
-
-x ? 0  =  x
-x ? y  =  dec (x ? dec y)
-
-x ? 0  =  x
-x ? y  =  dec (y ? dec y)
-
-x ? 0  =  x
-x ? y  =  dec (0 ? dec y)
-
-x ? 0  =  x
-x ? y  =  dec (dec x ? x)
-
-x ? 0  =  x
-x ? y  =  dec (dec x ? y)
-
-x ? 0  =  x
-x ? y  =  dec (dec x ? 0)
-
-x ? 0  =  0
-x ? y  =  dec (x ? dec y)
-
-x ? 0  =  0
-x ? y  =  dec (y ? dec y)
-
-x ? 0  =  0
-x ? y  =  dec (0 ? dec y)
-
-x ? 0  =  0
-x ? y  =  dec (dec x ? x)
-
-x ? 0  =  0
-x ? y  =  dec (dec x ? y)
-
-x ? 0  =  0
-x ? y  =  dec (dec x ? 0)
-
-x ? 0  =  dec x
-x ? y  =  x ? dec y
-
-x ? 0  =  dec x
-x ? y  =  y ? dec y
-
-x ? 0  =  dec x
-x ? y  =  0 ? dec y
-
-x ? 0  =  dec x
-x ? y  =  dec x ? x
-
-x ? 0  =  dec x
-x ? y  =  dec x ? y
-
-x ? 0  =  dec x
-x ? y  =  dec x ? 0
-
-x ? 0  =  dec 0
-x ? y  =  x ? dec y
-
-x ? 0  =  dec 0
-x ? y  =  y ? dec y
-
-x ? 0  =  dec 0
-x ? y  =  0 ? dec y
-
-x ? 0  =  dec 0
-x ? y  =  dec x ? x
-
-x ? 0  =  dec 0
-x ? y  =  dec x ? y
-
-x ? 0  =  dec 0
-x ? y  =  dec x ? 0
-
-0 ? x  =  x
-x ? y  =  dec (x ? dec y)
-
-0 ? x  =  x
-x ? y  =  dec (y ? dec y)
-
-0 ? x  =  x
-x ? y  =  dec (0 ? dec y)
-
-0 ? x  =  x
-x ? y  =  dec (dec x ? x)
-
-0 ? x  =  x
-x ? y  =  dec (dec x ? y)
-
-0 ? x  =  x
-x ? y  =  dec (dec x ? 0)
-
-0 ? x  =  0
-x ? y  =  dec (x ? dec y)
-
-0 ? x  =  0
-x ? y  =  dec (y ? dec y)
-
-0 ? x  =  0
-x ? y  =  dec (0 ? dec y)
-
-0 ? x  =  0
-x ? y  =  dec (dec x ? x)
-
-0 ? x  =  0
-x ? y  =  dec (dec x ? y)
-
-0 ? x  =  0
-x ? y  =  dec (dec x ? 0)
-
-0 ? x  =  dec x
-x ? y  =  x ? dec y
-
-0 ? x  =  dec x
-x ? y  =  y ? dec y
-
-0 ? x  =  dec x
-x ? y  =  0 ? dec y
-
-0 ? x  =  dec x
-x ? y  =  dec x ? x
-
-0 ? x  =  dec x
-x ? y  =  dec x ? y
-
-0 ? x  =  dec x
-x ? y  =  dec x ? 0
-
-0 ? x  =  dec 0
-x ? y  =  x ? dec y
-
-0 ? x  =  dec 0
-x ? y  =  y ? dec y
-
-0 ? x  =  dec 0
-x ? y  =  0 ? dec y
-
-0 ? x  =  dec 0
-x ? y  =  dec x ? x
-
-0 ? x  =  dec 0
-x ? y  =  dec x ? y
-
-0 ? x  =  dec 0
-x ? y  =  dec x ? 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x ? dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y ? dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  0 ? dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec x ? x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec x ? y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec x ? 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x ? x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x ? 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x ? x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x ? 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x ? x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x ? 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x ? dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y ? dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  0 ? dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec x ? x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec x ? y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec x ? 0
-
-0 ? 0  =  0
-0 ? x  =  x ? dec x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0 ? dec x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x ? dec x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0 ? dec x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x ? dec x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0 ? dec x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x ? dec x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0 ? dec x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x ? dec x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0 ? dec x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x ? dec x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0 ? dec x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x ? dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y ? dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  0 ? dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec x ? x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec x ? y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec x ? 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x ? x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x ? 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x ? x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x ? 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x ? x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x ? 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x ? dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y ? dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  0 ? dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec x ? x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec x ? y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec x ? 0
-
-x ? y  =  dec (dec (dec x)) + x
-
-x ? y  =  dec (dec (dec x)) + y
-
-x ? y  =  dec (dec (dec y)) + x
-
-x ? y  =  dec (dec (dec y)) + y
-
-x ? y  =  dec (dec (dec 0)) + x
-
-x ? y  =  dec (dec (dec 0)) + y
-
-x ? y  =  dec (dec (dec (dec (dec x))))
-
-x ? y  =  dec (dec (dec (dec (dec y))))
-
-x ? y  =  dec (dec (dec (dec (dec 0))))
-
-x ? y  =  x + (dec x + x)
-
-x ? y  =  x + (dec x + y)
-
-x ? y  =  x + (dec y + x)
-
-x ? y  =  x + (dec y + y)
-
-x ? y  =  x + (dec 0 + x)
-
-x ? y  =  x + (dec 0 + y)
-
-x ? y  =  x + dec (dec (dec x))
-
-x ? y  =  x + dec (dec (dec y))
-
-x ? y  =  x + dec (dec (dec 0))
-
-x ? y  =  x + (x + dec x)
-
-x ? y  =  x + (x + dec y)
-
-x ? y  =  x + (x + dec 0)
-
-x ? y  =  x + (y + dec x)
-
-x ? y  =  x + (y + dec y)
-
-x ? y  =  x + (y + dec 0)
-
-x ? y  =  y + (dec x + x)
-
-x ? y  =  y + (dec x + y)
-
-x ? y  =  y + (dec y + x)
-
-x ? y  =  y + (dec y + y)
-
-x ? y  =  y + (dec 0 + x)
-
-x ? y  =  y + (dec 0 + y)
-
-x ? y  =  y + dec (dec (dec x))
-
-x ? y  =  y + dec (dec (dec y))
-
-x ? y  =  y + dec (dec (dec 0))
-
-x ? y  =  y + (x + dec x)
-
-x ? y  =  y + (x + dec y)
-
-x ? y  =  y + (x + dec 0)
-
-x ? y  =  y + (y + dec x)
-
-x ? y  =  y + (y + dec y)
-
-x ? y  =  y + (y + dec 0)
-
-x ? y  =  dec x + (x + x)
-
-x ? y  =  dec x + (x + y)
-
-x ? y  =  dec x + (y + x)
-
-x ? y  =  dec x + (y + y)
-
-x ? y  =  dec x + dec (dec x)
-
-x ? y  =  dec x + dec (dec y)
-
-x ? y  =  dec x + dec (dec 0)
-
-x ? y  =  dec y + (x + x)
-
-x ? y  =  dec y + (x + y)
-
-x ? y  =  dec y + (y + x)
-
-x ? y  =  dec y + (y + y)
-
-x ? y  =  dec y + dec (dec x)
-
-x ? y  =  dec y + dec (dec y)
-
-x ? y  =  dec y + dec (dec 0)
-
-x ? y  =  dec 0 + (x + x)
-
-x ? y  =  dec 0 + (x + y)
-
-x ? y  =  dec 0 + (y + x)
-
-x ? y  =  dec 0 + (y + y)
-
-x ? y  =  dec 0 + dec (dec x)
-
-x ? y  =  dec 0 + dec (dec y)
-
-x ? y  =  dec 0 + dec (dec 0)
-
-x ? y  =  dec (dec x) + dec x
-
-x ? y  =  dec (dec x) + dec y
-
-x ? y  =  dec (dec x) + dec 0
-
-x ? y  =  dec (dec y) + dec x
-
-x ? y  =  dec (dec y) + dec y
-
-x ? y  =  dec (dec y) + dec 0
-
-x ? y  =  dec (dec 0) + dec x
-
-x ? y  =  dec (dec 0) + dec y
-
-x ? y  =  dec (dec 0) + dec 0
-
-x ? 0  =  x
-x ? y  =  dec (dec x) + x
-
-x ? 0  =  x
-x ? y  =  dec (dec x) + y
-
-x ? 0  =  x
-x ? y  =  dec (dec y) + x
-
-x ? 0  =  x
-x ? y  =  dec (dec y) + y
-
-x ? 0  =  x
-x ? y  =  dec (dec 0) + x
-
-x ? 0  =  x
-x ? y  =  dec (dec 0) + y
-
-x ? 0  =  x
-x ? y  =  dec (dec (dec (dec x)))
-
-x ? 0  =  x
-x ? y  =  dec (dec (dec (dec y)))
-
-x ? 0  =  x
-x ? y  =  dec (dec (dec (dec 0)))
-
-x ? 0  =  x
-x ? y  =  x + (x + x)
-
-x ? 0  =  x
-x ? y  =  x + (x + y)
-
-x ? 0  =  x
-x ? y  =  x + (y + x)
-
-x ? 0  =  x
-x ? y  =  x + (y + y)
-
-x ? 0  =  x
-x ? y  =  x + dec (dec x)
-
-x ? 0  =  x
-x ? y  =  x + dec (dec y)
-
-x ? 0  =  x
-x ? y  =  x + dec (dec 0)
-
-x ? 0  =  x
-x ? y  =  y + (x + x)
-
-x ? 0  =  x
-x ? y  =  y + (x + y)
-
-x ? 0  =  x
-x ? y  =  y + (y + x)
-
-x ? 0  =  x
-x ? y  =  y + (y + y)
-
-x ? 0  =  x
-x ? y  =  y + dec (dec x)
-
-x ? 0  =  x
-x ? y  =  y + dec (dec y)
-
-x ? 0  =  x
-x ? y  =  y + dec (dec 0)
-
-x ? 0  =  x
-x ? y  =  dec x + dec x
-
-x ? 0  =  x
-x ? y  =  dec x + dec y
-
-x ? 0  =  x
-x ? y  =  dec x + dec 0
-
-x ? 0  =  x
-x ? y  =  dec y + dec x
-
-x ? 0  =  x
-x ? y  =  dec y + dec y
-
-x ? 0  =  x
-x ? y  =  dec y + dec 0
-
-x ? 0  =  x
-x ? y  =  dec 0 + dec x
-
-x ? 0  =  x
-x ? y  =  dec 0 + dec y
-
-x ? 0  =  x
-x ? y  =  dec 0 + dec 0
-
-x ? 0  =  0
-x ? y  =  dec (dec x) + x
-
-x ? 0  =  0
-x ? y  =  dec (dec x) + y
-
-x ? 0  =  0
-x ? y  =  dec (dec y) + x
-
-x ? 0  =  0
-x ? y  =  dec (dec y) + y
-
-x ? 0  =  0
-x ? y  =  dec (dec 0) + x
-
-x ? 0  =  0
-x ? y  =  dec (dec 0) + y
-
-x ? 0  =  0
-x ? y  =  dec (dec (dec (dec x)))
-
-x ? 0  =  0
-x ? y  =  dec (dec (dec (dec y)))
-
-x ? 0  =  0
-x ? y  =  dec (dec (dec (dec 0)))
-
-x ? 0  =  0
-x ? y  =  x + (x + x)
-
-x ? 0  =  0
-x ? y  =  x + (x + y)
-
-x ? 0  =  0
-x ? y  =  x + (y + x)
-
-x ? 0  =  0
-x ? y  =  x + (y + y)
-
-x ? 0  =  0
-x ? y  =  x + dec (dec x)
-
-x ? 0  =  0
-x ? y  =  x + dec (dec y)
-
-x ? 0  =  0
-x ? y  =  x + dec (dec 0)
-
-x ? 0  =  0
-x ? y  =  y + (x + x)
-
-x ? 0  =  0
-x ? y  =  y + (x + y)
-
-x ? 0  =  0
-x ? y  =  y + (y + x)
-
-x ? 0  =  0
-x ? y  =  y + (y + y)
-
-x ? 0  =  0
-x ? y  =  y + dec (dec x)
-
-x ? 0  =  0
-x ? y  =  y + dec (dec y)
-
-x ? 0  =  0
-x ? y  =  y + dec (dec 0)
-
-x ? 0  =  0
-x ? y  =  dec x + dec x
-
-x ? 0  =  0
-x ? y  =  dec x + dec y
-
-x ? 0  =  0
-x ? y  =  dec x + dec 0
-
-x ? 0  =  0
-x ? y  =  dec y + dec x
-
-x ? 0  =  0
-x ? y  =  dec y + dec y
-
-x ? 0  =  0
-x ? y  =  dec y + dec 0
-
-x ? 0  =  0
-x ? y  =  dec 0 + dec x
-
-x ? 0  =  0
-x ? y  =  dec 0 + dec y
-
-x ? 0  =  0
-x ? y  =  dec 0 + dec 0
-
-x ? 0  =  dec x
-x ? y  =  dec x + x
-
-x ? 0  =  dec x
-x ? y  =  dec x + y
-
-x ? 0  =  dec x
-x ? y  =  dec y + x
-
-x ? 0  =  dec x
-x ? y  =  dec y + y
-
-x ? 0  =  dec x
-x ? y  =  dec 0 + x
-
-x ? 0  =  dec x
-x ? y  =  dec 0 + y
-
-x ? 0  =  dec x
-x ? y  =  dec (dec (dec x))
-
-x ? 0  =  dec x
-x ? y  =  dec (dec (dec y))
-
-x ? 0  =  dec x
-x ? y  =  dec (dec (dec 0))
-
-x ? 0  =  dec x
-x ? y  =  x + dec x
-
-x ? 0  =  dec x
-x ? y  =  x + dec y
-
-x ? 0  =  dec x
-x ? y  =  x + dec 0
-
-x ? 0  =  dec x
-x ? y  =  y + dec x
-
-x ? 0  =  dec x
-x ? y  =  y + dec y
-
-x ? 0  =  dec x
-x ? y  =  y + dec 0
-
-x ? 0  =  dec 0
-x ? y  =  dec x + x
-
-x ? 0  =  dec 0
-x ? y  =  dec x + y
-
-x ? 0  =  dec 0
-x ? y  =  dec y + x
-
-x ? 0  =  dec 0
-x ? y  =  dec y + y
-
-x ? 0  =  dec 0
-x ? y  =  dec 0 + x
-
-x ? 0  =  dec 0
-x ? y  =  dec 0 + y
-
-x ? 0  =  dec 0
-x ? y  =  dec (dec (dec x))
-
-x ? 0  =  dec 0
-x ? y  =  dec (dec (dec y))
-
-x ? 0  =  dec 0
-x ? y  =  dec (dec (dec 0))
-
-x ? 0  =  dec 0
-x ? y  =  x + dec x
-
-x ? 0  =  dec 0
-x ? y  =  x + dec y
-
-x ? 0  =  dec 0
-x ? y  =  x + dec 0
-
-x ? 0  =  dec 0
-x ? y  =  y + dec x
-
-x ? 0  =  dec 0
-x ? y  =  y + dec y
-
-x ? 0  =  dec 0
-x ? y  =  y + dec 0
-
-x ? 0  =  x + x
-x ? y  =  x + y
-
-x ? 0  =  x + x
-x ? y  =  y + x
-
-x ? 0  =  x + x
-x ? y  =  y + y
-
-x ? 0  =  x + x
-x ? y  =  dec (dec x)
-
-x ? 0  =  x + x
-x ? y  =  dec (dec y)
-
-x ? 0  =  x + x
-x ? y  =  dec (dec 0)
-
-x ? 0  =  dec (dec x)
-x ? y  =  x + x
-
-x ? 0  =  dec (dec x)
-x ? y  =  x + y
-
-x ? 0  =  dec (dec x)
-x ? y  =  y + x
-
-x ? 0  =  dec (dec x)
-x ? y  =  y + y
-
-x ? 0  =  dec (dec x)
-x ? y  =  dec (dec y)
-
-x ? 0  =  dec (dec x)
-x ? y  =  dec (dec 0)
-
-x ? 0  =  dec (dec 0)
-x ? y  =  x + x
-
-x ? 0  =  dec (dec 0)
-x ? y  =  x + y
-
-x ? 0  =  dec (dec 0)
-x ? y  =  y + x
-
-x ? 0  =  dec (dec 0)
-x ? y  =  y + y
-
-x ? 0  =  dec (dec 0)
-x ? y  =  dec (dec x)
-
-x ? 0  =  dec (dec 0)
-x ? y  =  dec (dec y)
-
-x ? 0  =  dec x + x
-x ? y  =  dec x
-
-x ? 0  =  dec x + x
-x ? y  =  dec y
-
-x ? 0  =  dec x + x
-x ? y  =  dec 0
-
-x ? 0  =  dec 0 + x
-x ? y  =  dec x
-
-x ? 0  =  dec 0 + x
-x ? y  =  dec y
-
-x ? 0  =  dec 0 + x
-x ? y  =  dec 0
-
-x ? 0  =  dec (dec (dec x))
-x ? y  =  dec x
-
-x ? 0  =  dec (dec (dec x))
-x ? y  =  dec y
-
-x ? 0  =  dec (dec (dec x))
-x ? y  =  dec 0
-
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  dec x
-
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  dec y
-
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  dec 0
-
-x ? 0  =  x + dec x
-x ? y  =  dec x
-
-x ? 0  =  x + dec x
-x ? y  =  dec y
-
-x ? 0  =  x + dec x
-x ? y  =  dec 0
-
-x ? 0  =  x + dec 0
-x ? y  =  dec x
-
-x ? 0  =  x + dec 0
-x ? y  =  dec y
-
-x ? 0  =  x + dec 0
-x ? y  =  dec 0
-
-x ? 0  =  dec (dec x) + x
-x ? y  =  x
-
-x ? 0  =  dec (dec x) + x
-x ? y  =  y
-
-x ? 0  =  dec (dec x) + x
-x ? y  =  0
-
-x ? 0  =  dec (dec 0) + x
-x ? y  =  x
-
-x ? 0  =  dec (dec 0) + x
-x ? y  =  y
-
-x ? 0  =  dec (dec 0) + x
-x ? y  =  0
-
-x ? 0  =  dec (dec (dec (dec x)))
-x ? y  =  x
-
-x ? 0  =  dec (dec (dec (dec x)))
-x ? y  =  y
-
-x ? 0  =  dec (dec (dec (dec x)))
-x ? y  =  0
-
-x ? 0  =  dec (dec (dec (dec 0)))
-x ? y  =  x
-
-x ? 0  =  dec (dec (dec (dec 0)))
-x ? y  =  y
-
-x ? 0  =  dec (dec (dec (dec 0)))
-x ? y  =  0
-
-x ? 0  =  x + (x + x)
-x ? y  =  x
-
-x ? 0  =  x + (x + x)
-x ? y  =  y
-
-x ? 0  =  x + (x + x)
-x ? y  =  0
-
-x ? 0  =  x + dec (dec x)
-x ? y  =  x
-
-x ? 0  =  x + dec (dec x)
-x ? y  =  y
-
-x ? 0  =  x + dec (dec x)
-x ? y  =  0
-
-x ? 0  =  x + dec (dec 0)
-x ? y  =  x
-
-x ? 0  =  x + dec (dec 0)
-x ? y  =  y
-
-x ? 0  =  x + dec (dec 0)
-x ? y  =  0
-
-x ? 0  =  dec x + dec x
-x ? y  =  x
-
-x ? 0  =  dec x + dec x
-x ? y  =  y
-
-x ? 0  =  dec x + dec x
-x ? y  =  0
-
-x ? 0  =  dec x + dec 0
-x ? y  =  x
-
-x ? 0  =  dec x + dec 0
-x ? y  =  y
-
-x ? 0  =  dec x + dec 0
-x ? y  =  0
-
-x ? 0  =  dec 0 + dec x
-x ? y  =  x
-
-x ? 0  =  dec 0 + dec x
-x ? y  =  y
-
-x ? 0  =  dec 0 + dec x
-x ? y  =  0
-
-x ? 0  =  dec 0 + dec 0
-x ? y  =  x
-
-x ? 0  =  dec 0 + dec 0
-x ? y  =  y
-
-x ? 0  =  dec 0 + dec 0
-x ? y  =  0
-
-0 ? x  =  x
-x ? y  =  dec (dec x) + x
-
-0 ? x  =  x
-x ? y  =  dec (dec x) + y
-
-0 ? x  =  x
-x ? y  =  dec (dec y) + x
-
-0 ? x  =  x
-x ? y  =  dec (dec y) + y
-
-0 ? x  =  x
-x ? y  =  dec (dec 0) + x
-
-0 ? x  =  x
-x ? y  =  dec (dec 0) + y
-
-0 ? x  =  x
-x ? y  =  dec (dec (dec (dec x)))
-
-0 ? x  =  x
-x ? y  =  dec (dec (dec (dec y)))
-
-0 ? x  =  x
-x ? y  =  dec (dec (dec (dec 0)))
-
-0 ? x  =  x
-x ? y  =  x + (x + x)
-
-0 ? x  =  x
-x ? y  =  x + (x + y)
-
-0 ? x  =  x
-x ? y  =  x + (y + x)
-
-0 ? x  =  x
-x ? y  =  x + (y + y)
-
-0 ? x  =  x
-x ? y  =  x + dec (dec x)
-
-0 ? x  =  x
-x ? y  =  x + dec (dec y)
-
-0 ? x  =  x
-x ? y  =  x + dec (dec 0)
-
-0 ? x  =  x
-x ? y  =  y + (x + x)
-
-0 ? x  =  x
-x ? y  =  y + (x + y)
-
-0 ? x  =  x
-x ? y  =  y + (y + x)
-
-0 ? x  =  x
-x ? y  =  y + (y + y)
-
-0 ? x  =  x
-x ? y  =  y + dec (dec x)
-
-0 ? x  =  x
-x ? y  =  y + dec (dec y)
-
-0 ? x  =  x
-x ? y  =  y + dec (dec 0)
-
-0 ? x  =  x
-x ? y  =  dec x + dec x
-
-0 ? x  =  x
-x ? y  =  dec x + dec y
-
-0 ? x  =  x
-x ? y  =  dec x + dec 0
-
-0 ? x  =  x
-x ? y  =  dec y + dec x
-
-0 ? x  =  x
-x ? y  =  dec y + dec y
-
-0 ? x  =  x
-x ? y  =  dec y + dec 0
-
-0 ? x  =  x
-x ? y  =  dec 0 + dec x
-
-0 ? x  =  x
-x ? y  =  dec 0 + dec y
-
-0 ? x  =  x
-x ? y  =  dec 0 + dec 0
-
-0 ? x  =  0
-x ? y  =  dec (dec x) + x
-
-0 ? x  =  0
-x ? y  =  dec (dec x) + y
-
-0 ? x  =  0
-x ? y  =  dec (dec y) + x
-
-0 ? x  =  0
-x ? y  =  dec (dec y) + y
-
-0 ? x  =  0
-x ? y  =  dec (dec 0) + x
-
-0 ? x  =  0
-x ? y  =  dec (dec 0) + y
-
-0 ? x  =  0
-x ? y  =  dec (dec (dec (dec x)))
-
-0 ? x  =  0
-x ? y  =  dec (dec (dec (dec y)))
-
-0 ? x  =  0
-x ? y  =  dec (dec (dec (dec 0)))
-
-0 ? x  =  0
-x ? y  =  x + (x + x)
-
-0 ? x  =  0
-x ? y  =  x + (x + y)
-
-0 ? x  =  0
-x ? y  =  x + (y + x)
-
-0 ? x  =  0
-x ? y  =  x + (y + y)
-
-0 ? x  =  0
-x ? y  =  x + dec (dec x)
-
-0 ? x  =  0
-x ? y  =  x + dec (dec y)
-
-0 ? x  =  0
-x ? y  =  x + dec (dec 0)
-
-0 ? x  =  0
-x ? y  =  y + (x + x)
-
-0 ? x  =  0
-x ? y  =  y + (x + y)
-
-0 ? x  =  0
-x ? y  =  y + (y + x)
-
-0 ? x  =  0
-x ? y  =  y + (y + y)
-
-0 ? x  =  0
-x ? y  =  y + dec (dec x)
-
-0 ? x  =  0
-x ? y  =  y + dec (dec y)
-
-0 ? x  =  0
-x ? y  =  y + dec (dec 0)
-
-0 ? x  =  0
-x ? y  =  dec x + dec x
-
-0 ? x  =  0
-x ? y  =  dec x + dec y
-
-0 ? x  =  0
-x ? y  =  dec x + dec 0
-
-0 ? x  =  0
-x ? y  =  dec y + dec x
-
-0 ? x  =  0
-x ? y  =  dec y + dec y
-
-0 ? x  =  0
-x ? y  =  dec y + dec 0
-
-0 ? x  =  0
-x ? y  =  dec 0 + dec x
-
-0 ? x  =  0
-x ? y  =  dec 0 + dec y
-
-0 ? x  =  0
-x ? y  =  dec 0 + dec 0
-
-0 ? x  =  dec x
-x ? y  =  dec x + x
-
-0 ? x  =  dec x
-x ? y  =  dec x + y
-
-0 ? x  =  dec x
-x ? y  =  dec y + x
-
-0 ? x  =  dec x
-x ? y  =  dec y + y
-
-0 ? x  =  dec x
-x ? y  =  dec 0 + x
-
-0 ? x  =  dec x
-x ? y  =  dec 0 + y
-
-0 ? x  =  dec x
-x ? y  =  dec (dec (dec x))
-
-0 ? x  =  dec x
-x ? y  =  dec (dec (dec y))
-
-0 ? x  =  dec x
-x ? y  =  dec (dec (dec 0))
-
-0 ? x  =  dec x
-x ? y  =  x + dec x
-
-0 ? x  =  dec x
-x ? y  =  x + dec y
-
-0 ? x  =  dec x
-x ? y  =  x + dec 0
-
-0 ? x  =  dec x
-x ? y  =  y + dec x
-
-0 ? x  =  dec x
-x ? y  =  y + dec y
-
-0 ? x  =  dec x
-x ? y  =  y + dec 0
-
-0 ? x  =  dec 0
-x ? y  =  dec x + x
-
-0 ? x  =  dec 0
-x ? y  =  dec x + y
-
-0 ? x  =  dec 0
-x ? y  =  dec y + x
-
-0 ? x  =  dec 0
-x ? y  =  dec y + y
-
-0 ? x  =  dec 0
-x ? y  =  dec 0 + x
-
-0 ? x  =  dec 0
-x ? y  =  dec 0 + y
-
-0 ? x  =  dec 0
-x ? y  =  dec (dec (dec x))
-
-0 ? x  =  dec 0
-x ? y  =  dec (dec (dec y))
-
-0 ? x  =  dec 0
-x ? y  =  dec (dec (dec 0))
-
-0 ? x  =  dec 0
-x ? y  =  x + dec x
-
-0 ? x  =  dec 0
-x ? y  =  x + dec y
-
-0 ? x  =  dec 0
-x ? y  =  x + dec 0
-
-0 ? x  =  dec 0
-x ? y  =  y + dec x
-
-0 ? x  =  dec 0
-x ? y  =  y + dec y
-
-0 ? x  =  dec 0
-x ? y  =  y + dec 0
-
-0 ? x  =  x + x
-x ? y  =  x + y
-
-0 ? x  =  x + x
-x ? y  =  y + x
-
-0 ? x  =  x + x
-x ? y  =  y + y
-
-0 ? x  =  x + x
-x ? y  =  dec (dec x)
-
-0 ? x  =  x + x
-x ? y  =  dec (dec y)
-
-0 ? x  =  x + x
-x ? y  =  dec (dec 0)
-
-0 ? x  =  dec (dec x)
-x ? y  =  x + x
-
-0 ? x  =  dec (dec x)
-x ? y  =  x + y
-
-0 ? x  =  dec (dec x)
-x ? y  =  y + x
-
-0 ? x  =  dec (dec x)
-x ? y  =  y + y
-
-0 ? x  =  dec (dec x)
-x ? y  =  dec (dec y)
-
-0 ? x  =  dec (dec x)
-x ? y  =  dec (dec 0)
-
-0 ? x  =  dec (dec 0)
-x ? y  =  x + x
-
-0 ? x  =  dec (dec 0)
-x ? y  =  x + y
-
-0 ? x  =  dec (dec 0)
-x ? y  =  y + x
-
-0 ? x  =  dec (dec 0)
-x ? y  =  y + y
-
-0 ? x  =  dec (dec 0)
-x ? y  =  dec (dec x)
-
-0 ? x  =  dec (dec 0)
-x ? y  =  dec (dec y)
-
-0 ? x  =  dec x + x
-x ? y  =  dec x
-
-0 ? x  =  dec x + x
-x ? y  =  dec y
-
-0 ? x  =  dec x + x
-x ? y  =  dec 0
-
-0 ? x  =  dec 0 + x
-x ? y  =  dec x
-
-0 ? x  =  dec 0 + x
-x ? y  =  dec y
-
-0 ? x  =  dec 0 + x
-x ? y  =  dec 0
-
-0 ? x  =  dec (dec (dec x))
-x ? y  =  dec x
-
-0 ? x  =  dec (dec (dec x))
-x ? y  =  dec y
-
-0 ? x  =  dec (dec (dec x))
-x ? y  =  dec 0
-
-0 ? x  =  dec (dec (dec 0))
-x ? y  =  dec x
-
-0 ? x  =  dec (dec (dec 0))
-x ? y  =  dec y
-
-0 ? x  =  dec (dec (dec 0))
-x ? y  =  dec 0
-
-0 ? x  =  x + dec x
-x ? y  =  dec x
-
-0 ? x  =  x + dec x
-x ? y  =  dec y
-
-0 ? x  =  x + dec x
-x ? y  =  dec 0
-
-0 ? x  =  x + dec 0
-x ? y  =  dec x
-
-0 ? x  =  x + dec 0
-x ? y  =  dec y
-
-0 ? x  =  x + dec 0
-x ? y  =  dec 0
-
-0 ? x  =  dec (dec x) + x
-x ? y  =  x
-
-0 ? x  =  dec (dec x) + x
-x ? y  =  y
-
-0 ? x  =  dec (dec x) + x
-x ? y  =  0
-
-0 ? x  =  dec (dec 0) + x
-x ? y  =  x
-
-0 ? x  =  dec (dec 0) + x
-x ? y  =  y
-
-0 ? x  =  dec (dec 0) + x
-x ? y  =  0
-
-0 ? x  =  dec (dec (dec (dec x)))
-x ? y  =  x
-
-0 ? x  =  dec (dec (dec (dec x)))
-x ? y  =  y
-
-0 ? x  =  dec (dec (dec (dec x)))
-x ? y  =  0
-
-0 ? x  =  dec (dec (dec (dec 0)))
-x ? y  =  x
-
-0 ? x  =  dec (dec (dec (dec 0)))
-x ? y  =  y
-
-0 ? x  =  dec (dec (dec (dec 0)))
-x ? y  =  0
-
-0 ? x  =  x + (x + x)
-x ? y  =  x
-
-0 ? x  =  x + (x + x)
-x ? y  =  y
-
-0 ? x  =  x + (x + x)
-x ? y  =  0
-
-0 ? x  =  x + dec (dec x)
-x ? y  =  x
-
-0 ? x  =  x + dec (dec x)
-x ? y  =  y
-
-0 ? x  =  x + dec (dec x)
-x ? y  =  0
-
-0 ? x  =  x + dec (dec 0)
-x ? y  =  x
-
-0 ? x  =  x + dec (dec 0)
-x ? y  =  y
-
-0 ? x  =  x + dec (dec 0)
-x ? y  =  0
-
-0 ? x  =  dec x + dec x
-x ? y  =  x
-
-0 ? x  =  dec x + dec x
-x ? y  =  y
-
-0 ? x  =  dec x + dec x
-x ? y  =  0
-
-0 ? x  =  dec x + dec 0
-x ? y  =  x
-
-0 ? x  =  dec x + dec 0
-x ? y  =  y
-
-0 ? x  =  dec x + dec 0
-x ? y  =  0
-
-0 ? x  =  dec 0 + dec x
-x ? y  =  x
-
-0 ? x  =  dec 0 + dec x
-x ? y  =  y
-
-0 ? x  =  dec 0 + dec x
-x ? y  =  0
-
-0 ? x  =  dec 0 + dec 0
-x ? y  =  x
-
-0 ? x  =  dec 0 + dec 0
-x ? y  =  y
-
-0 ? x  =  dec 0 + dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec x + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec x + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec y + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec y + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec 0 + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec 0 + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec (dec (dec x))
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec (dec (dec y))
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec (dec (dec 0))
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x + dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x + dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x + dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y + dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y + dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y + dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec x + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec x + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec y + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec y + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec 0 + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec 0 + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec (dec (dec x))
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec (dec (dec y))
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec (dec (dec 0))
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x + dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x + dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x + dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y + dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y + dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y + dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec x)
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec x)
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec x)
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec 0)
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec 0)
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec 0)
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x + x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x + x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec x + x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0 + x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0 + x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec 0 + x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec (dec x))
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec (dec x))
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec (dec x))
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + dec x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + dec x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + dec x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + dec 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + dec 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x
-x ? 0  =  x + dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec x + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec x + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec y + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec y + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec 0 + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec 0 + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec (dec (dec x))
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec (dec (dec y))
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec (dec (dec 0))
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x + dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x + dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x + dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y + dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y + dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y + dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec x + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec x + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec y + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec y + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec 0 + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec 0 + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec (dec (dec x))
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec (dec (dec y))
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec (dec (dec 0))
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x + dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x + dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x + dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y + dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y + dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y + dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec x)
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec x)
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec x)
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec 0)
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec 0)
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec 0)
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x + x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x + x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec x + x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0 + x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0 + x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec 0 + x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec (dec x))
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec (dec x))
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec (dec x))
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  dec (dec (dec 0))
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + dec x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + dec x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + dec x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + dec 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + dec 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  0
-x ? 0  =  x + dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec 0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec 0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec 0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x + x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x + x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  x + x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec (dec x)
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec (dec x)
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec (dec x)
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec (dec 0)
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec (dec 0)
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec x
-x ? 0  =  dec (dec 0)
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  x + x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  x + y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  y + x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  y + y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  dec (dec x)
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  dec (dec y)
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec 0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec 0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec 0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x + x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x + x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  x + x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec (dec x)
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec (dec x)
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec (dec x)
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec (dec 0)
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec (dec 0)
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec 0
-x ? 0  =  dec (dec 0)
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x + x
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec x)
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec 0)
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec x + x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec x + x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec x + x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec x + x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec x + x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec x + x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec 0 + x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec 0 + x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec 0 + x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec 0 + x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec 0 + x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec 0 + x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec x))
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec x))
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec x))
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec x))
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec x))
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec x))
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec 0))
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec 0))
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec 0))
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec 0))
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec 0))
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  dec (dec (dec 0))
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x + dec x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x + dec x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x + dec x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x + dec x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x + dec x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x + dec x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x + dec 0
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x + dec 0
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x + dec 0
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  0
-0 ? x  =  x + dec 0
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  0
-0 ? x  =  x + dec 0
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  0
-0 ? x  =  x + dec 0
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x + x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x + y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y + x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y + y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec (dec x)
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec (dec y)
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x + x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x + y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y + x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y + y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec (dec x)
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec (dec y)
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x + x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x + x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  x + x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec (dec x)
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec (dec x)
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec (dec x)
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec (dec 0)
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec (dec 0)
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  x
-x ? 0  =  dec (dec 0)
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x + x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x + y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y + x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y + y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec (dec x)
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec (dec y)
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x + x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x + y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y + x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y + y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec (dec x)
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec (dec y)
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec (dec 0)
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x + x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x + x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  x + x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec (dec x)
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec (dec x)
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec (dec x)
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec (dec 0)
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec (dec 0)
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  0
-x ? 0  =  dec (dec 0)
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec x
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec 0
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  x + x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  x + x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  x + x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  x + x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  x + x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  x + x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec x)
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec x)
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec x)
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec x)
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec x)
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec x)
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec 0)
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec 0)
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec 0)
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec 0)
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec 0)
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec 0
-0 ? x  =  dec (dec 0)
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  x
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  dec 0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  dec 0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  dec x
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  0
-x ? 0  =  dec 0
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec 0
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec (dec 0)
-0 ? x  =  dec 0
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  x
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  x
-x ? 0  =  0
-x ? y  =  0
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  x
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  y
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  0
-x ? 0  =  x
-x ? y  =  0
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  x
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  y
-
-0 ? 0  =  dec (dec (dec 0))
-0 ? x  =  0
-x ? 0  =  0
-x ? y  =  0
-
-
-Candidates for: goo :: [Int] -> [Int]
-  pruning with 4/4 rules
-  [2,0,1,0,1,0,1,0,1] direct candidates, 0 duplicates
-  [2,1,2,3,4,7,10,17,26] pattern candidates, 0 duplicates
-
-rules:
-xs ++ [] == xs
-[] ++ xs == xs
-(xs ++ ys) ++ zs == xs ++ (ys ++ zs)
-(x:xs) ++ ys == x:(xs ++ ys)
-
-direct candidates:
-
-goo xs  =  xs
-
-goo xs  =  []
-
-goo xs  =  xs ++ xs
-
-goo xs  =  xs ++ (xs ++ xs)
-
-
-pattern candidates:
-
-goo xs  =  xs
-
-goo xs  =  []
-
-goo []  =  []
-goo (x:xs)  =  xs
-
-goo []  =  []
-goo (x:xs)  =  goo xs
-
-goo xs  =  xs ++ xs
-
-goo []  =  []
-goo (x:xs)  =  x:xs
-
-goo []  =  []
-goo (x:xs)  =  [x]
-
-goo []  =  []
-goo (x:xs)  =  xs ++ xs
-
-goo []  =  []
-goo (x:xs)  =  x:goo xs
-
-goo []  =  []
-goo (x:xs)  =  xs ++ goo xs
-
-goo []  =  []
-goo (x:xs)  =  goo xs ++ xs
-
-goo xs  =  xs ++ (xs ++ xs)
-
-goo []  =  []
-goo (x:xs)  =  goo xs ++ goo xs
-
-goo []  =  []
-goo (x:xs)  =  x:x:xs
-
-goo []  =  []
-goo (x:xs)  =  [x,x]
-
-goo []  =  []
-goo (x:xs)  =  x:(xs ++ xs)
-
-goo []  =  []
-goo (x:xs)  =  xs ++ (x:xs)
-
-goo []  =  []
-goo (x:xs)  =  xs ++ [x]
-
-goo []  =  []
-goo (x:xs)  =  xs ++ (xs ++ xs)
-
-
-Candidates for: ?? :: [Int] -> [Int] -> [Int]
-  pruning with 4/4 rules
-  [3,0,4,0,8,0,16,0,32] direct candidates, 0 duplicates
-  [3,8,15,66,152,362,1400,2084,11820] pattern candidates, 0 duplicates
-
-rules:
-xs ++ [] == xs
-[] ++ xs == xs
-(xs ++ ys) ++ zs == xs ++ (ys ++ zs)
-(x:xs) ++ ys == x:(xs ++ ys)
-
-direct candidates:
-
-xs ?? ys  =  xs
-
-xs ?? ys  =  ys
-
-xs ?? ys  =  []
-
-xs ?? ys  =  xs ++ xs
-
-xs ?? ys  =  xs ++ ys
-
-xs ?? ys  =  ys ++ xs
-
-xs ?? ys  =  ys ++ ys
-
-xs ?? ys  =  xs ++ (xs ++ xs)
-
-xs ?? ys  =  xs ++ (xs ++ ys)
-
-xs ?? ys  =  xs ++ (ys ++ xs)
-
-xs ?? ys  =  xs ++ (ys ++ ys)
-
-xs ?? ys  =  ys ++ (xs ++ xs)
-
-xs ?? ys  =  ys ++ (xs ++ ys)
-
-xs ?? ys  =  ys ++ (ys ++ xs)
-
-xs ?? ys  =  ys ++ (ys ++ ys)
-
-
-pattern candidates:
-
-xs ?? ys  =  xs
-
-xs ?? ys  =  ys
-
-xs ?? ys  =  []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  []
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys
-
-xs ?? ys  =  xs ++ xs
-
-xs ?? ys  =  xs ++ ys
-
-xs ?? ys  =  ys ++ xs
-
-xs ?? ys  =  ys ++ ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [] ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [] ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [] ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [] ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? []
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? []
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [x]
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [x]
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ ys
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  xs
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  ys
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [x]
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [x]
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ ys
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  xs
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  ys
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs ?? []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys ?? []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  [] ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  [] ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs ?? xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs ?? []
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  [] ?? xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs ?? xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs ?? []
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  [] ?? xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs ?? xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs ?? []
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  [] ?? xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs ?? []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys ?? []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  [] ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  [] ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [] ?? xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [] ?? xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [] ?? xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [] ?? xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [] ?? xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ?? []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [] ?? xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs ?? []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys ?? []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  [] ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  [] ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs ?? xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs ?? []
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  [] ?? xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs ?? xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs ?? []
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  [] ?? xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs ?? xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs ?? []
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  [] ?? xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs ?? []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys ?? ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys ?? []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  [] ?? xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  [] ?? ys
-
-xs ?? ys  =  xs ++ (xs ++ xs)
-
-xs ?? ys  =  xs ++ (xs ++ ys)
-
-xs ?? ys  =  xs ++ (ys ++ xs)
-
-xs ?? ys  =  xs ++ (ys ++ ys)
-
-xs ?? ys  =  ys ++ (xs ++ xs)
-
-xs ?? ys  =  ys ++ (xs ++ ys)
-
-xs ?? ys  =  ys ++ (ys ++ xs)
-
-xs ?? ys  =  ys ++ (ys ++ ys)
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  x:xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  x:ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  [x]
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  y:xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  y:ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  [y]
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs ++ xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs ++ ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys ++ xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys ++ ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  x:xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  x:ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  [x]
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  y:xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  y:ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  [y]
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs ++ xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs ++ ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys ++ xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys ++ ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  x:xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  x:xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  x:xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  [x]
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  [x]
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  [x]
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs ++ xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs ++ xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs
-(x:xs) ?? []  =  xs ++ xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  x:xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  x:ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  [x]
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  y:xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  y:ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  [y]
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs ++ xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs ++ ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys ++ xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys ++ ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  x:xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  x:ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  [x]
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  y:xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  y:ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  [y]
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs ++ xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs ++ ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys ++ xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys ++ ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  x:xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  x:xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  x:xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  [x]
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  [x]
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  [x]
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs ++ xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs ++ xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  []
-(x:xs) ?? []  =  xs ++ xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  x:xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  x:xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  x:xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  x:xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  x:xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  x:xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [x]
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [x]
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [x]
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [x]
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [x]
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  [x]
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ++ xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ++ xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ++ xs
-(x:xs) ?? []  =  xs
-(x:xs) ?? (y:ys)  =  []
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ++ xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  xs
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ++ xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  ys
-
-[] ?? []  =  []
-[] ?? (x:xs)  =  xs ++ xs
-(x:xs) ?? []  =  []
-(x:xs) ?? (y:ys)  =  []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (x:xs) ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (x:xs) ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (x:xs) ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (x:ys) ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (x:ys) ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (x:ys) ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [x] ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [x] ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [x] ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (xs ++ xs) ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (xs ++ xs) ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (xs ++ xs) ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (xs ++ ys) ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (xs ++ ys) ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (xs ++ ys) ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (ys ++ xs) ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (ys ++ xs) ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (ys ++ xs) ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (ys ++ ys) ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (ys ++ ys) ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  (ys ++ ys) ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (x:xs) ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (x:xs) ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (x:xs) ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (x:ys) ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (x:ys) ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (x:ys) ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [x] ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [x] ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [x] ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (xs ++ xs) ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (xs ++ xs) ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (xs ++ xs) ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (xs ++ ys) ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (xs ++ ys) ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (xs ++ ys) ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (ys ++ xs) ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (ys ++ xs) ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (ys ++ xs) ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (ys ++ ys) ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (ys ++ ys) ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  (ys ++ ys) ?? []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? (x:xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? (x:ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? [x]
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? (xs ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? (xs ++ ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? (ys ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? (ys ++ ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? (x:xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? (x:ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? [x]
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? (xs ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? (xs ++ ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? (ys ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? (ys ++ ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? (x:xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? (x:ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? [x]
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? (xs ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? (xs ++ ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? (ys ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? (ys ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? (x:xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? (x:ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? [x]
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? (xs ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? (xs ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? (ys ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? (ys ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? (x:xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? (x:ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? [x]
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? (xs ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? (xs ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? (ys ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? (ys ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? (x:xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? (x:ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? [x]
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? (xs ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? (xs ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? (ys ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? (ys ++ ys)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:xs ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:xs ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:xs ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:ys ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:ys ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:ys ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [x,] ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [x,] ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ xs ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ xs ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ xs ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ ys ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ ys ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ ys ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ [] ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ [] ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ xs ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ xs ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ xs ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ ys ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ ys ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ ys ?? []
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ [] ?? xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ [] ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ?? xs ++ xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ?? ys ++ xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ?? [] ++ xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ?? xs ++ xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ?? ys ++ xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ?? [] ++ xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [] ?? xs ++ xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [] ?? ys ++ xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ?? xs ++ ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ?? ys ++ ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ?? [] ++ ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ?? xs ++ ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ?? ys ++ ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ?? [] ++ ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [] ?? xs ++ ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [] ?? ys ++ ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:xs ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:xs ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:xs ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:ys ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:ys ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:ys ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [x,] ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [x,] ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ xs ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ xs ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ xs ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ ys ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ ys ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ ys ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ [] ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ [] ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ xs ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ xs ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ xs ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ ys ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ ys ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ ys ?? []
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ [] ?? xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ [] ?? ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ?? xs ++ xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ?? ys ++ xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ?? [] ++ xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ?? xs ++ xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ?? ys ++ xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ?? [] ++ xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [] ?? xs ++ xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [] ?? ys ++ xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ?? xs ++ ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ?? ys ++ ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ?? [] ++ ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ?? xs ++ ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ?? ys ++ ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ?? [] ++ ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [] ?? xs ++ ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [] ?? ys ++ ys
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  xs ?? xs
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  xs ?? ys
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  xs ?? []
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  ys ?? xs
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  ys ?? ys
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  ys ?? []
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  [] ?? xs
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  [] ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:xs ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:xs ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:xs ?? []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:ys ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:ys ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:ys ?? []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [x,] ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [x,] ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ xs ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ xs ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ xs ?? []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ ys ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ ys ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ ys ?? []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ [] ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ [] ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ xs ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ xs ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ xs ?? []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ ys ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ ys ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ ys ?? []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ [] ?? xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ [] ?? ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? xs ++ xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? ys ++ xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? [] ++ xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? xs ++ xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? ys ++ xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? [] ++ xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? xs ++ xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? ys ++ xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? xs ++ ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? ys ++ ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ?? [] ++ ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? xs ++ ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? ys ++ ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ?? [] ++ ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? xs ++ ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [] ?? ys ++ ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:xs ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:xs ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:xs ?? []
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:ys ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:ys ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:ys ?? []
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [x,] ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [x,] ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ xs ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ xs ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ xs ?? []
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ ys ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ ys ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ ys ?? []
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ [] ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ [] ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ xs ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ xs ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ xs ?? []
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ ys ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ ys ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ ys ?? []
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ [] ?? xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ [] ?? ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? xs ++ xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? ys ++ xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? [] ++ xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? xs ++ xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? ys ++ xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? [] ++ xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? xs ++ xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? ys ++ xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? xs ++ ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? ys ++ ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ?? [] ++ ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? xs ++ ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? ys ++ ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ?? [] ++ ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? xs ++ ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [] ?? ys ++ ys
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  xs ?? xs
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  xs ?? ys
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  xs ?? []
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  ys ?? xs
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  ys ?? ys
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  ys ?? []
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  [] ?? xs
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  [] ?? ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:x:xs
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:x:ys
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  [x,x]
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:(xs ++ xs)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:(xs ++ ys)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:(ys ++ xs)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  x:(ys ++ ys)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ (x:xs)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ (x:ys)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ [x]
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ (xs ++ xs)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ (xs ++ ys)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ (ys ++ xs)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  xs ++ (ys ++ ys)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ (x:xs)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ (x:ys)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ [x]
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ (xs ++ xs)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ (xs ++ ys)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ (ys ++ xs)
-
-xs ?? []  =  xs
-xs ?? (x:ys)  =  ys ++ (ys ++ ys)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:x:xs
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:x:ys
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  [x,x]
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:(xs ++ xs)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:(xs ++ ys)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:(ys ++ xs)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  x:(ys ++ ys)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ (x:xs)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ (x:ys)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ [x]
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ (xs ++ xs)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ (xs ++ ys)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ (ys ++ xs)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  xs ++ (ys ++ ys)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ (x:xs)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ (x:ys)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ [x]
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ (xs ++ xs)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ (xs ++ ys)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ (ys ++ xs)
-
-xs ?? []  =  []
-xs ?? (x:ys)  =  ys ++ (ys ++ ys)
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  x:xs
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  x:ys
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  [x]
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  xs ++ ys
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  ys ++ xs
-
-xs ?? []  =  xs ++ xs
-xs ?? (x:ys)  =  ys ++ ys
-
-xs ?? []  =  xs ++ (xs ++ xs)
-xs ?? (x:ys)  =  xs
-
-xs ?? []  =  xs ++ (xs ++ xs)
-xs ?? (x:ys)  =  ys
-
-xs ?? []  =  xs ++ (xs ++ xs)
-xs ?? (x:ys)  =  []
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:x:xs
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:x:ys
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  [x,x]
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:(xs ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:(xs ++ ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:(ys ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  x:(ys ++ ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ (x:xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ (x:ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ [x]
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ (xs ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ (xs ++ ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ (ys ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  xs ++ (ys ++ ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ (x:xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ (x:ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ [x]
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ (xs ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ (xs ++ ys)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ (ys ++ xs)
-
-[] ?? xs  =  xs
-(x:xs) ?? ys  =  ys ++ (ys ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:x:xs
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:x:ys
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  [x,x]
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:(xs ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:(xs ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:(ys ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  x:(ys ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ (x:xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ (x:ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ [x]
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ (xs ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ (xs ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ (ys ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  xs ++ (ys ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ (x:xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ (x:ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ [x]
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ (xs ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ (xs ++ ys)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ (ys ++ xs)
-
-[] ?? xs  =  []
-(x:xs) ?? ys  =  ys ++ (ys ++ ys)
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  x:xs
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  x:ys
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  [x]
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  xs ++ ys
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  ys ++ xs
-
-[] ?? xs  =  xs ++ xs
-(x:xs) ?? ys  =  ys ++ ys
-
-[] ?? xs  =  xs ++ (xs ++ xs)
-(x:xs) ?? ys  =  xs
-
-[] ?? xs  =  xs ++ (xs ++ xs)
-(x:xs) ?? ys  =  ys
-
-[] ?? xs  =  xs ++ (xs ++ xs)
-(x:xs) ?? ys  =  []
-
-
-Candidates for: ton :: Bool -> Bool
-  pruning with 39/49 rules
-  [3,1,0,2,6,14,38,68,140] direct candidates, 0 duplicates
-  [3,3,0,0,0,0,0,0,0] pattern candidates, 0 duplicates
-
-rules:
-not False == True
-not True == False
-p && p == p
-p || p == p
-not (not p) == p
-p && False == False
-p && True == p
-False && p == False
-True && p == p
-p || False == p
-p || True == True
-False || p == p
-True || p == True
-not (p && q) == not p || not q
-not (p && q) == not q || not p
-not (p || q) == not p && not q
-not (p || q) == not q && not p
-p && not p == False
-not p && p == False
-p || not p == True
-not p || p == True
-(p && q) && r == p && (q && r)
-(p && q) && r == q && (p && r)
-(p || q) || r == p || (q || r)
-(p || q) || r == q || (p || r)
-p && (p && q) == p && q
-p && (q && p) == p && q
-p && (q && p) == q && p
-p || (p || q) == p || q
-p || (q || p) == p || q
-p || (q || p) == q || p
-p && (p || q) == p
-p && (q || p) == p
-(p || q) && p == p
-(p || q) && q == q
-p || p && q == p
-p || q && p == p
-p && q || p == p
-p && q || q == q
-equations:
-q && p == p && q
-q || p == p || q
-q && (p && r) == p && (q && r)
-r && (p && q) == p && (q && r)
-r && (q && p) == p && (q && r)
-q || (p || r) == p || (q || r)
-r || (p || q) == p || (q || r)
-r || (q || p) == p || (q || r)
-(r || q) && p == p && (q || r)
-r && q || p == p || q && r
-
-direct candidates:
-
-ton p  =  p
-
-ton p  =  False
-
-ton p  =  True
-
-ton p  =  not p
-
-ton p  =  p && ton p
-
-ton p  =  p || ton p
-
-ton p  =  p && ton (not p)
-
-ton p  =  p || ton (not p)
-
-ton p  =  p && not (ton p)
-
-ton p  =  not p && ton p
-
-ton p  =  p || not (ton p)
-
-ton p  =  not p || ton p
-
-ton p  =  p && not (ton (not p))
-
-ton p  =  not p && ton (not p)
-
-ton p  =  p || not (ton (not p))
-
-ton p  =  not p || ton (not p)
-
-ton p  =  p && (p && ton p)
-
-ton p  =  p && (ton p && p)
-
-ton p  =  p && (p || ton p)
-
-ton p  =  p && (ton p || p)
-
-ton p  =  not p && not (ton p)
-
-ton p  =  p || p && ton p
-
-ton p  =  p || ton p && p
-
-ton p  =  p || (p || ton p)
-
-ton p  =  p || (ton p || p)
-
-ton p  =  not p || not (ton p)
-
-
-pattern candidates:
-
-ton p  =  p
-
-ton p  =  False
-
-ton p  =  True
-
-ton p  =  not p
-
-ton False  =  False
-ton True  =  True
-
-ton False  =  True
-ton True  =  False
-
-
-Candidates for: &| :: Bool -> Bool -> Bool
-  pruning with 39/49 rules
-  [4,2,4,8,32,128,468,1576,4924] direct candidates, 0 duplicates
-  [4,14,30,8,4,48,60,280,592] pattern candidates, 0 duplicates
-
-rules:
-not False == True
-not True == False
-p && p == p
-p || p == p
-not (not p) == p
-p && False == False
-p && True == p
-False && p == False
-True && p == p
-p || False == p
-p || True == True
-False || p == p
-True || p == True
-not (p && q) == not p || not q
-not (p && q) == not q || not p
-not (p || q) == not p && not q
-not (p || q) == not q && not p
-p && not p == False
-not p && p == False
-p || not p == True
-not p || p == True
-(p && q) && r == p && (q && r)
-(p && q) && r == q && (p && r)
-(p || q) || r == p || (q || r)
-(p || q) || r == q || (p || r)
-p && (p && q) == p && q
-p && (q && p) == p && q
-p && (q && p) == q && p
-p || (p || q) == p || q
-p || (q || p) == p || q
-p || (q || p) == q || p
-p && (p || q) == p
-p && (q || p) == p
-(p || q) && p == p
-(p || q) && q == q
-p || p && q == p
-p || q && p == p
-p && q || p == p
-p && q || q == q
-equations:
-q && p == p && q
-q || p == p || q
-q && (p && r) == p && (q && r)
-r && (p && q) == p && (q && r)
-r && (q && p) == p && (q && r)
-q || (p || r) == p || (q || r)
-r || (p || q) == p || (q || r)
-r || (q || p) == p || (q || r)
-(r || q) && p == p && (q || r)
-r && q || p == p || q && r
-
-direct candidates:
-
-p &| q  =  p
-
-p &| q  =  q
-
-p &| q  =  False
-
-p &| q  =  True
-
-p &| q  =  not p
-
-p &| q  =  not q
-
-p &| q  =  p && q
-
-p &| q  =  q && p
-
-p &| q  =  p || q
-
-p &| q  =  q || p
-
-p &| q  =  not p && q
-
-p &| q  =  not q && p
-
-p &| q  =  not p || q
-
-p &| q  =  not q || p
-
-p &| q  =  p && not q
-
-p &| q  =  q && not p
-
-p &| q  =  p || not q
-
-p &| q  =  q || not p
-
-p &| q  =  not p && not q
-
-p &| q  =  not q && not p
-
-p &| q  =  not p || not q
-
-p &| q  =  not q || not p
-
-p &| q  =  p && p &| p
-
-p &| q  =  p && p &| q
-
-p &| q  =  p && p &| False
-
-p &| q  =  p && p &| True
-
-p &| q  =  p && q &| q
-
-p &| q  =  p && False &| q
-
-p &| q  =  p && True &| q
-
-p &| q  =  q && p &| p
-
-p &| q  =  q && p &| q
-
-p &| q  =  q && p &| False
-
-p &| q  =  q && p &| True
-
-p &| q  =  q && q &| q
-
-p &| q  =  q && False &| q
-
-p &| q  =  q && True &| q
-
-p &| q  =  p || p &| p
-
-p &| q  =  p || p &| q
-
-p &| q  =  p || p &| False
-
-p &| q  =  p || p &| True
-
-p &| q  =  p || q &| q
-
-p &| q  =  p || False &| q
-
-p &| q  =  p || True &| q
-
-p &| q  =  q || p &| p
-
-p &| q  =  q || p &| q
-
-p &| q  =  q || p &| False
-
-p &| q  =  q || p &| True
-
-p &| q  =  q || q &| q
-
-p &| q  =  q || False &| q
-
-p &| q  =  q || True &| q
-
-p &| q  =  p && (not p && q)
-
-p &| q  =  p && (not p || q)
-
-p &| q  =  p && (q && not p)
-
-p &| q  =  p && (q || not p)
-
-p &| q  =  q && (not q && p)
-
-p &| q  =  q && (not q || p)
-
-p &| q  =  q && (p && not q)
-
-p &| q  =  q && (p || not q)
-
-p &| q  =  p || not p && q
-
-p &| q  =  p || (not p || q)
-
-p &| q  =  p || q && not p
-
-p &| q  =  p || (q || not p)
-
-p &| q  =  q || not q && p
-
-p &| q  =  q || (not q || p)
-
-p &| q  =  q || p && not q
-
-p &| q  =  q || (p || not q)
-
-p &| q  =  not p && (p || q)
-
-p &| q  =  not p && (q || p)
-
-p &| q  =  not q && (p || q)
-
-p &| q  =  not q && (q || p)
-
-p &| q  =  not p || p && q
-
-p &| q  =  not p || q && p
-
-p &| q  =  not q || p && q
-
-p &| q  =  not q || q && p
-
-p &| q  =  (p || q) && not p
-
-p &| q  =  (p || q) && not q
-
-p &| q  =  (q || p) && not p
-
-p &| q  =  (q || p) && not q
-
-p &| q  =  p && q || not p
-
-p &| q  =  p && q || not q
-
-p &| q  =  q && p || not p
-
-p &| q  =  q && p || not q
-
-p &| q  =  p && p &| not p
-
-p &| q  =  p && p &| not q
-
-p &| q  =  p && q &| not q
-
-p &| q  =  p && False &| not q
-
-p &| q  =  p && True &| not q
-
-p &| q  =  p && not p &| p
-
-p &| q  =  p && not p &| q
-
-p &| q  =  p && not p &| False
-
-p &| q  =  p && not p &| True
-
-p &| q  =  p && not q &| q
-
-p &| q  =  q && p &| not p
-
-p &| q  =  q && p &| not q
-
-p &| q  =  q && q &| not q
-
-p &| q  =  q && False &| not q
-
-p &| q  =  q && True &| not q
-
-p &| q  =  q && not p &| p
-
-p &| q  =  q && not p &| q
-
-p &| q  =  q && not p &| False
-
-p &| q  =  q && not p &| True
-
-p &| q  =  q && not q &| q
-
-p &| q  =  p || p &| not p
-
-p &| q  =  p || p &| not q
-
-p &| q  =  p || q &| not q
-
-p &| q  =  p || False &| not q
-
-p &| q  =  p || True &| not q
-
-p &| q  =  p || not p &| p
-
-p &| q  =  p || not p &| q
-
-p &| q  =  p || not p &| False
-
-p &| q  =  p || not p &| True
-
-p &| q  =  p || not q &| q
-
-p &| q  =  q || p &| not p
-
-p &| q  =  q || p &| not q
-
-p &| q  =  q || q &| not q
-
-p &| q  =  q || False &| not q
-
-p &| q  =  q || True &| not q
-
-p &| q  =  q || not p &| p
-
-p &| q  =  q || not p &| q
-
-p &| q  =  q || not p &| False
-
-p &| q  =  q || not p &| True
-
-p &| q  =  q || not q &| q
-
-p &| q  =  p && not (p &| p)
-
-p &| q  =  p && not (p &| q)
-
-p &| q  =  p && not (p &| False)
-
-p &| q  =  p && not (p &| True)
-
-p &| q  =  p && not (q &| q)
-
-p &| q  =  p && not (False &| q)
-
-p &| q  =  p && not (True &| q)
-
-p &| q  =  q && not (p &| p)
-
-p &| q  =  q && not (p &| q)
-
-p &| q  =  q && not (p &| False)
-
-p &| q  =  q && not (p &| True)
-
-p &| q  =  q && not (q &| q)
-
-p &| q  =  q && not (False &| q)
-
-p &| q  =  q && not (True &| q)
-
-p &| q  =  not p && p &| p
-
-p &| q  =  not p && p &| q
-
-p &| q  =  not p && p &| False
-
-p &| q  =  not p && p &| True
-
-p &| q  =  not p && q &| q
-
-p &| q  =  not p && False &| q
-
-p &| q  =  not p && True &| q
-
-p &| q  =  not q && p &| p
-
-p &| q  =  not q && p &| q
-
-p &| q  =  not q && p &| False
-
-p &| q  =  not q && p &| True
-
-p &| q  =  not q && q &| q
-
-p &| q  =  not q && False &| q
-
-p &| q  =  not q && True &| q
-
-p &| q  =  p || not (p &| p)
-
-p &| q  =  p || not (p &| q)
-
-p &| q  =  p || not (p &| False)
-
-p &| q  =  p || not (p &| True)
-
-p &| q  =  p || not (q &| q)
-
-p &| q  =  p || not (False &| q)
-
-p &| q  =  p || not (True &| q)
-
-p &| q  =  q || not (p &| p)
-
-p &| q  =  q || not (p &| q)
-
-p &| q  =  q || not (p &| False)
-
-p &| q  =  q || not (p &| True)
-
-p &| q  =  q || not (q &| q)
-
-p &| q  =  q || not (False &| q)
-
-p &| q  =  q || not (True &| q)
-
-p &| q  =  not p || p &| p
-
-p &| q  =  not p || p &| q
-
-p &| q  =  not p || p &| False
-
-p &| q  =  not p || p &| True
-
-p &| q  =  not p || q &| q
-
-p &| q  =  not p || False &| q
-
-p &| q  =  not p || True &| q
-
-p &| q  =  not q || p &| p
-
-p &| q  =  not q || p &| q
-
-p &| q  =  not q || p &| False
-
-p &| q  =  not q || p &| True
-
-p &| q  =  not q || q &| q
-
-p &| q  =  not q || False &| q
-
-p &| q  =  not q || True &| q
-
-
-pattern candidates:
-
-p &| q  =  p
-
-p &| q  =  q
-
-p &| q  =  False
-
-p &| q  =  True
-
-p &| q  =  not p
-
-p &| q  =  not q
-
-p &| False  =  p
-p &| True  =  False
-
-p &| False  =  p
-p &| True  =  True
-
-p &| False  =  False
-p &| True  =  p
-
-p &| False  =  False
-p &| True  =  True
-
-p &| False  =  True
-p &| True  =  p
-
-p &| False  =  True
-p &| True  =  False
-
-False &| p  =  p
-True &| p  =  False
-
-False &| p  =  p
-True &| p  =  True
-
-False &| p  =  False
-True &| p  =  p
-
-False &| p  =  False
-True &| p  =  True
-
-False &| p  =  True
-True &| p  =  p
-
-False &| p  =  True
-True &| p  =  False
-
-p &| q  =  p && q
-
-p &| q  =  q && p
-
-p &| q  =  p || q
-
-p &| q  =  q || p
-
-p &| False  =  p
-p &| True  =  not p
-
-p &| False  =  False
-p &| True  =  not p
-
-p &| False  =  True
-p &| True  =  not p
-
-p &| False  =  not p
-p &| True  =  p
-
-p &| False  =  not p
-p &| True  =  False
-
-p &| False  =  not p
-p &| True  =  True
-
-False &| p  =  p
-True &| p  =  not p
-
-False &| p  =  False
-True &| p  =  not p
-
-False &| p  =  True
-True &| p  =  not p
-
-False &| p  =  not p
-True &| p  =  p
-
-False &| p  =  not p
-True &| p  =  False
-
-False &| p  =  not p
-True &| p  =  True
-
-False &| False  =  False
-False &| True  =  False
-True &| False  =  False
-True &| True  =  True
-
-False &| False  =  False
-False &| True  =  False
-True &| False  =  True
-True &| True  =  False
-
-False &| False  =  False
-False &| True  =  False
-True &| False  =  True
-True &| True  =  True
-
-False &| False  =  False
-False &| True  =  True
-True &| False  =  False
-True &| True  =  False
-
-False &| False  =  False
-False &| True  =  True
-True &| False  =  False
-True &| True  =  True
-
-False &| False  =  False
-False &| True  =  True
-True &| False  =  True
-True &| True  =  False
-
-False &| False  =  False
-False &| True  =  True
-True &| False  =  True
-True &| True  =  True
-
-False &| False  =  True
-False &| True  =  False
-True &| False  =  False
-True &| True  =  False
-
-False &| False  =  True
-False &| True  =  False
-True &| False  =  False
-True &| True  =  True
-
-False &| False  =  True
-False &| True  =  False
-True &| False  =  True
-True &| True  =  False
-
-False &| False  =  True
-False &| True  =  False
-True &| False  =  True
-True &| True  =  True
-
-False &| False  =  True
-False &| True  =  True
-True &| False  =  False
-True &| True  =  False
-
-False &| False  =  True
-False &| True  =  True
-True &| False  =  False
-True &| True  =  True
-
-False &| False  =  True
-False &| True  =  True
-True &| False  =  True
-True &| True  =  False
-
-p &| q  =  not p && q
-
-p &| q  =  not q && p
-
-p &| q  =  not p || q
-
-p &| q  =  not q || p
-
-p &| q  =  p && not q
-
-p &| q  =  q && not p
-
-p &| q  =  p || not q
-
-p &| q  =  q || not p
-
-p &| q  =  not p && not q
-
-p &| q  =  not q && not p
-
-p &| q  =  not p || not q
-
-p &| q  =  not q || not p
-
-p &| q  =  (not p || q) && p
-
-p &| q  =  (not q || p) && q
-
-p &| q  =  (p || not q) && q
-
-p &| q  =  (q || not p) && p
-
-p &| q  =  not p && q || p
-
-p &| q  =  not q && p || q
-
-p &| q  =  p && not q || q
-
-p &| q  =  q && not p || p
-
-p &| q  =  p && (not p && q)
-
-p &| q  =  p && (not p || q)
-
-p &| q  =  p && (q && not p)
-
-p &| q  =  p && (q || not p)
-
-p &| q  =  q && (not q && p)
-
-p &| q  =  q && (not q || p)
-
-p &| q  =  q && (p && not q)
-
-p &| q  =  q && (p || not q)
-
-p &| q  =  p || not p && q
-
-p &| q  =  p || (not p || q)
-
-p &| q  =  p || q && not p
-
-p &| q  =  p || (q || not p)
-
-p &| q  =  q || not q && p
-
-p &| q  =  q || (not q || p)
-
-p &| q  =  q || p && not q
-
-p &| q  =  q || (p || not q)
-
-p &| q  =  not p && (p && q)
-
-p &| q  =  not p && (q && p)
-
-p &| q  =  not p && (p || q)
-
-p &| q  =  not p && (q || p)
-
-p &| q  =  not q && (p && q)
-
-p &| q  =  not q && (q && p)
-
-p &| q  =  not q && (p || q)
-
-p &| q  =  not q && (q || p)
-
-p &| q  =  not p || p && q
-
-p &| q  =  not p || q && p
-
-p &| q  =  not p || (p || q)
-
-p &| q  =  not p || (q || p)
-
-p &| q  =  not q || p && q
-
-p &| q  =  not q || q && p
-
-p &| q  =  not q || (p || q)
-
-p &| q  =  not q || (q || p)
-
-p &| q  =  (p || q) && not p
-
-p &| q  =  (p || q) && not q
-
-p &| q  =  (q || p) && not p
-
-p &| q  =  (q || p) && not q
-
-p &| q  =  p && q || not p
-
-p &| q  =  p && q || not q
-
-p &| q  =  q && p || not p
-
-p &| q  =  q && p || not q
+  [3,10,40,116,338,953,2702,7505,20728] pattern candidates, 0 duplicates
+
+rules:
+x * y == x + y
+x * y == y + x
+x + 0 == x
+0 + x == x
+dec (x + y) == x + dec y
+dec (x + y) == y + dec x
+dec (x + y) == dec x + y
+dec (x + y) == dec y + x
+(x + y) + z == x + (y + z)
+(x + y) + z == y + (x + z)
+equations:
+y + x == x + y
+y + dec x == x + dec y
+dec x + y == x + dec y
+dec y + x == dec x + y
+x + dec 0 == dec x
+dec 0 + x == dec x
+y + (x + z) == x + (y + z)
+z + (x + y) == x + (y + z)
+z + (y + x) == x + (y + z)
+y + dec (dec x) == x + dec (dec y)
+dec (dec x) + y == x + dec (dec y)
+x + dec (dec 0) == dec (dec x)
+dec (dec 0) + x == dec (dec x)
+
+direct candidates:
+
+x ? y  =  x
+
+x ? y  =  y
+
+x ? y  =  0
+
+x ? y  =  dec x
+
+x ? y  =  dec y
+
+x ? y  =  dec 0
+
+x ? y  =  x + x
+
+x ? y  =  x + y
+
+x ? y  =  y + x
+
+x ? y  =  y + y
+
+x ? y  =  dec x + y
+
+x ? y  =  dec y + x
+
+x ? y  =  dec 0 + x
+
+x ? y  =  dec 0 + y
+
+x ? y  =  x + dec x
+
+x ? y  =  x + dec y
+
+x ? y  =  x + dec 0
+
+x ? y  =  y + dec x
+
+x ? y  =  y + dec y
+
+x ? y  =  y + dec 0
+
+x ? y  =  x + (x + x)
+
+x ? y  =  x + (x + y)
+
+x ? y  =  x + (y + x)
+
+x ? y  =  x + (y + y)
+
+x ? y  =  y + (x + x)
+
+x ? y  =  y + (x + y)
+
+x ? y  =  y + (y + x)
+
+x ? y  =  y + (y + y)
+
+x ? y  =  dec x + dec x
+
+x ? y  =  dec x + dec y
+
+x ? y  =  dec x + dec 0
+
+x ? y  =  dec y + dec x
+
+x ? y  =  dec y + dec y
+
+x ? y  =  dec y + dec 0
+
+x ? y  =  dec 0 + dec x
+
+x ? y  =  dec 0 + dec y
+
+x ? y  =  dec 0 + dec 0
+
+x ? y  =  x + (dec x + y)
+
+x ? y  =  x + (dec y + x)
+
+x ? y  =  x + (dec 0 + x)
+
+x ? y  =  x + (dec 0 + y)
+
+x ? y  =  x + (x + dec x)
+
+x ? y  =  x + (x + dec y)
+
+x ? y  =  x + (x + dec 0)
+
+x ? y  =  x + (y + dec x)
+
+x ? y  =  x + (y + dec y)
+
+x ? y  =  x + (y + dec 0)
+
+x ? y  =  y + (dec x + y)
+
+x ? y  =  y + (dec y + x)
+
+x ? y  =  y + (dec 0 + x)
+
+x ? y  =  y + (dec 0 + y)
+
+x ? y  =  y + (x + dec x)
+
+x ? y  =  y + (x + dec y)
+
+x ? y  =  y + (x + dec 0)
+
+x ? y  =  y + (y + dec x)
+
+x ? y  =  y + (y + dec y)
+
+x ? y  =  y + (y + dec 0)
+
+x ? y  =  dec x + (y + y)
+
+x ? y  =  dec y + (x + x)
+
+x ? y  =  dec 0 + (x + x)
+
+x ? y  =  dec 0 + (x + y)
+
+x ? y  =  dec 0 + (y + x)
+
+x ? y  =  dec 0 + (y + y)
+
+
+pattern candidates:
+
+x ? y  =  x
+
+x ? y  =  y
+
+x ? y  =  0
+
+x ? y  =  dec x
+
+x ? y  =  dec y
+
+x ? y  =  dec 0
+
+x ? 0  =  x
+x ? y  =  y
+
+x ? 0  =  x
+x ? y  =  0
+
+x ? 0  =  0
+x ? y  =  x
+
+x ? 0  =  0
+x ? y  =  y
+
+0 ? x  =  x
+x ? y  =  0
+
+0 ? x  =  0
+x ? y  =  x
+
+0 ? x  =  0
+x ? y  =  y
+
+x ? y  =  x + x
+
+x ? y  =  x + y
+
+x ? y  =  y + x
+
+x ? y  =  y + y
+
+x ? y  =  dec (dec x)
+
+x ? y  =  dec (dec y)
+
+x ? y  =  dec (dec 0)
+
+x ? 0  =  x
+x ? y  =  dec x
+
+x ? 0  =  x
+x ? y  =  dec y
+
+x ? 0  =  x
+x ? y  =  dec 0
+
+x ? 0  =  0
+x ? y  =  dec x
+
+x ? 0  =  0
+x ? y  =  dec y
+
+x ? 0  =  0
+x ? y  =  dec 0
+
+x ? 0  =  dec x
+x ? y  =  x
+
+x ? 0  =  dec x
+x ? y  =  y
+
+x ? 0  =  dec x
+x ? y  =  0
+
+x ? 0  =  dec 0
+x ? y  =  x
+
+x ? 0  =  dec 0
+x ? y  =  y
+
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? x  =  x
+x ? y  =  dec x
+
+0 ? x  =  x
+x ? y  =  dec y
+
+0 ? x  =  x
+x ? y  =  dec 0
+
+0 ? x  =  0
+x ? y  =  dec x
+
+0 ? x  =  0
+x ? y  =  dec y
+
+0 ? x  =  0
+x ? y  =  dec 0
+
+0 ? x  =  dec x
+x ? y  =  x
+
+0 ? x  =  dec x
+x ? y  =  y
+
+0 ? x  =  dec x
+x ? y  =  0
+
+0 ? x  =  dec 0
+x ? y  =  x
+
+0 ? x  =  dec 0
+x ? y  =  y
+
+0 ? x  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y
+
+x ? y  =  dec x + x
+
+x ? y  =  dec x + y
+
+x ? y  =  dec y + x
+
+x ? y  =  dec y + y
+
+x ? y  =  dec 0 + x
+
+x ? y  =  dec 0 + y
+
+x ? y  =  dec (dec (dec x))
+
+x ? y  =  dec (dec (dec y))
+
+x ? y  =  dec (dec (dec 0))
+
+x ? y  =  x + dec x
+
+x ? y  =  x + dec y
+
+x ? y  =  x + dec 0
+
+x ? y  =  y + dec x
+
+x ? y  =  y + dec y
+
+x ? y  =  y + dec 0
+
+x ? 0  =  x
+x ? y  =  x + x
+
+x ? 0  =  x
+x ? y  =  x + y
+
+x ? 0  =  x
+x ? y  =  y + x
+
+x ? 0  =  x
+x ? y  =  y + y
+
+x ? 0  =  x
+x ? y  =  dec (dec x)
+
+x ? 0  =  x
+x ? y  =  dec (dec y)
+
+x ? 0  =  x
+x ? y  =  dec (dec 0)
+
+x ? 0  =  0
+x ? y  =  x + x
+
+x ? 0  =  0
+x ? y  =  x + y
+
+x ? 0  =  0
+x ? y  =  y + x
+
+x ? 0  =  0
+x ? y  =  y + y
+
+x ? 0  =  0
+x ? y  =  dec (dec x)
+
+x ? 0  =  0
+x ? y  =  dec (dec y)
+
+x ? 0  =  0
+x ? y  =  dec (dec 0)
+
+x ? 0  =  dec x
+x ? y  =  dec y
+
+x ? 0  =  dec x
+x ? y  =  dec 0
+
+x ? 0  =  dec 0
+x ? y  =  dec x
+
+x ? 0  =  dec 0
+x ? y  =  dec y
+
+x ? 0  =  x + x
+x ? y  =  x
+
+x ? 0  =  x + x
+x ? y  =  y
+
+x ? 0  =  x + x
+x ? y  =  0
+
+x ? 0  =  dec (dec x)
+x ? y  =  x
+
+x ? 0  =  dec (dec x)
+x ? y  =  y
+
+x ? 0  =  dec (dec x)
+x ? y  =  0
+
+x ? 0  =  dec (dec 0)
+x ? y  =  x
+
+x ? 0  =  dec (dec 0)
+x ? y  =  y
+
+x ? 0  =  dec (dec 0)
+x ? y  =  0
+
+0 ? x  =  x
+x ? y  =  x + x
+
+0 ? x  =  x
+x ? y  =  x + y
+
+0 ? x  =  x
+x ? y  =  y + x
+
+0 ? x  =  x
+x ? y  =  y + y
+
+0 ? x  =  x
+x ? y  =  dec (dec x)
+
+0 ? x  =  x
+x ? y  =  dec (dec y)
+
+0 ? x  =  x
+x ? y  =  dec (dec 0)
+
+0 ? x  =  0
+x ? y  =  x + x
+
+0 ? x  =  0
+x ? y  =  x + y
+
+0 ? x  =  0
+x ? y  =  y + x
+
+0 ? x  =  0
+x ? y  =  y + y
+
+0 ? x  =  0
+x ? y  =  dec (dec x)
+
+0 ? x  =  0
+x ? y  =  dec (dec y)
+
+0 ? x  =  0
+x ? y  =  dec (dec 0)
+
+0 ? x  =  dec x
+x ? y  =  dec 0
+
+0 ? x  =  dec 0
+x ? y  =  dec x
+
+0 ? x  =  dec 0
+x ? y  =  dec y
+
+0 ? x  =  x + x
+x ? y  =  x
+
+0 ? x  =  x + x
+x ? y  =  y
+
+0 ? x  =  x + x
+x ? y  =  0
+
+0 ? x  =  dec (dec x)
+x ? y  =  x
+
+0 ? x  =  dec (dec x)
+x ? y  =  y
+
+0 ? x  =  dec (dec x)
+x ? y  =  0
+
+0 ? x  =  dec (dec 0)
+x ? y  =  x
+
+0 ? x  =  dec (dec 0)
+x ? y  =  y
+
+0 ? x  =  dec (dec 0)
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  0
+
+x ? 0  =  x
+x ? y  =  x ? dec y
+
+x ? 0  =  x
+x ? y  =  y ? dec y
+
+x ? 0  =  x
+x ? y  =  0 ? dec y
+
+x ? 0  =  x
+x ? y  =  dec x ? x
+
+x ? 0  =  x
+x ? y  =  dec x ? y
+
+x ? 0  =  x
+x ? y  =  dec x ? 0
+
+x ? 0  =  0
+x ? y  =  x ? dec y
+
+x ? 0  =  0
+x ? y  =  y ? dec y
+
+x ? 0  =  0
+x ? y  =  0 ? dec y
+
+x ? 0  =  0
+x ? y  =  dec x ? x
+
+x ? 0  =  0
+x ? y  =  dec x ? y
+
+x ? 0  =  0
+x ? y  =  dec x ? 0
+
+0 ? x  =  x
+x ? y  =  x ? dec y
+
+0 ? x  =  x
+x ? y  =  y ? dec y
+
+0 ? x  =  x
+x ? y  =  0 ? dec y
+
+0 ? x  =  x
+x ? y  =  dec x ? x
+
+0 ? x  =  x
+x ? y  =  dec x ? y
+
+0 ? x  =  x
+x ? y  =  dec x ? 0
+
+0 ? x  =  0
+x ? y  =  x ? dec y
+
+0 ? x  =  0
+x ? y  =  y ? dec y
+
+0 ? x  =  0
+x ? y  =  0 ? dec y
+
+0 ? x  =  0
+x ? y  =  dec x ? x
+
+0 ? x  =  0
+x ? y  =  dec x ? y
+
+0 ? x  =  0
+x ? y  =  dec x ? 0
+
+x ? y  =  dec (dec x) + x
+
+x ? y  =  dec (dec x) + y
+
+x ? y  =  dec (dec y) + x
+
+x ? y  =  dec (dec y) + y
+
+x ? y  =  dec (dec 0) + x
+
+x ? y  =  dec (dec 0) + y
+
+x ? y  =  dec (dec (dec (dec x)))
+
+x ? y  =  dec (dec (dec (dec y)))
+
+x ? y  =  dec (dec (dec (dec 0)))
+
+x ? y  =  x + (x + x)
+
+x ? y  =  x + (x + y)
+
+x ? y  =  x + (y + x)
+
+x ? y  =  x + (y + y)
+
+x ? y  =  x + dec (dec x)
+
+x ? y  =  x + dec (dec y)
+
+x ? y  =  x + dec (dec 0)
+
+x ? y  =  y + (x + x)
+
+x ? y  =  y + (x + y)
+
+x ? y  =  y + (y + x)
+
+x ? y  =  y + (y + y)
+
+x ? y  =  y + dec (dec x)
+
+x ? y  =  y + dec (dec y)
+
+x ? y  =  y + dec (dec 0)
+
+x ? y  =  dec x + dec x
+
+x ? y  =  dec x + dec y
+
+x ? y  =  dec x + dec 0
+
+x ? y  =  dec y + dec x
+
+x ? y  =  dec y + dec y
+
+x ? y  =  dec y + dec 0
+
+x ? y  =  dec 0 + dec x
+
+x ? y  =  dec 0 + dec y
+
+x ? y  =  dec 0 + dec 0
+
+x ? 0  =  x
+x ? y  =  dec x + x
+
+x ? 0  =  x
+x ? y  =  dec x + y
+
+x ? 0  =  x
+x ? y  =  dec y + x
+
+x ? 0  =  x
+x ? y  =  dec y + y
+
+x ? 0  =  x
+x ? y  =  dec 0 + x
+
+x ? 0  =  x
+x ? y  =  dec 0 + y
+
+x ? 0  =  x
+x ? y  =  dec (dec (dec x))
+
+x ? 0  =  x
+x ? y  =  dec (dec (dec y))
+
+x ? 0  =  x
+x ? y  =  dec (dec (dec 0))
+
+x ? 0  =  x
+x ? y  =  x + dec x
+
+x ? 0  =  x
+x ? y  =  x + dec y
+
+x ? 0  =  x
+x ? y  =  x + dec 0
+
+x ? 0  =  x
+x ? y  =  y + dec x
+
+x ? 0  =  x
+x ? y  =  y + dec y
+
+x ? 0  =  x
+x ? y  =  y + dec 0
+
+x ? 0  =  0
+x ? y  =  dec x + x
+
+x ? 0  =  0
+x ? y  =  dec x + y
+
+x ? 0  =  0
+x ? y  =  dec y + x
+
+x ? 0  =  0
+x ? y  =  dec y + y
+
+x ? 0  =  0
+x ? y  =  dec 0 + x
+
+x ? 0  =  0
+x ? y  =  dec 0 + y
+
+x ? 0  =  0
+x ? y  =  dec (dec (dec x))
+
+x ? 0  =  0
+x ? y  =  dec (dec (dec y))
+
+x ? 0  =  0
+x ? y  =  dec (dec (dec 0))
+
+x ? 0  =  0
+x ? y  =  x + dec x
+
+x ? 0  =  0
+x ? y  =  x + dec y
+
+x ? 0  =  0
+x ? y  =  x + dec 0
+
+x ? 0  =  0
+x ? y  =  y + dec x
+
+x ? 0  =  0
+x ? y  =  y + dec y
+
+x ? 0  =  0
+x ? y  =  y + dec 0
+
+x ? 0  =  dec x
+x ? y  =  x + x
+
+x ? 0  =  dec x
+x ? y  =  x + y
+
+x ? 0  =  dec x
+x ? y  =  y + x
+
+x ? 0  =  dec x
+x ? y  =  y + y
+
+x ? 0  =  dec x
+x ? y  =  dec (dec x)
+
+x ? 0  =  dec x
+x ? y  =  dec (dec y)
+
+x ? 0  =  dec x
+x ? y  =  dec (dec 0)
+
+x ? 0  =  dec 0
+x ? y  =  x + x
+
+x ? 0  =  dec 0
+x ? y  =  x + y
+
+x ? 0  =  dec 0
+x ? y  =  y + x
+
+x ? 0  =  dec 0
+x ? y  =  y + y
+
+x ? 0  =  dec 0
+x ? y  =  dec (dec x)
+
+x ? 0  =  dec 0
+x ? y  =  dec (dec y)
+
+x ? 0  =  dec 0
+x ? y  =  dec (dec 0)
+
+x ? 0  =  x + x
+x ? y  =  dec x
+
+x ? 0  =  x + x
+x ? y  =  dec y
+
+x ? 0  =  x + x
+x ? y  =  dec 0
+
+x ? 0  =  dec (dec x)
+x ? y  =  dec x
+
+x ? 0  =  dec (dec x)
+x ? y  =  dec y
+
+x ? 0  =  dec (dec x)
+x ? y  =  dec 0
+
+x ? 0  =  dec (dec 0)
+x ? y  =  dec x
+
+x ? 0  =  dec (dec 0)
+x ? y  =  dec y
+
+x ? 0  =  dec (dec 0)
+x ? y  =  dec 0
+
+x ? 0  =  dec x + x
+x ? y  =  x
+
+x ? 0  =  dec x + x
+x ? y  =  y
+
+x ? 0  =  dec x + x
+x ? y  =  0
+
+x ? 0  =  dec 0 + x
+x ? y  =  x
+
+x ? 0  =  dec 0 + x
+x ? y  =  y
+
+x ? 0  =  dec 0 + x
+x ? y  =  0
+
+x ? 0  =  dec (dec (dec x))
+x ? y  =  x
+
+x ? 0  =  dec (dec (dec x))
+x ? y  =  y
+
+x ? 0  =  dec (dec (dec x))
+x ? y  =  0
+
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  x
+
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  y
+
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  0
+
+x ? 0  =  x + dec x
+x ? y  =  x
+
+x ? 0  =  x + dec x
+x ? y  =  y
+
+x ? 0  =  x + dec x
+x ? y  =  0
+
+x ? 0  =  x + dec 0
+x ? y  =  x
+
+x ? 0  =  x + dec 0
+x ? y  =  y
+
+x ? 0  =  x + dec 0
+x ? y  =  0
+
+0 ? x  =  x
+x ? y  =  dec x + x
+
+0 ? x  =  x
+x ? y  =  dec x + y
+
+0 ? x  =  x
+x ? y  =  dec y + x
+
+0 ? x  =  x
+x ? y  =  dec y + y
+
+0 ? x  =  x
+x ? y  =  dec 0 + x
+
+0 ? x  =  x
+x ? y  =  dec 0 + y
+
+0 ? x  =  x
+x ? y  =  dec (dec (dec x))
+
+0 ? x  =  x
+x ? y  =  dec (dec (dec y))
+
+0 ? x  =  x
+x ? y  =  dec (dec (dec 0))
+
+0 ? x  =  x
+x ? y  =  x + dec x
+
+0 ? x  =  x
+x ? y  =  x + dec y
+
+0 ? x  =  x
+x ? y  =  x + dec 0
+
+0 ? x  =  x
+x ? y  =  y + dec x
+
+0 ? x  =  x
+x ? y  =  y + dec y
+
+0 ? x  =  x
+x ? y  =  y + dec 0
+
+0 ? x  =  0
+x ? y  =  dec x + x
+
+0 ? x  =  0
+x ? y  =  dec x + y
+
+0 ? x  =  0
+x ? y  =  dec y + x
+
+0 ? x  =  0
+x ? y  =  dec y + y
+
+0 ? x  =  0
+x ? y  =  dec 0 + x
+
+0 ? x  =  0
+x ? y  =  dec 0 + y
+
+0 ? x  =  0
+x ? y  =  dec (dec (dec x))
+
+0 ? x  =  0
+x ? y  =  dec (dec (dec y))
+
+0 ? x  =  0
+x ? y  =  dec (dec (dec 0))
+
+0 ? x  =  0
+x ? y  =  x + dec x
+
+0 ? x  =  0
+x ? y  =  x + dec y
+
+0 ? x  =  0
+x ? y  =  x + dec 0
+
+0 ? x  =  0
+x ? y  =  y + dec x
+
+0 ? x  =  0
+x ? y  =  y + dec y
+
+0 ? x  =  0
+x ? y  =  y + dec 0
+
+0 ? x  =  dec x
+x ? y  =  x + x
+
+0 ? x  =  dec x
+x ? y  =  x + y
+
+0 ? x  =  dec x
+x ? y  =  y + x
+
+0 ? x  =  dec x
+x ? y  =  y + y
+
+0 ? x  =  dec x
+x ? y  =  dec (dec x)
+
+0 ? x  =  dec x
+x ? y  =  dec (dec y)
+
+0 ? x  =  dec x
+x ? y  =  dec (dec 0)
+
+0 ? x  =  dec 0
+x ? y  =  x + x
+
+0 ? x  =  dec 0
+x ? y  =  x + y
+
+0 ? x  =  dec 0
+x ? y  =  y + x
+
+0 ? x  =  dec 0
+x ? y  =  y + y
+
+0 ? x  =  dec 0
+x ? y  =  dec (dec x)
+
+0 ? x  =  dec 0
+x ? y  =  dec (dec y)
+
+0 ? x  =  dec 0
+x ? y  =  dec (dec 0)
+
+0 ? x  =  x + x
+x ? y  =  dec x
+
+0 ? x  =  x + x
+x ? y  =  dec y
+
+0 ? x  =  x + x
+x ? y  =  dec 0
+
+0 ? x  =  dec (dec x)
+x ? y  =  dec x
+
+0 ? x  =  dec (dec x)
+x ? y  =  dec y
+
+0 ? x  =  dec (dec x)
+x ? y  =  dec 0
+
+0 ? x  =  dec (dec 0)
+x ? y  =  dec x
+
+0 ? x  =  dec (dec 0)
+x ? y  =  dec y
+
+0 ? x  =  dec (dec 0)
+x ? y  =  dec 0
+
+0 ? x  =  dec x + x
+x ? y  =  x
+
+0 ? x  =  dec x + x
+x ? y  =  y
+
+0 ? x  =  dec x + x
+x ? y  =  0
+
+0 ? x  =  dec 0 + x
+x ? y  =  x
+
+0 ? x  =  dec 0 + x
+x ? y  =  y
+
+0 ? x  =  dec 0 + x
+x ? y  =  0
+
+0 ? x  =  dec (dec (dec x))
+x ? y  =  x
+
+0 ? x  =  dec (dec (dec x))
+x ? y  =  y
+
+0 ? x  =  dec (dec (dec x))
+x ? y  =  0
+
+0 ? x  =  dec (dec (dec 0))
+x ? y  =  x
+
+0 ? x  =  dec (dec (dec 0))
+x ? y  =  y
+
+0 ? x  =  dec (dec (dec 0))
+x ? y  =  0
+
+0 ? x  =  x + dec x
+x ? y  =  x
+
+0 ? x  =  x + dec x
+x ? y  =  y
+
+0 ? x  =  x + dec x
+x ? y  =  0
+
+0 ? x  =  x + dec 0
+x ? y  =  x
+
+0 ? x  =  x + dec 0
+x ? y  =  y
+
+0 ? x  =  x + dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec x)
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec x)
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec x)
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec 0)
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec 0)
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec 0)
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec x)
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec x)
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec x)
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec 0)
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec 0)
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec 0)
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  0
+
+x ? 0  =  x
+x ? y  =  x ? dec (dec y)
+
+x ? 0  =  x
+x ? y  =  y ? dec (dec y)
+
+x ? 0  =  x
+x ? y  =  0 ? dec (dec y)
+
+x ? 0  =  x
+x ? y  =  dec x ? dec x
+
+x ? 0  =  x
+x ? y  =  dec x ? dec y
+
+x ? 0  =  x
+x ? y  =  dec x ? dec 0
+
+x ? 0  =  x
+x ? y  =  dec y ? dec y
+
+x ? 0  =  x
+x ? y  =  dec 0 ? dec y
+
+x ? 0  =  x
+x ? y  =  dec (dec x) ? x
+
+x ? 0  =  x
+x ? y  =  dec (dec x) ? y
+
+x ? 0  =  x
+x ? y  =  dec (dec x) ? 0
+
+x ? 0  =  0
+x ? y  =  x ? dec (dec y)
+
+x ? 0  =  0
+x ? y  =  y ? dec (dec y)
+
+x ? 0  =  0
+x ? y  =  0 ? dec (dec y)
+
+x ? 0  =  0
+x ? y  =  dec x ? dec x
+
+x ? 0  =  0
+x ? y  =  dec x ? dec y
+
+x ? 0  =  0
+x ? y  =  dec x ? dec 0
+
+x ? 0  =  0
+x ? y  =  dec y ? dec y
+
+x ? 0  =  0
+x ? y  =  dec 0 ? dec y
+
+x ? 0  =  0
+x ? y  =  dec (dec x) ? x
+
+x ? 0  =  0
+x ? y  =  dec (dec x) ? y
+
+x ? 0  =  0
+x ? y  =  dec (dec x) ? 0
+
+0 ? x  =  x
+x ? y  =  x ? dec (dec y)
+
+0 ? x  =  x
+x ? y  =  y ? dec (dec y)
+
+0 ? x  =  x
+x ? y  =  0 ? dec (dec y)
+
+0 ? x  =  x
+x ? y  =  dec x ? dec x
+
+0 ? x  =  x
+x ? y  =  dec x ? dec y
+
+0 ? x  =  x
+x ? y  =  dec x ? dec 0
+
+0 ? x  =  x
+x ? y  =  dec y ? dec y
+
+0 ? x  =  x
+x ? y  =  dec 0 ? dec y
+
+0 ? x  =  x
+x ? y  =  dec (dec x) ? x
+
+0 ? x  =  x
+x ? y  =  dec (dec x) ? y
+
+0 ? x  =  x
+x ? y  =  dec (dec x) ? 0
+
+0 ? x  =  0
+x ? y  =  x ? dec (dec y)
+
+0 ? x  =  0
+x ? y  =  y ? dec (dec y)
+
+0 ? x  =  0
+x ? y  =  0 ? dec (dec y)
+
+0 ? x  =  0
+x ? y  =  dec x ? dec x
+
+0 ? x  =  0
+x ? y  =  dec x ? dec y
+
+0 ? x  =  0
+x ? y  =  dec x ? dec 0
+
+0 ? x  =  0
+x ? y  =  dec y ? dec y
+
+0 ? x  =  0
+x ? y  =  dec 0 ? dec y
+
+0 ? x  =  0
+x ? y  =  dec (dec x) ? x
+
+0 ? x  =  0
+x ? y  =  dec (dec x) ? y
+
+0 ? x  =  0
+x ? y  =  dec (dec x) ? 0
+
+x ? 0  =  x
+x ? y  =  dec (x ? dec y)
+
+x ? 0  =  x
+x ? y  =  dec (y ? dec y)
+
+x ? 0  =  x
+x ? y  =  dec (0 ? dec y)
+
+x ? 0  =  x
+x ? y  =  dec (dec x ? x)
+
+x ? 0  =  x
+x ? y  =  dec (dec x ? y)
+
+x ? 0  =  x
+x ? y  =  dec (dec x ? 0)
+
+x ? 0  =  0
+x ? y  =  dec (x ? dec y)
+
+x ? 0  =  0
+x ? y  =  dec (y ? dec y)
+
+x ? 0  =  0
+x ? y  =  dec (0 ? dec y)
+
+x ? 0  =  0
+x ? y  =  dec (dec x ? x)
+
+x ? 0  =  0
+x ? y  =  dec (dec x ? y)
+
+x ? 0  =  0
+x ? y  =  dec (dec x ? 0)
+
+x ? 0  =  dec x
+x ? y  =  x ? dec y
+
+x ? 0  =  dec x
+x ? y  =  y ? dec y
+
+x ? 0  =  dec x
+x ? y  =  0 ? dec y
+
+x ? 0  =  dec x
+x ? y  =  dec x ? x
+
+x ? 0  =  dec x
+x ? y  =  dec x ? y
+
+x ? 0  =  dec x
+x ? y  =  dec x ? 0
+
+x ? 0  =  dec 0
+x ? y  =  x ? dec y
+
+x ? 0  =  dec 0
+x ? y  =  y ? dec y
+
+x ? 0  =  dec 0
+x ? y  =  0 ? dec y
+
+x ? 0  =  dec 0
+x ? y  =  dec x ? x
+
+x ? 0  =  dec 0
+x ? y  =  dec x ? y
+
+x ? 0  =  dec 0
+x ? y  =  dec x ? 0
+
+0 ? x  =  x
+x ? y  =  dec (x ? dec y)
+
+0 ? x  =  x
+x ? y  =  dec (y ? dec y)
+
+0 ? x  =  x
+x ? y  =  dec (0 ? dec y)
+
+0 ? x  =  x
+x ? y  =  dec (dec x ? x)
+
+0 ? x  =  x
+x ? y  =  dec (dec x ? y)
+
+0 ? x  =  x
+x ? y  =  dec (dec x ? 0)
+
+0 ? x  =  0
+x ? y  =  dec (x ? dec y)
+
+0 ? x  =  0
+x ? y  =  dec (y ? dec y)
+
+0 ? x  =  0
+x ? y  =  dec (0 ? dec y)
+
+0 ? x  =  0
+x ? y  =  dec (dec x ? x)
+
+0 ? x  =  0
+x ? y  =  dec (dec x ? y)
+
+0 ? x  =  0
+x ? y  =  dec (dec x ? 0)
+
+0 ? x  =  dec x
+x ? y  =  x ? dec y
+
+0 ? x  =  dec x
+x ? y  =  y ? dec y
+
+0 ? x  =  dec x
+x ? y  =  0 ? dec y
+
+0 ? x  =  dec x
+x ? y  =  dec x ? x
+
+0 ? x  =  dec x
+x ? y  =  dec x ? y
+
+0 ? x  =  dec x
+x ? y  =  dec x ? 0
+
+0 ? x  =  dec 0
+x ? y  =  x ? dec y
+
+0 ? x  =  dec 0
+x ? y  =  y ? dec y
+
+0 ? x  =  dec 0
+x ? y  =  0 ? dec y
+
+0 ? x  =  dec 0
+x ? y  =  dec x ? x
+
+0 ? x  =  dec 0
+x ? y  =  dec x ? y
+
+0 ? x  =  dec 0
+x ? y  =  dec x ? 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x ? dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y ? dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  0 ? dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec x ? x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec x ? y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec x ? 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x ? x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x ? 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x ? x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x ? 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x ? x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x ? 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x ? dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y ? dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  0 ? dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec x ? x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec x ? y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec x ? 0
+
+0 ? 0  =  0
+0 ? x  =  x ? dec x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0 ? dec x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x ? dec x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0 ? dec x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x ? dec x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0 ? dec x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x ? dec x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0 ? dec x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x ? dec x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0 ? dec x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x ? dec x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0 ? dec x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x ? dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y ? dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  0 ? dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec x ? x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec x ? y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec x ? 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x ? x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x ? 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x ? x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x ? 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x ? x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x ? 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x ? dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y ? dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  0 ? dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec x ? x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec x ? y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec x ? 0
+
+x ? y  =  dec (dec (dec x)) + x
+
+x ? y  =  dec (dec (dec x)) + y
+
+x ? y  =  dec (dec (dec y)) + x
+
+x ? y  =  dec (dec (dec y)) + y
+
+x ? y  =  dec (dec (dec 0)) + x
+
+x ? y  =  dec (dec (dec 0)) + y
+
+x ? y  =  dec (dec (dec (dec (dec x))))
+
+x ? y  =  dec (dec (dec (dec (dec y))))
+
+x ? y  =  dec (dec (dec (dec (dec 0))))
+
+x ? y  =  x + (dec x + x)
+
+x ? y  =  x + (dec x + y)
+
+x ? y  =  x + (dec y + x)
+
+x ? y  =  x + (dec y + y)
+
+x ? y  =  x + (dec 0 + x)
+
+x ? y  =  x + (dec 0 + y)
+
+x ? y  =  x + dec (dec (dec x))
+
+x ? y  =  x + dec (dec (dec y))
+
+x ? y  =  x + dec (dec (dec 0))
+
+x ? y  =  x + (x + dec x)
+
+x ? y  =  x + (x + dec y)
+
+x ? y  =  x + (x + dec 0)
+
+x ? y  =  x + (y + dec x)
+
+x ? y  =  x + (y + dec y)
+
+x ? y  =  x + (y + dec 0)
+
+x ? y  =  y + (dec x + x)
+
+x ? y  =  y + (dec x + y)
+
+x ? y  =  y + (dec y + x)
+
+x ? y  =  y + (dec y + y)
+
+x ? y  =  y + (dec 0 + x)
+
+x ? y  =  y + (dec 0 + y)
+
+x ? y  =  y + dec (dec (dec x))
+
+x ? y  =  y + dec (dec (dec y))
+
+x ? y  =  y + dec (dec (dec 0))
+
+x ? y  =  y + (x + dec x)
+
+x ? y  =  y + (x + dec y)
+
+x ? y  =  y + (x + dec 0)
+
+x ? y  =  y + (y + dec x)
+
+x ? y  =  y + (y + dec y)
+
+x ? y  =  y + (y + dec 0)
+
+x ? y  =  dec x + (x + x)
+
+x ? y  =  dec x + (x + y)
+
+x ? y  =  dec x + (y + x)
+
+x ? y  =  dec x + (y + y)
+
+x ? y  =  dec x + dec (dec x)
+
+x ? y  =  dec x + dec (dec y)
+
+x ? y  =  dec x + dec (dec 0)
+
+x ? y  =  dec y + (x + x)
+
+x ? y  =  dec y + (x + y)
+
+x ? y  =  dec y + (y + x)
+
+x ? y  =  dec y + (y + y)
+
+x ? y  =  dec y + dec (dec x)
+
+x ? y  =  dec y + dec (dec y)
+
+x ? y  =  dec y + dec (dec 0)
+
+x ? y  =  dec 0 + (x + x)
+
+x ? y  =  dec 0 + (x + y)
+
+x ? y  =  dec 0 + (y + x)
+
+x ? y  =  dec 0 + (y + y)
+
+x ? y  =  dec 0 + dec (dec x)
+
+x ? y  =  dec 0 + dec (dec y)
+
+x ? y  =  dec 0 + dec (dec 0)
+
+x ? y  =  dec (dec x) + dec x
+
+x ? y  =  dec (dec x) + dec y
+
+x ? y  =  dec (dec x) + dec 0
+
+x ? y  =  dec (dec y) + dec x
+
+x ? y  =  dec (dec y) + dec y
+
+x ? y  =  dec (dec y) + dec 0
+
+x ? y  =  dec (dec 0) + dec x
+
+x ? y  =  dec (dec 0) + dec y
+
+x ? y  =  dec (dec 0) + dec 0
+
+x ? 0  =  x
+x ? y  =  dec (dec x) + x
+
+x ? 0  =  x
+x ? y  =  dec (dec x) + y
+
+x ? 0  =  x
+x ? y  =  dec (dec y) + x
+
+x ? 0  =  x
+x ? y  =  dec (dec y) + y
+
+x ? 0  =  x
+x ? y  =  dec (dec 0) + x
+
+x ? 0  =  x
+x ? y  =  dec (dec 0) + y
+
+x ? 0  =  x
+x ? y  =  dec (dec (dec (dec x)))
+
+x ? 0  =  x
+x ? y  =  dec (dec (dec (dec y)))
+
+x ? 0  =  x
+x ? y  =  dec (dec (dec (dec 0)))
+
+x ? 0  =  x
+x ? y  =  x + (x + x)
+
+x ? 0  =  x
+x ? y  =  x + (x + y)
+
+x ? 0  =  x
+x ? y  =  x + (y + x)
+
+x ? 0  =  x
+x ? y  =  x + (y + y)
+
+x ? 0  =  x
+x ? y  =  x + dec (dec x)
+
+x ? 0  =  x
+x ? y  =  x + dec (dec y)
+
+x ? 0  =  x
+x ? y  =  x + dec (dec 0)
+
+x ? 0  =  x
+x ? y  =  y + (x + x)
+
+x ? 0  =  x
+x ? y  =  y + (x + y)
+
+x ? 0  =  x
+x ? y  =  y + (y + x)
+
+x ? 0  =  x
+x ? y  =  y + (y + y)
+
+x ? 0  =  x
+x ? y  =  y + dec (dec x)
+
+x ? 0  =  x
+x ? y  =  y + dec (dec y)
+
+x ? 0  =  x
+x ? y  =  y + dec (dec 0)
+
+x ? 0  =  x
+x ? y  =  dec x + dec x
+
+x ? 0  =  x
+x ? y  =  dec x + dec y
+
+x ? 0  =  x
+x ? y  =  dec x + dec 0
+
+x ? 0  =  x
+x ? y  =  dec y + dec x
+
+x ? 0  =  x
+x ? y  =  dec y + dec y
+
+x ? 0  =  x
+x ? y  =  dec y + dec 0
+
+x ? 0  =  x
+x ? y  =  dec 0 + dec x
+
+x ? 0  =  x
+x ? y  =  dec 0 + dec y
+
+x ? 0  =  x
+x ? y  =  dec 0 + dec 0
+
+x ? 0  =  0
+x ? y  =  dec (dec x) + x
+
+x ? 0  =  0
+x ? y  =  dec (dec x) + y
+
+x ? 0  =  0
+x ? y  =  dec (dec y) + x
+
+x ? 0  =  0
+x ? y  =  dec (dec y) + y
+
+x ? 0  =  0
+x ? y  =  dec (dec 0) + x
+
+x ? 0  =  0
+x ? y  =  dec (dec 0) + y
+
+x ? 0  =  0
+x ? y  =  dec (dec (dec (dec x)))
+
+x ? 0  =  0
+x ? y  =  dec (dec (dec (dec y)))
+
+x ? 0  =  0
+x ? y  =  dec (dec (dec (dec 0)))
+
+x ? 0  =  0
+x ? y  =  x + (x + x)
+
+x ? 0  =  0
+x ? y  =  x + (x + y)
+
+x ? 0  =  0
+x ? y  =  x + (y + x)
+
+x ? 0  =  0
+x ? y  =  x + (y + y)
+
+x ? 0  =  0
+x ? y  =  x + dec (dec x)
+
+x ? 0  =  0
+x ? y  =  x + dec (dec y)
+
+x ? 0  =  0
+x ? y  =  x + dec (dec 0)
+
+x ? 0  =  0
+x ? y  =  y + (x + x)
+
+x ? 0  =  0
+x ? y  =  y + (x + y)
+
+x ? 0  =  0
+x ? y  =  y + (y + x)
+
+x ? 0  =  0
+x ? y  =  y + (y + y)
+
+x ? 0  =  0
+x ? y  =  y + dec (dec x)
+
+x ? 0  =  0
+x ? y  =  y + dec (dec y)
+
+x ? 0  =  0
+x ? y  =  y + dec (dec 0)
+
+x ? 0  =  0
+x ? y  =  dec x + dec x
+
+x ? 0  =  0
+x ? y  =  dec x + dec y
+
+x ? 0  =  0
+x ? y  =  dec x + dec 0
+
+x ? 0  =  0
+x ? y  =  dec y + dec x
+
+x ? 0  =  0
+x ? y  =  dec y + dec y
+
+x ? 0  =  0
+x ? y  =  dec y + dec 0
+
+x ? 0  =  0
+x ? y  =  dec 0 + dec x
+
+x ? 0  =  0
+x ? y  =  dec 0 + dec y
+
+x ? 0  =  0
+x ? y  =  dec 0 + dec 0
+
+x ? 0  =  dec x
+x ? y  =  dec x + x
+
+x ? 0  =  dec x
+x ? y  =  dec x + y
+
+x ? 0  =  dec x
+x ? y  =  dec y + x
+
+x ? 0  =  dec x
+x ? y  =  dec y + y
+
+x ? 0  =  dec x
+x ? y  =  dec 0 + x
+
+x ? 0  =  dec x
+x ? y  =  dec 0 + y
+
+x ? 0  =  dec x
+x ? y  =  dec (dec (dec x))
+
+x ? 0  =  dec x
+x ? y  =  dec (dec (dec y))
+
+x ? 0  =  dec x
+x ? y  =  dec (dec (dec 0))
+
+x ? 0  =  dec x
+x ? y  =  x + dec x
+
+x ? 0  =  dec x
+x ? y  =  x + dec y
+
+x ? 0  =  dec x
+x ? y  =  x + dec 0
+
+x ? 0  =  dec x
+x ? y  =  y + dec x
+
+x ? 0  =  dec x
+x ? y  =  y + dec y
+
+x ? 0  =  dec x
+x ? y  =  y + dec 0
+
+x ? 0  =  dec 0
+x ? y  =  dec x + x
+
+x ? 0  =  dec 0
+x ? y  =  dec x + y
+
+x ? 0  =  dec 0
+x ? y  =  dec y + x
+
+x ? 0  =  dec 0
+x ? y  =  dec y + y
+
+x ? 0  =  dec 0
+x ? y  =  dec 0 + x
+
+x ? 0  =  dec 0
+x ? y  =  dec 0 + y
+
+x ? 0  =  dec 0
+x ? y  =  dec (dec (dec x))
+
+x ? 0  =  dec 0
+x ? y  =  dec (dec (dec y))
+
+x ? 0  =  dec 0
+x ? y  =  dec (dec (dec 0))
+
+x ? 0  =  dec 0
+x ? y  =  x + dec x
+
+x ? 0  =  dec 0
+x ? y  =  x + dec y
+
+x ? 0  =  dec 0
+x ? y  =  x + dec 0
+
+x ? 0  =  dec 0
+x ? y  =  y + dec x
+
+x ? 0  =  dec 0
+x ? y  =  y + dec y
+
+x ? 0  =  dec 0
+x ? y  =  y + dec 0
+
+x ? 0  =  x + x
+x ? y  =  x + y
+
+x ? 0  =  x + x
+x ? y  =  y + x
+
+x ? 0  =  x + x
+x ? y  =  y + y
+
+x ? 0  =  x + x
+x ? y  =  dec (dec x)
+
+x ? 0  =  x + x
+x ? y  =  dec (dec y)
+
+x ? 0  =  x + x
+x ? y  =  dec (dec 0)
+
+x ? 0  =  dec (dec x)
+x ? y  =  x + x
+
+x ? 0  =  dec (dec x)
+x ? y  =  x + y
+
+x ? 0  =  dec (dec x)
+x ? y  =  y + x
+
+x ? 0  =  dec (dec x)
+x ? y  =  y + y
+
+x ? 0  =  dec (dec x)
+x ? y  =  dec (dec y)
+
+x ? 0  =  dec (dec x)
+x ? y  =  dec (dec 0)
+
+x ? 0  =  dec (dec 0)
+x ? y  =  x + x
+
+x ? 0  =  dec (dec 0)
+x ? y  =  x + y
+
+x ? 0  =  dec (dec 0)
+x ? y  =  y + x
+
+x ? 0  =  dec (dec 0)
+x ? y  =  y + y
+
+x ? 0  =  dec (dec 0)
+x ? y  =  dec (dec x)
+
+x ? 0  =  dec (dec 0)
+x ? y  =  dec (dec y)
+
+x ? 0  =  dec x + x
+x ? y  =  dec x
+
+x ? 0  =  dec x + x
+x ? y  =  dec y
+
+x ? 0  =  dec x + x
+x ? y  =  dec 0
+
+x ? 0  =  dec 0 + x
+x ? y  =  dec x
+
+x ? 0  =  dec 0 + x
+x ? y  =  dec y
+
+x ? 0  =  dec 0 + x
+x ? y  =  dec 0
+
+x ? 0  =  dec (dec (dec x))
+x ? y  =  dec x
+
+x ? 0  =  dec (dec (dec x))
+x ? y  =  dec y
+
+x ? 0  =  dec (dec (dec x))
+x ? y  =  dec 0
+
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  dec x
+
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  dec y
+
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  dec 0
+
+x ? 0  =  x + dec x
+x ? y  =  dec x
+
+x ? 0  =  x + dec x
+x ? y  =  dec y
+
+x ? 0  =  x + dec x
+x ? y  =  dec 0
+
+x ? 0  =  x + dec 0
+x ? y  =  dec x
+
+x ? 0  =  x + dec 0
+x ? y  =  dec y
+
+x ? 0  =  x + dec 0
+x ? y  =  dec 0
+
+x ? 0  =  dec (dec x) + x
+x ? y  =  x
+
+x ? 0  =  dec (dec x) + x
+x ? y  =  y
+
+x ? 0  =  dec (dec x) + x
+x ? y  =  0
+
+x ? 0  =  dec (dec 0) + x
+x ? y  =  x
+
+x ? 0  =  dec (dec 0) + x
+x ? y  =  y
+
+x ? 0  =  dec (dec 0) + x
+x ? y  =  0
+
+x ? 0  =  dec (dec (dec (dec x)))
+x ? y  =  x
+
+x ? 0  =  dec (dec (dec (dec x)))
+x ? y  =  y
+
+x ? 0  =  dec (dec (dec (dec x)))
+x ? y  =  0
+
+x ? 0  =  dec (dec (dec (dec 0)))
+x ? y  =  x
+
+x ? 0  =  dec (dec (dec (dec 0)))
+x ? y  =  y
+
+x ? 0  =  dec (dec (dec (dec 0)))
+x ? y  =  0
+
+x ? 0  =  x + (x + x)
+x ? y  =  x
+
+x ? 0  =  x + (x + x)
+x ? y  =  y
+
+x ? 0  =  x + (x + x)
+x ? y  =  0
+
+x ? 0  =  x + dec (dec x)
+x ? y  =  x
+
+x ? 0  =  x + dec (dec x)
+x ? y  =  y
+
+x ? 0  =  x + dec (dec x)
+x ? y  =  0
+
+x ? 0  =  x + dec (dec 0)
+x ? y  =  x
+
+x ? 0  =  x + dec (dec 0)
+x ? y  =  y
+
+x ? 0  =  x + dec (dec 0)
+x ? y  =  0
+
+x ? 0  =  dec x + dec x
+x ? y  =  x
+
+x ? 0  =  dec x + dec x
+x ? y  =  y
+
+x ? 0  =  dec x + dec x
+x ? y  =  0
+
+x ? 0  =  dec x + dec 0
+x ? y  =  x
+
+x ? 0  =  dec x + dec 0
+x ? y  =  y
+
+x ? 0  =  dec x + dec 0
+x ? y  =  0
+
+x ? 0  =  dec 0 + dec x
+x ? y  =  x
+
+x ? 0  =  dec 0 + dec x
+x ? y  =  y
+
+x ? 0  =  dec 0 + dec x
+x ? y  =  0
+
+x ? 0  =  dec 0 + dec 0
+x ? y  =  x
+
+x ? 0  =  dec 0 + dec 0
+x ? y  =  y
+
+x ? 0  =  dec 0 + dec 0
+x ? y  =  0
+
+0 ? x  =  x
+x ? y  =  dec (dec x) + x
+
+0 ? x  =  x
+x ? y  =  dec (dec x) + y
+
+0 ? x  =  x
+x ? y  =  dec (dec y) + x
+
+0 ? x  =  x
+x ? y  =  dec (dec y) + y
+
+0 ? x  =  x
+x ? y  =  dec (dec 0) + x
+
+0 ? x  =  x
+x ? y  =  dec (dec 0) + y
+
+0 ? x  =  x
+x ? y  =  dec (dec (dec (dec x)))
+
+0 ? x  =  x
+x ? y  =  dec (dec (dec (dec y)))
+
+0 ? x  =  x
+x ? y  =  dec (dec (dec (dec 0)))
+
+0 ? x  =  x
+x ? y  =  x + (x + x)
+
+0 ? x  =  x
+x ? y  =  x + (x + y)
+
+0 ? x  =  x
+x ? y  =  x + (y + x)
+
+0 ? x  =  x
+x ? y  =  x + (y + y)
+
+0 ? x  =  x
+x ? y  =  x + dec (dec x)
+
+0 ? x  =  x
+x ? y  =  x + dec (dec y)
+
+0 ? x  =  x
+x ? y  =  x + dec (dec 0)
+
+0 ? x  =  x
+x ? y  =  y + (x + x)
+
+0 ? x  =  x
+x ? y  =  y + (x + y)
+
+0 ? x  =  x
+x ? y  =  y + (y + x)
+
+0 ? x  =  x
+x ? y  =  y + (y + y)
+
+0 ? x  =  x
+x ? y  =  y + dec (dec x)
+
+0 ? x  =  x
+x ? y  =  y + dec (dec y)
+
+0 ? x  =  x
+x ? y  =  y + dec (dec 0)
+
+0 ? x  =  x
+x ? y  =  dec x + dec x
+
+0 ? x  =  x
+x ? y  =  dec x + dec y
+
+0 ? x  =  x
+x ? y  =  dec x + dec 0
+
+0 ? x  =  x
+x ? y  =  dec y + dec x
+
+0 ? x  =  x
+x ? y  =  dec y + dec y
+
+0 ? x  =  x
+x ? y  =  dec y + dec 0
+
+0 ? x  =  x
+x ? y  =  dec 0 + dec x
+
+0 ? x  =  x
+x ? y  =  dec 0 + dec y
+
+0 ? x  =  x
+x ? y  =  dec 0 + dec 0
+
+0 ? x  =  0
+x ? y  =  dec (dec x) + x
+
+0 ? x  =  0
+x ? y  =  dec (dec x) + y
+
+0 ? x  =  0
+x ? y  =  dec (dec y) + x
+
+0 ? x  =  0
+x ? y  =  dec (dec y) + y
+
+0 ? x  =  0
+x ? y  =  dec (dec 0) + x
+
+0 ? x  =  0
+x ? y  =  dec (dec 0) + y
+
+0 ? x  =  0
+x ? y  =  dec (dec (dec (dec x)))
+
+0 ? x  =  0
+x ? y  =  dec (dec (dec (dec y)))
+
+0 ? x  =  0
+x ? y  =  dec (dec (dec (dec 0)))
+
+0 ? x  =  0
+x ? y  =  x + (x + x)
+
+0 ? x  =  0
+x ? y  =  x + (x + y)
+
+0 ? x  =  0
+x ? y  =  x + (y + x)
+
+0 ? x  =  0
+x ? y  =  x + (y + y)
+
+0 ? x  =  0
+x ? y  =  x + dec (dec x)
+
+0 ? x  =  0
+x ? y  =  x + dec (dec y)
+
+0 ? x  =  0
+x ? y  =  x + dec (dec 0)
+
+0 ? x  =  0
+x ? y  =  y + (x + x)
+
+0 ? x  =  0
+x ? y  =  y + (x + y)
+
+0 ? x  =  0
+x ? y  =  y + (y + x)
+
+0 ? x  =  0
+x ? y  =  y + (y + y)
+
+0 ? x  =  0
+x ? y  =  y + dec (dec x)
+
+0 ? x  =  0
+x ? y  =  y + dec (dec y)
+
+0 ? x  =  0
+x ? y  =  y + dec (dec 0)
+
+0 ? x  =  0
+x ? y  =  dec x + dec x
+
+0 ? x  =  0
+x ? y  =  dec x + dec y
+
+0 ? x  =  0
+x ? y  =  dec x + dec 0
+
+0 ? x  =  0
+x ? y  =  dec y + dec x
+
+0 ? x  =  0
+x ? y  =  dec y + dec y
+
+0 ? x  =  0
+x ? y  =  dec y + dec 0
+
+0 ? x  =  0
+x ? y  =  dec 0 + dec x
+
+0 ? x  =  0
+x ? y  =  dec 0 + dec y
+
+0 ? x  =  0
+x ? y  =  dec 0 + dec 0
+
+0 ? x  =  dec x
+x ? y  =  dec x + x
+
+0 ? x  =  dec x
+x ? y  =  dec x + y
+
+0 ? x  =  dec x
+x ? y  =  dec y + x
+
+0 ? x  =  dec x
+x ? y  =  dec y + y
+
+0 ? x  =  dec x
+x ? y  =  dec 0 + x
+
+0 ? x  =  dec x
+x ? y  =  dec 0 + y
+
+0 ? x  =  dec x
+x ? y  =  dec (dec (dec x))
+
+0 ? x  =  dec x
+x ? y  =  dec (dec (dec y))
+
+0 ? x  =  dec x
+x ? y  =  dec (dec (dec 0))
+
+0 ? x  =  dec x
+x ? y  =  x + dec x
+
+0 ? x  =  dec x
+x ? y  =  x + dec y
+
+0 ? x  =  dec x
+x ? y  =  x + dec 0
+
+0 ? x  =  dec x
+x ? y  =  y + dec x
+
+0 ? x  =  dec x
+x ? y  =  y + dec y
+
+0 ? x  =  dec x
+x ? y  =  y + dec 0
+
+0 ? x  =  dec 0
+x ? y  =  dec x + x
+
+0 ? x  =  dec 0
+x ? y  =  dec x + y
+
+0 ? x  =  dec 0
+x ? y  =  dec y + x
+
+0 ? x  =  dec 0
+x ? y  =  dec y + y
+
+0 ? x  =  dec 0
+x ? y  =  dec 0 + x
+
+0 ? x  =  dec 0
+x ? y  =  dec 0 + y
+
+0 ? x  =  dec 0
+x ? y  =  dec (dec (dec x))
+
+0 ? x  =  dec 0
+x ? y  =  dec (dec (dec y))
+
+0 ? x  =  dec 0
+x ? y  =  dec (dec (dec 0))
+
+0 ? x  =  dec 0
+x ? y  =  x + dec x
+
+0 ? x  =  dec 0
+x ? y  =  x + dec y
+
+0 ? x  =  dec 0
+x ? y  =  x + dec 0
+
+0 ? x  =  dec 0
+x ? y  =  y + dec x
+
+0 ? x  =  dec 0
+x ? y  =  y + dec y
+
+0 ? x  =  dec 0
+x ? y  =  y + dec 0
+
+0 ? x  =  x + x
+x ? y  =  x + y
+
+0 ? x  =  x + x
+x ? y  =  y + x
+
+0 ? x  =  x + x
+x ? y  =  dec (dec x)
+
+0 ? x  =  x + x
+x ? y  =  dec (dec y)
+
+0 ? x  =  x + x
+x ? y  =  dec (dec 0)
+
+0 ? x  =  dec (dec x)
+x ? y  =  x + x
+
+0 ? x  =  dec (dec x)
+x ? y  =  x + y
+
+0 ? x  =  dec (dec x)
+x ? y  =  y + x
+
+0 ? x  =  dec (dec x)
+x ? y  =  y + y
+
+0 ? x  =  dec (dec x)
+x ? y  =  dec (dec 0)
+
+0 ? x  =  dec (dec 0)
+x ? y  =  x + x
+
+0 ? x  =  dec (dec 0)
+x ? y  =  x + y
+
+0 ? x  =  dec (dec 0)
+x ? y  =  y + x
+
+0 ? x  =  dec (dec 0)
+x ? y  =  y + y
+
+0 ? x  =  dec (dec 0)
+x ? y  =  dec (dec x)
+
+0 ? x  =  dec (dec 0)
+x ? y  =  dec (dec y)
+
+0 ? x  =  dec x + x
+x ? y  =  dec x
+
+0 ? x  =  dec x + x
+x ? y  =  dec y
+
+0 ? x  =  dec x + x
+x ? y  =  dec 0
+
+0 ? x  =  dec 0 + x
+x ? y  =  dec x
+
+0 ? x  =  dec 0 + x
+x ? y  =  dec y
+
+0 ? x  =  dec 0 + x
+x ? y  =  dec 0
+
+0 ? x  =  dec (dec (dec x))
+x ? y  =  dec x
+
+0 ? x  =  dec (dec (dec x))
+x ? y  =  dec y
+
+0 ? x  =  dec (dec (dec x))
+x ? y  =  dec 0
+
+0 ? x  =  dec (dec (dec 0))
+x ? y  =  dec x
+
+0 ? x  =  dec (dec (dec 0))
+x ? y  =  dec y
+
+0 ? x  =  dec (dec (dec 0))
+x ? y  =  dec 0
+
+0 ? x  =  x + dec x
+x ? y  =  dec x
+
+0 ? x  =  x + dec x
+x ? y  =  dec y
+
+0 ? x  =  x + dec x
+x ? y  =  dec 0
+
+0 ? x  =  x + dec 0
+x ? y  =  dec x
+
+0 ? x  =  x + dec 0
+x ? y  =  dec y
+
+0 ? x  =  x + dec 0
+x ? y  =  dec 0
+
+0 ? x  =  dec (dec x) + x
+x ? y  =  x
+
+0 ? x  =  dec (dec x) + x
+x ? y  =  y
+
+0 ? x  =  dec (dec x) + x
+x ? y  =  0
+
+0 ? x  =  dec (dec 0) + x
+x ? y  =  x
+
+0 ? x  =  dec (dec 0) + x
+x ? y  =  y
+
+0 ? x  =  dec (dec 0) + x
+x ? y  =  0
+
+0 ? x  =  dec (dec (dec (dec x)))
+x ? y  =  x
+
+0 ? x  =  dec (dec (dec (dec x)))
+x ? y  =  y
+
+0 ? x  =  dec (dec (dec (dec x)))
+x ? y  =  0
+
+0 ? x  =  dec (dec (dec (dec 0)))
+x ? y  =  x
+
+0 ? x  =  dec (dec (dec (dec 0)))
+x ? y  =  y
+
+0 ? x  =  dec (dec (dec (dec 0)))
+x ? y  =  0
+
+0 ? x  =  x + (x + x)
+x ? y  =  x
+
+0 ? x  =  x + (x + x)
+x ? y  =  y
+
+0 ? x  =  x + (x + x)
+x ? y  =  0
+
+0 ? x  =  x + dec (dec x)
+x ? y  =  x
+
+0 ? x  =  x + dec (dec x)
+x ? y  =  y
+
+0 ? x  =  x + dec (dec x)
+x ? y  =  0
+
+0 ? x  =  x + dec (dec 0)
+x ? y  =  x
+
+0 ? x  =  x + dec (dec 0)
+x ? y  =  y
+
+0 ? x  =  x + dec (dec 0)
+x ? y  =  0
+
+0 ? x  =  dec x + dec x
+x ? y  =  x
+
+0 ? x  =  dec x + dec x
+x ? y  =  y
+
+0 ? x  =  dec x + dec x
+x ? y  =  0
+
+0 ? x  =  dec x + dec 0
+x ? y  =  x
+
+0 ? x  =  dec x + dec 0
+x ? y  =  y
+
+0 ? x  =  dec x + dec 0
+x ? y  =  0
+
+0 ? x  =  dec 0 + dec x
+x ? y  =  x
+
+0 ? x  =  dec 0 + dec x
+x ? y  =  y
+
+0 ? x  =  dec 0 + dec x
+x ? y  =  0
+
+0 ? x  =  dec 0 + dec 0
+x ? y  =  x
+
+0 ? x  =  dec 0 + dec 0
+x ? y  =  y
+
+0 ? x  =  dec 0 + dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec x + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec x + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec y + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec y + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec 0 + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec 0 + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec (dec (dec x))
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec (dec (dec y))
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec (dec (dec 0))
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x + dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x + dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x + dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y + dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y + dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y + dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec x + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec x + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec y + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec y + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec 0 + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec 0 + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec (dec (dec x))
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec (dec (dec y))
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec (dec (dec 0))
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x + dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x + dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x + dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y + dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y + dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y + dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec x)
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec x)
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec x)
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec 0)
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec 0)
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec 0)
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x + x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x + x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec x + x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0 + x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0 + x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec 0 + x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec (dec x))
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec (dec x))
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec (dec x))
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + dec x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + dec x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + dec x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + dec 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + dec 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x
+x ? 0  =  x + dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec x + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec x + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec y + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec y + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec 0 + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec 0 + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec (dec (dec x))
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec (dec (dec y))
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec (dec (dec 0))
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x + dec x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x + dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x + dec 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y + dec x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y + dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y + dec 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec x + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec x + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec y + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec y + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec 0 + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec 0 + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec (dec (dec x))
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec (dec (dec y))
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec (dec (dec 0))
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x + dec x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x + dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x + dec 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y + dec x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y + dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y + dec 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec x)
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec x)
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec x)
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec 0)
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec 0)
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec 0)
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x + x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x + x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec x + x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0 + x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0 + x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec 0 + x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec (dec x))
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec (dec x))
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec (dec x))
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  dec (dec (dec 0))
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + dec x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + dec x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + dec x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + dec 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + dec 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  0
+x ? 0  =  x + dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec 0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec 0
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec 0
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x + x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x + x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  x + x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec (dec x)
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec (dec x)
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec (dec x)
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec (dec 0)
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec (dec 0)
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec x
+x ? 0  =  dec (dec 0)
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  x + x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  x + y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  y + x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  y + y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  dec (dec x)
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  dec (dec y)
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec 0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec 0
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec 0
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x + x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x + x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  x + x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec (dec x)
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec (dec x)
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec (dec x)
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec (dec 0)
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec (dec 0)
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec 0
+x ? 0  =  dec (dec 0)
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x + x
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec x)
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec 0)
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec x + x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec x + x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec x + x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec x + x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec x + x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec x + x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec 0 + x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec 0 + x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec 0 + x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec 0 + x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec 0 + x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec 0 + x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec x))
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec x))
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec x))
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec x))
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec x))
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec x))
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec 0))
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec 0))
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec 0))
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec 0))
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec 0))
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  dec (dec (dec 0))
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x + dec x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x + dec x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x + dec x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x + dec x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x + dec x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x + dec x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x + dec 0
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x + dec 0
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x + dec 0
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  0
+0 ? x  =  x + dec 0
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  0
+0 ? x  =  x + dec 0
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  0
+0 ? x  =  x + dec 0
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x + x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x + y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y + x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y + y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec (dec x)
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec (dec y)
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x + x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x + y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y + x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y + y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec (dec x)
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec (dec y)
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x + x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x + x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  x + x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec (dec x)
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec (dec x)
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec (dec x)
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec (dec 0)
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec (dec 0)
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  x
+x ? 0  =  dec (dec 0)
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x + x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x + y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y + x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y + y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec (dec x)
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec (dec y)
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x + x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x + y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y + x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y + y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec (dec x)
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec (dec y)
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec (dec 0)
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x + x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x + x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  x + x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec (dec x)
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec (dec x)
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec (dec x)
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec (dec 0)
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec (dec 0)
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  0
+x ? 0  =  dec (dec 0)
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec x
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec 0
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  x + x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  x + x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  x + x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  x + x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  x + x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  x + x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec x)
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec x)
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec x)
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec x)
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec x)
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec x)
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec 0)
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec 0)
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec 0)
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec 0)
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec 0)
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec 0
+0 ? x  =  dec (dec 0)
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  x
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  dec 0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  dec 0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  dec x
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  0
+x ? 0  =  dec 0
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec 0
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec (dec 0)
+0 ? x  =  dec 0
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  x
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  x
+x ? 0  =  0
+x ? y  =  0
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  x
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  y
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  0
+x ? 0  =  x
+x ? y  =  0
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  x
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  y
+
+0 ? 0  =  dec (dec (dec 0))
+0 ? x  =  0
+x ? 0  =  0
+x ? y  =  0
+
+
+Candidates for: goo :: [Int] -> [Int]
+  pruning with 4/4 rules
+  [2,0,1,0,1,0,1,0,1] direct candidates, 0 duplicates
+  [2,1,2,3,4,7,10,17,26] pattern candidates, 0 duplicates
+
+rules:
+xs ++ [] == xs
+[] ++ xs == xs
+(xs ++ ys) ++ zs == xs ++ (ys ++ zs)
+(x:xs) ++ ys == x:(xs ++ ys)
+
+direct candidates:
+
+goo xs  =  xs
+
+goo xs  =  []
+
+goo xs  =  xs ++ xs
+
+goo xs  =  xs ++ (xs ++ xs)
+
+
+pattern candidates:
+
+goo xs  =  xs
+
+goo xs  =  []
+
+goo []  =  []
+goo (x:xs)  =  xs
+
+goo []  =  []
+goo (x:xs)  =  goo xs
+
+goo xs  =  xs ++ xs
+
+goo []  =  []
+goo (x:xs)  =  x:xs
+
+goo []  =  []
+goo (x:xs)  =  [x]
+
+goo []  =  []
+goo (x:xs)  =  xs ++ xs
+
+goo []  =  []
+goo (x:xs)  =  x:goo xs
+
+goo []  =  []
+goo (x:xs)  =  xs ++ goo xs
+
+goo []  =  []
+goo (x:xs)  =  goo xs ++ xs
+
+goo xs  =  xs ++ (xs ++ xs)
+
+goo []  =  []
+goo (x:xs)  =  goo xs ++ goo xs
+
+goo []  =  []
+goo (x:xs)  =  x:x:xs
+
+goo []  =  []
+goo (x:xs)  =  [x,x]
+
+goo []  =  []
+goo (x:xs)  =  x:(xs ++ xs)
+
+goo []  =  []
+goo (x:xs)  =  xs ++ (x:xs)
+
+goo []  =  []
+goo (x:xs)  =  xs ++ [x]
+
+goo []  =  []
+goo (x:xs)  =  xs ++ (xs ++ xs)
+
+
+Candidates for: ?? :: [Int] -> [Int] -> [Int]
+  pruning with 4/4 rules
+  [3,0,4,0,8,0,16,0,32] direct candidates, 0 duplicates
+  [3,7,13,66,152,361,1394,2084,11820] pattern candidates, 0 duplicates
+
+rules:
+xs ++ [] == xs
+[] ++ xs == xs
+(xs ++ ys) ++ zs == xs ++ (ys ++ zs)
+(x:xs) ++ ys == x:(xs ++ ys)
+
+direct candidates:
+
+xs ?? ys  =  xs
+
+xs ?? ys  =  ys
+
+xs ?? ys  =  []
+
+xs ?? ys  =  xs ++ xs
+
+xs ?? ys  =  xs ++ ys
+
+xs ?? ys  =  ys ++ xs
+
+xs ?? ys  =  ys ++ ys
+
+xs ?? ys  =  xs ++ (xs ++ xs)
+
+xs ?? ys  =  xs ++ (xs ++ ys)
+
+xs ?? ys  =  xs ++ (ys ++ xs)
+
+xs ?? ys  =  xs ++ (ys ++ ys)
+
+xs ?? ys  =  ys ++ (xs ++ xs)
+
+xs ?? ys  =  ys ++ (xs ++ ys)
+
+xs ?? ys  =  ys ++ (ys ++ xs)
+
+xs ?? ys  =  ys ++ (ys ++ ys)
+
+
+pattern candidates:
+
+xs ?? ys  =  xs
+
+xs ?? ys  =  ys
+
+xs ?? ys  =  []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  []
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys
+
+xs ?? ys  =  xs ++ xs
+
+xs ?? ys  =  xs ++ ys
+
+xs ?? ys  =  ys ++ xs
+
+xs ?? ys  =  ys ++ ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [] ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [] ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [] ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [] ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? []
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? []
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [x]
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [x]
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ ys
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  xs
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  ys
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [x]
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [x]
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ ys
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  xs
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  ys
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs ?? []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys ?? []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  [] ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  [] ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs ?? xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs ?? []
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  [] ?? xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs ?? xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs ?? []
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  [] ?? xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs ?? xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs ?? []
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  [] ?? xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs ?? []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys ?? []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  [] ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  [] ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [] ?? xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [] ?? xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [] ?? xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [] ?? xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [] ?? xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ?? []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [] ?? xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs ?? []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys ?? []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  [] ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  [] ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs ?? xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs ?? []
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  [] ?? xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs ?? xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs ?? []
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  [] ?? xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs ?? xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs ?? []
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  [] ?? xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs ?? []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys ?? ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys ?? []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  [] ?? xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  [] ?? ys
+
+xs ?? ys  =  xs ++ (xs ++ xs)
+
+xs ?? ys  =  xs ++ (xs ++ ys)
+
+xs ?? ys  =  xs ++ (ys ++ xs)
+
+xs ?? ys  =  xs ++ (ys ++ ys)
+
+xs ?? ys  =  ys ++ (xs ++ xs)
+
+xs ?? ys  =  ys ++ (xs ++ ys)
+
+xs ?? ys  =  ys ++ (ys ++ xs)
+
+xs ?? ys  =  ys ++ (ys ++ ys)
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  x:xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  x:ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  [x]
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  y:xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  y:ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  [y]
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs ++ xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs ++ ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys ++ xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys ++ ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  x:xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  x:ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  [x]
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  y:xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  y:ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  [y]
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs ++ xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs ++ ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys ++ xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys ++ ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  x:xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  x:xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  x:xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  [x]
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  [x]
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  [x]
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs ++ xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs ++ xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs
+(x:xs) ?? []  =  xs ++ xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  x:xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  x:ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  [x]
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  y:xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  y:ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  [y]
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs ++ xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs ++ ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys ++ xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys ++ ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  x:xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  x:ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  [x]
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  y:xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  y:ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  [y]
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs ++ xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs ++ ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys ++ xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys ++ ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  x:xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  x:xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  x:xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  [x]
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  [x]
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  [x]
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs ++ xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs ++ xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  []
+(x:xs) ?? []  =  xs ++ xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  x:xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  x:xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  x:xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  x:xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  x:xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  x:xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [x]
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [x]
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [x]
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [x]
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [x]
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  [x]
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ++ xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ++ xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ++ xs
+(x:xs) ?? []  =  xs
+(x:xs) ?? (y:ys)  =  []
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ++ xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  xs
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ++ xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  ys
+
+[] ?? []  =  []
+[] ?? (x:xs)  =  xs ++ xs
+(x:xs) ?? []  =  []
+(x:xs) ?? (y:ys)  =  []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (x:xs) ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (x:xs) ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (x:xs) ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (x:ys) ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (x:ys) ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (x:ys) ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [x] ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [x] ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [x] ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (xs ++ xs) ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (xs ++ xs) ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (xs ++ xs) ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (xs ++ ys) ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (xs ++ ys) ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (xs ++ ys) ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (ys ++ xs) ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (ys ++ xs) ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (ys ++ xs) ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (ys ++ ys) ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (ys ++ ys) ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  (ys ++ ys) ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (x:xs) ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (x:xs) ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (x:xs) ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (x:ys) ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (x:ys) ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (x:ys) ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [x] ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [x] ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [x] ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (xs ++ xs) ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (xs ++ xs) ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (xs ++ xs) ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (xs ++ ys) ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (xs ++ ys) ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (xs ++ ys) ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (ys ++ xs) ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (ys ++ xs) ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (ys ++ xs) ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (ys ++ ys) ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (ys ++ ys) ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  (ys ++ ys) ?? []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? (x:xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? (x:ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? [x]
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? (xs ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? (xs ++ ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? (ys ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? (ys ++ ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? (x:xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? (x:ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? [x]
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? (xs ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? (xs ++ ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? (ys ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? (ys ++ ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? (x:xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? (x:ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? [x]
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? (xs ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? (xs ++ ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? (ys ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? (ys ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? (x:xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? (x:ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? [x]
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? (xs ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? (xs ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? (ys ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? (ys ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? (x:xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? (x:ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? [x]
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? (xs ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? (xs ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? (ys ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? (ys ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? (x:xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? (x:ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? [x]
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? (xs ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? (xs ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? (ys ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? (ys ++ ys)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:xs ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:xs ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:xs ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:ys ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:ys ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:ys ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [x,] ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [x,] ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ xs ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ xs ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ xs ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ ys ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ ys ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ ys ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ [] ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ [] ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ xs ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ xs ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ xs ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ ys ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ ys ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ ys ?? []
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ [] ?? xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ [] ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ?? xs ++ xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ?? ys ++ xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ?? [] ++ xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ?? xs ++ xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ?? ys ++ xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ?? [] ++ xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [] ?? xs ++ xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [] ?? ys ++ xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ?? xs ++ ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ?? ys ++ ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ?? [] ++ ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ?? xs ++ ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ?? ys ++ ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ?? [] ++ ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [] ?? xs ++ ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [] ?? ys ++ ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:xs ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:xs ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:xs ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:ys ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:ys ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:ys ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [x,] ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [x,] ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ xs ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ xs ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ xs ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ ys ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ ys ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ ys ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ [] ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ [] ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ xs ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ xs ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ xs ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ ys ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ ys ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ ys ?? []
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ [] ?? xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ [] ?? ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ?? xs ++ xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ?? ys ++ xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ?? [] ++ xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ?? xs ++ xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ?? ys ++ xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ?? [] ++ xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [] ?? xs ++ xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [] ?? ys ++ xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ?? xs ++ ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ?? ys ++ ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ?? [] ++ ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ?? xs ++ ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ?? ys ++ ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ?? [] ++ ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [] ?? xs ++ ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [] ?? ys ++ ys
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  xs ?? xs
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  xs ?? ys
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  xs ?? []
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  ys ?? xs
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  ys ?? ys
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  ys ?? []
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  [] ?? xs
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  [] ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:xs ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:xs ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:xs ?? []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:ys ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:ys ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:ys ?? []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [x,] ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [x,] ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ xs ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ xs ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ xs ?? []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ ys ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ ys ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ ys ?? []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ [] ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ [] ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ xs ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ xs ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ xs ?? []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ ys ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ ys ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ ys ?? []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ [] ?? xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ [] ?? ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? xs ++ xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? ys ++ xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? [] ++ xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? xs ++ xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? ys ++ xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? [] ++ xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? xs ++ xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? ys ++ xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? xs ++ ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? ys ++ ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ?? [] ++ ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? xs ++ ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? ys ++ ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ?? [] ++ ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? xs ++ ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [] ?? ys ++ ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:xs ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:xs ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:xs ?? []
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:ys ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:ys ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:ys ?? []
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [x,] ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [x,] ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ xs ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ xs ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ xs ?? []
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ ys ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ ys ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ ys ?? []
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ [] ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ [] ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ xs ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ xs ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ xs ?? []
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ ys ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ ys ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ ys ?? []
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ [] ?? xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ [] ?? ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? xs ++ xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? ys ++ xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? [] ++ xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? xs ++ xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? ys ++ xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? [] ++ xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? xs ++ xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? ys ++ xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? xs ++ ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? ys ++ ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ?? [] ++ ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? xs ++ ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? ys ++ ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ?? [] ++ ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? xs ++ ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [] ?? ys ++ ys
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  xs ?? xs
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  xs ?? ys
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  xs ?? []
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  ys ?? xs
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  ys ?? ys
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  ys ?? []
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  [] ?? xs
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  [] ?? ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:x:xs
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:x:ys
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  [x,x]
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:(xs ++ xs)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:(xs ++ ys)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:(ys ++ xs)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  x:(ys ++ ys)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ (x:xs)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ (x:ys)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ [x]
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ (xs ++ xs)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ (xs ++ ys)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ (ys ++ xs)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  xs ++ (ys ++ ys)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ (x:xs)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ (x:ys)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ [x]
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ (xs ++ xs)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ (xs ++ ys)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ (ys ++ xs)
+
+xs ?? []  =  xs
+xs ?? (x:ys)  =  ys ++ (ys ++ ys)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:x:xs
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:x:ys
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  [x,x]
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:(xs ++ xs)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:(xs ++ ys)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:(ys ++ xs)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  x:(ys ++ ys)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ (x:xs)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ (x:ys)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ [x]
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ (xs ++ xs)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ (xs ++ ys)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ (ys ++ xs)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  xs ++ (ys ++ ys)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ (x:xs)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ (x:ys)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ [x]
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ (xs ++ xs)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ (xs ++ ys)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ (ys ++ xs)
+
+xs ?? []  =  []
+xs ?? (x:ys)  =  ys ++ (ys ++ ys)
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  x:xs
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  x:ys
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  [x]
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  xs ++ ys
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  ys ++ xs
+
+xs ?? []  =  xs ++ xs
+xs ?? (x:ys)  =  ys ++ ys
+
+xs ?? []  =  xs ++ (xs ++ xs)
+xs ?? (x:ys)  =  xs
+
+xs ?? []  =  xs ++ (xs ++ xs)
+xs ?? (x:ys)  =  ys
+
+xs ?? []  =  xs ++ (xs ++ xs)
+xs ?? (x:ys)  =  []
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:x:xs
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:x:ys
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  [x,x]
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:(xs ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:(xs ++ ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:(ys ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  x:(ys ++ ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ (x:xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ (x:ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ [x]
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ (xs ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ (xs ++ ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ (ys ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  xs ++ (ys ++ ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ (x:xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ (x:ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ [x]
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ (xs ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ (xs ++ ys)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ (ys ++ xs)
+
+[] ?? xs  =  xs
+(x:xs) ?? ys  =  ys ++ (ys ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:x:xs
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:x:ys
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  [x,x]
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:(xs ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:(xs ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:(ys ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  x:(ys ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ (x:xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ (x:ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ [x]
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ (xs ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ (xs ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ (ys ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  xs ++ (ys ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ (x:xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ (x:ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ [x]
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ (xs ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ (xs ++ ys)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ (ys ++ xs)
+
+[] ?? xs  =  []
+(x:xs) ?? ys  =  ys ++ (ys ++ ys)
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  x:xs
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  x:ys
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  [x]
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  xs ++ ys
+
+[] ?? xs  =  xs ++ xs
+(x:xs) ?? ys  =  ys ++ xs
+
+[] ?? xs  =  xs ++ (xs ++ xs)
+(x:xs) ?? ys  =  xs
+
+[] ?? xs  =  xs ++ (xs ++ xs)
+(x:xs) ?? ys  =  ys
+
+[] ?? xs  =  xs ++ (xs ++ xs)
+(x:xs) ?? ys  =  []
+
+
+Candidates for: ton :: Bool -> Bool
+  pruning with 39/49 rules
+  [3,1,0,2,6,14,38,68,140] direct candidates, 0 duplicates
+  [3,3,0,0,0,0,0,0,0] pattern candidates, 0 duplicates
+
+rules:
+not False == True
+not True == False
+p && p == p
+p || p == p
+not (not p) == p
+p && False == False
+p && True == p
+False && p == False
+True && p == p
+p || False == p
+p || True == True
+False || p == p
+True || p == True
+not (p && q) == not p || not q
+not (p && q) == not q || not p
+not (p || q) == not p && not q
+not (p || q) == not q && not p
+p && not p == False
+not p && p == False
+p || not p == True
+not p || p == True
+(p && q) && r == p && (q && r)
+(p && q) && r == q && (p && r)
+(p || q) || r == p || (q || r)
+(p || q) || r == q || (p || r)
+p && (p && q) == p && q
+p && (q && p) == p && q
+p && (q && p) == q && p
+p || (p || q) == p || q
+p || (q || p) == p || q
+p || (q || p) == q || p
+p && (p || q) == p
+p && (q || p) == p
+(p || q) && p == p
+(p || q) && q == q
+p || p && q == p
+p || q && p == p
+p && q || p == p
+p && q || q == q
+equations:
+q && p == p && q
+q || p == p || q
+q && (p && r) == p && (q && r)
+r && (p && q) == p && (q && r)
+r && (q && p) == p && (q && r)
+q || (p || r) == p || (q || r)
+r || (p || q) == p || (q || r)
+r || (q || p) == p || (q || r)
+(r || q) && p == p && (q || r)
+r && q || p == p || q && r
+
+direct candidates:
+
+ton p  =  p
+
+ton p  =  False
+
+ton p  =  True
+
+ton p  =  not p
+
+ton p  =  p && ton p
+
+ton p  =  p || ton p
+
+ton p  =  p && ton (not p)
+
+ton p  =  p || ton (not p)
+
+ton p  =  p && not (ton p)
+
+ton p  =  not p && ton p
+
+ton p  =  p || not (ton p)
+
+ton p  =  not p || ton p
+
+ton p  =  p && not (ton (not p))
+
+ton p  =  not p && ton (not p)
+
+ton p  =  p || not (ton (not p))
+
+ton p  =  not p || ton (not p)
+
+ton p  =  p && (p && ton p)
+
+ton p  =  p && (ton p && p)
+
+ton p  =  p && (p || ton p)
+
+ton p  =  p && (ton p || p)
+
+ton p  =  not p && not (ton p)
+
+ton p  =  p || p && ton p
+
+ton p  =  p || ton p && p
+
+ton p  =  p || (p || ton p)
+
+ton p  =  p || (ton p || p)
+
+ton p  =  not p || not (ton p)
+
+
+pattern candidates:
+
+ton p  =  p
+
+ton p  =  False
+
+ton p  =  True
+
+ton p  =  not p
+
+ton False  =  False
+ton True  =  True
+
+ton False  =  True
+ton True  =  False
+
+
+Candidates for: &| :: Bool -> Bool -> Bool
+  pruning with 39/49 rules
+  [4,2,4,8,32,128,468,1576,4924] direct candidates, 0 duplicates
+  [4,14,26,8,4,48,60,280,592] pattern candidates, 0 duplicates
+
+rules:
+not False == True
+not True == False
+p && p == p
+p || p == p
+not (not p) == p
+p && False == False
+p && True == p
+False && p == False
+True && p == p
+p || False == p
+p || True == True
+False || p == p
+True || p == True
+not (p && q) == not p || not q
+not (p && q) == not q || not p
+not (p || q) == not p && not q
+not (p || q) == not q && not p
+p && not p == False
+not p && p == False
+p || not p == True
+not p || p == True
+(p && q) && r == p && (q && r)
+(p && q) && r == q && (p && r)
+(p || q) || r == p || (q || r)
+(p || q) || r == q || (p || r)
+p && (p && q) == p && q
+p && (q && p) == p && q
+p && (q && p) == q && p
+p || (p || q) == p || q
+p || (q || p) == p || q
+p || (q || p) == q || p
+p && (p || q) == p
+p && (q || p) == p
+(p || q) && p == p
+(p || q) && q == q
+p || p && q == p
+p || q && p == p
+p && q || p == p
+p && q || q == q
+equations:
+q && p == p && q
+q || p == p || q
+q && (p && r) == p && (q && r)
+r && (p && q) == p && (q && r)
+r && (q && p) == p && (q && r)
+q || (p || r) == p || (q || r)
+r || (p || q) == p || (q || r)
+r || (q || p) == p || (q || r)
+(r || q) && p == p && (q || r)
+r && q || p == p || q && r
+
+direct candidates:
+
+p &| q  =  p
+
+p &| q  =  q
+
+p &| q  =  False
+
+p &| q  =  True
+
+p &| q  =  not p
+
+p &| q  =  not q
+
+p &| q  =  p && q
+
+p &| q  =  q && p
+
+p &| q  =  p || q
+
+p &| q  =  q || p
+
+p &| q  =  not p && q
+
+p &| q  =  not q && p
+
+p &| q  =  not p || q
+
+p &| q  =  not q || p
+
+p &| q  =  p && not q
+
+p &| q  =  q && not p
+
+p &| q  =  p || not q
+
+p &| q  =  q || not p
+
+p &| q  =  not p && not q
+
+p &| q  =  not q && not p
+
+p &| q  =  not p || not q
+
+p &| q  =  not q || not p
+
+p &| q  =  p && p &| p
+
+p &| q  =  p && p &| q
+
+p &| q  =  p && p &| False
+
+p &| q  =  p && p &| True
+
+p &| q  =  p && q &| q
+
+p &| q  =  p && False &| q
+
+p &| q  =  p && True &| q
+
+p &| q  =  q && p &| p
+
+p &| q  =  q && p &| q
+
+p &| q  =  q && p &| False
+
+p &| q  =  q && p &| True
+
+p &| q  =  q && q &| q
+
+p &| q  =  q && False &| q
+
+p &| q  =  q && True &| q
+
+p &| q  =  p || p &| p
+
+p &| q  =  p || p &| q
+
+p &| q  =  p || p &| False
+
+p &| q  =  p || p &| True
+
+p &| q  =  p || q &| q
+
+p &| q  =  p || False &| q
+
+p &| q  =  p || True &| q
+
+p &| q  =  q || p &| p
+
+p &| q  =  q || p &| q
+
+p &| q  =  q || p &| False
+
+p &| q  =  q || p &| True
+
+p &| q  =  q || q &| q
+
+p &| q  =  q || False &| q
+
+p &| q  =  q || True &| q
+
+p &| q  =  p && (not p && q)
+
+p &| q  =  p && (not p || q)
+
+p &| q  =  p && (q && not p)
+
+p &| q  =  p && (q || not p)
+
+p &| q  =  q && (not q && p)
+
+p &| q  =  q && (not q || p)
+
+p &| q  =  q && (p && not q)
+
+p &| q  =  q && (p || not q)
+
+p &| q  =  p || not p && q
+
+p &| q  =  p || (not p || q)
+
+p &| q  =  p || q && not p
+
+p &| q  =  p || (q || not p)
+
+p &| q  =  q || not q && p
+
+p &| q  =  q || (not q || p)
+
+p &| q  =  q || p && not q
+
+p &| q  =  q || (p || not q)
+
+p &| q  =  not p && (p || q)
+
+p &| q  =  not p && (q || p)
+
+p &| q  =  not q && (p || q)
+
+p &| q  =  not q && (q || p)
+
+p &| q  =  not p || p && q
+
+p &| q  =  not p || q && p
+
+p &| q  =  not q || p && q
+
+p &| q  =  not q || q && p
+
+p &| q  =  (p || q) && not p
+
+p &| q  =  (p || q) && not q
+
+p &| q  =  (q || p) && not p
+
+p &| q  =  (q || p) && not q
+
+p &| q  =  p && q || not p
+
+p &| q  =  p && q || not q
+
+p &| q  =  q && p || not p
+
+p &| q  =  q && p || not q
+
+p &| q  =  p && p &| not p
+
+p &| q  =  p && p &| not q
+
+p &| q  =  p && q &| not q
+
+p &| q  =  p && False &| not q
+
+p &| q  =  p && True &| not q
+
+p &| q  =  p && not p &| p
+
+p &| q  =  p && not p &| q
+
+p &| q  =  p && not p &| False
+
+p &| q  =  p && not p &| True
+
+p &| q  =  p && not q &| q
+
+p &| q  =  q && p &| not p
+
+p &| q  =  q && p &| not q
+
+p &| q  =  q && q &| not q
+
+p &| q  =  q && False &| not q
+
+p &| q  =  q && True &| not q
+
+p &| q  =  q && not p &| p
+
+p &| q  =  q && not p &| q
+
+p &| q  =  q && not p &| False
+
+p &| q  =  q && not p &| True
+
+p &| q  =  q && not q &| q
+
+p &| q  =  p || p &| not p
+
+p &| q  =  p || p &| not q
+
+p &| q  =  p || q &| not q
+
+p &| q  =  p || False &| not q
+
+p &| q  =  p || True &| not q
+
+p &| q  =  p || not p &| p
+
+p &| q  =  p || not p &| q
+
+p &| q  =  p || not p &| False
+
+p &| q  =  p || not p &| True
+
+p &| q  =  p || not q &| q
+
+p &| q  =  q || p &| not p
+
+p &| q  =  q || p &| not q
+
+p &| q  =  q || q &| not q
+
+p &| q  =  q || False &| not q
+
+p &| q  =  q || True &| not q
+
+p &| q  =  q || not p &| p
+
+p &| q  =  q || not p &| q
+
+p &| q  =  q || not p &| False
+
+p &| q  =  q || not p &| True
+
+p &| q  =  q || not q &| q
+
+p &| q  =  p && not (p &| p)
+
+p &| q  =  p && not (p &| q)
+
+p &| q  =  p && not (p &| False)
+
+p &| q  =  p && not (p &| True)
+
+p &| q  =  p && not (q &| q)
+
+p &| q  =  p && not (False &| q)
+
+p &| q  =  p && not (True &| q)
+
+p &| q  =  q && not (p &| p)
+
+p &| q  =  q && not (p &| q)
+
+p &| q  =  q && not (p &| False)
+
+p &| q  =  q && not (p &| True)
+
+p &| q  =  q && not (q &| q)
+
+p &| q  =  q && not (False &| q)
+
+p &| q  =  q && not (True &| q)
+
+p &| q  =  not p && p &| p
+
+p &| q  =  not p && p &| q
+
+p &| q  =  not p && p &| False
+
+p &| q  =  not p && p &| True
+
+p &| q  =  not p && q &| q
+
+p &| q  =  not p && False &| q
+
+p &| q  =  not p && True &| q
+
+p &| q  =  not q && p &| p
+
+p &| q  =  not q && p &| q
+
+p &| q  =  not q && p &| False
+
+p &| q  =  not q && p &| True
+
+p &| q  =  not q && q &| q
+
+p &| q  =  not q && False &| q
+
+p &| q  =  not q && True &| q
+
+p &| q  =  p || not (p &| p)
+
+p &| q  =  p || not (p &| q)
+
+p &| q  =  p || not (p &| False)
+
+p &| q  =  p || not (p &| True)
+
+p &| q  =  p || not (q &| q)
+
+p &| q  =  p || not (False &| q)
+
+p &| q  =  p || not (True &| q)
+
+p &| q  =  q || not (p &| p)
+
+p &| q  =  q || not (p &| q)
+
+p &| q  =  q || not (p &| False)
+
+p &| q  =  q || not (p &| True)
+
+p &| q  =  q || not (q &| q)
+
+p &| q  =  q || not (False &| q)
+
+p &| q  =  q || not (True &| q)
+
+p &| q  =  not p || p &| p
+
+p &| q  =  not p || p &| q
+
+p &| q  =  not p || p &| False
+
+p &| q  =  not p || p &| True
+
+p &| q  =  not p || q &| q
+
+p &| q  =  not p || False &| q
+
+p &| q  =  not p || True &| q
+
+p &| q  =  not q || p &| p
+
+p &| q  =  not q || p &| q
+
+p &| q  =  not q || p &| False
+
+p &| q  =  not q || p &| True
+
+p &| q  =  not q || q &| q
+
+p &| q  =  not q || False &| q
+
+p &| q  =  not q || True &| q
+
+
+pattern candidates:
+
+p &| q  =  p
+
+p &| q  =  q
+
+p &| q  =  False
+
+p &| q  =  True
+
+p &| q  =  not p
+
+p &| q  =  not q
+
+p &| False  =  p
+p &| True  =  False
+
+p &| False  =  p
+p &| True  =  True
+
+p &| False  =  False
+p &| True  =  p
+
+p &| False  =  False
+p &| True  =  True
+
+p &| False  =  True
+p &| True  =  p
+
+p &| False  =  True
+p &| True  =  False
+
+False &| p  =  p
+True &| p  =  False
+
+False &| p  =  p
+True &| p  =  True
+
+False &| p  =  False
+True &| p  =  p
+
+False &| p  =  False
+True &| p  =  True
+
+False &| p  =  True
+True &| p  =  p
+
+False &| p  =  True
+True &| p  =  False
+
+p &| q  =  p && q
+
+p &| q  =  q && p
+
+p &| q  =  p || q
+
+p &| q  =  q || p
+
+p &| False  =  p
+p &| True  =  not p
+
+p &| False  =  False
+p &| True  =  not p
+
+p &| False  =  True
+p &| True  =  not p
+
+p &| False  =  not p
+p &| True  =  p
+
+p &| False  =  not p
+p &| True  =  False
+
+p &| False  =  not p
+p &| True  =  True
+
+False &| p  =  p
+True &| p  =  not p
+
+False &| p  =  False
+True &| p  =  not p
+
+False &| p  =  True
+True &| p  =  not p
+
+False &| p  =  not p
+True &| p  =  p
+
+False &| p  =  not p
+True &| p  =  False
+
+False &| p  =  not p
+True &| p  =  True
+
+False &| False  =  False
+False &| True  =  False
+True &| False  =  False
+True &| True  =  True
+
+False &| False  =  False
+False &| True  =  False
+True &| False  =  True
+True &| True  =  False
+
+False &| False  =  False
+False &| True  =  True
+True &| False  =  False
+True &| True  =  False
+
+False &| False  =  False
+False &| True  =  True
+True &| False  =  True
+True &| True  =  False
+
+False &| False  =  False
+False &| True  =  True
+True &| False  =  True
+True &| True  =  True
+
+False &| False  =  True
+False &| True  =  False
+True &| False  =  False
+True &| True  =  False
+
+False &| False  =  True
+False &| True  =  False
+True &| False  =  False
+True &| True  =  True
+
+False &| False  =  True
+False &| True  =  False
+True &| False  =  True
+True &| True  =  True
+
+False &| False  =  True
+False &| True  =  True
+True &| False  =  False
+True &| True  =  True
+
+False &| False  =  True
+False &| True  =  True
+True &| False  =  True
+True &| True  =  False
+
+p &| q  =  not p && q
+
+p &| q  =  not q && p
+
+p &| q  =  not p || q
+
+p &| q  =  not q || p
+
+p &| q  =  p && not q
+
+p &| q  =  q && not p
+
+p &| q  =  p || not q
+
+p &| q  =  q || not p
+
+p &| q  =  not p && not q
+
+p &| q  =  not q && not p
+
+p &| q  =  not p || not q
+
+p &| q  =  not q || not p
+
+p &| q  =  (not p || q) && p
+
+p &| q  =  (not q || p) && q
+
+p &| q  =  (p || not q) && q
+
+p &| q  =  (q || not p) && p
+
+p &| q  =  not p && q || p
+
+p &| q  =  not q && p || q
+
+p &| q  =  p && not q || q
+
+p &| q  =  q && not p || p
+
+p &| q  =  p && (not p && q)
+
+p &| q  =  p && (not p || q)
+
+p &| q  =  p && (q && not p)
+
+p &| q  =  p && (q || not p)
+
+p &| q  =  q && (not q && p)
+
+p &| q  =  q && (not q || p)
+
+p &| q  =  q && (p && not q)
+
+p &| q  =  q && (p || not q)
+
+p &| q  =  p || not p && q
+
+p &| q  =  p || (not p || q)
+
+p &| q  =  p || q && not p
+
+p &| q  =  p || (q || not p)
+
+p &| q  =  q || not q && p
+
+p &| q  =  q || (not q || p)
+
+p &| q  =  q || p && not q
+
+p &| q  =  q || (p || not q)
+
+p &| q  =  not p && (p && q)
+
+p &| q  =  not p && (q && p)
+
+p &| q  =  not p && (p || q)
+
+p &| q  =  not p && (q || p)
+
+p &| q  =  not q && (p && q)
+
+p &| q  =  not q && (q && p)
+
+p &| q  =  not q && (p || q)
+
+p &| q  =  not q && (q || p)
+
+p &| q  =  not p || p && q
+
+p &| q  =  not p || q && p
+
+p &| q  =  not p || (p || q)
+
+p &| q  =  not p || (q || p)
+
+p &| q  =  not q || p && q
+
+p &| q  =  not q || q && p
+
+p &| q  =  not q || (p || q)
+
+p &| q  =  not q || (q || p)
+
+p &| q  =  (p || q) && not p
+
+p &| q  =  (p || q) && not q
+
+p &| q  =  (q || p) && not p
+
+p &| q  =  (q || p) && not q
+
+p &| q  =  p && q || not p
+
+p &| q  =  p && q || not q
+
+p &| q  =  q && p || not p
+
+p &| q  =  q && p || not q
+
+
+Candidates for: gcd :: Int -> Int -> Int
+  pruning with 0/0 rules
+  [3,0,9,0,54,0,405,0,3402] direct candidates, 0 duplicates
+  [3,7,18,60,150,469,1245,3812,10634] pattern candidates, 0 duplicates
+
+no rules.
+
+direct candidates:
+
+gcd x y  =  x
+
+gcd x y  =  y
+
+gcd x y  =  0
+
+gcd x y  =  x `mod` x
+
+gcd x y  =  x `mod` y
+
+gcd x y  =  x `mod` 0
+
+gcd x y  =  y `mod` x
+
+gcd x y  =  y `mod` y
+
+gcd x y  =  y `mod` 0
+
+gcd x y  =  0 `mod` x
+
+gcd x y  =  0 `mod` y
+
+gcd x y  =  0 `mod` 0
+
+gcd x y  =  (x `mod` x) `mod` x
+
+gcd x y  =  (x `mod` x) `mod` y
+
+gcd x y  =  (x `mod` x) `mod` 0
+
+gcd x y  =  (x `mod` y) `mod` x
+
+gcd x y  =  (x `mod` y) `mod` y
+
+gcd x y  =  (x `mod` y) `mod` 0
+
+gcd x y  =  (x `mod` 0) `mod` x
+
+gcd x y  =  (x `mod` 0) `mod` y
+
+gcd x y  =  (x `mod` 0) `mod` 0
+
+gcd x y  =  (y `mod` x) `mod` x
+
+gcd x y  =  (y `mod` x) `mod` y
+
+gcd x y  =  (y `mod` x) `mod` 0
+
+gcd x y  =  (y `mod` y) `mod` x
+
+gcd x y  =  (y `mod` y) `mod` y
+
+gcd x y  =  (y `mod` y) `mod` 0
+
+gcd x y  =  (y `mod` 0) `mod` x
+
+gcd x y  =  (y `mod` 0) `mod` y
+
+gcd x y  =  (y `mod` 0) `mod` 0
+
+gcd x y  =  (0 `mod` x) `mod` x
+
+gcd x y  =  (0 `mod` x) `mod` y
+
+gcd x y  =  (0 `mod` x) `mod` 0
+
+gcd x y  =  (0 `mod` y) `mod` x
+
+gcd x y  =  (0 `mod` y) `mod` y
+
+gcd x y  =  (0 `mod` y) `mod` 0
+
+gcd x y  =  (0 `mod` 0) `mod` x
+
+gcd x y  =  (0 `mod` 0) `mod` y
+
+gcd x y  =  (0 `mod` 0) `mod` 0
+
+gcd x y  =  x `mod` (x `mod` x)
+
+gcd x y  =  x `mod` (x `mod` y)
+
+gcd x y  =  x `mod` (x `mod` 0)
+
+gcd x y  =  x `mod` (y `mod` x)
+
+gcd x y  =  x `mod` (y `mod` y)
+
+gcd x y  =  x `mod` (y `mod` 0)
+
+gcd x y  =  x `mod` (0 `mod` x)
+
+gcd x y  =  x `mod` (0 `mod` y)
+
+gcd x y  =  x `mod` (0 `mod` 0)
+
+gcd x y  =  y `mod` (x `mod` x)
+
+gcd x y  =  y `mod` (x `mod` y)
+
+gcd x y  =  y `mod` (x `mod` 0)
+
+gcd x y  =  y `mod` (y `mod` x)
+
+gcd x y  =  y `mod` (y `mod` y)
+
+gcd x y  =  y `mod` (y `mod` 0)
+
+gcd x y  =  y `mod` (0 `mod` x)
+
+gcd x y  =  y `mod` (0 `mod` y)
+
+gcd x y  =  y `mod` (0 `mod` 0)
+
+gcd x y  =  0 `mod` (x `mod` x)
+
+gcd x y  =  0 `mod` (x `mod` y)
+
+gcd x y  =  0 `mod` (x `mod` 0)
+
+gcd x y  =  0 `mod` (y `mod` x)
+
+gcd x y  =  0 `mod` (y `mod` y)
+
+gcd x y  =  0 `mod` (y `mod` 0)
+
+gcd x y  =  0 `mod` (0 `mod` x)
+
+gcd x y  =  0 `mod` (0 `mod` y)
+
+gcd x y  =  0 `mod` (0 `mod` 0)
+
+
+pattern candidates:
+
+gcd x y  =  x
+
+gcd x y  =  y
+
+gcd x y  =  0
+
+gcd x 0  =  x
+gcd x y  =  y
+
+gcd x 0  =  x
+gcd x y  =  0
+
+gcd x 0  =  0
+gcd x y  =  x
+
+gcd x 0  =  0
+gcd x y  =  y
+
+gcd 0 x  =  x
+gcd x y  =  0
+
+gcd 0 x  =  0
+gcd x y  =  x
+
+gcd 0 x  =  0
+gcd x y  =  y
+
+gcd x y  =  x `mod` x
+
+gcd x y  =  x `mod` y
+
+gcd x y  =  x `mod` 0
+
+gcd x y  =  y `mod` x
+
+gcd x y  =  y `mod` y
+
+gcd x y  =  y `mod` 0
+
+gcd x y  =  0 `mod` x
+
+gcd x y  =  0 `mod` y
+
+gcd x y  =  0 `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  y
+
+gcd x 0  =  x
+gcd x y  =  x `mod` x
+
+gcd x 0  =  x
+gcd x y  =  x `mod` y
+
+gcd x 0  =  x
+gcd x y  =  x `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  y `mod` x
+
+gcd x 0  =  x
+gcd x y  =  y `mod` y
+
+gcd x 0  =  x
+gcd x y  =  y `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` x
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` y
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  x `mod` x
+
+gcd x 0  =  0
+gcd x y  =  x `mod` y
+
+gcd x 0  =  0
+gcd x y  =  x `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  y `mod` x
+
+gcd x 0  =  0
+gcd x y  =  y `mod` y
+
+gcd x 0  =  0
+gcd x y  =  y `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` x
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` y
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` 0
+
+gcd x 0  =  x `mod` x
+gcd x y  =  x
+
+gcd x 0  =  x `mod` x
+gcd x y  =  y
+
+gcd x 0  =  x `mod` x
+gcd x y  =  0
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  x
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  y
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  0
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  x
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  y
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  0
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  x
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  y
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  0
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` 0
+
+gcd 0 x  =  x `mod` x
+gcd x y  =  x
+
+gcd 0 x  =  x `mod` x
+gcd x y  =  y
+
+gcd 0 x  =  x `mod` x
+gcd x y  =  0
+
+gcd 0 x  =  x `mod` 0
+gcd x y  =  x
+
+gcd 0 x  =  x `mod` 0
+gcd x y  =  y
+
+gcd 0 x  =  x `mod` 0
+gcd x y  =  0
+
+gcd 0 x  =  0 `mod` x
+gcd x y  =  x
+
+gcd 0 x  =  0 `mod` x
+gcd x y  =  y
+
+gcd 0 x  =  0 `mod` x
+gcd x y  =  0
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  x
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  y
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  0
+
+gcd x y  =  (x `mod` x) `mod` x
+
+gcd x y  =  (x `mod` x) `mod` y
+
+gcd x y  =  (x `mod` x) `mod` 0
+
+gcd x y  =  (x `mod` y) `mod` x
+
+gcd x y  =  (x `mod` y) `mod` y
+
+gcd x y  =  (x `mod` y) `mod` 0
+
+gcd x y  =  (x `mod` 0) `mod` x
+
+gcd x y  =  (x `mod` 0) `mod` y
+
+gcd x y  =  (x `mod` 0) `mod` 0
+
+gcd x y  =  (y `mod` x) `mod` x
+
+gcd x y  =  (y `mod` x) `mod` y
+
+gcd x y  =  (y `mod` x) `mod` 0
+
+gcd x y  =  (y `mod` y) `mod` x
+
+gcd x y  =  (y `mod` y) `mod` y
+
+gcd x y  =  (y `mod` y) `mod` 0
+
+gcd x y  =  (y `mod` 0) `mod` x
+
+gcd x y  =  (y `mod` 0) `mod` y
+
+gcd x y  =  (y `mod` 0) `mod` 0
+
+gcd x y  =  (0 `mod` x) `mod` x
+
+gcd x y  =  (0 `mod` x) `mod` y
+
+gcd x y  =  (0 `mod` x) `mod` 0
+
+gcd x y  =  (0 `mod` y) `mod` x
+
+gcd x y  =  (0 `mod` y) `mod` y
+
+gcd x y  =  (0 `mod` y) `mod` 0
+
+gcd x y  =  (0 `mod` 0) `mod` x
+
+gcd x y  =  (0 `mod` 0) `mod` y
+
+gcd x y  =  (0 `mod` 0) `mod` 0
+
+gcd x y  =  x `mod` (x `mod` x)
+
+gcd x y  =  x `mod` (x `mod` y)
+
+gcd x y  =  x `mod` (x `mod` 0)
+
+gcd x y  =  x `mod` (y `mod` x)
+
+gcd x y  =  x `mod` (y `mod` y)
+
+gcd x y  =  x `mod` (y `mod` 0)
+
+gcd x y  =  x `mod` (0 `mod` x)
+
+gcd x y  =  x `mod` (0 `mod` y)
+
+gcd x y  =  x `mod` (0 `mod` 0)
+
+gcd x y  =  y `mod` (x `mod` x)
+
+gcd x y  =  y `mod` (x `mod` y)
+
+gcd x y  =  y `mod` (x `mod` 0)
+
+gcd x y  =  y `mod` (y `mod` x)
+
+gcd x y  =  y `mod` (y `mod` y)
+
+gcd x y  =  y `mod` (y `mod` 0)
+
+gcd x y  =  y `mod` (0 `mod` x)
+
+gcd x y  =  y `mod` (0 `mod` y)
+
+gcd x y  =  y `mod` (0 `mod` 0)
+
+gcd x y  =  0 `mod` (x `mod` x)
+
+gcd x y  =  0 `mod` (x `mod` y)
+
+gcd x y  =  0 `mod` (x `mod` 0)
+
+gcd x y  =  0 `mod` (y `mod` x)
+
+gcd x y  =  0 `mod` (y `mod` y)
+
+gcd x y  =  0 `mod` (y `mod` 0)
+
+gcd x y  =  0 `mod` (0 `mod` x)
+
+gcd x y  =  0 `mod` (0 `mod` y)
+
+gcd x y  =  0 `mod` (0 `mod` 0)
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  x `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  x `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  x `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  y `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  y `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  y `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  0 `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  0 `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  0 `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  x `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  x `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  x `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  y `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  y `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  y `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  0 `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  0 `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  0 `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x `mod` x
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x `mod` x
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x `mod` x
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x `mod` 0
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x `mod` 0
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  x `mod` 0
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0 `mod` x
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0 `mod` x
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0 `mod` x
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0 `mod` 0
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0 `mod` 0
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  x
+gcd x 0  =  0 `mod` 0
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  x `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  x `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  x `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  y `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  y `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  y `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  0 `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  0 `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  0 `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  x `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  x `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  x `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  y `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  y `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  y `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  0 `mod` x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  0 `mod` y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  0 `mod` 0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x `mod` x
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x `mod` x
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x `mod` x
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x `mod` 0
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x `mod` 0
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  x `mod` 0
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0 `mod` x
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0 `mod` x
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0 `mod` x
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0 `mod` 0
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0 `mod` 0
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  0
+gcd x 0  =  0 `mod` 0
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` x
+gcd x 0  =  x
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` x
+gcd x 0  =  x
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` x
+gcd x 0  =  x
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` x
+gcd x 0  =  0
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` x
+gcd x 0  =  0
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` x
+gcd x 0  =  0
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` 0
+gcd x 0  =  x
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` 0
+gcd x 0  =  x
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` 0
+gcd x 0  =  x
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` 0
+gcd x 0  =  0
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` 0
+gcd x 0  =  0
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  x `mod` 0
+gcd x 0  =  0
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` x
+gcd x 0  =  x
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` x
+gcd x 0  =  x
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` x
+gcd x 0  =  x
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` x
+gcd x 0  =  0
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` x
+gcd x 0  =  0
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` x
+gcd x 0  =  0
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` 0
+gcd x 0  =  x
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` 0
+gcd x 0  =  x
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` 0
+gcd x 0  =  x
+gcd x y  =  0
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` 0
+gcd x 0  =  0
+gcd x y  =  x
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` 0
+gcd x 0  =  0
+gcd x y  =  y
+
+gcd 0 0  =  0
+gcd 0 x  =  0 `mod` 0
+gcd x 0  =  0
+gcd x y  =  0
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  x
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  y
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  x
+gcd x 0  =  x
+gcd x y  =  0
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  x
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  y
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  x
+gcd x 0  =  0
+gcd x y  =  0
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  x
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  y
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  0
+gcd x 0  =  x
+gcd x y  =  0
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  x
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  y
+
+gcd 0 0  =  0 `mod` 0
+gcd 0 x  =  0
+gcd x 0  =  0
+gcd x y  =  0
+
+gcd x 0  =  x
+gcd x y  =  gcd x (x `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  gcd x (y `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  gcd x (y `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  gcd x (0 `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  gcd y (x `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  gcd y (y `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  gcd y (y `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  gcd y (0 `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  gcd 0 (x `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  gcd 0 (y `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  gcd 0 (y `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  gcd 0 (0 `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  gcd (x `mod` x) x
+
+gcd x 0  =  x
+gcd x y  =  gcd (x `mod` x) y
+
+gcd x 0  =  x
+gcd x y  =  gcd (x `mod` x) 0
+
+gcd x 0  =  x
+gcd x y  =  gcd (x `mod` y) x
+
+gcd x 0  =  x
+gcd x y  =  gcd (x `mod` y) y
+
+gcd x 0  =  x
+gcd x y  =  gcd (x `mod` y) 0
+
+gcd x 0  =  x
+gcd x y  =  gcd (y `mod` x) x
+
+gcd x 0  =  x
+gcd x y  =  gcd (y `mod` x) y
+
+gcd x 0  =  x
+gcd x y  =  gcd (y `mod` x) 0
+
+gcd x 0  =  x
+gcd x y  =  gcd (0 `mod` x) x
+
+gcd x 0  =  x
+gcd x y  =  gcd (0 `mod` x) y
+
+gcd x 0  =  x
+gcd x y  =  gcd (0 `mod` x) 0
+
+gcd x 0  =  0
+gcd x y  =  gcd x (x `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  gcd x (y `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  gcd x (y `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  gcd x (0 `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  gcd y (x `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  gcd y (y `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  gcd y (y `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  gcd y (0 `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  gcd 0 (x `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  gcd 0 (y `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  gcd 0 (y `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  gcd 0 (0 `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  gcd (x `mod` x) x
+
+gcd x 0  =  0
+gcd x y  =  gcd (x `mod` x) y
+
+gcd x 0  =  0
+gcd x y  =  gcd (x `mod` x) 0
+
+gcd x 0  =  0
+gcd x y  =  gcd (x `mod` y) x
+
+gcd x 0  =  0
+gcd x y  =  gcd (x `mod` y) y
+
+gcd x 0  =  0
+gcd x y  =  gcd (x `mod` y) 0
+
+gcd x 0  =  0
+gcd x y  =  gcd (y `mod` x) x
+
+gcd x 0  =  0
+gcd x y  =  gcd (y `mod` x) y
+
+gcd x 0  =  0
+gcd x y  =  gcd (y `mod` x) 0
+
+gcd x 0  =  0
+gcd x y  =  gcd (0 `mod` x) x
+
+gcd x 0  =  0
+gcd x y  =  gcd (0 `mod` x) y
+
+gcd x 0  =  0
+gcd x y  =  gcd (0 `mod` x) 0
+
+gcd 0 x  =  x
+gcd x y  =  gcd x (x `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  gcd x (y `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  gcd x (y `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  gcd x (0 `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  gcd y (x `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  gcd y (y `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  gcd y (y `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  gcd y (0 `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  gcd 0 (x `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  gcd 0 (y `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  gcd 0 (y `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  gcd 0 (0 `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  gcd (x `mod` x) x
+
+gcd 0 x  =  x
+gcd x y  =  gcd (x `mod` x) y
+
+gcd 0 x  =  x
+gcd x y  =  gcd (x `mod` x) 0
+
+gcd 0 x  =  x
+gcd x y  =  gcd (x `mod` y) x
+
+gcd 0 x  =  x
+gcd x y  =  gcd (x `mod` y) y
+
+gcd 0 x  =  x
+gcd x y  =  gcd (x `mod` y) 0
+
+gcd 0 x  =  x
+gcd x y  =  gcd (y `mod` x) x
+
+gcd 0 x  =  x
+gcd x y  =  gcd (y `mod` x) y
+
+gcd 0 x  =  x
+gcd x y  =  gcd (y `mod` x) 0
+
+gcd 0 x  =  x
+gcd x y  =  gcd (0 `mod` x) x
+
+gcd 0 x  =  x
+gcd x y  =  gcd (0 `mod` x) y
+
+gcd 0 x  =  x
+gcd x y  =  gcd (0 `mod` x) 0
+
+gcd 0 x  =  0
+gcd x y  =  gcd x (x `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  gcd x (y `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  gcd x (y `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  gcd x (0 `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  gcd y (x `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  gcd y (y `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  gcd y (y `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  gcd y (0 `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  gcd 0 (x `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  gcd 0 (y `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  gcd 0 (y `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  gcd 0 (0 `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  gcd (x `mod` x) x
+
+gcd 0 x  =  0
+gcd x y  =  gcd (x `mod` x) y
+
+gcd 0 x  =  0
+gcd x y  =  gcd (x `mod` x) 0
+
+gcd 0 x  =  0
+gcd x y  =  gcd (x `mod` y) x
+
+gcd 0 x  =  0
+gcd x y  =  gcd (x `mod` y) y
+
+gcd 0 x  =  0
+gcd x y  =  gcd (x `mod` y) 0
+
+gcd 0 x  =  0
+gcd x y  =  gcd (y `mod` x) x
+
+gcd 0 x  =  0
+gcd x y  =  gcd (y `mod` x) y
+
+gcd 0 x  =  0
+gcd x y  =  gcd (y `mod` x) 0
+
+gcd 0 x  =  0
+gcd x y  =  gcd (0 `mod` x) x
+
+gcd 0 x  =  0
+gcd x y  =  gcd (0 `mod` x) y
+
+gcd 0 x  =  0
+gcd x y  =  gcd (0 `mod` x) 0
+
+gcd x 0  =  x
+gcd x y  =  (x `mod` x) `mod` x
+
+gcd x 0  =  x
+gcd x y  =  (x `mod` x) `mod` y
+
+gcd x 0  =  x
+gcd x y  =  (x `mod` x) `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  (x `mod` y) `mod` x
+
+gcd x 0  =  x
+gcd x y  =  (x `mod` y) `mod` y
+
+gcd x 0  =  x
+gcd x y  =  (x `mod` y) `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  (x `mod` 0) `mod` x
+
+gcd x 0  =  x
+gcd x y  =  (x `mod` 0) `mod` y
+
+gcd x 0  =  x
+gcd x y  =  (x `mod` 0) `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  (y `mod` x) `mod` x
+
+gcd x 0  =  x
+gcd x y  =  (y `mod` x) `mod` y
+
+gcd x 0  =  x
+gcd x y  =  (y `mod` x) `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  (y `mod` y) `mod` x
+
+gcd x 0  =  x
+gcd x y  =  (y `mod` y) `mod` y
+
+gcd x 0  =  x
+gcd x y  =  (y `mod` y) `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  (y `mod` 0) `mod` x
+
+gcd x 0  =  x
+gcd x y  =  (y `mod` 0) `mod` y
+
+gcd x 0  =  x
+gcd x y  =  (y `mod` 0) `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  (0 `mod` x) `mod` x
+
+gcd x 0  =  x
+gcd x y  =  (0 `mod` x) `mod` y
+
+gcd x 0  =  x
+gcd x y  =  (0 `mod` x) `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  (0 `mod` y) `mod` x
+
+gcd x 0  =  x
+gcd x y  =  (0 `mod` y) `mod` y
+
+gcd x 0  =  x
+gcd x y  =  (0 `mod` y) `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  (0 `mod` 0) `mod` x
+
+gcd x 0  =  x
+gcd x y  =  (0 `mod` 0) `mod` y
+
+gcd x 0  =  x
+gcd x y  =  (0 `mod` 0) `mod` 0
+
+gcd x 0  =  x
+gcd x y  =  x `mod` (x `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  x `mod` (x `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  x `mod` (x `mod` 0)
+
+gcd x 0  =  x
+gcd x y  =  x `mod` (y `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  x `mod` (y `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  x `mod` (y `mod` 0)
+
+gcd x 0  =  x
+gcd x y  =  x `mod` (0 `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  x `mod` (0 `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  x `mod` (0 `mod` 0)
+
+gcd x 0  =  x
+gcd x y  =  y `mod` (x `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  y `mod` (x `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  y `mod` (x `mod` 0)
+
+gcd x 0  =  x
+gcd x y  =  y `mod` (y `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  y `mod` (y `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  y `mod` (y `mod` 0)
+
+gcd x 0  =  x
+gcd x y  =  y `mod` (0 `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  y `mod` (0 `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  y `mod` (0 `mod` 0)
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` (x `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` (x `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` (x `mod` 0)
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` (y `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` (y `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` (y `mod` 0)
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` (0 `mod` x)
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` (0 `mod` y)
+
+gcd x 0  =  x
+gcd x y  =  0 `mod` (0 `mod` 0)
+
+gcd x 0  =  0
+gcd x y  =  (x `mod` x) `mod` x
+
+gcd x 0  =  0
+gcd x y  =  (x `mod` x) `mod` y
+
+gcd x 0  =  0
+gcd x y  =  (x `mod` x) `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  (x `mod` y) `mod` x
+
+gcd x 0  =  0
+gcd x y  =  (x `mod` y) `mod` y
+
+gcd x 0  =  0
+gcd x y  =  (x `mod` y) `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  (x `mod` 0) `mod` x
+
+gcd x 0  =  0
+gcd x y  =  (x `mod` 0) `mod` y
+
+gcd x 0  =  0
+gcd x y  =  (x `mod` 0) `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  (y `mod` x) `mod` x
+
+gcd x 0  =  0
+gcd x y  =  (y `mod` x) `mod` y
+
+gcd x 0  =  0
+gcd x y  =  (y `mod` x) `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  (y `mod` y) `mod` x
+
+gcd x 0  =  0
+gcd x y  =  (y `mod` y) `mod` y
+
+gcd x 0  =  0
+gcd x y  =  (y `mod` y) `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  (y `mod` 0) `mod` x
+
+gcd x 0  =  0
+gcd x y  =  (y `mod` 0) `mod` y
+
+gcd x 0  =  0
+gcd x y  =  (y `mod` 0) `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  (0 `mod` x) `mod` x
+
+gcd x 0  =  0
+gcd x y  =  (0 `mod` x) `mod` y
+
+gcd x 0  =  0
+gcd x y  =  (0 `mod` x) `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  (0 `mod` y) `mod` x
+
+gcd x 0  =  0
+gcd x y  =  (0 `mod` y) `mod` y
+
+gcd x 0  =  0
+gcd x y  =  (0 `mod` y) `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  (0 `mod` 0) `mod` x
+
+gcd x 0  =  0
+gcd x y  =  (0 `mod` 0) `mod` y
+
+gcd x 0  =  0
+gcd x y  =  (0 `mod` 0) `mod` 0
+
+gcd x 0  =  0
+gcd x y  =  x `mod` (x `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  x `mod` (x `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  x `mod` (x `mod` 0)
+
+gcd x 0  =  0
+gcd x y  =  x `mod` (y `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  x `mod` (y `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  x `mod` (y `mod` 0)
+
+gcd x 0  =  0
+gcd x y  =  x `mod` (0 `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  x `mod` (0 `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  x `mod` (0 `mod` 0)
+
+gcd x 0  =  0
+gcd x y  =  y `mod` (x `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  y `mod` (x `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  y `mod` (x `mod` 0)
+
+gcd x 0  =  0
+gcd x y  =  y `mod` (y `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  y `mod` (y `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  y `mod` (y `mod` 0)
+
+gcd x 0  =  0
+gcd x y  =  y `mod` (0 `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  y `mod` (0 `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  y `mod` (0 `mod` 0)
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` (x `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` (x `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` (x `mod` 0)
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` (y `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` (y `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` (y `mod` 0)
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` (0 `mod` x)
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` (0 `mod` y)
+
+gcd x 0  =  0
+gcd x y  =  0 `mod` (0 `mod` 0)
+
+gcd x 0  =  x `mod` x
+gcd x y  =  x `mod` y
+
+gcd x 0  =  x `mod` x
+gcd x y  =  x `mod` 0
+
+gcd x 0  =  x `mod` x
+gcd x y  =  y `mod` x
+
+gcd x 0  =  x `mod` x
+gcd x y  =  y `mod` y
+
+gcd x 0  =  x `mod` x
+gcd x y  =  y `mod` 0
+
+gcd x 0  =  x `mod` x
+gcd x y  =  0 `mod` x
+
+gcd x 0  =  x `mod` x
+gcd x y  =  0 `mod` y
+
+gcd x 0  =  x `mod` x
+gcd x y  =  0 `mod` 0
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  x `mod` x
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  x `mod` y
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  y `mod` x
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  y `mod` y
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  y `mod` 0
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  0 `mod` x
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  0 `mod` y
+
+gcd x 0  =  x `mod` 0
+gcd x y  =  0 `mod` 0
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  x `mod` x
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  x `mod` y
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  x `mod` 0
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  y `mod` x
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  y `mod` y
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  y `mod` 0
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  0 `mod` y
+
+gcd x 0  =  0 `mod` x
+gcd x y  =  0 `mod` 0
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  x `mod` x
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  x `mod` y
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  x `mod` 0
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  y `mod` x
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  y `mod` y
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  y `mod` 0
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  0 `mod` x
+
+gcd x 0  =  0 `mod` 0
+gcd x y  =  0 `mod` y
+
+gcd x 0  =  (x `mod` x) `mod` x
+gcd x y  =  x
+
+gcd x 0  =  (x `mod` x) `mod` x
+gcd x y  =  y
+
+gcd x 0  =  (x `mod` x) `mod` x
+gcd x y  =  0
+
+gcd x 0  =  (x `mod` x) `mod` 0
+gcd x y  =  x
+
+gcd x 0  =  (x `mod` x) `mod` 0
+gcd x y  =  y
+
+gcd x 0  =  (x `mod` x) `mod` 0
+gcd x y  =  0
+
+gcd x 0  =  (x `mod` 0) `mod` x
+gcd x y  =  x
+
+gcd x 0  =  (x `mod` 0) `mod` x
+gcd x y  =  y
+
+gcd x 0  =  (x `mod` 0) `mod` x
+gcd x y  =  0
+
+gcd x 0  =  (x `mod` 0) `mod` 0
+gcd x y  =  x
+
+gcd x 0  =  (x `mod` 0) `mod` 0
+gcd x y  =  y
+
+gcd x 0  =  (x `mod` 0) `mod` 0
+gcd x y  =  0
+
+gcd x 0  =  (0 `mod` x) `mod` x
+gcd x y  =  x
+
+gcd x 0  =  (0 `mod` x) `mod` x
+gcd x y  =  y
+
+gcd x 0  =  (0 `mod` x) `mod` x
+gcd x y  =  0
+
+gcd x 0  =  (0 `mod` x) `mod` 0
+gcd x y  =  x
+
+gcd x 0  =  (0 `mod` x) `mod` 0
+gcd x y  =  y
+
+gcd x 0  =  (0 `mod` x) `mod` 0
+gcd x y  =  0
+
+gcd x 0  =  (0 `mod` 0) `mod` x
+gcd x y  =  x
+
+gcd x 0  =  (0 `mod` 0) `mod` x
+gcd x y  =  y
+
+gcd x 0  =  (0 `mod` 0) `mod` x
+gcd x y  =  0
+
+gcd x 0  =  (0 `mod` 0) `mod` 0
+gcd x y  =  x
+
+gcd x 0  =  (0 `mod` 0) `mod` 0
+gcd x y  =  y
+
+gcd x 0  =  (0 `mod` 0) `mod` 0
+gcd x y  =  0
+
+gcd x 0  =  x `mod` (x `mod` x)
+gcd x y  =  x
+
+gcd x 0  =  x `mod` (x `mod` x)
+gcd x y  =  y
+
+gcd x 0  =  x `mod` (x `mod` x)
+gcd x y  =  0
+
+gcd x 0  =  x `mod` (x `mod` 0)
+gcd x y  =  x
+
+gcd x 0  =  x `mod` (x `mod` 0)
+gcd x y  =  y
+
+gcd x 0  =  x `mod` (x `mod` 0)
+gcd x y  =  0
+
+gcd x 0  =  x `mod` (0 `mod` x)
+gcd x y  =  x
+
+gcd x 0  =  x `mod` (0 `mod` x)
+gcd x y  =  y
+
+gcd x 0  =  x `mod` (0 `mod` x)
+gcd x y  =  0
+
+gcd x 0  =  x `mod` (0 `mod` 0)
+gcd x y  =  x
+
+gcd x 0  =  x `mod` (0 `mod` 0)
+gcd x y  =  y
+
+gcd x 0  =  x `mod` (0 `mod` 0)
+gcd x y  =  0
+
+gcd x 0  =  0 `mod` (x `mod` x)
+gcd x y  =  x
+
+gcd x 0  =  0 `mod` (x `mod` x)
+gcd x y  =  y
+
+gcd x 0  =  0 `mod` (x `mod` x)
+gcd x y  =  0
+
+gcd x 0  =  0 `mod` (x `mod` 0)
+gcd x y  =  x
+
+gcd x 0  =  0 `mod` (x `mod` 0)
+gcd x y  =  y
+
+gcd x 0  =  0 `mod` (x `mod` 0)
+gcd x y  =  0
+
+gcd x 0  =  0 `mod` (0 `mod` x)
+gcd x y  =  x
+
+gcd x 0  =  0 `mod` (0 `mod` x)
+gcd x y  =  y
+
+gcd x 0  =  0 `mod` (0 `mod` x)
+gcd x y  =  0
+
+gcd x 0  =  0 `mod` (0 `mod` 0)
+gcd x y  =  x
+
+gcd x 0  =  0 `mod` (0 `mod` 0)
+gcd x y  =  y
+
+gcd x 0  =  0 `mod` (0 `mod` 0)
+gcd x y  =  0
+
+gcd 0 x  =  x
+gcd x y  =  (x `mod` x) `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  (x `mod` x) `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  (x `mod` x) `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  (x `mod` y) `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  (x `mod` y) `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  (x `mod` y) `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  (x `mod` 0) `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  (x `mod` 0) `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  (x `mod` 0) `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  (y `mod` x) `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  (y `mod` x) `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  (y `mod` x) `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  (y `mod` y) `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  (y `mod` y) `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  (y `mod` y) `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  (y `mod` 0) `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  (y `mod` 0) `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  (y `mod` 0) `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  (0 `mod` x) `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  (0 `mod` x) `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  (0 `mod` x) `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  (0 `mod` y) `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  (0 `mod` y) `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  (0 `mod` y) `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  (0 `mod` 0) `mod` x
+
+gcd 0 x  =  x
+gcd x y  =  (0 `mod` 0) `mod` y
+
+gcd 0 x  =  x
+gcd x y  =  (0 `mod` 0) `mod` 0
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` (x `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` (x `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` (x `mod` 0)
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` (y `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` (y `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` (y `mod` 0)
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` (0 `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` (0 `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  x `mod` (0 `mod` 0)
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` (x `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` (x `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` (x `mod` 0)
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` (y `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` (y `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` (y `mod` 0)
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` (0 `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` (0 `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  y `mod` (0 `mod` 0)
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` (x `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` (x `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` (x `mod` 0)
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` (y `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` (y `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` (y `mod` 0)
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` (0 `mod` x)
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` (0 `mod` y)
+
+gcd 0 x  =  x
+gcd x y  =  0 `mod` (0 `mod` 0)
+
+gcd 0 x  =  0
+gcd x y  =  (x `mod` x) `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  (x `mod` x) `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  (x `mod` x) `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  (x `mod` y) `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  (x `mod` y) `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  (x `mod` y) `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  (x `mod` 0) `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  (x `mod` 0) `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  (x `mod` 0) `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  (y `mod` x) `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  (y `mod` x) `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  (y `mod` x) `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  (y `mod` y) `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  (y `mod` y) `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  (y `mod` y) `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  (y `mod` 0) `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  (y `mod` 0) `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  (y `mod` 0) `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  (0 `mod` x) `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  (0 `mod` x) `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  (0 `mod` x) `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  (0 `mod` y) `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  (0 `mod` y) `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  (0 `mod` y) `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  (0 `mod` 0) `mod` x
+
+gcd 0 x  =  0
+gcd x y  =  (0 `mod` 0) `mod` y
+
+gcd 0 x  =  0
+gcd x y  =  (0 `mod` 0) `mod` 0
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` (x `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` (x `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` (x `mod` 0)
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` (y `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` (y `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` (y `mod` 0)
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` (0 `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` (0 `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  x `mod` (0 `mod` 0)
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` (x `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` (x `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` (x `mod` 0)
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` (y `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` (y `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` (y `mod` 0)
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` (0 `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` (0 `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  y `mod` (0 `mod` 0)
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` (x `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` (x `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` (x `mod` 0)
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` (y `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` (y `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` (y `mod` 0)
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` (0 `mod` x)
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` (0 `mod` y)
+
+gcd 0 x  =  0
+gcd x y  =  0 `mod` (0 `mod` 0)
+
+gcd 0 x  =  x `mod` x
+gcd x y  =  x `mod` y
+
+gcd 0 x  =  x `mod` x
+gcd x y  =  x `mod` 0
+
+gcd 0 x  =  x `mod` x
+gcd x y  =  y `mod` x
+
+gcd 0 x  =  x `mod` x
+gcd x y  =  y `mod` 0
+
+gcd 0 x  =  x `mod` x
+gcd x y  =  0 `mod` x
+
+gcd 0 x  =  x `mod` x
+gcd x y  =  0 `mod` y
+
+gcd 0 x  =  x `mod` x
+gcd x y  =  0 `mod` 0
+
+gcd 0 x  =  x `mod` 0
+gcd x y  =  x `mod` x
+
+gcd 0 x  =  x `mod` 0
+gcd x y  =  x `mod` y
+
+gcd 0 x  =  x `mod` 0
+gcd x y  =  y `mod` x
+
+gcd 0 x  =  x `mod` 0
+gcd x y  =  y `mod` y
+
+gcd 0 x  =  x `mod` 0
+gcd x y  =  0 `mod` x
+
+gcd 0 x  =  x `mod` 0
+gcd x y  =  0 `mod` y
+
+gcd 0 x  =  x `mod` 0
+gcd x y  =  0 `mod` 0
+
+gcd 0 x  =  0 `mod` x
+gcd x y  =  x `mod` x
+
+gcd 0 x  =  0 `mod` x
+gcd x y  =  x `mod` y
+
+gcd 0 x  =  0 `mod` x
+gcd x y  =  x `mod` 0
+
+gcd 0 x  =  0 `mod` x
+gcd x y  =  y `mod` x
+
+gcd 0 x  =  0 `mod` x
+gcd x y  =  y `mod` y
+
+gcd 0 x  =  0 `mod` x
+gcd x y  =  y `mod` 0
+
+gcd 0 x  =  0 `mod` x
+gcd x y  =  0 `mod` 0
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  x `mod` x
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  x `mod` y
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  x `mod` 0
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  y `mod` x
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  y `mod` y
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  y `mod` 0
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  0 `mod` x
+
+gcd 0 x  =  0 `mod` 0
+gcd x y  =  0 `mod` y
+
+gcd 0 x  =  (x `mod` x) `mod` x
+gcd x y  =  x
+
+gcd 0 x  =  (x `mod` x) `mod` x
+gcd x y  =  y
+
+gcd 0 x  =  (x `mod` x) `mod` x
+gcd x y  =  0
+
+gcd 0 x  =  (x `mod` x) `mod` 0
+gcd x y  =  x
+
+gcd 0 x  =  (x `mod` x) `mod` 0
+gcd x y  =  y
+
+gcd 0 x  =  (x `mod` x) `mod` 0
+gcd x y  =  0
+
+gcd 0 x  =  (x `mod` 0) `mod` x
+gcd x y  =  x
+
+gcd 0 x  =  (x `mod` 0) `mod` x
+gcd x y  =  y
+
+gcd 0 x  =  (x `mod` 0) `mod` x
+gcd x y  =  0
+
+gcd 0 x  =  (x `mod` 0) `mod` 0
+gcd x y  =  x
+
+gcd 0 x  =  (x `mod` 0) `mod` 0
+gcd x y  =  y
+
+gcd 0 x  =  (x `mod` 0) `mod` 0
+gcd x y  =  0
+
+gcd 0 x  =  (0 `mod` x) `mod` x
+gcd x y  =  x
+
+gcd 0 x  =  (0 `mod` x) `mod` x
+gcd x y  =  y
+
+gcd 0 x  =  (0 `mod` x) `mod` x
+gcd x y  =  0
+
+gcd 0 x  =  (0 `mod` x) `mod` 0
+gcd x y  =  x
+
+gcd 0 x  =  (0 `mod` x) `mod` 0
+gcd x y  =  y
+
+gcd 0 x  =  (0 `mod` x) `mod` 0
+gcd x y  =  0
+
+gcd 0 x  =  (0 `mod` 0) `mod` x
+gcd x y  =  x
+
+gcd 0 x  =  (0 `mod` 0) `mod` x
+gcd x y  =  y
+
+gcd 0 x  =  (0 `mod` 0) `mod` x
+gcd x y  =  0
+
+gcd 0 x  =  (0 `mod` 0) `mod` 0
+gcd x y  =  x
+
+gcd 0 x  =  (0 `mod` 0) `mod` 0
+gcd x y  =  y
+
+gcd 0 x  =  (0 `mod` 0) `mod` 0
+gcd x y  =  0
+
+gcd 0 x  =  x `mod` (x `mod` x)
+gcd x y  =  x
+
+gcd 0 x  =  x `mod` (x `mod` x)
+gcd x y  =  y
+
+gcd 0 x  =  x `mod` (x `mod` x)
+gcd x y  =  0
+
+gcd 0 x  =  x `mod` (x `mod` 0)
+gcd x y  =  x
+
+gcd 0 x  =  x `mod` (x `mod` 0)
+gcd x y  =  y
+
+gcd 0 x  =  x `mod` (x `mod` 0)
+gcd x y  =  0
+
+gcd 0 x  =  x `mod` (0 `mod` x)
+gcd x y  =  x
+
+gcd 0 x  =  x `mod` (0 `mod` x)
+gcd x y  =  y
+
+gcd 0 x  =  x `mod` (0 `mod` x)
+gcd x y  =  0
+
+gcd 0 x  =  x `mod` (0 `mod` 0)
+gcd x y  =  x
+
+gcd 0 x  =  x `mod` (0 `mod` 0)
+gcd x y  =  y
+
+gcd 0 x  =  x `mod` (0 `mod` 0)
+gcd x y  =  0
+
+gcd 0 x  =  0 `mod` (x `mod` x)
+gcd x y  =  x
+
+gcd 0 x  =  0 `mod` (x `mod` x)
+gcd x y  =  y
+
+gcd 0 x  =  0 `mod` (x `mod` x)
+gcd x y  =  0
+
+gcd 0 x  =  0 `mod` (x `mod` 0)
+gcd x y  =  x
+
+gcd 0 x  =  0 `mod` (x `mod` 0)
+gcd x y  =  y
+
+gcd 0 x  =  0 `mod` (x `mod` 0)
+gcd x y  =  0
+
+gcd 0 x  =  0 `mod` (0 `mod` x)
+gcd x y  =  x
+
+gcd 0 x  =  0 `mod` (0 `mod` x)
+gcd x y  =  y
+
+gcd 0 x  =  0 `mod` (0 `mod` x)
+gcd x y  =  0
+
+gcd 0 x  =  0 `mod` (0 `mod` 0)
+gcd x y  =  x
+
+gcd 0 x  =  0 `mod` (0 `mod` 0)
+gcd x y  =  y
+
+gcd 0 x  =  0 `mod` (0 `mod` 0)
+gcd x y  =  0
 
 
diff --git a/bench/gps.hs b/bench/gps.hs
--- a/bench/gps.hs
+++ b/bench/gps.hs
@@ -42,7 +42,43 @@
   , prim "fromIntegral" (fromIntegral :: Int -> Float)
   ]
 
+gps1c30p :: IO ()
+gps1c30p  =  conjure "gps1" gps1p
+  [ pr (0 :: Float)
+  , pr (1 :: Float)
+  , pr (1/2 :: Float)
+  , pr (-1 :: Float)
+  , prim "+" ((+) :: Float -> Float -> Float)
+  , prim "*" ((*) :: Float -> Float -> Float)
+  , prim "-" ((-) :: Float -> Float -> Float)
+  , prim "abs" (abs :: Float -> Float)
+  , prim "negate" (negate :: Float -> Float)
+  , prim "id" (id :: Float -> Float)
+  , prim "fromIntegral" (fromIntegral :: Int -> Float)
 
+  , pr (0 :: Int)
+  , pr (1 :: Int)
+  , pr (-1 :: Int)
+  , prim "+" ((+) :: Int -> Int -> Int)
+  , prim "*" ((*) :: Int -> Int -> Int)
+  , prim "-" ((-) :: Int -> Int -> Int)
+  , prim "div" (div :: Int -> Int -> Int)
+  , prim "mod" (mod :: Int -> Int -> Int)
+  , prim "^" ((^) :: Int -> Int -> Int)
+  , prim "abs" (abs :: Int -> Int)
+  , prim "negate" (negate :: Int -> Int)
+  , prim "id" (id :: Int -> Int)
+  , prim "round" (round :: Float -> Int)
+  , prim "truncate" (truncate :: Float -> Int)
+
+  , pr False
+  , pr True
+  , prim "&&" (&&)
+  , prim "||" (||)
+  , prim "not" not
+  ]
+
+
 gps2p :: Int -> Maybe String
 gps2p    0  =  Just "small"
 gps2p  500  =  Just "small"
@@ -404,7 +440,8 @@
 
 gps13p :: [Rational] -> Rational
 gps13p [0,2]  =  1
-gps13p [1,2,3]  =  2
+gps13p [1,3]  =  2
+gps13p [1,2,3]  =  2  -- not hit, but nvm
 gps13p [0,0,2,2]  =  1
 
 gps13g :: [Rational] -> Rational
@@ -736,7 +773,8 @@
 
 -- GPS Benchmark #23 -- Word Stats --
 gps23p :: String -> ([(Int,Int)], Int, Double)
-gps23p ""  =  ([], 0, 1.0/0.0)
+gps23p  =  undefined
+-- gps23p ""  =  ([], 0, 1.0/0.0)
 
 gps23c :: IO ()
 gps23c  =  do
diff --git a/bench/gps.out b/bench/gps.out
--- a/bench/gps.out
+++ b/bench/gps.out
@@ -1,6 +1,6 @@
 gps1 :: Int -> Float -> Float
 -- testing 4 combinations of argument values
--- pruning with 1/2 rules
+-- pruning with 0/5 rules
 -- looking through 1 candidates of size 1
 -- looking through 1 candidates of size 2
 -- looking through 1 candidates of size 3
@@ -13,18 +13,18 @@
 -- pruning with 9/17 rules
 -- looking through 1 candidates of size 1
 -- looking through 2 candidates of size 2
--- looking through 4 candidates of size 3
--- looking through 6 candidates of size 4
--- looking through 8 candidates of size 5
--- looking through 12 candidates of size 6
--- looking through 38 candidates of size 7
+-- looking through 3 candidates of size 3
+-- looking through 3 candidates of size 4
+-- looking through 2 candidates of size 5
+-- looking through 0 candidates of size 6
+-- looking through 32 candidates of size 7
 -- looking through 48 candidates of size 8
--- looking through 112 candidates of size 9
--- looking through 144 candidates of size 10
--- looking through 176 candidates of size 11
--- looking through 704 candidates of size 12
--- looking through 1856 candidates of size 13
--- tested 1744 candidates
+-- looking through 48 candidates of size 9
+-- looking through 48 candidates of size 10
+-- looking through 16 candidates of size 11
+-- looking through 512 candidates of size 12
+-- looking through 1792 candidates of size 13
+-- tested 1204 candidates
 gps2 x  =  if 2000 <= x then Just "large" else (if x < 1000 then Just "small" else Nothing)
 
 gps3 :: Int -> Int -> Int -> [Int]
@@ -37,7 +37,7 @@
 -- looking through 0 candidates of size 5
 -- looking through 1536 candidates of size 6
 -- looking through 0 candidates of size 7
--- looking through 26991 candidates of size 8
+-- looking through 26858 candidates of size 8
 -- tested 19480 candidates
 gps3 x y z  =  enumFromThenTo x (x + z) (y - 1)
 
@@ -67,9 +67,9 @@
 -- looking through 0 candidates of size 7
 -- looking through 0 candidates of size 8
 -- looking through 162 candidates of size 9
--- looking through 30 candidates of size 10
+-- looking through 16 candidates of size 10
 -- looking through 30 candidates of size 11
--- tested 201 candidates
+-- tested 187 candidates
 gps4 cs ds es  =  length cs < length ds && length ds < length es
 
 gps5 :: [Char] -> [Char]
@@ -88,12 +88,12 @@
 -- testing 9 combinations of argument values
 -- pruning with 16/18 rules
 -- looking through 4 candidates of size 1
--- looking through 9 candidates of size 2
--- looking through 33 candidates of size 3
--- looking through 146 candidates of size 4
--- looking through 624 candidates of size 5
--- looking through 2576 candidates of size 6
--- tested 3392 candidates
+-- looking through 3 candidates of size 2
+-- looking through 27 candidates of size 3
+-- looking through 32 candidates of size 4
+-- looking through 506 candidates of size 5
+-- looking through 530 candidates of size 6
+-- tested 1102 candidates
 cannot conjure
 
 gps7 :: [Char] -> ([Char],Int)
@@ -242,9 +242,9 @@
 -- looking through 0 candidates of size 1
 -- looking through 0 candidates of size 2
 -- looking through 7 candidates of size 3
--- looking through 0 candidates of size 4
--- looking through 71 candidates of size 5
--- tested 17 candidates
+-- looking through 7 candidates of size 4
+-- looking through 83 candidates of size 5
+-- tested 29 candidates
 odd x  =  x `mod` 2 /= 0
 
 gps14 :: [Int] -> Int
@@ -297,14 +297,14 @@
 -- pruning with 27/65 rules
 -- looking through 3 candidates of size 1
 -- looking through 4 candidates of size 2
--- looking through 13 candidates of size 3
--- looking through 34 candidates of size 4
--- looking through 75 candidates of size 5
--- looking through 183 candidates of size 6
--- looking through 577 candidates of size 7
--- looking through 1311 candidates of size 8
--- looking through 5282 candidates of size 9
--- tested 2201 candidates
+-- looking through 11 candidates of size 3
+-- looking through 29 candidates of size 4
+-- looking through 60 candidates of size 5
+-- looking through 145 candidates of size 6
+-- looking through 501 candidates of size 7
+-- looking through 1098 candidates of size 8
+-- looking through 4673 candidates of size 9
+-- tested 1852 candidates
 gps17 0  =  0
 gps17 x  =  x * x + gps17 (x - 1)
 
@@ -312,15 +312,15 @@
 -- testing 3 combinations of argument values
 -- pruning with 2/6 rules
 -- looking through 3 candidates of size 1
--- looking through 8 candidates of size 2
--- looking through 11 candidates of size 3
+-- looking through 7 candidates of size 2
+-- looking through 9 candidates of size 3
 -- looking through 44 candidates of size 4
 -- looking through 116 candidates of size 5
 -- looking through 92 candidates of size 6
--- looking through 791 candidates of size 7
+-- looking through 787 candidates of size 7
 -- looking through 220 candidates of size 8
 -- looking through 4632 candidates of size 9
--- tested 3931 candidates
+-- tested 3924 candidates
 gps18 [] []  =  []
 gps18 [] (x:xs)  =  xs
 gps18 (x:xs) []  =  xs
@@ -330,10 +330,10 @@
 -- testing 3 combinations of argument values
 -- pruning with 2/7 rules
 -- looking through 2 candidates of size 1
--- looking through 2 candidates of size 2
+-- looking through 1 candidates of size 2
 -- looking through 0 candidates of size 3
 -- looking through 12 candidates of size 4
--- tested 14 candidates
+-- tested 13 candidates
 gps18 xs ys  =  zipWith (+) xs ys
 
 gps19 :: Int -> [Char] -> [Char]
@@ -348,28 +348,28 @@
 -- testing 12 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 2 candidates of size 1
--- looking through 2 candidates of size 2
--- looking through 2 candidates of size 3
--- looking through 8 candidates of size 4
--- looking through 8 candidates of size 5
--- looking through 14 candidates of size 6
--- looking through 28 candidates of size 7
--- looking through 32 candidates of size 8
--- looking through 40 candidates of size 9
--- looking through 54 candidates of size 10
--- looking through 78 candidates of size 11
--- looking through 78 candidates of size 12
--- looking through 102 candidates of size 13
--- looking through 88 candidates of size 14
--- looking through 104 candidates of size 15
--- looking through 136 candidates of size 16
--- looking through 122 candidates of size 17
--- looking through 92 candidates of size 18
--- looking through 92 candidates of size 19
--- looking through 62 candidates of size 20
--- looking through 62 candidates of size 21
--- looking through 126 candidates of size 22
--- tested 1207 candidates
+-- looking through 1 candidates of size 2
+-- looking through 1 candidates of size 3
+-- looking through 2 candidates of size 4
+-- looking through 2 candidates of size 5
+-- looking through 3 candidates of size 6
+-- looking through 4 candidates of size 7
+-- looking through 4 candidates of size 8
+-- looking through 4 candidates of size 9
+-- looking through 5 candidates of size 10
+-- looking through 5 candidates of size 11
+-- looking through 5 candidates of size 12
+-- looking through 5 candidates of size 13
+-- looking through 4 candidates of size 14
+-- looking through 4 candidates of size 15
+-- looking through 4 candidates of size 16
+-- looking through 3 candidates of size 17
+-- looking through 2 candidates of size 18
+-- looking through 2 candidates of size 19
+-- looking through 1 candidates of size 20
+-- looking through 1 candidates of size 21
+-- looking through 1 candidates of size 22
+-- tested 65 candidates
 isVowel 'a'  =  True
 isVowel 'e'  =  True
 isVowel 'i'  =  True
@@ -438,7 +438,6 @@
 gps22 (c:cs)  =  scrabble1 c + gps22 cs
 
 gps23 :: [Char] -> ([(Int,Int)],Int,Double)
--- testing 1 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 0 candidates of size 1
 -- looking through 0 candidates of size 2
diff --git a/bench/gps2.out b/bench/gps2.out
--- a/bench/gps2.out
+++ b/bench/gps2.out
@@ -33,21 +33,21 @@
 -- pruning with 8/9 rules
 -- looking through 4 candidates of size 1
 -- looking through 25 candidates of size 2
--- looking through 255 candidates of size 3
--- looking through 451 candidates of size 4
--- tested 735 candidates
+-- looking through 237 candidates of size 3
+-- looking through 433 candidates of size 4
+-- tested 699 candidates
 cannot conjure
 
 gps2 :: Double -> Double -> Int -> Double
 -- testing 5 combinations of argument values
--- pruning with 3/3 rules
+-- pruning with 2/6 rules
 -- looking through 2 candidates of size 1
 -- looking through 2 candidates of size 2
 -- looking through 18 candidates of size 3
 -- looking through 70 candidates of size 4
--- looking through 314 candidates of size 5
--- looking through 1432 candidates of size 6
--- tested 1838 candidates
+-- looking through 316 candidates of size 5
+-- looking through 1440 candidates of size 6
+-- tested 1848 candidates
 cannot conjure
 
 gps3 :: [Char] -> Int
@@ -82,12 +82,12 @@
 -- looking through 2 candidates of size 3
 -- looking through 10 candidates of size 4
 -- looking through 6 candidates of size 5
--- looking through 61 candidates of size 6
+-- looking through 60 candidates of size 6
 -- looking through 26 candidates of size 7
 -- looking through 538 candidates of size 8
 -- looking through 134 candidates of size 9
--- looking through 5299 candidates of size 10
--- tested 2699 candidates
+-- looking through 5296 candidates of size 10
+-- tested 2698 candidates
 tell [] x  =  []
 tell (x:xs) y  =  y `div` x:tell xs (y `mod` x)
 
@@ -107,22 +107,23 @@
 -- looking through 0 candidates of size 2
 -- looking through 5 candidates of size 3
 -- looking through 9 candidates of size 4
--- looking through 44 candidates of size 5
--- looking through 91 candidates of size 6
--- looking through 441 candidates of size 7
--- looking through 946 candidates of size 8
--- looking through 4450 candidates of size 9
--- looking through 9710 candidates of size 10
--- looking through 44767 candidates of size 11
--- tested 32953 candidates
+-- looking through 45 candidates of size 5
+-- looking through 92 candidates of size 6
+-- looking through 438 candidates of size 7
+-- looking through 944 candidates of size 8
+-- looking through 4413 candidates of size 9
+-- looking through 9649 candidates of size 10
+-- looking through 44336 candidates of size 11
+-- tested 32852 candidates
 gps5 x  =  tell [25,10,5,1] x
 
 gps6 :: [Int] -> Int
 -- testing 360 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 0 candidates of size 1
--- looking through 0 candidates of size 2
--- tested 0 candidates
+-- looking through 1 candidates of size 2
+-- looking through 1 candidates of size 3
+-- tested 2 candidates
 cannot conjure
 
 gps7 :: Integer -> Integer -> Ratio Integer
@@ -158,12 +159,12 @@
 -- testing 11 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 3 candidates of size 1
--- looking through 8 candidates of size 2
--- looking through 20 candidates of size 3
+-- looking through 7 candidates of size 2
+-- looking through 18 candidates of size 3
 -- looking through 60 candidates of size 4
 -- looking through 150 candidates of size 5
--- looking through 472 candidates of size 6
--- tested 246 candidates
+-- looking through 469 candidates of size 6
+-- tested 243 candidates
 gcd x 0  =  x
 gcd x y  =  gcd y (x `mod` y)
 
@@ -242,26 +243,26 @@
 
 gps18_price :: [Double] -> [Double] -> Double
 -- testing 4 combinations of argument values
--- pruning with 28/34 rules
+-- pruning with 26/35 rules
 -- looking through 2 candidates of size 1
 -- looking through 8 candidates of size 2
--- looking through 72 candidates of size 3
+-- looking through 64 candidates of size 3
 -- looking through 72 candidates of size 4
--- looking through 1192 candidates of size 5
--- looking through 696 candidates of size 6
--- tested 2042 candidates
+-- looking through 1193 candidates of size 5
+-- looking through 714 candidates of size 6
+-- tested 2053 candidates
 cannot conjure
 
 gps19_snowday :: Int -> Double -> Double -> Double -> Double
 -- testing 7 combinations of argument values
--- pruning with 7/12 rules
+-- pruning with 6/19 rules
 -- looking through 3 candidates of size 1
--- looking through 7 candidates of size 2
--- looking through 31 candidates of size 3
--- looking through 169 candidates of size 4
--- looking through 543 candidates of size 5
--- looking through 3608 candidates of size 6
--- tested 4361 candidates
+-- looking through 0 candidates of size 2
+-- looking through 24 candidates of size 3
+-- looking through 150 candidates of size 4
+-- looking through 546 candidates of size 5
+-- looking through 3540 candidates of size 6
+-- tested 4263 candidates
 cannot conjure
 
 gps20 :: [Char] -> Bool
@@ -303,15 +304,15 @@
 -- looking through 0 candidates of size 2
 -- looking through 2 candidates of size 3
 -- looking through 3 candidates of size 4
--- looking through 15 candidates of size 5
+-- looking through 17 candidates of size 5
 -- looking through 14 candidates of size 6
--- looking through 97 candidates of size 7
+-- looking through 103 candidates of size 7
 -- looking through 104 candidates of size 8
--- looking through 871 candidates of size 9
+-- looking through 901 candidates of size 9
 -- looking through 935 candidates of size 10
--- looking through 9018 candidates of size 11
+-- looking through 9226 candidates of size 11
 -- looking through 9686 candidates of size 12
--- tested 20746 candidates
+-- tested 20992 candidates
 cannot conjure
 
 gps22 :: Int -> [Char]
@@ -323,8 +324,8 @@
 gps23 :: [Char] -> [Char] -> [Char] -> [Char]
 -- pruning with 0/0 rules
 -- looking through 3 candidates of size 1
--- looking through 12 candidates of size 2
--- looking through 33 candidates of size 3
+-- looking through 5 candidates of size 2
+-- looking through 9 candidates of size 3
 -- looking through 0 candidates of size 4
 -- looking through 162 candidates of size 5
 -- looking through 612 candidates of size 6
@@ -334,7 +335,7 @@
 -- looking through 0 candidates of size 10
 -- looking through 0 candidates of size 11
 -- looking through 5184 candidates of size 12
--- tested 9174 candidates
+-- tested 9143 candidates
 cannot conjure
 
 gps24 :: [Char] -> Twitter
@@ -358,13 +359,13 @@
 
 gps25 :: [Double] -> [Double] -> Double
 -- testing 6 combinations of argument values
--- pruning with 33/58 rules
+-- pruning with 31/59 rules
 -- looking through 2 candidates of size 1
 -- looking through 9 candidates of size 2
--- looking through 89 candidates of size 3
+-- looking through 81 candidates of size 3
 -- looking through 312 candidates of size 4
--- looking through 2262 candidates of size 5
--- looking through 9400 candidates of size 6
--- tested 12074 candidates
+-- looking through 2249 candidates of size 5
+-- looking through 9419 candidates of size 6
+-- tested 12072 candidates
 cannot conjure
 
diff --git a/bench/ill-hit.out b/bench/ill-hit.out
--- a/bench/ill-hit.out
+++ b/bench/ill-hit.out
@@ -2,11 +2,11 @@
 -- testing 4 combinations of argument values
 -- pruning with 14/25 rules
 -- looking through 2 candidates of size 1
--- looking through 5 candidates of size 2
--- looking through 6 candidates of size 3
--- looking through 20 candidates of size 4
--- looking through 34 candidates of size 5
--- tested 34 candidates
+-- looking through 3 candidates of size 2
+-- looking through 4 candidates of size 3
+-- looking through 10 candidates of size 4
+-- looking through 19 candidates of size 5
+-- tested 20 candidates
 sum []  =  0
 sum (x:xs)  =  x + sum xs
 
diff --git a/bench/lowtests.out b/bench/lowtests.out
--- a/bench/lowtests.out
+++ b/bench/lowtests.out
@@ -9,6 +9,10 @@
 
 -}
 -- reasoning produced 1 incorrect properties, please re-run with more tests for faster results
+{-
+invalid:
+xs `isSubsequenceOf` sort xs == True
+-}
 -- looking through 0 candidates of size 1
 -- looking through 0 candidates of size 2
 -- looking through 2 candidates of size 3
@@ -16,12 +20,12 @@
 -- looking through 0 candidates of size 5
 -- looking through 0 candidates of size 6
 -- looking through 12 candidates of size 7
--- looking through 22 candidates of size 8
+-- looking through 21 candidates of size 8
 -- looking through 8 candidates of size 9
 -- looking through 0 candidates of size 10
 -- looking through 0 candidates of size 11
 -- looking through 0 candidates of size 12
--- tested 48 candidates
+-- tested 47 candidates
 cannot conjure
 
 subset :: [Int] -> [Int] -> Bool
diff --git a/bench/p12.out b/bench/p12.out
--- a/bench/p12.out
+++ b/bench/p12.out
@@ -3,12 +3,12 @@
 -- testing 6 combinations of argument values
 -- pruning with 67/100 rules
 -- looking through 3 candidates of size 1
--- looking through 7 candidates of size 2
--- looking through 25 candidates of size 3
--- looking through 82 candidates of size 4
--- looking through 263 candidates of size 5
--- looking through 960 candidates of size 6
--- tested 406 candidates
+-- looking through 5 candidates of size 2
+-- looking through 14 candidates of size 3
+-- looking through 39 candidates of size 4
+-- looking through 128 candidates of size 5
+-- looking through 497 candidates of size 6
+-- tested 200 candidates
 factorial 0  =  1
 factorial x  =  x * factorial (dec x)
 
diff --git a/bench/runtime/zero/bench/candidates.runtime b/bench/runtime/zero/bench/candidates.runtime
--- a/bench/runtime/zero/bench/candidates.runtime
+++ b/bench/runtime/zero/bench/candidates.runtime
@@ -1,1 +1,1 @@
-9.3
+11.0
diff --git a/bench/runtime/zero/bench/gps.runtime b/bench/runtime/zero/bench/gps.runtime
--- a/bench/runtime/zero/bench/gps.runtime
+++ b/bench/runtime/zero/bench/gps.runtime
@@ -1,1 +1,1 @@
-23.8
+23.2
diff --git a/bench/runtime/zero/bench/gps2.runtime b/bench/runtime/zero/bench/gps2.runtime
--- a/bench/runtime/zero/bench/gps2.runtime
+++ b/bench/runtime/zero/bench/gps2.runtime
@@ -1,1 +1,1 @@
-9.3
+9.0
diff --git a/bench/runtime/zero/bench/lowtests.runtime b/bench/runtime/zero/bench/lowtests.runtime
--- a/bench/runtime/zero/bench/lowtests.runtime
+++ b/bench/runtime/zero/bench/lowtests.runtime
@@ -1,1 +1,1 @@
-0.3
+0.4
diff --git a/bench/runtime/zero/bench/p12.runtime b/bench/runtime/zero/bench/p12.runtime
--- a/bench/runtime/zero/bench/p12.runtime
+++ b/bench/runtime/zero/bench/p12.runtime
@@ -1,1 +1,1 @@
-3.3
+3.0
diff --git a/bench/runtime/zero/bench/terpret.runtime b/bench/runtime/zero/bench/terpret.runtime
--- a/bench/runtime/zero/bench/terpret.runtime
+++ b/bench/runtime/zero/bench/terpret.runtime
@@ -1,1 +1,1 @@
-13.3
+12.4
diff --git a/bench/runtime/zero/eg/bools.runtime b/bench/runtime/zero/eg/bools.runtime
--- a/bench/runtime/zero/eg/bools.runtime
+++ b/bench/runtime/zero/eg/bools.runtime
@@ -1,1 +1,1 @@
-3.3
+3.2
diff --git a/bench/runtime/zero/eg/bst.runtime b/bench/runtime/zero/eg/bst.runtime
new file mode 100644
--- /dev/null
+++ b/bench/runtime/zero/eg/bst.runtime
@@ -0,0 +1,1 @@
+6.5
diff --git a/bench/runtime/zero/eg/dupos.runtime b/bench/runtime/zero/eg/dupos.runtime
--- a/bench/runtime/zero/eg/dupos.runtime
+++ b/bench/runtime/zero/eg/dupos.runtime
@@ -1,1 +1,1 @@
-4.5
+4.0
diff --git a/bench/runtime/zero/eg/factorial.runtime b/bench/runtime/zero/eg/factorial.runtime
--- a/bench/runtime/zero/eg/factorial.runtime
+++ b/bench/runtime/zero/eg/factorial.runtime
@@ -1,1 +1,1 @@
-2.4
+2.5
diff --git a/bench/runtime/zero/eg/fib01.runtime b/bench/runtime/zero/eg/fib01.runtime
--- a/bench/runtime/zero/eg/fib01.runtime
+++ b/bench/runtime/zero/eg/fib01.runtime
@@ -1,1 +1,1 @@
-4.4
+4.5
diff --git a/bench/runtime/zero/eg/fibonacci.runtime b/bench/runtime/zero/eg/fibonacci.runtime
--- a/bench/runtime/zero/eg/fibonacci.runtime
+++ b/bench/runtime/zero/eg/fibonacci.runtime
@@ -1,1 +1,1 @@
-8.2
+4.6
diff --git a/bench/runtime/zero/eg/list.runtime b/bench/runtime/zero/eg/list.runtime
--- a/bench/runtime/zero/eg/list.runtime
+++ b/bench/runtime/zero/eg/list.runtime
@@ -1,1 +1,1 @@
-0.4
+1.3
diff --git a/bench/runtime/zero/eg/pow.runtime b/bench/runtime/zero/eg/pow.runtime
--- a/bench/runtime/zero/eg/pow.runtime
+++ b/bench/runtime/zero/eg/pow.runtime
@@ -1,1 +1,1 @@
-3.4
+3.9
diff --git a/bench/runtime/zero/eg/replicate.runtime b/bench/runtime/zero/eg/replicate.runtime
--- a/bench/runtime/zero/eg/replicate.runtime
+++ b/bench/runtime/zero/eg/replicate.runtime
@@ -1,1 +1,1 @@
-0.4
+0.5
diff --git a/bench/runtime/zero/eg/setelem.runtime b/bench/runtime/zero/eg/setelem.runtime
--- a/bench/runtime/zero/eg/setelem.runtime
+++ b/bench/runtime/zero/eg/setelem.runtime
@@ -1,1 +1,1 @@
-2.1
+2.0
diff --git a/bench/runtime/zero/eg/tree.runtime b/bench/runtime/zero/eg/tree.runtime
--- a/bench/runtime/zero/eg/tree.runtime
+++ b/bench/runtime/zero/eg/tree.runtime
@@ -1,1 +1,1 @@
-1.4
+2.0
diff --git a/bench/runtime/zero/proto/u-conjure.runtime b/bench/runtime/zero/proto/u-conjure.runtime
--- a/bench/runtime/zero/proto/u-conjure.runtime
+++ b/bench/runtime/zero/proto/u-conjure.runtime
@@ -1,1 +1,1 @@
-0.3
+0.4
diff --git a/bench/runtime/zero/versions b/bench/runtime/zero/versions
--- a/bench/runtime/zero/versions
+++ b/bench/runtime/zero/versions
@@ -1,4 +1,4 @@
-GHC 8.10.5
-leancheck-0.9.10
-express-1.0.8
+GHC 9.0.2
+leancheck-1.0.0
+express-1.0.10
 speculate-0.4.14
diff --git a/bench/self.out b/bench/self.out
--- a/bench/self.out
+++ b/bench/self.out
@@ -2,35 +2,35 @@
 -- testing 360 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 4 candidates of size 1
--- looking through 18 candidates of size 2
--- looking through 120 candidates of size 3
--- tested 24 candidates
+-- looking through 17 candidates of size 2
+-- looking through 80 candidates of size 3
+-- tested 23 candidates
 x ? y  =  x + y
 
 (?) :: Int -> Int -> Int
 -- testing 360 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 4 candidates of size 1
--- looking through 18 candidates of size 2
--- looking through 120 candidates of size 3
--- tested 40 candidates
+-- looking through 17 candidates of size 2
+-- looking through 80 candidates of size 3
+-- tested 39 candidates
 x ? y  =  x * y
 
 i :: Int -> Int
 -- testing 360 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 3 candidates of size 1
--- looking through 4 candidates of size 2
--- looking through 22 candidates of size 3
--- tested 10 candidates
+-- looking through 2 candidates of size 2
+-- looking through 21 candidates of size 3
+-- tested 8 candidates
 i x  =  x + 1
 
 d :: Int -> Int
 -- testing 360 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 3 candidates of size 1
--- looking through 4 candidates of size 2
--- looking through 22 candidates of size 3
--- tested 29 candidates
+-- looking through 3 candidates of size 2
+-- looking through 20 candidates of size 3
+-- tested 26 candidates
 cannot conjure
 
diff --git a/bench/take-drop.out b/bench/take-drop.out
--- a/bench/take-drop.out
+++ b/bench/take-drop.out
@@ -3,14 +3,14 @@
 -- pruning with 4/7 rules
 -- looking through 2 candidates of size 1
 -- looking through 3 candidates of size 2
--- looking through 5 candidates of size 3
--- looking through 15 candidates of size 4
--- looking through 27 candidates of size 5
+-- looking through 4 candidates of size 3
+-- looking through 14 candidates of size 4
+-- looking through 26 candidates of size 5
 -- looking through 41 candidates of size 6
--- looking through 132 candidates of size 7
--- looking through 127 candidates of size 8
+-- looking through 130 candidates of size 7
+-- looking through 125 candidates of size 8
 -- looking through 458 candidates of size 9
--- tested 495 candidates
+-- tested 488 candidates
 drop 0 []  =  []
 drop 0 (x:xs)  =  x:xs
 drop x []  =  []
@@ -21,14 +21,14 @@
 -- pruning with 14/21 rules
 -- looking through 2 candidates of size 1
 -- looking through 3 candidates of size 2
--- looking through 5 candidates of size 3
--- looking through 15 candidates of size 4
--- looking through 27 candidates of size 5
+-- looking through 4 candidates of size 3
+-- looking through 14 candidates of size 4
+-- looking through 26 candidates of size 5
 -- looking through 41 candidates of size 6
--- looking through 132 candidates of size 7
--- looking through 127 candidates of size 8
+-- looking through 130 candidates of size 7
+-- looking through 125 candidates of size 8
 -- looking through 458 candidates of size 9
--- tested 484 candidates
+-- tested 477 candidates
 take 0 []  =  []
 take 0 (x:xs)  =  []
 take x []  =  []
diff --git a/bench/terpret.out b/bench/terpret.out
--- a/bench/terpret.out
+++ b/bench/terpret.out
@@ -86,16 +86,16 @@
 -- looking through 0 candidates of size 1
 -- looking through 0 candidates of size 2
 -- looking through 9 candidates of size 3
--- looking through 18 candidates of size 4
--- looking through 45 candidates of size 5
--- looking through 108 candidates of size 6
--- looking through 300 candidates of size 7
--- looking through 816 candidates of size 8
--- looking through 2148 candidates of size 9
--- looking through 5520 candidates of size 10
--- looking through 13656 candidates of size 11
--- tested 16290 candidates
-fadder p q r  =  if p == q then (p,r) else (r,not r)
+-- looking through 19 candidates of size 4
+-- tested 28 candidates
+fadder False False False  =  (False,False)
+fadder False False True  =  (False,True)
+fadder False True False  =  (False,True)
+fadder False True True  =  (True,False)
+fadder True False False  =  (False,True)
+fadder True False True  =  (True,False)
+fadder True True False  =  (True,False)
+fadder True True True  =  (True,True)
 
 TerpreT benchmark #6: 2-bit adder
 
@@ -128,12 +128,12 @@
 -- pruning with 4/7 rules
 -- looking through 1 candidates of size 1
 -- looking through 1 candidates of size 2
--- looking through 3 candidates of size 3
--- looking through 7 candidates of size 4
--- looking through 19 candidates of size 5
+-- looking through 2 candidates of size 3
+-- looking through 6 candidates of size 4
+-- looking through 18 candidates of size 5
 -- looking through 23 candidates of size 6
 -- looking through 68 candidates of size 7
--- tested 67 candidates
+-- tested 64 candidates
 [] `access` 0  =  undefined
 [] `access` x  =  undefined
 (x:xs) `access` 0  =  x
diff --git a/bench/versions b/bench/versions
--- a/bench/versions
+++ b/bench/versions
@@ -7,8 +7,12 @@
 get-ghc-v() {
     ghc --version | sed -e "s/.* version/GHC/"
 }
+ghc-pkg-list() {
+	ghc-pkg list "$@"
+	ghc-pkg list --package-db ~/.cabal/store/ghc-$(ghc --version | sed -e "s/.* version //")/package.db "$@"
+}
 get-pkg-v() {
-    ghc-pkg list $1 2>/dev/null |
+    ghc-pkg-list $1 2>/dev/null |
     grep " $1-" |
     sed -e "s/^ *//" |
     tail -1
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,8 +2,21 @@
 ============================
 
 
-0.5.2
------
+v0.5.4
+------
+
+This has been the "dev" version after v0.5.2
+for almost a couple of years:
+
+* report invalid theories-from-testing
+* weed-out some redundant candidates:
+	- add and use `isRedundantDefn`
+	- update how deconstructions are handled
+* add (but not use) `conjureSize` to `Conjurable`
+
+
+v0.5.2
+------
 
 * show number of tested candidates
 * complete `Conjurable` derivation functions
diff --git a/code-conjure.cabal b/code-conjure.cabal
--- a/code-conjure.cabal
+++ b/code-conjure.cabal
@@ -3,7 +3,7 @@
 -- Copyright (C) 2021 Rudy Matela
 -- Distributed under the 3-Clause BSD licence (see the file LICENSE).
 name:                code-conjure
-version:             0.5.2
+version:             0.5.4
 synopsis:            synthesize Haskell functions out of partial definitions
 description:
   Conjure is a tool that synthesizes Haskell functions out of partial definitions.
@@ -46,15 +46,12 @@
                   , bench/versions
                   , bench/time
                   , test/sdist
-tested-with: GHC==9.0
+tested-with: GHC==9.4
+           , GHC==9.2
+           , GHC==9.0
            , GHC==8.10
-           , GHC==8.8
            , GHC==8.6
-           , GHC==8.4
            , GHC==8.2
-           , GHC==8.0
-           , GHC==7.10
-           , GHC==7.8
 
 source-repository head
   type:            git
@@ -63,7 +60,7 @@
 source-repository this
   type:            git
   location:        https://github.com/rudymatela/conjure
-  tag:             v0.5.2
+  tag:             v0.5.4
 
 library
   exposed-modules: Conjure
@@ -76,7 +73,7 @@
                  , Conjure.Defn
   other-extensions: TemplateHaskell, CPP
   build-depends: base >= 4 && < 5
-               , leancheck >= 0.9.10
+               , leancheck >= 1.0.0
                , template-haskell
                , speculate >= 0.4.14
                , express >= 1.0.8
diff --git a/eg/arith.out b/eg/arith.out
--- a/eg/arith.out
+++ b/eg/arith.out
@@ -2,61 +2,61 @@
 -- testing 4 combinations of argument values
 -- pruning with 14/25 rules
 -- looking through 3 candidates of size 1
--- looking through 4 candidates of size 2
--- looking through 9 candidates of size 3
--- tested 8 candidates
+-- looking through 2 candidates of size 2
+-- looking through 8 candidates of size 3
+-- tested 6 candidates
 double x  =  x + x
 
 triple :: Int -> Int
 -- testing 4 combinations of argument values
 -- pruning with 14/25 rules
 -- looking through 3 candidates of size 1
--- looking through 4 candidates of size 2
--- looking through 9 candidates of size 3
--- looking through 23 candidates of size 4
--- looking through 29 candidates of size 5
--- tested 43 candidates
+-- looking through 2 candidates of size 2
+-- looking through 8 candidates of size 3
+-- looking through 8 candidates of size 4
+-- looking through 21 candidates of size 5
+-- tested 25 candidates
 triple x  =  x + (x + x)
 
 add :: Int -> Int -> Int
 -- testing 4 combinations of argument values
 -- pruning with 14/25 rules
 -- looking through 4 candidates of size 1
--- looking through 18 candidates of size 2
--- looking through 101 candidates of size 3
--- tested 24 candidates
+-- looking through 17 candidates of size 2
+-- looking through 61 candidates of size 3
+-- tested 23 candidates
 add x y  =  x + y
 
 square :: Int -> Int
 -- testing 3 combinations of argument values
 -- pruning with 14/25 rules
 -- looking through 3 candidates of size 1
--- looking through 4 candidates of size 2
--- looking through 9 candidates of size 3
--- tested 12 candidates
+-- looking through 2 candidates of size 2
+-- looking through 7 candidates of size 3
+-- tested 10 candidates
 square x  =  x * x
 
 cube :: Int -> Int
 -- testing 3 combinations of argument values
 -- pruning with 14/25 rules
 -- looking through 3 candidates of size 1
--- looking through 4 candidates of size 2
--- looking through 9 candidates of size 3
--- looking through 23 candidates of size 4
--- looking through 29 candidates of size 5
--- tested 55 candidates
+-- looking through 2 candidates of size 2
+-- looking through 7 candidates of size 3
+-- looking through 8 candidates of size 4
+-- looking through 21 candidates of size 5
+-- tested 36 candidates
 cube x  =  x * (x * x)
 
 tnpo :: Int -> Int
 -- testing 3 combinations of argument values
 -- pruning with 14/25 rules
 -- looking through 3 candidates of size 1
--- looking through 4 candidates of size 2
--- looking through 9 candidates of size 3
--- looking through 23 candidates of size 4
--- looking through 29 candidates of size 5
--- looking through 71 candidates of size 6
--- looking through 113 candidates of size 7
--- tested 163 candidates
+-- looking through 2 candidates of size 2
+-- looking through 8 candidates of size 3
+-- looking through 8 candidates of size 4
+-- looking through 21 candidates of size 5
+-- looking through 21 candidates of size 6
+-- looking through 90 candidates of size 7
+-- tested 87 candidates
 tnpo x  =  x + (x + (x + 1))
 
diff --git a/eg/bst.hs b/eg/bst.hs
new file mode 100644
--- /dev/null
+++ b/eg/bst.hs
@@ -0,0 +1,218 @@
+-- bst.hs: conjuring functions over binary search trees (BSTs)
+--
+-- Copyright (C) 2021 Rudy Matela
+-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
+{-# LANGUAGE CPP, TemplateHaskell #-}
+#if __GLASGOW_HASKELL__ == 708
+{-# LANGUAGE DeriveDataTypeable, StandaloneDeriving #-}
+import Data.Typeable (Typeable)
+#endif
+
+import Conjure
+import Test.LeanCheck
+import Data.Express hiding (height,size)
+
+-- TODO: remove the following import
+-- and fix build on GHC 7.10 and 7.8
+-- the generation of -: and ->>>: somehow fails.
+import Test.LeanCheck.Utils
+
+data Tree  =  Leaf
+           |  Node Tree Int Tree
+  deriving (Eq, Ord, Show, Read)
+
+#if __GLASGOW_HASKELL__ == 708
+deriving instance Typeable Tree
+#endif
+
+deriveExpress ''Tree
+
+unit :: Int -> Tree
+unit x  =  Node Leaf x Leaf
+
+nil :: Tree -> Bool
+nil Leaf  =  True
+nil _     =  False
+
+left :: Tree -> Tree
+left (Node l _ _)  =  l
+
+right :: Tree -> Tree
+right (Node _ _ r)  =  r
+
+valu :: Tree -> Int
+valu (Node _ x _)  =  x
+
+
+leftmost :: Tree -> Int
+leftmost (Node l x _)  =  if nil l then x else leftmost l
+
+rightmost :: Tree -> Int
+rightmost (Node _ x r)  =  if nil r then x else rightmost r
+
+height :: Tree -> Int
+height Leaf  =  -1
+height (Node l _ r)  =  1 + max (height l) (height r)
+
+size :: Tree -> Int
+size Leaf  =  0
+size (Node l _ r)  =  size l + 1 + size r
+
+ordered :: Tree -> Bool
+ordered Leaf  =  True
+ordered (Node l x r)  =  (nil l || rightmost l < x)
+                      && (nil r || x < leftmost r)
+                      && ordered l
+                      && ordered r
+
+preorder :: Tree -> [Int]
+preorder Leaf =  []
+preorder (Node l x r)  =  [x] ++ preorder l ++ preorder r
+
+inorder :: Tree -> [Int]
+inorder Leaf  =  []
+inorder (Node l x r)  =  inorder l ++ [x] ++ inorder r
+
+posorder :: Tree -> [Int]
+posorder Leaf =  []
+posorder (Node l x r)  =  posorder l ++ posorder r ++ [x]
+
+
+-- the following assume a binary search tree
+mem :: Int -> Tree -> Bool
+mem _ Leaf  =  False
+mem y (Node l x r)  =  y == x || (if y < x then mem y l else mem y r)
+
+insert :: Int -> Tree -> Tree
+insert x Leaf  =  unit x
+insert x (Node l y r)  =  case compare x y of
+  LT -> Node (insert x l) y r
+  EQ -> Node l y r
+  GT -> Node l y (insert x r)
+
+before :: Int -> Tree -> Tree
+before _ Leaf  =  Leaf
+before y (Node l x r)  =  case y `compare` x of
+                          LT -> before y l
+                          EQ -> l
+                          GT -> Node l x (before y r)
+
+beyond :: Int -> Tree -> Tree
+beyond _ Leaf  =  Leaf
+beyond y (Node l x r)  =  case x `compare` y of
+                          LT -> beyond y r
+                          EQ -> r
+                          GT -> Node (beyond y l) x r
+
+union :: Tree -> Tree -> Tree
+union t Leaf  =  t
+union t (Node l x r)  =  Node (union (before x t) l) x (union (beyond x t) r)
+
+
+instance Listable Tree where
+  tiers  =  cons0 Leaf
+        \/  cons3 Node `suchThat` ordered
+
+instance Name Tree where
+  name _  =  "t1"
+
+instance Conjurable Tree where
+  conjureExpress   =  reifyExpress
+  conjureEquality  =  reifyEquality
+  conjureTiers     =  reifyTiers
+  conjureSubTypes x  =  conjureType (undefined :: Int)
+  conjureSize     =  size
+  conjureCases t  =  [ val (Leaf -: t)
+                     , value "Node" (Node ->>>: t) :$ hole l :$ hole x :$ hole r
+                     ]
+    where
+    Node l x r  =  Node undefined undefined undefined -: t
+
+
+main :: IO ()
+main = do
+  conjureWithMaxSize 15 "mem" mem
+    [ pr False
+    , prim "||" (||)
+    , prim "==" ((==) :: Int -> Int -> Bool)
+    , prim "<" ((<) :: Int -> Int -> Bool)
+    , prif (undefined :: Bool)
+    ]
+
+  conjure "mem" mem
+    [ pr False
+    , pr True
+    , prim "`compare`" (compare :: Int -> Int -> Ordering)
+    , primOrdCaseFor (undefined :: Bool)
+    ]
+
+  -- simply out of reach performance-wise (reaching 16 but need size 26)
+  conjureWithMaxSize 12 "insert" insert
+    [ pr Leaf
+    , prim "Node" Node
+    , prim "unit" unit
+    , prim "==" ((==) :: Int -> Int -> Bool)
+    , prim "<" ((<) :: Int -> Int -> Bool)
+    , prif (undefined :: Tree)
+    ]
+
+  -- out of reach performance-wise (reaching 16 but need 19)
+  conjureFromSpecWith args{maxSize = 12} "before" beforeSpec
+    [ pr Leaf
+    , prim "Node" Node
+    , prim "==" ((==) :: Int -> Int -> Bool)
+    , prim "<" ((<) :: Int -> Int -> Bool)
+    , prif (undefined :: Tree)
+    ]
+
+  -- with 15, this reaches the solution, using 12 for shorter runtime
+  -- using maxEquationSize = 7 reduces runtime from 13s to 11s
+  conjureFromSpecWith args{maxSize = 12, maxEquationSize = 7} "before" beforeSpec
+    [ pr Leaf
+    , prim "Node" Node
+    , prim "`compare`" (compare :: Int -> Int -> Ordering)
+    , primOrdCaseFor (undefined :: Tree)
+    ]
+
+  -- with 15, this reaches the solution, using 12 for shorter runtime
+  -- using maxEquationSize = 7 reduces runtime from 13s to 11s
+  conjureFromSpecWith args{maxSize = 12, maxEquationSize = 7} "beyond" beyondSpec
+    [ pr Leaf
+    , prim "Node" Node
+    , prim "`compare`" (compare :: Int -> Int -> Ordering)
+    , primOrdCaseFor (undefined :: Tree)
+    ]
+
+  -- out of reach (reaching 11 but need 13)
+  conjureWith args{maxSize = 9} "union" union
+    [ pr Leaf
+    , prim "Node" Node
+    , prim "before" before
+    , prim "beyond" beyond
+    ]
+  -- maybe with invariant following test data there will be more pruning
+  -- properties?
+
+beforeSpec :: (Int -> Tree -> Tree) -> Bool
+beforeSpec before  =  and
+  [ holds n $ \x t -> ordered t ==> inorder (before x t) == takeWhile (< x) (inorder t)
+  ] where n = 360
+
+beyondSpec :: (Int -> Tree -> Tree) -> Bool
+beyondSpec beyond  =  and
+  [ holds n $ \x t -> ordered t ==> inorder (beyond x t) == dropWhile (<= x) (inorder t)
+  ] where n = 360
+
+-- unionSpec :: (Int -> Tree -> Tree) -> Bool
+-- unionSpec union  =  and
+--   [ holds n $ \t1 t2 -> ordered t ==> inorder (union t1 t2) == merge (inorder t1) (inorder t2)
+--   ] where n = 360
+
+-- same as insert, but using an if instead of a case:
+insertIf :: Int -> Tree -> Tree
+insertIf x Leaf  =  unit x                                   -- 2
+insertIf x (Node l y r)  =  if x == y                        -- 6
+                            then Node l y r                  -- 10
+                            else if x < y                    -- 14
+                                 then Node (insert x l) y r  -- 20
+                                 else Node l y (insert x r)  -- 26
diff --git a/eg/bst.out b/eg/bst.out
new file mode 100644
--- /dev/null
+++ b/eg/bst.out
@@ -0,0 +1,122 @@
+mem :: Int -> Tree -> Bool
+-- testing 360 combinations of argument values
+-- pruning with 20/30 rules
+-- looking through 1 candidates of size 1
+-- looking through 0 candidates of size 2
+-- looking through 0 candidates of size 3
+-- looking through 8 candidates of size 4
+-- looking through 0 candidates of size 5
+-- looking through 0 candidates of size 6
+-- looking through 0 candidates of size 7
+-- looking through 60 candidates of size 8
+-- looking through 120 candidates of size 9
+-- looking through 0 candidates of size 10
+-- looking through 452 candidates of size 11
+-- looking through 424 candidates of size 12
+-- tested 707 candidates
+mem x Leaf  =  False
+mem x (Node t1 y t2)  =  mem x t1 || (x == y || mem x t2)
+
+mem :: Int -> Tree -> Bool
+-- testing 360 combinations of argument values
+-- pruning with 1/2 rules
+-- looking through 2 candidates of size 1
+-- looking through 1 candidates of size 2
+-- looking through 0 candidates of size 3
+-- looking through 4 candidates of size 4
+-- looking through 0 candidates of size 5
+-- looking through 0 candidates of size 6
+-- looking through 6 candidates of size 7
+-- looking through 24 candidates of size 8
+-- looking through 0 candidates of size 9
+-- looking through 192 candidates of size 10
+-- looking through 0 candidates of size 11
+-- looking through 384 candidates of size 12
+-- tested 375 candidates
+mem x Leaf  =  False
+mem x (Node t1 y t2)  =  case x `compare` y of LT -> mem x t1; EQ -> True; GT -> mem x t2
+
+insert :: Int -> Tree -> Tree
+-- testing 360 combinations of argument values
+-- pruning with 6/7 rules
+-- looking through 2 candidates of size 1
+-- looking through 2 candidates of size 2
+-- looking through 0 candidates of size 3
+-- looking through 10 candidates of size 4
+-- looking through 21 candidates of size 5
+-- looking through 0 candidates of size 6
+-- looking through 118 candidates of size 7
+-- looking through 239 candidates of size 8
+-- looking through 216 candidates of size 9
+-- looking through 2204 candidates of size 10
+-- looking through 3651 candidates of size 11
+-- looking through 8280 candidates of size 12
+-- tested 14743 candidates
+cannot conjure
+
+before :: Int -> Tree -> Tree
+-- pruning with 5/6 rules
+-- looking through 2 candidates of size 1
+-- looking through 2 candidates of size 2
+-- looking through 0 candidates of size 3
+-- looking through 10 candidates of size 4
+-- looking through 21 candidates of size 5
+-- looking through 0 candidates of size 6
+-- looking through 118 candidates of size 7
+-- looking through 239 candidates of size 8
+-- looking through 216 candidates of size 9
+-- looking through 2204 candidates of size 10
+-- looking through 3651 candidates of size 11
+-- looking through 8280 candidates of size 12
+-- tested 14743 candidates
+cannot conjure
+
+before :: Int -> Tree -> Tree
+-- pruning with 2/4 rules
+-- looking through 2 candidates of size 1
+-- looking through 2 candidates of size 2
+-- looking through 0 candidates of size 3
+-- looking through 10 candidates of size 4
+-- looking through 21 candidates of size 5
+-- looking through 0 candidates of size 6
+-- looking through 94 candidates of size 7
+-- looking through 287 candidates of size 8
+-- looking through 72 candidates of size 9
+-- looking through 1784 candidates of size 10
+-- looking through 5103 candidates of size 11
+-- looking through 3312 candidates of size 12
+-- tested 10687 candidates
+cannot conjure
+
+beyond :: Int -> Tree -> Tree
+-- pruning with 2/4 rules
+-- looking through 2 candidates of size 1
+-- looking through 2 candidates of size 2
+-- looking through 0 candidates of size 3
+-- looking through 10 candidates of size 4
+-- looking through 21 candidates of size 5
+-- looking through 0 candidates of size 6
+-- looking through 94 candidates of size 7
+-- looking through 287 candidates of size 8
+-- looking through 72 candidates of size 9
+-- looking through 1784 candidates of size 10
+-- looking through 5103 candidates of size 11
+-- looking through 3312 candidates of size 12
+-- tested 10687 candidates
+cannot conjure
+
+union :: Tree -> Tree -> Tree
+-- testing 360 combinations of argument values
+-- pruning with 6/8 rules
+-- looking through 3 candidates of size 1
+-- looking through 11 candidates of size 2
+-- looking through 40 candidates of size 3
+-- looking through 84 candidates of size 4
+-- looking through 784 candidates of size 5
+-- looking through 1032 candidates of size 6
+-- looking through 8368 candidates of size 7
+-- looking through 24890 candidates of size 8
+-- looking through 75535 candidates of size 9
+-- tested 110747 candidates
+cannot conjure
+
diff --git a/eg/count.hs b/eg/count.hs
--- a/eg/count.hs
+++ b/eg/count.hs
@@ -47,5 +47,5 @@
     , prim "tail" (tail :: [A] -> [A])
     , prim "null" (null :: [A] -> Bool)
     , prim "==" ((==) :: A -> A -> Bool)
-    , prim "if" (\p x y -> if p then x else y :: Int)
+    , prif (undefined :: Int)
     ]
diff --git a/eg/dupos.out b/eg/dupos.out
--- a/eg/dupos.out
+++ b/eg/dupos.out
@@ -51,18 +51,18 @@
 -- looking through 1 candidates of size 1
 -- looking through 0 candidates of size 2
 -- looking through 2 candidates of size 3
--- looking through 7 candidates of size 4
--- looking through 18 candidates of size 5
--- looking through 35 candidates of size 6
--- looking through 89 candidates of size 7
--- looking through 190 candidates of size 8
--- looking through 440 candidates of size 9
--- looking through 926 candidates of size 10
--- looking through 2113 candidates of size 11
--- looking through 4520 candidates of size 12
--- looking through 10066 candidates of size 13
--- looking through 21492 candidates of size 14
--- tested 19274 candidates
+-- looking through 5 candidates of size 4
+-- looking through 15 candidates of size 5
+-- looking through 25 candidates of size 6
+-- looking through 59 candidates of size 7
+-- looking through 108 candidates of size 8
+-- looking through 256 candidates of size 9
+-- looking through 458 candidates of size 10
+-- looking through 1064 candidates of size 11
+-- looking through 1948 candidates of size 12
+-- looking through 4516 candidates of size 13
+-- looking through 8304 candidates of size 14
+-- tested 8844 candidates
 positionsFrom x y []  =  []
 positionsFrom x y (z:xs)  =  (if y == z then (x :) else id) (positionsFrom (x + 1) y xs)
 
diff --git a/eg/factorial.out b/eg/factorial.out
--- a/eg/factorial.out
+++ b/eg/factorial.out
@@ -3,12 +3,12 @@
 -- pruning with 27/65 rules
 -- looking through 3 candidates of size 1
 -- looking through 4 candidates of size 2
--- looking through 13 candidates of size 3
--- looking through 34 candidates of size 4
--- looking through 75 candidates of size 5
--- looking through 183 candidates of size 6
--- looking through 577 candidates of size 7
--- tested 343 candidates
+-- looking through 11 candidates of size 3
+-- looking through 29 candidates of size 4
+-- looking through 60 candidates of size 5
+-- looking through 145 candidates of size 6
+-- looking through 501 candidates of size 7
+-- tested 283 candidates
 factorial 0  =  1
 factorial x  =  x * factorial (x - 1)
 
@@ -17,10 +17,10 @@
 -- pruning with 32/72 rules
 -- looking through 3 candidates of size 1
 -- looking through 4 candidates of size 2
--- looking through 13 candidates of size 3
--- looking through 34 candidates of size 4
--- looking through 75 candidates of size 5
--- looking through 247 candidates of size 6
--- tested 172 candidates
+-- looking through 11 candidates of size 3
+-- looking through 29 candidates of size 4
+-- looking through 60 candidates of size 5
+-- looking through 209 candidates of size 6
+-- tested 148 candidates
 factorial x  =  foldr (*) 1 [1..x]
 
diff --git a/eg/fib01.hs b/eg/fib01.hs
--- a/eg/fib01.hs
+++ b/eg/fib01.hs
@@ -2,6 +2,7 @@
 import Conjure
 
 fib01 :: Int -> Int -> Int -> Int
+-- fib01 x y 0  =  x  -- even with this, out of reach
 fib01 0 1 0  =  1
 fib01 0 1 1  =  1
 fib01 0 1 2  =  2
@@ -35,3 +36,11 @@
 -- expected function:
 -- fib01 x y z  =  if z <= 0 then y else fib01 y (x + y) (dec z)
 --                 1  2 3  4      5      6     7  8 9 10  11 12
+
+  -- out of reach as well:
+  -- conjure "fib01" fib01
+  --   [ pr (0::Int)
+  --   , pr (1::Int)
+  --   , prim "+" ((+) :: Int -> Int -> Int)
+  --   , prim "-" ((-) :: Int -> Int -> Int)
+  --   ]
diff --git a/eg/fib01.out b/eg/fib01.out
--- a/eg/fib01.out
+++ b/eg/fib01.out
@@ -2,11 +2,11 @@
 -- testing 8 combinations of argument values
 -- pruning with 6/10 rules
 -- looking through 4 candidates of size 1
--- looking through 31 candidates of size 2
--- looking through 295 candidates of size 3
--- looking through 1968 candidates of size 4
--- looking through 10684 candidates of size 5
--- tested 12982 candidates
+-- looking through 24 candidates of size 2
+-- looking through 241 candidates of size 3
+-- looking through 1958 candidates of size 4
+-- looking through 10540 candidates of size 5
+-- tested 12767 candidates
 cannot conjure
 
 fib01 :: Int -> Int -> Int -> Int
diff --git a/eg/fibonacci.out b/eg/fibonacci.out
--- a/eg/fibonacci.out
+++ b/eg/fibonacci.out
@@ -2,18 +2,18 @@
 -- testing 7 combinations of argument values
 -- pruning with 21/44 rules
 -- looking through 4 candidates of size 1
--- looking through 9 candidates of size 2
--- looking through 20 candidates of size 3
--- looking through 87 candidates of size 4
--- looking through 127 candidates of size 5
--- looking through 420 candidates of size 6
--- looking through 845 candidates of size 7
--- looking through 2136 candidates of size 8
--- looking through 5185 candidates of size 9
--- looking through 13000 candidates of size 10
--- looking through 33460 candidates of size 11
--- looking through 85901 candidates of size 12
--- tested 56285 candidates
+-- looking through 3 candidates of size 2
+-- looking through 14 candidates of size 3
+-- looking through 17 candidates of size 4
+-- looking through 58 candidates of size 5
+-- looking through 69 candidates of size 6
+-- looking through 357 candidates of size 7
+-- looking through 390 candidates of size 8
+-- looking through 2265 candidates of size 9
+-- looking through 2502 candidates of size 10
+-- looking through 15355 candidates of size 11
+-- looking through 17083 candidates of size 12
+-- tested 21324 candidates
 fibonacci 0  =  1
 fibonacci 1  =  1
 fibonacci x  =  fibonacci (x - 1) + fibonacci (x - 2)
diff --git a/eg/gcd.hs b/eg/gcd.hs
--- a/eg/gcd.hs
+++ b/eg/gcd.hs
@@ -23,5 +23,16 @@
   , prim "`mod`" (mod :: Int -> Int -> Int)
   ]
   -- desired function:
-  -- gcd a b  =  if b == 0 then a else gcd b (a `mod` b)
-  --             1  2 3  4      5      6   7  8  9   10
+  -- gcd x 0  =  x
+  -- gcd x y  =  gcd y (x `mod` y)
+
+-- Degenerate case:
+-- The number of candidates in this example is big,
+-- if we set showTheory = True we can see why:
+-- no properties are discovered.
+--
+-- Since
+-- 0 `mod` 0 = undefined
+-- Speculate has no way of discovering that
+-- x `mod` x = 0
+-- in all other cases.
diff --git a/eg/gcd.out b/eg/gcd.out
--- a/eg/gcd.out
+++ b/eg/gcd.out
@@ -2,12 +2,12 @@
 -- testing 11 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 3 candidates of size 1
--- looking through 8 candidates of size 2
--- looking through 20 candidates of size 3
+-- looking through 7 candidates of size 2
+-- looking through 18 candidates of size 3
 -- looking through 60 candidates of size 4
 -- looking through 150 candidates of size 5
--- looking through 472 candidates of size 6
--- tested 246 candidates
+-- looking through 469 candidates of size 6
+-- tested 243 candidates
 gcd x 0  =  x
 gcd x y  =  gcd y (x `mod` y)
 
diff --git a/eg/list.hs b/eg/list.hs
--- a/eg/list.hs
+++ b/eg/list.hs
@@ -36,6 +36,22 @@
 [x,y] \/ [z,w]  =  [x,z,y,w]
 [x,y,z] \/ [w,v,u]  =  [x,w,y,v,z,u]
 
+merge' :: [Int] -> [Int] -> [Int]
+merge' [] []  =  []
+merge' xs []  =  xs
+merge' [] ys  =  ys
+merge' [x] [y] | x <= y     =  [x,y]
+               | otherwise  =  [y,x]
+merge' [0,1] [0,1]  =  [0,0,1,1]
+merge' [0,1] [2,3]  =  [0,1,2,3]
+merge' [0,2] [1,3]  =  [0,1,2,3]
+
+ordered' :: [Int] -> Bool
+ordered' []  =  True
+ordered' [x]  =  True
+ordered' [x,y]  =  x <= y
+ordered' [x,y,z]  =  x <= y && y <= z
+
 main :: IO ()
 main = do
   conjure "length" length'
@@ -46,7 +62,7 @@
 
   conjure "reverse" reverse'
     [ pr ([] :: [Int])
-    , prim "unit" ((:[]) :: Int -> [Int])
+    , prim ":" ((:) :: Int -> [Int] -> [Int])
     , prim "++" ((++) :: [Int] -> [Int] -> [Int])
     ]
 
@@ -55,29 +71,6 @@
     , prim ":" ((:) :: Int -> [Int] -> [Int])
     ]
 
-  -- now through fold
-  -- length xs  =  foldr (const (1 +)) 0 xs
-  conjure "length" length'
-    [ pr (0 :: Int)
-    , pr (1 :: Int)
-    , prim "+" ((+) :: Int -> Int -> Int)
-    , prim "foldr" (foldr :: (Int -> Int -> Int) -> Int -> [Int] -> Int)
-    , prim "const" (const :: (Int -> Int) -> Int -> (Int -> Int)) -- cheating?
-    ]
-
-  -- now through fold and some cheating
-  --  reverse xs  =  foldr (\x xs -> xs ++ [x]) [] xs
-  --  reverse xs  =  foldr (flip (++) . unit) [] xs
-  conjure "reverse" reverse'
-    [ pr ([] :: [Int])
-    , prim "unit" ((:[]) :: Int -> [Int])
-    , prim "++" ((++) :: [Int] -> [Int] -> [Int])
-    , prim "foldr" (foldr :: (Int->[Int]->[Int]) -> [Int] -> [Int] -> [Int])
-    -- these last two are cheats:
-    , prim "flip" (flip :: ([Int]->[Int]->[Int]) -> [Int] -> [Int] -> [Int])
-    , prim "." ((.) :: ([Int]->[Int]->[Int]) -> (Int->[Int]) -> Int -> [Int] -> [Int])
-    ]
-
   conjure "++" (+++)
     [ pr ([] :: [Int])
     , prim ":" ((:) :: Int -> [Int] -> [Int])
@@ -87,4 +80,22 @@
   conjure "\\/" (\/)
     [ pr ([] :: [Int])
     , prim ":" ((:) :: Int -> [Int] -> [Int])
+    ]
+
+  conjure "ordered" ordered'
+    [ pr False
+    , pr True
+    , prim "&&" (&&)
+    , prim "||" (||)
+    , prim "<=" ((<=) :: Int -> Int -> Bool)
+    , prim "null" (null :: [Int] -> Bool)
+    , prim "head" (head :: [Int] -> Int)
+    , prim "tail" (tail :: [Int] -> [Int])
+    ]
+
+  -- unreachable: needs about 26, but can only reach 16
+  conjureWithMaxSize 12 "merge" merge'
+    [ prim ":" ((:) :: Int -> [Int] -> [Int])
+    , prim "compare" (compare :: Int -> Int -> Ordering)
+    , primOrdCaseFor (undefined :: [Int])
     ]
diff --git a/eg/list.out b/eg/list.out
--- a/eg/list.out
+++ b/eg/list.out
@@ -2,85 +2,97 @@
 -- testing 360 combinations of argument values
 -- pruning with 4/8 rules
 -- looking through 2 candidates of size 1
--- looking through 4 candidates of size 2
--- looking through 3 candidates of size 3
--- looking through 11 candidates of size 4
--- looking through 10 candidates of size 5
--- tested 23 candidates
+-- looking through 2 candidates of size 2
+-- looking through 2 candidates of size 3
+-- looking through 4 candidates of size 4
+-- looking through 5 candidates of size 5
+-- tested 13 candidates
 length []  =  0
 length (x:xs)  =  length xs + 1
 
 reverse :: [Int] -> [Int]
 -- testing 360 combinations of argument values
--- pruning with 3/3 rules
+-- pruning with 4/4 rules
 -- looking through 2 candidates of size 1
 -- looking through 1 candidates of size 2
--- looking through 3 candidates of size 3
--- looking through 2 candidates of size 4
--- looking through 5 candidates of size 5
+-- looking through 2 candidates of size 3
+-- looking through 3 candidates of size 4
+-- looking through 4 candidates of size 5
 -- looking through 7 candidates of size 6
--- tested 18 candidates
+-- looking through 10 candidates of size 7
+-- tested 27 candidates
 reverse []  =  []
-reverse (x:xs)  =  reverse xs ++ unit x
+reverse (x:xs)  =  reverse xs ++ [x]
 
 (++) :: [Int] -> [Int] -> [Int]
 -- testing 360 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 3 candidates of size 1
--- looking through 8 candidates of size 2
--- looking through 11 candidates of size 3
+-- looking through 7 candidates of size 2
+-- looking through 9 candidates of size 3
 -- looking through 44 candidates of size 4
 -- looking through 116 candidates of size 5
 -- looking through 80 candidates of size 6
--- tested 236 candidates
+-- tested 233 candidates
 [] ++ xs  =  xs
 (x:xs) ++ ys  =  x:(xs ++ ys)
 
-length :: [Int] -> Int
--- testing 360 combinations of argument values
--- pruning with 6/10 rules
--- looking through 2 candidates of size 1
--- looking through 4 candidates of size 2
--- looking through 3 candidates of size 3
--- looking through 13 candidates of size 4
--- looking through 16 candidates of size 5
--- tested 25 candidates
-length []  =  0
-length (x:xs)  =  length xs + 1
-
-reverse :: [Int] -> [Int]
--- testing 360 combinations of argument values
--- pruning with 6/6 rules
--- looking through 2 candidates of size 1
--- looking through 1 candidates of size 2
--- looking through 3 candidates of size 3
--- looking through 2 candidates of size 4
--- looking through 5 candidates of size 5
--- looking through 15 candidates of size 6
--- tested 18 candidates
-reverse []  =  []
-reverse (x:xs)  =  reverse xs ++ unit x
-
 (++) :: [Int] -> [Int] -> [Int]
 -- testing 360 combinations of argument values
 -- pruning with 2/2 rules
 -- looking through 3 candidates of size 1
--- looking through 8 candidates of size 2
--- looking through 11 candidates of size 3
+-- looking through 7 candidates of size 2
+-- looking through 9 candidates of size 3
 -- looking through 48 candidates of size 4
--- tested 57 candidates
+-- tested 54 candidates
 xs ++ ys  =  foldr (:) ys xs
 
 (\/) :: [Int] -> [Int] -> [Int]
 -- testing 360 combinations of argument values
 -- pruning with 0/0 rules
 -- looking through 3 candidates of size 1
--- looking through 8 candidates of size 2
--- looking through 11 candidates of size 3
+-- looking through 7 candidates of size 2
+-- looking through 9 candidates of size 3
 -- looking through 44 candidates of size 4
 -- looking through 116 candidates of size 5
 -- looking through 80 candidates of size 6
--- tested 238 candidates
+-- tested 235 candidates
 [] \/ xs  =  xs
 (x:xs) \/ ys  =  x:ys \/ xs
+
+ordered :: [Int] -> Bool
+-- testing 360 combinations of argument values
+-- pruning with 29/39 rules
+-- looking through 2 candidates of size 1
+-- looking through 2 candidates of size 2
+-- looking through 3 candidates of size 3
+-- looking through 3 candidates of size 4
+-- looking through 4 candidates of size 5
+-- looking through 16 candidates of size 6
+-- looking through 28 candidates of size 7
+-- looking through 48 candidates of size 8
+-- looking through 100 candidates of size 9
+-- looking through 226 candidates of size 10
+-- looking through 482 candidates of size 11
+-- tested 616 candidates
+ordered []  =  True
+ordered (x:xs)  =  (null xs || x <= head xs) && ordered xs
+
+merge :: [Int] -> [Int] -> [Int]
+-- testing 360 combinations of argument values
+-- pruning with 1/2 rules
+-- looking through 2 candidates of size 1
+-- looking through 1 candidates of size 2
+-- looking through 2 candidates of size 3
+-- looking through 12 candidates of size 4
+-- looking through 16 candidates of size 5
+-- looking through 20 candidates of size 6
+-- looking through 84 candidates of size 7
+-- looking through 40 candidates of size 8
+-- looking through 368 candidates of size 9
+-- looking through 216 candidates of size 10
+-- looking through 1838 candidates of size 11
+-- looking through 1016 candidates of size 12
+-- tested 3615 candidates
+cannot conjure
 
diff --git a/eg/pow.out b/eg/pow.out
--- a/eg/pow.out
+++ b/eg/pow.out
@@ -2,14 +2,14 @@
 -- testing 5 combinations of argument values
 -- pruning with 14/30 rules
 -- looking through 4 candidates of size 1
--- looking through 18 candidates of size 2
--- looking through 101 candidates of size 3
--- looking through 324 candidates of size 4
--- looking through 1668 candidates of size 5
--- looking through 3438 candidates of size 6
--- looking through 21096 candidates of size 7
--- looking through 34780 candidates of size 8
--- tested 27290 candidates
+-- looking through 17 candidates of size 2
+-- looking through 92 candidates of size 3
+-- looking through 307 candidates of size 4
+-- looking through 1632 candidates of size 5
+-- looking through 3406 candidates of size 6
+-- looking through 21046 candidates of size 7
+-- looking through 34728 candidates of size 8
+-- tested 27145 candidates
 pow x 0  =  1
 pow x y  =  x * pow x (y - 1)
 
@@ -17,11 +17,11 @@
 -- testing 5 combinations of argument values
 -- pruning with 15/19 rules
 -- looking through 4 candidates of size 1
--- looking through 20 candidates of size 2
--- looking through 114 candidates of size 3
--- looking through 378 candidates of size 4
--- looking through 1690 candidates of size 5
--- looking through 4572 candidates of size 6
--- tested 6778 candidates
+-- looking through 19 candidates of size 2
+-- looking through 105 candidates of size 3
+-- looking through 360 candidates of size 4
+-- looking through 1649 candidates of size 5
+-- looking through 4534 candidates of size 6
+-- tested 6671 candidates
 cannot conjure
 
diff --git a/eg/replicate.out b/eg/replicate.out
--- a/eg/replicate.out
+++ b/eg/replicate.out
@@ -4,12 +4,12 @@
 -- looking through 1 candidates of size 1
 -- looking through 0 candidates of size 2
 -- looking through 1 candidates of size 3
--- looking through 2 candidates of size 4
+-- looking through 1 candidates of size 4
 -- looking through 3 candidates of size 5
--- looking through 7 candidates of size 6
+-- looking through 5 candidates of size 6
 -- looking through 5 candidates of size 7
--- looking through 16 candidates of size 8
--- tested 20 candidates
+-- looking through 8 candidates of size 8
+-- tested 17 candidates
 replicate 0 c  =  ""
 replicate x c  =  c:replicate (x - 1) c
 
diff --git a/eg/setelem.out b/eg/setelem.out
--- a/eg/setelem.out
+++ b/eg/setelem.out
@@ -17,14 +17,14 @@
 -- testing 360 combinations of argument values
 -- pruning with 46/57 rules
 -- looking through 2 candidates of size 1
--- looking through 3 candidates of size 2
--- looking through 7 candidates of size 3
--- looking through 19 candidates of size 4
--- looking through 35 candidates of size 5
--- looking through 83 candidates of size 6
--- looking through 245 candidates of size 7
--- looking through 617 candidates of size 8
--- tested 466 candidates
+-- looking through 2 candidates of size 2
+-- looking through 5 candidates of size 3
+-- looking through 11 candidates of size 4
+-- looking through 20 candidates of size 5
+-- looking through 47 candidates of size 6
+-- looking through 136 candidates of size 7
+-- looking through 348 candidates of size 8
+-- tested 256 candidates
 set []  =  True
 set (x:xs)  =  not (elem x xs) && set xs
 
diff --git a/eg/sort.out b/eg/sort.out
--- a/eg/sort.out
+++ b/eg/sort.out
@@ -3,10 +3,10 @@
 -- pruning with 6/7 rules
 -- looking through 2 candidates of size 1
 -- looking through 3 candidates of size 2
--- looking through 7 candidates of size 3
--- looking through 16 candidates of size 4
--- looking through 36 candidates of size 5
--- tested 31 candidates
+-- looking through 5 candidates of size 3
+-- looking through 12 candidates of size 4
+-- looking through 23 candidates of size 5
+-- tested 24 candidates
 sort []  =  []
 sort (x:xs)  =  insert x (sort xs)
 
@@ -45,17 +45,17 @@
 -- testing 360 combinations of argument values
 -- pruning with 4/4 rules
 -- looking through 3 candidates of size 1
--- looking through 8 candidates of size 2
--- looking through 11 candidates of size 3
+-- looking through 7 candidates of size 2
+-- looking through 9 candidates of size 3
 -- looking through 44 candidates of size 4
 -- looking through 116 candidates of size 5
 -- looking through 80 candidates of size 6
--- looking through 719 candidates of size 7
+-- looking through 715 candidates of size 7
 -- looking through 164 candidates of size 8
 -- looking through 3360 candidates of size 9
 -- looking through 1448 candidates of size 10
--- looking through 12905 candidates of size 11
+-- looking through 12901 candidates of size 11
 -- looking through 15208 candidates of size 12
--- tested 34066 candidates
+-- tested 34055 candidates
 cannot conjure
 
diff --git a/eg/spec.out b/eg/spec.out
--- a/eg/spec.out
+++ b/eg/spec.out
@@ -28,12 +28,12 @@
 (++) :: [Int] -> [Int] -> [Int]
 -- pruning with 3/3 rules
 -- looking through 2 candidates of size 1
--- looking through 4 candidates of size 2
+-- looking through 3 candidates of size 2
 -- looking through 10 candidates of size 3
--- looking through 28 candidates of size 4
+-- looking through 27 candidates of size 4
 -- looking through 78 candidates of size 5
--- looking through 172 candidates of size 6
--- tested 196 candidates
+-- looking through 171 candidates of size 6
+-- tested 194 candidates
 [] ++ xs  =  xs
 (x:xs) ++ ys  =  x:(xs ++ ys)
 
diff --git a/eg/subset.out b/eg/subset.out
--- a/eg/subset.out
+++ b/eg/subset.out
@@ -3,13 +3,13 @@
 -- pruning with 29/39 rules
 -- looking through 2 candidates of size 1
 -- looking through 4 candidates of size 2
--- looking through 14 candidates of size 3
+-- looking through 10 candidates of size 3
 -- looking through 40 candidates of size 4
 -- looking through 160 candidates of size 5
 -- looking through 0 candidates of size 6
--- looking through 448 candidates of size 7
+-- looking through 444 candidates of size 7
 -- looking through 784 candidates of size 8
--- tested 1318 candidates
+-- tested 1310 candidates
 subset [] xs  =  True
 subset (x:xs) ys  =  elem x ys && subset xs ys
 
diff --git a/eg/tree.hs b/eg/tree.hs
--- a/eg/tree.hs
+++ b/eg/tree.hs
@@ -45,10 +45,10 @@
 
 
 leftmost :: Tree -> Int
-leftmost (Node l x _)  =  if nil l then x else leftmost (left l)
+leftmost (Node l x _)  =  if nil l then x else leftmost l
 
 rightmost :: Tree -> Int
-rightmost (Node _ x r)  =  if nil r then x else rightmost (right r)
+rightmost (Node _ x r)  =  if nil r then x else rightmost r
 
 height :: Tree -> Int
 height Leaf  =  -1
@@ -58,21 +58,32 @@
 size Leaf  =  0
 size (Node l _ r)  =  size l + 1 + size r
 
+ordered :: Tree -> Bool
+ordered Leaf  =  True
+ordered (Node l x r)  =  (nil l || rightmost l < x)
+                      && (nil r || x < leftmost r)
+                      && ordered l
+                      && ordered r
+
+preorder :: Tree -> [Int]
+preorder Leaf =  []
+preorder (Node l x r)  =  [x] ++ preorder l ++ preorder r
+
+inorder :: Tree -> [Int]
+inorder Leaf  =  []
+inorder (Node l x r)  =  inorder l ++ [x] ++ inorder r
+
+posorder :: Tree -> [Int]
+posorder Leaf =  []
+posorder (Node l x r)  =  posorder l ++ posorder r ++ [x]
+
+
 -- this mem searches both sides of the tree
 mem :: Int -> Tree -> Bool
 mem _ Leaf  =  False
 mem y (Node l x r)  =  y == x || mem y l || mem y r
 
-insert :: Int -> Tree -> Tree
-insert x Leaf  =  unit x
-insert x (Node l y r)  =  case compare x y of
-  LT -> Node (insert x l) y r
-  EQ -> Node l y r
-  GT -> Node l y (insert x r)
 
--- TODO: mem alternative for binary search trees
-
-
 instance Listable Tree where
   tiers  =  cons0 Leaf
         \/  cons3 Node
@@ -85,6 +96,7 @@
   conjureEquality  =  reifyEquality
   conjureTiers     =  reifyTiers
   conjureSubTypes x  =  conjureType (undefined :: Int)
+  conjureSize     =  size
   conjureCases t  =  [ val (Leaf -: t)
                      , value "Node" (Node ->>>: t) :$ hole l :$ hole x :$ hole r
                      ]
@@ -96,77 +108,73 @@
 main = do
   conjure "leftmost" leftmost
     [ prim "undefined" (undefined :: Int)
-    , prim "if" (\p x y -> if p then x else y :: Int)
+    , prif (undefined :: Int)
     , prim "nil" nil
     ]
 
   conjure "rightmost" rightmost
     [ prim "undefined" (undefined :: Int)
-    , prim "if" (\p x y -> if p then x else y :: Int)
+    , prif (undefined :: Int)
     , prim "nil" nil
     ]
 
-  conjureWithMaxSize 13 "size" size
+  conjure "size" size
     [ pr (0 :: Int)
     , pr (1 :: Int)
     , prim "+" ((+) :: Int -> Int -> Int)
     , prim "nil" nil
-    , prim "left" left
-    , prim "right" right
     ]
 
-  conjureWithMaxSize 13 "height" height
+  conjure "height" height
     [ pr (0 :: Int)
     , pr (1 :: Int)
     , pr (-1 :: Int)
     , prim "+" ((+) :: Int -> Int -> Int)
     , prim "max" (max :: Int -> Int -> Int)
     , prim "nil" nil
-    , prim "left" left
-    , prim "right" right
     ]
 
-  -- out of reach performance-wise
   conjure "mem" mem
     [ pr False
     , prim "||" (||)
     , prim "==" ((==) :: Int -> Int -> Bool)
     ]
 
-  -- simply out of reach performance-wise (size 34)
-  conjureWithMaxSize 12 "insert" insert
-    [ pr Leaf
-    , prim "Node" Node
-    , prim "==" ((==) :: Int -> Int -> Bool)
+  -- unreachable: needs size 22 but OOMs at 18
+  conjureWithMaxSize 12 "ordered" ordered
+    [ pr True
+    , pr False
+    , prim "&&" (&&)
+    , prim "||" (||)
     , prim "<" ((<) :: Int -> Int -> Bool)
-    , prim ">" ((>) :: Int -> Int -> Bool)
-    , prim "if" (\p t1 t2 -> if p then t1 else t2 :: Tree)
+    , prim "rightmost" rightmost
+    , prim "leftmost" leftmost
     ]
 
+  conjure "ordered" ordered
+    [ prim "strictlyOrdered" (strictlyOrdered :: [Int] -> Bool)
+    , prim "inorder" inorder
+    ]
 
-sizeIf :: Tree -> Int
-sizeIf t  =  if nil t  -- 3
-             then 0    -- 4
-             else sizeIf (left t) + sizeIf (right t)
-             --      5     6   7  8   9      10  11
+  conjureWithMaxSize 12 "preorder" preorder
+    [ pr ([] :: [Int])
+    , prim ":" ((:) :: Int -> [Int] -> [Int])
+    , prim "++" ((++) :: [Int] -> [Int] -> [Int])
+    ]
 
-heightIf :: Tree -> Int
-heightIf t  =  if nil t  -- 3
-               then -1   -- 4
-               else 1 + max (height (left t)) (height (right t))
-               --   5 6  7     8      9  10      11     12   13
+  conjureWithMaxSize 12 "inorder" inorder
+    [ pr ([] :: [Int])
+    , prim ":" ((:) :: Int -> [Int] -> [Int])
+    , prim "++" ((++) :: [Int] -> [Int] -> [Int])
+    ]
 
-memIf :: Int -> Tree -> Bool
-memIf y t  =  if nil t     -- 3
-              then False   -- 4
-              else y == valu t || memIf y (left t) || memIf y (right t)
-              --   5  6   7  8  9  10  11   12  13 14  15  16   17   18
+  conjureWithMaxSize 12 "posorder" posorder
+    [ pr ([] :: [Int])
+    , prim ":" ((:) :: Int -> [Int] -> [Int])
+    , prim "++" ((++) :: [Int] -> [Int] -> [Int])
+    ]
 
-insertIf :: Int -> Tree -> Tree
-insertIf x t  =  if nil t                 -- 3
-                 then unit x              -- 5
-                 else if x == valu t      -- 10
-                      then t              -- 11
-                      else if x < valu t  -- 16
-                           then Node (insert x (left t)) (valu t) (right t)  -- 25
-                           else Node (left t) (valu t) (insert x (right t))  -- 34
+
+strictlyOrdered :: [Int] -> Bool
+strictlyOrdered []  =  True
+strictlyOrdered (x:xs)  =  (null xs || x < head xs) && strictlyOrdered xs
diff --git a/eg/tree.out b/eg/tree.out
--- a/eg/tree.out
+++ b/eg/tree.out
@@ -30,14 +30,14 @@
 -- testing 360 combinations of argument values
 -- pruning with 4/8 rules
 -- looking through 2 candidates of size 1
--- looking through 4 candidates of size 2
--- looking through 5 candidates of size 3
--- looking through 19 candidates of size 4
--- looking through 35 candidates of size 5
--- looking through 66 candidates of size 6
--- looking through 163 candidates of size 7
--- looking through 311 candidates of size 8
--- tested 428 candidates
+-- looking through 2 candidates of size 2
+-- looking through 3 candidates of size 3
+-- looking through 4 candidates of size 4
+-- looking through 9 candidates of size 5
+-- looking through 12 candidates of size 6
+-- looking through 25 candidates of size 7
+-- looking through 40 candidates of size 8
+-- tested 71 candidates
 size Leaf  =  0
 size (Node t1 x t2)  =  size t1 + (size t2 + 1)
 
@@ -45,14 +45,14 @@
 -- testing 360 combinations of argument values
 -- pruning with 49/65 rules
 -- looking through 3 candidates of size 1
--- looking through 9 candidates of size 2
--- looking through 8 candidates of size 3
--- looking through 59 candidates of size 4
--- looking through 114 candidates of size 5
--- looking through 472 candidates of size 6
--- looking through 1440 candidates of size 7
--- looking through 5781 candidates of size 8
--- tested 4171 candidates
+-- looking through 3 candidates of size 2
+-- looking through 4 candidates of size 3
+-- looking through 13 candidates of size 4
+-- looking through 30 candidates of size 5
+-- looking through 88 candidates of size 6
+-- looking through 320 candidates of size 7
+-- looking through 1093 candidates of size 8
+-- tested 475 candidates
 height Leaf  =  -1
 height (Node t1 x t2)  =  max (height t1) (height t2) + 1
 
@@ -75,21 +75,77 @@
 mem x Leaf  =  False
 mem x (Node t1 y t2)  =  mem x t1 || (x == y || mem x t2)
 
-insert :: Int -> Tree -> Tree
+ordered :: Tree -> Bool
 -- testing 360 combinations of argument values
--- pruning with 6/7 rules
+-- pruning with 29/39 rules
 -- looking through 2 candidates of size 1
--- looking through 2 candidates of size 2
--- looking through 0 candidates of size 3
--- looking through 10 candidates of size 4
--- looking through 21 candidates of size 5
--- looking through 0 candidates of size 6
--- looking through 118 candidates of size 7
--- looking through 239 candidates of size 8
--- looking through 216 candidates of size 9
--- looking through 2204 candidates of size 10
--- looking through 3651 candidates of size 11
--- looking through 8280 candidates of size 12
--- tested 14743 candidates
+-- looking through 1 candidates of size 2
+-- looking through 2 candidates of size 3
+-- looking through 0 candidates of size 4
+-- looking through 10 candidates of size 5
+-- looking through 20 candidates of size 6
+-- looking through 0 candidates of size 7
+-- looking through 64 candidates of size 8
+-- looking through 144 candidates of size 9
+-- looking through 112 candidates of size 10
+-- looking through 964 candidates of size 11
+-- looking through 1480 candidates of size 12
+-- tested 2799 candidates
 cannot conjure
+
+ordered :: Tree -> Bool
+-- testing 360 combinations of argument values
+-- pruning with 0/0 rules
+-- looking through 0 candidates of size 1
+-- looking through 0 candidates of size 2
+-- looking through 3 candidates of size 3
+-- tested 3 candidates
+ordered t1  =  strictlyOrdered (inorder t1)
+
+preorder :: Tree -> [Int]
+-- testing 360 combinations of argument values
+-- pruning with 4/4 rules
+-- looking through 1 candidates of size 1
+-- looking through 0 candidates of size 2
+-- looking through 2 candidates of size 3
+-- looking through 1 candidates of size 4
+-- looking through 2 candidates of size 5
+-- looking through 5 candidates of size 6
+-- looking through 4 candidates of size 7
+-- looking through 9 candidates of size 8
+-- tested 17 candidates
+preorder Leaf  =  []
+preorder (Node t1 x t2)  =  x:(preorder t1 ++ preorder t2)
+
+inorder :: Tree -> [Int]
+-- testing 360 combinations of argument values
+-- pruning with 4/4 rules
+-- looking through 1 candidates of size 1
+-- looking through 0 candidates of size 2
+-- looking through 2 candidates of size 3
+-- looking through 1 candidates of size 4
+-- looking through 2 candidates of size 5
+-- looking through 5 candidates of size 6
+-- looking through 4 candidates of size 7
+-- looking through 9 candidates of size 8
+-- tested 21 candidates
+inorder Leaf  =  []
+inorder (Node t1 x t2)  =  inorder t1 ++ (x:inorder t2)
+
+posorder :: Tree -> [Int]
+-- testing 360 combinations of argument values
+-- pruning with 4/4 rules
+-- looking through 1 candidates of size 1
+-- looking through 0 candidates of size 2
+-- looking through 2 candidates of size 3
+-- looking through 1 candidates of size 4
+-- looking through 2 candidates of size 5
+-- looking through 5 candidates of size 6
+-- looking through 4 candidates of size 7
+-- looking through 9 candidates of size 8
+-- looking through 14 candidates of size 9
+-- looking through 17 candidates of size 10
+-- tested 52 candidates
+posorder Leaf  =  []
+posorder (Node t1 x t2)  =  posorder t1 ++ (posorder t2 ++ [x])
 
diff --git a/mk/depend.mk b/mk/depend.mk
--- a/mk/depend.mk
+++ b/mk/depend.mk
@@ -172,6 +172,19 @@
   src/Conjure/Conjurable.hs \
   src/Conjure/Conjurable/Derive.hs \
   eg/bools.hs
+eg/bst: \
+  eg/bst.hs \
+  mk/toplibs
+eg/bst.o: \
+  src/Conjure/Utils.hs \
+  src/Conjure/Prim.hs \
+  src/Conjure.hs \
+  src/Conjure/Expr.hs \
+  src/Conjure/Engine.hs \
+  src/Conjure/Defn.hs \
+  src/Conjure/Conjurable.hs \
+  src/Conjure/Conjurable/Derive.hs \
+  eg/bst.hs
 eg/count: \
   eg/count.hs \
   mk/toplibs
diff --git a/mk/haskell.mk b/mk/haskell.mk
--- a/mk/haskell.mk
+++ b/mk/haskell.mk
@@ -1,6 +1,6 @@
 # Implicit rules for compiling Haskell code.
 #
-# Copyright (c) 2015-2021 Rudy Matela.
+# Copyright (c) 2015-2023 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 #
 # You can optionally configure the "Configuration variables" below in your main
@@ -21,7 +21,7 @@
 GHC ?= ghc
 GHCCMD = $(GHC) -i$(GHCIMPORTDIRS) $(GHCFLAGS)
 HADDOCK ?= haddock
-CABAL_INSTALL = $(shell cabal --version | grep -q "version [0-2]\." && echo 'cabal install' || echo 'cabal v1-install')
+CABAL_INSTALL = $(shell cabal --version | grep -q "version [0-2]\." && echo 'cabal install' || echo 'cabal install --lib')
 
 # Hugs Parameters
 HUGSIMPORTDIRS ?= "/usr/lib/hugs/packages/*"
@@ -52,7 +52,6 @@
 PKGNAME = $(shell cat *.cabal | grep "^name:"    | sed -e "s/name: *//")
 
 HADDOCK_HAS = haddock --help | grep -q --
-HADDOCK_FILTER ?= cat
 
 
 # Implicit rules
@@ -91,7 +90,10 @@
 	find $(ALL_HSS) | ./mk/ghcdeps -i$(GHCIMPORTDIRS) $(GHCFLAGS) > $(DEPMK)
 
 install-dependencies:
-	$(CABAL_INSTALL) $(INSTALL_DEPS)
+	if [ -n "$(INSTALL_DEPS)" ]; then \
+		cabal update && \
+		$(CABAL_INSTALL) $(INSTALL_DEPS); \
+	fi
 
 # haddock rules
 haddock: doc/index.html
@@ -112,8 +114,7 @@
 	  $(shell $(HADDOCK_HAS) --package-name          && echo "--package-name=$(PKGNAME)" ) \
 	  $(shell $(HADDOCK_HAS) --hyperlinked-source    && echo "--hyperlinked-source"      ) \
 	  $(shell $(HADDOCK_HAS) --no-print-missing-docs && echo --no-print-missing-docs     ) \
-	  $(HADDOCKFLAGS) | \
-	$(HADDOCK_FILTER)
+	  $(HADDOCKFLAGS)
 
 clean-cabal:
 	rm -rf dist/ dist-newstyle/ cabal.project.local cabal.project.local~
diff --git a/src/Conjure.hs b/src/Conjure.hs
--- a/src/Conjure.hs
+++ b/src/Conjure.hs
@@ -48,6 +48,7 @@
   , pr
   , prim
   , prif
+  , primOrdCaseFor
 
 -- * Advanced use
   , conjureWithMaxSize
@@ -63,7 +64,7 @@
   , conjureFromSpecWith
 
 -- * When using custom types
-  , Conjurable (conjureExpress, conjureEquality, conjureTiers, conjureCases, conjureSubTypes)
+  , Conjurable (conjureExpress, conjureEquality, conjureTiers, conjureCases, conjureSubTypes, conjureSize)
   , reifyExpress
   , reifyEquality
   , reifyTiers
diff --git a/src/Conjure/Conjurable.hs b/src/Conjure/Conjurable.hs
--- a/src/Conjure/Conjurable.hs
+++ b/src/Conjure/Conjurable.hs
@@ -29,6 +29,7 @@
   , conjureIsDeconstructor
   , conjureIsDeconstruction
   , candidateDeconstructionsFrom
+  , candidateDeconstructionsFromHoled
   , conjureIsUnbreakable
   , conjureReification
   , conjureReification1
@@ -361,11 +362,18 @@
                $  e `match` ed
   err  =  error "conjureIsDeconstructor: the impossible happened"
 
+
 -- | Compute candidate deconstructions from an 'Expr'.
 --
--- This is used in the implementation of
--- 'Conjure.Engine.candidateDefnsC' and 'Conjure.Engine.candidateExprs'
+-- This is used in the implementation of 'Conjure.Engine.candidateDefnsC'
 -- followed by 'conjureIsDeconstruction'.
+--
+-- > > candidateDeconstructionsFrom (xx `mod'` yy)
+-- > [ _ `mod` y
+-- > , x `mod` _
+-- > ]
+--
+-- To be constrasted with 'candidateDeconstructionsFromHoled'.
 candidateDeconstructionsFrom :: Expr -> [Expr]
 candidateDeconstructionsFrom e  =
   [ e'
@@ -374,6 +382,31 @@
   , let e' = e //- [(v, holeAsTypeOf v)]
   , length (holes e') == 1
   ]
+
+-- | Compute candidate deconstructions from an 'Expr'.
+--
+-- This is used in the implementation of 'Conjure.Engine.candidateExprs'
+-- followed by 'conjureIsDeconstruction'.
+--
+-- This is similar to 'canonicalVariations'
+-- but always leaves a hole
+-- of the same return type as the given expression.
+--
+-- > > candidateDeconstructionsFrom (i_ `mod'` i_)
+-- > [ _ `mod` x
+-- > , x `mod` _
+-- > ]
+--
+-- To be contrasted with 'candidateDeconstructionsFrom'
+candidateDeconstructionsFromHoled :: Expr -> [Expr]
+candidateDeconstructionsFromHoled e  =  map (//- [(v, h)])
+                                     $  concatMap canonicalVariations
+                                     $  deholings v e
+  where
+  h  =  holeAsTypeOf e
+  v  =  "_#_" `varAsTypeOf` e  -- a marker variable with an invalid name
+  -- at some point I should get rid of candidateDeconstructionsFrom in favour
+  -- of this one
 
 -- | Checks if an 'Expr' is of an unbreakable type.
 conjureIsUnbreakable :: Conjurable f => f -> Expr -> Bool
diff --git a/src/Conjure/Defn.hs b/src/Conjure/Defn.hs
--- a/src/Conjure/Defn.hs
+++ b/src/Conjure/Defn.hs
@@ -20,6 +20,7 @@
   , devalFast
   , showDefn
   , defnApparentlyTerminates
+  , isRedundantDefn
   , module Conjure.Expr
   )
 where
@@ -31,7 +32,7 @@
 import Data.Express.Fixtures
 import Data.Dynamic
 import Control.Applicative ((<$>)) -- for older GHCs
-import Test.LeanCheck.Utils ((-:>)) -- for toDynamicWithDefn
+import Test.LeanCheck.Utils ((-:>), classifyOn)
 
 -- | A function definition as a list of top-level case bindings ('Bndn').
 --
@@ -134,6 +135,7 @@
   -- should only be used to evaluate an expr of the form:
   -- ef' :$ exprExpr ex :$ exprExpr ey :$ ...
   red :: Int -> Memo -> Expr -> Maybe (Int, Memo, Dynamic)
+  red n m e  |  size e > n  =  error "toDynamicWithDefn: argument-size limit reached"
   red n m e  =  case lookup e m of
     Just Nothing -> error $ "toDynamicWithDefn: loop detected " ++ show e
     Just (Just d) -> Just (n,m,d)
@@ -194,3 +196,40 @@
 defnApparentlyTerminates :: Defn -> Bool
 defnApparentlyTerminates [(efxs, e)]  =  apparentlyTerminates efxs e
 defnApparentlyTerminates _  =  True
+
+-- | Returns whether the given 'Defn' is redundant
+--   with regards to its patterns.
+--
+-- Here is an example of a redundant 'Defn':
+--
+-- > 0 ? 0  =  0
+-- > 0 ? x  =  0
+-- > x ? 0  =  x
+-- > x ? y  =  x
+--
+-- It is redundant because it is equivalent to:
+--
+-- > 0 ? _  =  0
+-- > x ? _  =  x
+--
+-- If the given expression is incomplete ('hasHole')
+-- this function returns 'True' as nothing can be said.
+isRedundantDefn :: Defn -> Bool
+isRedundantDefn d  =  all isComplete (map snd d)
+                   && any isRedundant1 (unfoldDefnArgs d)
+  where
+  isRedundant1 :: [(Expr,Expr)] -> Bool
+  isRedundant1  =  all allEqual
+                .  map (map snd)
+                .  classifyOn fst
+                .  map (unfoldPair . canonicalize . foldPair)
+
+  -- Returns a list of degenerate 'Defn'
+  -- whose patterns have been "lensed" on each argument.
+  unfoldDefnArgs :: Defn -> [[(Expr,Expr)]]
+  unfoldDefnArgs  =  transpose . map unfoldBndnArgs
+    where
+    unfoldBndnArgs :: Bndn -> [(Expr,Expr)]
+    unfoldBndnArgs (p,r)  =  map (\a -> (a,r)) as
+      where
+      (_:as)  =  unfoldApp p
diff --git a/src/Conjure/Engine.hs b/src/Conjure/Engine.hs
--- a/src/Conjure/Engine.hs
+++ b/src/Conjure/Engine.hs
@@ -49,6 +49,7 @@
 import Test.LeanCheck
 import Test.LeanCheck.Tiers
 import Test.LeanCheck.Error (errorToTrue, errorToFalse, errorToNothing)
+import Test.LeanCheck.Utils (classifyOn)
 
 import Test.Speculate.Reason (Thy, rules, equations, invalid, canReduceTo, printThy, closureLimit, doubleCheck)
 import Test.Speculate.Engine (theoryFromAtoms, grounds, groundBinds, boolTy)
@@ -163,6 +164,7 @@
   , maxDeconstructionSize :: Int  -- ^ maximum size of deconstructions (e.g.: @_ - 1@)
   , requireDescent        :: Bool -- ^ require recursive calls to deconstruct arguments
   , usePatterns           :: Bool -- ^ use pattern matching to create (recursive) candidates
+  , copyBindings          :: Bool -- ^ copy partial definition bindings in candidates
   , showTheory            :: Bool -- ^ show theory discovered by Speculate used in pruning
   , uniqueCandidates      :: Bool -- ^ unique-modulo-testing candidates
   }
@@ -189,6 +191,7 @@
   , maxDeconstructionSize  =   4
   , requireDescent         =  True
   , usePatterns            =  True
+  , copyBindings           =  True
   , showTheory             =  False
   , uniqueCandidates       =  False
   }
@@ -217,12 +220,18 @@
     putStrLn $ "{-"
     printThy thy
     putStrLn $ "-}"
-  when (not . null $ invalid thy) $
+  when (not . null $ invalid thy) $ do
     putStrLn $ "-- reasoning produced "
             ++ show (length (invalid thy)) ++ " incorrect properties,"
             ++ " please re-run with more tests for faster results"
+    when (showTheory args) $ do
+      putStrLn $ "{-"
+      putStrLn $ "invalid:"
+      putStr   $ unlines $ map showEq $ invalid thy
+      putStrLn $ "-}"
   pr 1 0 rs
   where
+  showEq eq  =  showExpr (fst eq) ++ " == " ++ showExpr (snd eq)
   pr n t []  =  do putStrLn $ "-- tested " ++ show t ++ " candidates"
                    putStrLn $ "cannot conjure\n"
   pr n t ((is,cs):rs)  =  do
@@ -395,6 +404,7 @@
        $  cjHoles (prim nm f:ps) ++ [val False, val True] ++ es
   (===)  =  cjAreEqual (prim nm f:ps) maxTests
 
+
 -- | Return apparently unique candidate definitions
 --   using pattern matching.
 candidateDefnsC :: Conjurable f => Args -> String -> f -> [Prim] -> ([[Defn]], Thy)
@@ -413,11 +423,17 @@
   appsWith :: Expr -> [Expr] -> [[Expr]]
   appsWith eh vs  =  enumerateAppsFor eh keep $ vs ++ es
 
-
   ps2fss :: [Expr] -> [[Defn]]
-  ps2fss pats  =  discardT (allEqual . map snd) . products $ map p2eess pats
+  ps2fss pats  =  discardT isRedundantDefn
+               .  discardT (allEqual . map snd)
+               .  products
+               $  map p2eess pats
     where
     p2eess :: Expr -> [[Bndn]]
+    -- the following guarded line is an optional optimization
+    -- if the function is defined for the given pattern,
+    -- simply use its return value as the only possible result
+    p2eess pat | copyBindings && isGroundPat f pat  =  [[(pat, toValPat f pat)]]
     p2eess pat  =  mapT (pat,)
                 .  appsWith pat
                 .  tail
@@ -436,7 +452,6 @@
   fillingsFor :: Defn -> [[Defn]]
   fillingsFor  =  products . map fillingsFor1
 
-  ds  =  filter (conjureIsDeconstructor f maxTests) es
   keepR ep | requireDescent  =  descends isDecOf ep
            | otherwise       =  const True
     where
@@ -444,13 +459,18 @@
                     [  ()
                     |  d <- deconstructions
                     ,  m <- maybeToList (e `match` d)
-                    ,  filter (uncurry (/=)) m == [(holeAsTypeOf e', e')]
+                       -- h (_) is bound to e'
+                    ,  lookup h m == Just e'
+                       -- other than (h,e') we only accept (var,var)
+                    ,  all (\(e1,e2) -> e1 == h || isVar e2) m
                     ]
+      where
+      h = holeAsTypeOf e'
     deconstructions :: [Expr]
     deconstructions  =  filter (conjureIsDeconstruction f maxTests)
-                     $  concatMap candidateDeconstructionsFrom
+                     $  concatMap candidateDeconstructionsFromHoled
                      $  concat . take maxDeconstructionSize
-                     $  concatMapT (`appsWith` vars ep) [hs]
+                     $  concatMapT (`appsWith` hs) [hs]
       where
       hs  =  nub $ conjureArgumentHoles f
   recs ep  =  filterT (keepR ep)
@@ -547,6 +567,42 @@
   isNotConstruction (p,e) | isVar p    =  e == p || e `isDecOf` p
                           | otherwise  =  size e <= size p -- TODO: allow filter and id somehow
 -- TODO: improve this function with better isNotConstruction
+
+
+-- | Checks if the given pattern is a ground pattern.
+--
+-- A pattern is a ground pattern when its arguments are fully defined
+-- and evaluating the function returns a defined value.
+--
+-- This is to be used on values returned by conjurePats.
+--
+-- For now, this is only used on 'candidateDefnsC'.
+isGroundPat :: Conjurable f => f -> Expr -> Bool
+isGroundPat f pat  =  errorToFalse . eval False $ gpat -==- gpat
+  where
+  gpat  =  toGroundPat f pat
+  (-==-)  =  conjureMkEquation f
+
+
+-- | Given a complete "pattern", i.e. application encoded as expr,
+--   converts it from using a "variable" function,
+--   to an actual "value" function.
+--
+-- This function is used on 'isGroundPat' and 'toValPat'
+toGroundPat :: Conjurable f => f -> Expr -> Expr
+toGroundPat f pat  =  foldApp (value "f" f : tail (unfoldApp pat))
+
+-- | Evaluates a pattern to its final value.
+--
+-- Only to be used when the function is defined for the given set of arguments.
+--
+-- For now, this is only used on 'candidateDefnsC'.
+toValPat :: Conjurable f => f -> Expr -> Expr
+toValPat f  =  conjureExpress f . toGroundPat f
+-- NOTE: the use of conjureExpress above is a hack.
+--       Here, one could have used a conjureVal function,
+--       that lifts 'val' over 'Expr's.
+--       However this function does not exist.
 
 
 -- hardcoded filtering rules
diff --git a/src/Conjure/Expr.hs b/src/Conjure/Expr.hs
--- a/src/Conjure/Expr.hs
+++ b/src/Conjure/Expr.hs
@@ -19,6 +19,7 @@
   , mayNotEvaluateArgument
   , compareSimplicity
   , ifFor
+  , caseForOrd
   , valuesBFS
   , holesBFS
   , fillBFS
@@ -28,6 +29,7 @@
   , revaluate
   , reval
   , useMatches
+  , deholings
 
   , enumerateAppsFor
   , enumerateFillings
@@ -179,12 +181,19 @@
 --
 -- > > ifFor (undefined :: String)
 -- > if :: Bool -> [Char] -> [Char] -> [Char]
---
--- You need to provide this as part of your building blocks on the primitives
--- if you want recursive functions to be considered and produced.
 ifFor :: Typeable a => a -> Expr
 ifFor a  =  value "if" (\p x y -> if p then x else y `asTypeOf` a)
 
+-- | Creates a case 'Expr' of the type of the given proxy.
+--
+-- > > caseForOrd (undefined :: Int)
+-- > case :: Bool -> Int -> Int -> Int -> Int
+--
+-- > > caseForOrd (undefined :: String)
+-- > case :: Bool -> [Char] -> [Char] -> [Char] -> [Char]
+caseForOrd :: Typeable a => a -> Expr
+caseForOrd a  =  value "case" (\o x y z -> case o of LT -> x; EQ -> y; GT -> z `asTypeOf` a)
+
 -- | Application cross-product between lists of Exprs
 (>$$<) :: [Expr] -> [Expr] -> [Expr]
 exs >$$< eys  =  catMaybes [ex $$ ey | ex <- exs, ey <- eys]
@@ -422,6 +431,27 @@
 rehole (e1 :$ e2)    = rehole e1 :$ rehole e2
 rehole e | isVar e   = "" `varAsTypeOf` e
          | otherwise = e
+
+-- | Takes two expressions and returns all possible ways
+--   in which the first expression can appear once in
+--   one of the holes of the second expression.
+--
+-- > > deholings zero (i_ -+- i_ -+- i_)
+-- > [ (0 + _) + _ :: Int
+-- > , (_ + 0) + _ :: Int
+-- > , (_ + _) + 0 :: Int
+-- > ]
+--
+-- > > deholings zero (i_ -+- one -+- ord' c_)
+-- > [(0 + 1) + ord _ :: Int]
+deholings :: Expr -> Expr -> [Expr]
+deholings e'  =  deh
+  where
+  deh (e1 :$ e2)  =  map (:$ e2) (deh e1)
+                  ++ map (e1 :$) (deh e2)
+  deh e  =  if typ e == typ e' && isHole e
+            then [e']
+            else []
 
 instance Express A where  expr  =  val
 instance Express B where  expr  =  val
diff --git a/src/Conjure/Prim.hs b/src/Conjure/Prim.hs
--- a/src/Conjure/Prim.hs
+++ b/src/Conjure/Prim.hs
@@ -14,6 +14,7 @@
   , prim
   , pr
   , prif
+  , primOrdCaseFor
   , cjHoles
   , cjTiersFor
   , cjAreEqual
@@ -51,6 +52,11 @@
 -- | Provides an if condition bound to the given return type.
 prif :: Conjurable a => a -> Prim
 prif x  =  (ifFor x, conjureType x)
+
+
+-- | Provides a case condition bound to the given return type.
+primOrdCaseFor :: Conjurable a => a -> Prim
+primOrdCaseFor x  =  (caseForOrd x, conjureType x)
 
 
 -- the following functions mirror their "conjure" counterparts from
diff --git a/src/Conjure/Utils.hs b/src/Conjure/Utils.hs
--- a/src/Conjure/Utils.hs
+++ b/src/Conjure/Utils.hs
@@ -45,6 +45,8 @@
 import System.IO.Unsafe
 
 -- | Checks if all elements of a list are equal.
+--
+-- Exceptionally this function returns false for an empty or unit list.
 allEqual :: Eq a => [a] -> Bool
 allEqual []  =  False
 allEqual [x]  =  False
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -3,12 +3,12 @@
 # Copyright (C) 2021 Rudy Matela
 # Distributed under the 3-Clause BSD licence (see the file LICENSE).
 
-resolver: lts-18.14 # or ghc-8.10.7
+resolver: lts-19.19 # or ghc-9.0.2
 
 packages:
 - .
 
 extra-deps:
-- leancheck-0.9.10
+- leancheck-1.0.0
 - speculate-0.4.14
-- express-1.0.8
+- express-1.0.10
diff --git a/test/conjurable.hs b/test/conjurable.hs
--- a/test/conjurable.hs
+++ b/test/conjurable.hs
@@ -320,6 +320,19 @@
   , candidateDeconstructionsFrom (div' xx xx) == []
   , candidateDeconstructionsFrom ((xx -+- xx) -+- yy) == [(xx -+- xx) -+- i_]
 
+  , candidateDeconstructionsFromHoled (div' i_ i_) == [ div' i_ xx
+                                                      , div' xx i_
+                                                      ]
+  , candidateDeconstructionsFromHoled (div' xx yy) == []
+  , candidateDeconstructionsFromHoled ((i_ -+- i_) -+- i_) ==
+      [ (i_ -+- xx) -+- yy
+      , (i_ -+- xx) -+- xx
+      , (xx -+- i_) -+- yy
+      , (xx -+- i_) -+- xx
+      , (xx -+- yy) -+- i_
+      , (xx -+- xx) -+- i_
+      ]
+
   , fromDynamic (conjureDynamicEq ((+) :: Int -> Int -> Int) `dynApp` toDyn (1::Int) `dynApp` toDyn (2::Int))
     == Just False
   , fromDynamic (conjureDynamicEq ((+) :: Int -> Int -> Int) `dynApp` toDyn (1::Int) `dynApp` toDyn (1::Int))
diff --git a/test/sdist b/test/sdist
--- a/test/sdist
+++ b/test/sdist
@@ -2,7 +2,7 @@
 #
 # test/sdist: tests the package generated by "cabal sdist".
 #
-# Copyright (c) 2015-2021 Rudy Matela.
+# Copyright (c) 2015-2023 Rudy Matela.
 # Distributed under the 3-Clause BSD licence.
 
 set -xe
@@ -29,7 +29,11 @@
 tar -tf $pkg | sort --ignore-case --unique > $tmp/ls-cabal-iu
 diff -rud $tmp/ls-cabal-i $tmp/ls-cabal-iu
 
-if [ -d .git ]
+# Check if we have a clone of the repo and git is available
+# The check that we can run git ls-files is needed to avoid:
+# fatal: detected dubious ownership in repository at '/__w/.../hello-haskell'
+# on CI.
+if [ -d .git ] && git --version && git ls-files >/dev/null
 then
 	# Test if files included by cabal are the same as files tracked in git.
 	git ls-files                                         | sort > $tmp/ls-git
