From d91d00fccf6ccd42801834e234dc35b7f35faa59 Mon Sep 17 00:00:00 2001
From: Torsten Schmits <git@tryp.io>
Date: Wed, 8 Feb 2023 15:42:01 +0100
Subject: [PATCH] Introduce ListTuplePuns extension

This implements Proposal 0475, introducing the `ListTuplePuns` extension
which is enabled by default.

Disabling this extension makes it invalid to refer to list, tuple and
sum type constructors by using built-in syntax like `[Int]`,
`(Int, Int)`, `(# Int#, Int# #)` or `(# Int | Int #)`.
Instead, this syntax exclusively denotes data constructors for use with
`DataKinds`.
The conventional way of referring to these data constructors by
prefixing them with a single quote (`'(Int, Int)`) is now a parser
error.

Tuple declarations have been moved to `GHC.Tuple.Prim` and the `Solo`
data constructor has been renamed to `MkSolo` (in a previous commit).
Unboxed tuples and sums now have real source declarations in `GHC.Types`.
Unit and solo types for tuples are now called `Unit`, `Unit#`, `Solo`
and `Solo#`.
Constraint tuples now have the unambiguous type constructors `CTuple<n>`
as well as `CUnit` and `CSolo`, defined in `GHC.Classes` like before.

A new parser construct has been added for the unboxed sum data
constructor declarations.

The type families `Tuple`, `Sum#` etc. that were intended to provide
nicer syntax have been omitted from this change set due to inference
problems, to be implemented at a later time.
See the MR discussion for more info.

Updates the submodule utils/haddock.
Updates the cabal submodule due to new language extension.

    Metric Increase:
        haddock.base

    Metric Decrease:
        MultiLayerModulesTH_OneShot
        size_hello_artifact

Proposal document: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0475-tuple-syntax.rst

Merge request: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/8820

Tracking ticket: https://gitlab.haskell.org/ghc/ghc/-/issues/21294
---
 compiler/GHC/Builtin/Names.hs                 |   64 +-
 compiler/GHC/Builtin/Types.hs                 |  222 +-
 compiler/GHC/Builtin/Types.hs-boot            |    1 +
 compiler/GHC/Builtin/Uniques.hs               |   22 +
 compiler/GHC/Core/Predicate.hs                |    2 +-
 compiler/GHC/Driver/DynFlags.hs               |   11 +-
 compiler/GHC/Driver/Session.hs                |    1 +
 compiler/GHC/Hs/Type.hs                       |    4 +-
 compiler/GHC/Iface/Type.hs                    |  161 +-
 compiler/GHC/Parser.y                         |   80 +-
 compiler/GHC/Parser/Errors/Ppr.hs             |   22 +-
 compiler/GHC/Parser/Errors/Types.hs           |    7 +
 compiler/GHC/Parser/Lexer.x                   |    2 +
 compiler/GHC/Parser/PostProcess.hs            |  162 +-
 compiler/GHC/Runtime/Eval.hs                  |    3 +-
 compiler/GHC/StgToJS/Linker/Linker.hs         |    2 +-
 compiler/GHC/StgToJS/Linker/Utils.hs          |    2 +-
 compiler/GHC/Tc/Errors/Ppr.hs                 |    2 +-
 compiler/GHC/Tc/Gen/HsType.hs                 |    2 +-
 compiler/GHC/Tc/Instance/Typeable.hs          |   13 +-
 compiler/GHC/Tc/Validity.hs                   |    6 +-
 compiler/GHC/Types/Error/Codes.hs             |    1 +
 compiler/GHC/Types/Name.hs                    |   32 +-
 compiler/GHC/Types/Name/Cache.hs              |    3 +-
 compiler/GHC/Types/Name/Ppr.hs                |    1 +
 compiler/GHC/Unit/Types.hs                    |    9 +-
 compiler/GHC/Utils/Outputable.hs              |    8 +-
 docs/users_guide/9.10.1-notes.rst             |   12 +
 docs/users_guide/exts/data_kinds.rst          |   79 +
 libraries/Cabal                               |    2 +-
 libraries/base/src/Data/Foldable1.hs          |    2 +-
 libraries/base/src/GHC/Base.hs                |  132 +-
 libraries/base/src/GHC/Exts.hs                |  142 +-
 .../GHC/LanguageExtensions/Type.hs            |    1 +
 libraries/ghc-boot/GHC/Utils/Encoding.hs      |    8 +-
 .../ghc-experimental/ghc-experimental.cabal   |   10 +-
 .../src/Data/Sum/Experimental.hs              |   83 +
 .../src/Data/Tuple/Experimental.hs            |  163 +
 .../src/Prelude/Experimental.hs               |   30 +
 .../ghc-internal/src/GHC/Internal/Base.hs     |  202 +-
 .../src/GHC/Internal/Data/Tuple.hs            |    2 +-
 .../GHC/Internal/Data/Typeable/Internal.hs    |   55 +-
 .../ghc-internal/src/GHC/Internal/Exts.hs     |  132 +-
 libraries/ghc-prim/GHC/Classes.hs             |  691 +-
 libraries/ghc-prim/GHC/Tuple.hs               |  573 +-
 libraries/ghc-prim/GHC/Tuple/Prim.hs          |  581 --
 libraries/ghc-prim/GHC/Types.hs               | 2901 +++++-
 libraries/ghc-prim/changelog.md               |   11 +
 libraries/ghc-prim/ghc-prim.cabal             |    1 -
 .../Language/Haskell/TH/Syntax.hs             |    8 +-
 rts/Prelude.h                                 |    4 +-
 rts/external-symbols.list.in                  |    2 +-
 rts/wasm/scheduler.cmm                        |    8 +-
 testsuite/driver/testlib.py                   |    3 +
 .../cpranal/should_compile/T18174.stderr      |    2 +-
 .../deSugar/should_compile/T22719.stderr      |    4 +-
 .../dmdanal/should_compile/T13143.stderr      |    8 +-
 .../dmdanal/should_compile/T23398.stderr      |    8 +-
 .../ghci/scripts/ListTuplePunsPpr.script      |   28 +
 .../ghci/scripts/ListTuplePunsPpr.stdout      |   87 +
 .../ListTuplePunsPprNoAbbrevTuple.script      |    5 +
 .../ListTuplePunsPprNoAbbrevTuple.stdout      |   13 +
 testsuite/tests/ghci/scripts/T4127.stdout     |    2 +-
 testsuite/tests/ghci/scripts/T4175.stdout     |    2 +-
 testsuite/tests/ghci/scripts/T7627.stdout     |   22 +-
 testsuite/tests/ghci/scripts/all.T            |    2 +
 testsuite/tests/ghci/scripts/ghci011.stdout   |    4 +-
 testsuite/tests/ghci/should_run/T21052.stdout |    2 +-
 .../ghc-experimental-exports.stdout           | 8685 +++++++++++++++++
 .../should_compile/ListTuplePunsFamilies.hs   |   30 +
 .../ListTuplePunsFamilies.script              |    2 +
 .../ListTuplePunsFamiliesCompat.hs            |   30 +
 .../should_compile/ListTuplePunsSuccess1.hs   |   43 +
 .../ListTuplePunsSuccess1.script              |    2 +
 testsuite/tests/parser/should_compile/all.T   |    3 +
 .../parser/should_fail/ListTuplePunsFail1.hs  |   23 +
 .../should_fail/ListTuplePunsFail1.script     |    2 +
 .../should_fail/ListTuplePunsFail1.stderr     |   79 +
 .../parser/should_fail/ListTuplePunsFail2.hs  |    9 +
 .../should_fail/ListTuplePunsFail2.script     |    2 +
 .../should_fail/ListTuplePunsFail2.stderr     |    5 +
 .../parser/should_fail/ListTuplePunsFail3.hs  |   10 +
 .../should_fail/ListTuplePunsFail3.script     |    2 +
 .../should_fail/ListTuplePunsFail3.stderr     |    7 +
 .../parser/should_fail/ListTuplePunsFail4.hs  |   10 +
 .../should_fail/ListTuplePunsFail4.script     |    2 +
 .../should_fail/ListTuplePunsFail4.stderr     |    7 +
 .../parser/should_fail/ListTuplePunsFail5.hs  |    9 +
 .../should_fail/ListTuplePunsFail5.script     |    2 +
 .../should_fail/ListTuplePunsFail5.stderr     |    6 +
 testsuite/tests/parser/should_fail/all.T      |    5 +
 .../should_run/ListTuplePunsConstraints.hs    |   18 +
 .../ListTuplePunsConstraints.script           |    2 +
 testsuite/tests/parser/should_run/all.T       |    1 +
 .../printer/AnnotationNoListTuplePuns.hs      |   17 +
 testsuite/tests/printer/ListTuplePuns.hs      |   39 +
 testsuite/tests/printer/ListTuplePuns.script  |    2 +
 testsuite/tests/printer/ListTuplePuns.stderr  |   49 +
 testsuite/tests/printer/Makefile              |    5 +
 testsuite/tests/printer/all.T                 |    2 +
 .../tests/roles/should_compile/T8958.stderr   |    2 +-
 .../tests/showIface/DocsInHiFile1.stdout      |    1 +
 .../tests/showIface/DocsInHiFileTH.stdout     |    1 +
 .../tests/showIface/HaddockIssue849.stdout    |    1 +
 testsuite/tests/showIface/HaddockOpts.stdout  |    1 +
 .../showIface/HaddockSpanIssueT24378.stdout   |    1 +
 testsuite/tests/showIface/LanguageExts.stdout |    1 +
 .../showIface/MagicHashInHaddocks.stdout      |    1 +
 testsuite/tests/showIface/NoExportList.stdout |    1 +
 testsuite/tests/showIface/PragmaDocs.stdout   |    1 +
 testsuite/tests/showIface/ReExports.stdout    |    1 +
 .../simplCore/should_compile/T3772.stdout     |    8 +-
 .../simplCore/should_compile/T4908.stderr     |    4 +-
 .../simplCore/should_compile/T7360.stderr     |    8 +-
 .../simplStg/should_compile/T15226b.stderr    |    2 +-
 testsuite/tests/th/ListTuplePunsTH.hs         |   23 +
 testsuite/tests/th/ListTuplePunsTH.script     |    2 +
 testsuite/tests/th/ListTuplePunsTH.stderr     |    8 +
 testsuite/tests/th/T10734.stdout              |    2 +-
 testsuite/tests/th/T12478_4.stderr            |    2 +-
 testsuite/tests/th/T15843.stdout              |   12 +-
 testsuite/tests/th/T20711.stdout              |    4 +-
 testsuite/tests/th/T8761.stderr               |    2 +-
 testsuite/tests/th/TH_tuple1.stdout           |   20 +-
 testsuite/tests/th/all.T                      |    1 +
 .../th/overloaded/TH_overloaded_csp.stdout    |    4 +-
 .../overloaded/TH_overloaded_extract.stdout   |    2 +-
 .../should_compile/DataToTagSolving.hs        |    2 +-
 .../typecheck/should_compile/T18529.stderr    |    2 +-
 .../tests/typecheck/should_run/T14341.stdout  |    2 +-
 .../tests/typecheck/should_run/T22510.stdout  |    4 +-
 .../tests/typecheck/should_run/TypeRep.stdout |    6 +-
 utils/dump-decls/Main.hs                      |   16 +-
 utils/haddock                                 |    2 +-
 134 files changed, 15029 insertions(+), 1103 deletions(-)
 create mode 100644 libraries/ghc-experimental/src/Data/Sum/Experimental.hs
 create mode 100644 libraries/ghc-experimental/src/Data/Tuple/Experimental.hs
 create mode 100644 libraries/ghc-experimental/src/Prelude/Experimental.hs
 delete mode 100644 libraries/ghc-prim/GHC/Tuple/Prim.hs
 create mode 100644 testsuite/tests/ghci/scripts/ListTuplePunsPpr.script
 create mode 100644 testsuite/tests/ghci/scripts/ListTuplePunsPpr.stdout
 create mode 100644 testsuite/tests/ghci/scripts/ListTuplePunsPprNoAbbrevTuple.script
 create mode 100644 testsuite/tests/ghci/scripts/ListTuplePunsPprNoAbbrevTuple.stdout
 create mode 100644 testsuite/tests/parser/should_compile/ListTuplePunsFamilies.hs
 create mode 100644 testsuite/tests/parser/should_compile/ListTuplePunsFamilies.script
 create mode 100644 testsuite/tests/parser/should_compile/ListTuplePunsFamiliesCompat.hs
 create mode 100644 testsuite/tests/parser/should_compile/ListTuplePunsSuccess1.hs
 create mode 100644 testsuite/tests/parser/should_compile/ListTuplePunsSuccess1.script
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail1.hs
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail1.script
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail1.stderr
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail2.hs
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail2.script
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail2.stderr
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail3.hs
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail3.script
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail3.stderr
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail4.hs
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail4.script
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail4.stderr
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail5.hs
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail5.script
 create mode 100644 testsuite/tests/parser/should_fail/ListTuplePunsFail5.stderr
 create mode 100644 testsuite/tests/parser/should_run/ListTuplePunsConstraints.hs
 create mode 100644 testsuite/tests/parser/should_run/ListTuplePunsConstraints.script
 create mode 100644 testsuite/tests/printer/AnnotationNoListTuplePuns.hs
 create mode 100644 testsuite/tests/printer/ListTuplePuns.hs
 create mode 100644 testsuite/tests/printer/ListTuplePuns.script
 create mode 100644 testsuite/tests/printer/ListTuplePuns.stderr
 create mode 100644 testsuite/tests/th/ListTuplePunsTH.hs
 create mode 100644 testsuite/tests/th/ListTuplePunsTH.script
 create mode 100644 testsuite/tests/th/ListTuplePunsTH.stderr

diff --git a/compiler/GHC/Builtin/Names.hs b/compiler/GHC/Builtin/Names.hs
index 459bc4074a53..54ceb0ae16e3 100644
--- a/compiler/GHC/Builtin/Names.hs
+++ b/compiler/GHC/Builtin/Names.hs
@@ -561,7 +561,6 @@ gHC_CLASSES        = mkPrimModule (fsLit "GHC.Classes")
 gHC_PRIMOPWRAPPERS = mkPrimModule (fsLit "GHC.PrimopWrappers")
 
 gHC_INTERNAL_TUPLE                  = mkPrimModule (fsLit "GHC.Tuple")
-gHC_INTERNAL_TUPLE_PRIM             = mkPrimModule (fsLit "GHC.Tuple.Prim")
 
 pRELUDE, dATA_LIST, cONTROL_MONAD_ZIP :: Module
 pRELUDE            = mkBaseModule_ pRELUDE_NAME
@@ -576,7 +575,7 @@ gHC_INTERNAL_NUM_BIGNAT             = mkBignumModule (fsLit "GHC.Num.BigNat")
 gHC_INTERNAL_BASE, gHC_INTERNAL_ENUM,
     gHC_INTERNAL_GHCI, gHC_INTERNAL_GHCI_HELPERS, gHC_CSTRING, gHC_INTERNAL_DATA_STRING,
     gHC_INTERNAL_SHOW, gHC_INTERNAL_READ, gHC_INTERNAL_NUM, gHC_INTERNAL_MAYBE,
-    gHC_INTERNAL_LIST, gHC_INTERNAL_TUPLE, gHC_INTERNAL_TUPLE_PRIM, gHC_INTERNAL_DATA_EITHER,
+    gHC_INTERNAL_LIST, gHC_INTERNAL_TUPLE, gHC_INTERNAL_DATA_EITHER,
     gHC_INTERNAL_DATA_FOLDABLE, gHC_INTERNAL_DATA_TRAVERSABLE,
     gHC_INTERNAL_CONC, gHC_INTERNAL_IO, gHC_INTERNAL_IO_Exception,
     gHC_INTERNAL_ST, gHC_INTERNAL_IX, gHC_INTERNAL_STABLE, gHC_INTERNAL_PTR, gHC_INTERNAL_ERR, gHC_INTERNAL_REAL,
@@ -662,6 +661,10 @@ gHC_INTERNAL_OVER_LABELS = mkGhcInternalModule (fsLit "GHC.Internal.OverloadedLa
 gHC_INTERNAL_RECORDS :: Module
 gHC_INTERNAL_RECORDS = mkGhcInternalModule (fsLit "GHC.Internal.Records")
 
+dATA_TUPLE_EXPERIMENTAL, dATA_SUM_EXPERIMENTAL :: Module
+dATA_TUPLE_EXPERIMENTAL = mkExperimentalModule (fsLit "Data.Tuple.Experimental")
+dATA_SUM_EXPERIMENTAL = mkExperimentalModule (fsLit "Data.Sum.Experimental")
+
 rOOT_MAIN :: Module
 rOOT_MAIN       = mkMainModule (fsLit ":Main") -- Root module for initialisation
 
@@ -703,6 +706,9 @@ mkMainModule m = mkModule mainUnit (mkModuleNameFS m)
 mkMainModule_ :: ModuleName -> Module
 mkMainModule_ m = mkModule mainUnit m
 
+mkExperimentalModule :: FastString -> Module
+mkExperimentalModule m = mkModule experimentalUnit (mkModuleNameFS m)
+
 {-
 ************************************************************************
 *                                                                      *
@@ -2761,57 +2767,3 @@ interactiveClassNames
 
 interactiveClassKeys :: [Unique]
 interactiveClassKeys = map getUnique interactiveClassNames
-
-{-
-************************************************************************
-*                                                                      *
-   Semi-builtin names
-*                                                                      *
-************************************************************************
-
-Note [pretendNameIsInScope]
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In general, we filter out instances that mention types whose names are
-not in scope. However, in the situations listed below, we make an exception
-for some commonly used names, such as Data.Kind.Type, which may not actually
-be in scope but should be treated as though they were in scope.
-This includes built-in names, as well as a few extra names such as
-'Type', 'TYPE', 'BoxedRep', etc.
-
-Situations in which we apply this special logic:
-
-  - GHCi's :info command, see GHC.Runtime.Eval.getInfo.
-    This fixes #1581.
-
-  - When reporting instance overlap errors. Not doing so could mean
-    that we would omit instances for typeclasses like
-
-      type Cls :: k -> Constraint
-      class Cls a
-
-    because BoxedRep/Lifted were not in scope.
-    See GHC.Tc.Errors.potentialInstancesErrMsg.
-    This fixes one of the issues reported in #20465.
--}
-
--- | Should this name be considered in-scope, even though it technically isn't?
---
--- This ensures that we don't filter out information because, e.g.,
--- Data.Kind.Type isn't imported.
---
--- See Note [pretendNameIsInScope].
-pretendNameIsInScope :: Name -> Bool
-pretendNameIsInScope n
-  = isBuiltInSyntax n
-  || isTupleTyConName n
-  || any (n `hasKey`)
-    [ liftedTypeKindTyConKey, unliftedTypeKindTyConKey
-    , liftedDataConKey, unliftedDataConKey
-    , tYPETyConKey
-    , cONSTRAINTTyConKey
-    , runtimeRepTyConKey, boxedRepDataConKey
-    , eqTyConKey
-    , listTyConKey
-    , oneDataConKey
-    , manyDataConKey
-    , fUNTyConKey, unrestrictedFunTyConKey ]
diff --git a/compiler/GHC/Builtin/Types.hs b/compiler/GHC/Builtin/Types.hs
index 99ce941e923d..d3a67644214d 100644
--- a/compiler/GHC/Builtin/Types.hs
+++ b/compiler/GHC/Builtin/Types.hs
@@ -6,6 +6,7 @@ Wired-in knowledge about {\em non-primitive} types
 
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ParallelListComp #-}
+{-# LANGUAGE MultiWayIf #-}
 
 {-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}
 
@@ -19,7 +20,8 @@ module GHC.Builtin.Types (
         mkWiredInIdName,    -- used in GHC.Types.Id.Make
 
         -- * All wired in things
-        wiredInTyCons, isBuiltInOcc_maybe, isTupleTyOcc_maybe, isPunOcc_maybe,
+        wiredInTyCons, isBuiltInOcc_maybe, isTupleTyOcc_maybe, isSumTyOcc_maybe,
+        isPunOcc_maybe,
 
         -- * Bool
         boolTy, boolTyCon, boolTyCon_RDR, boolTyConName,
@@ -158,7 +160,9 @@ module GHC.Builtin.Types (
         integerINDataCon, integerINDataConName,
         naturalTy, naturalTyCon, naturalTyConName,
         naturalNSDataCon, naturalNSDataConName,
-        naturalNBDataCon, naturalNBDataConName
+        naturalNBDataCon, naturalNBDataConName,
+
+         pretendNameIsInScope,
     ) where
 
 import GHC.Prelude
@@ -215,8 +219,8 @@ import Data.Foldable
 import Data.List        ( elemIndex, intersperse )
 import Numeric          ( showInt )
 
-import Text.Read (readMaybe)
 import Data.Char (ord, isDigit)
+import Control.Applicative ((<|>))
 
 alpha_tyvar :: [TyVar]
 alpha_tyvar = [alphaTyVar]
@@ -706,27 +710,27 @@ Note [How tuples work]
 
 * UnboxedTuples
     - A wired-in type
-    - Have a pretend DataCon, defined in GHC.Prim,
+    - Data type declarations in GHC.Types
       but no actual declaration and no info table
 
 * ConstraintTuples
     - A wired-in type.
     - Declared as classes in GHC.Classes, e.g.
-         class (c1,c2) => (c1,c2)
+         class (c1,c2) => CTuple2 c1 c2
     - Given constraints: the superclasses automatically become available
     - Wanted constraints: there is a built-in instance
-         instance (c1,c2) => (c1,c2)
+         instance (c1,c2) => CTuple2 c1 c2
       See GHC.Tc.Instance.Class.matchCTuple
     - Currently just go up to 64; beyond that
       you have to use manual nesting
-    - Their OccNames look like (%,,,%), so they can easily be
-      distinguished from term tuples.  But (following Haskell) we
-      pretty-print saturated constraint tuples with round parens;
-      see BasicTypes.tupleParens.
     - Unlike BoxedTuples and UnboxedTuples, which only wire
       in type constructors and data constructors, ConstraintTuples also wire in
-      superclass selector functions. For instance, $p1(%,%) and $p2(%,%) are
+      superclass selector functions. For instance, $p1CTuple2 and $p2CTuple2 are
       the selectors for the binary constraint tuple.
+    - The parenthesis syntax for grouping constraints in contexts is not treated
+      as a constraint tuple. The parser starts with a tuple type, then a
+      postprocessing action extracts the individual constraints as a list and
+      stores them in the context field of types like HsQualTy.
 
 * In quite a lot of places things are restricted just to
   BoxedTuple/UnboxedTuple, and then we used BasicTypes.Boxity to distinguish
@@ -812,7 +816,7 @@ known-key is the next-best way to teach the internals of the compiler about it.
 -- with BuiltInSyntax. However, this should only be necessary while resolving
 -- names produced by Template Haskell splices since we take care to encode
 -- built-in syntax names specially in interface files. See
--- Note [Symbol table representation of names].
+-- Note [Symbol table representation of names] in GHC.Iface.Binary.
 --
 -- Moreover, there is no need to include names of things that the user can't
 -- write (e.g. type representation bindings like $tc(,,,)).
@@ -826,7 +830,7 @@ isBuiltInOcc_maybe occ =
       "FUN"  -> Just fUNTyConName
       "->"  -> Just unrestrictedFunTyConName
 
-      -- boxed tuple data/tycon
+      -- tuple data/tycon
       -- We deliberately exclude Solo (the boxed 1-tuple).
       -- See Note [One-tuples] (Wrinkle: Make boxed one-tuple names have known keys)
       "()"    -> Just $ tup_name Boxed 0
@@ -834,9 +838,25 @@ isBuiltInOcc_maybe occ =
         , (commas, rest') <- BS.span (==',') rest
         , ")" <- rest'
              -> Just $ tup_name Boxed (1+BS.length commas)
+      _ | Just rest <- "Tuple" `BS.stripPrefix` name
+        , Just (num, trailing) <- BS.readInt rest
+        , num >= 2 && num <= 64
+             -> if
+             | BS.null trailing -> Just $ tup_name Boxed num
+             | "#" == trailing -> Just $ tup_name Unboxed num
+             | otherwise -> Nothing
+
+      "CUnit" -> Just $ choose_ns (cTupleTyConName 0) (cTupleDataConName 0)
+      "CSolo" -> Just $ choose_ns (cTupleTyConName 1) (cTupleDataConName 1)
+      _ | Just rest <- "CTuple" `BS.stripPrefix` name
+        , Just (num, trailing) <- BS.readInt rest
+        , BS.null trailing
+        , num >= 2 && num <= 64
+             -> Just $ choose_ns (cTupleTyConName num) (cTupleDataConName num)
 
       -- unboxed tuple data/tycon
       "(##)"  -> Just $ tup_name Unboxed 0
+      "Unit#" -> Just $ tup_name Unboxed 0
       "Solo#" -> Just $ tup_name Unboxed 1
       _ | Just rest <- "(#" `BS.stripPrefix` name
         , (commas, rest') <- BS.span (==',') rest
@@ -858,6 +878,12 @@ isBuiltInOcc_maybe occ =
              -> let arity = nb_pipes1 + nb_pipes2 + 1
                     alt = nb_pipes1 + 1
                 in Just $ dataConName $ sumDataCon alt arity
+      _ | Just rest <- "Sum" `BS.stripPrefix` name
+        , Just (num, trailing) <- BS.readInt rest
+        , num >= 2 && num <= 64
+        , trailing == "#"
+             -> Just $ tyConName $ sumTyCon num
+
       _ -> Nothing
   where
     name = bytesFS $ occNameFS occ
@@ -883,12 +909,14 @@ isBuiltInOcc_maybe occ =
 
 isTupleTyOcc_maybe :: Module -> OccName -> Maybe Name
 isTupleTyOcc_maybe mod occ
-  | mod == gHC_INTERNAL_TUPLE_PRIM
+  | mod == gHC_INTERNAL_TUPLE || mod == gHC_TYPES
   = match_occ
   where
     match_occ
       | occ == occName unitTyConName = Just unitTyConName
       | occ == occName soloTyConName = Just soloTyConName
+      | occ == occName unboxedUnitTyConName = Just unboxedUnitTyConName
+      | occ == occName unboxedSoloTyConName = Just unboxedSoloTyConName
       | otherwise = isTupleNTyOcc_maybe occ
 isTupleTyOcc_maybe _ _ = Nothing
 
@@ -897,17 +925,39 @@ isTupleTyOcc_maybe _ _ = Nothing
 isTupleNTyOcc_maybe :: OccName -> Maybe Name
 isTupleNTyOcc_maybe occ =
   case occNameString occ of
-    'T':'u':'p':'l':'e':str | Just n <- readInt str, n > 1
-      -> Just (tupleTyConName BoxedTuple n)
+    'T':'u':'p':'l':'e':str | Just (sort, n) <- arity_and_boxity str, n > 1
+      -> Just (tupleTyConName sort n)
+    _ -> Nothing
+
+isSumTyOcc_maybe :: Module -> OccName -> Maybe Name
+isSumTyOcc_maybe mod occ | mod == gHC_TYPES =
+  isSumNTyOcc_maybe occ
+isSumTyOcc_maybe _ _ = Nothing
+
+isSumNTyOcc_maybe :: OccName -> Maybe Name
+isSumNTyOcc_maybe occ =
+  case occNameString occ of
+    'S':'u':'m':str | Just (UnboxedTuple, n) <- arity_and_boxity str, n > 1
+      -> Just (tyConName (sumTyCon n))
     _ -> Nothing
 
 -- | See Note [Small Ints parsing]
-readInt :: String -> Maybe Int
-readInt s = case s of
-  [c] | isDigit c -> Just (digit_to_int c)
-  [c1, c2] | isDigit c1, isDigit c2
-    -> Just (digit_to_int c1 * 10 + digit_to_int c2)
-  _ -> readMaybe s
+--
+-- Analyze a string as the suffix of an OccName of a tuple or sum tycon to
+-- determine its arity and boxity (based on the presence of a @#@).
+arity_and_boxity :: String -> Maybe (TupleSort, Int)
+arity_and_boxity s = case s of
+  c1 : t1 | isDigit c1 -> case t1 of
+    [] -> Just (BoxedTuple, digit_to_int c1)
+    ['#'] -> Just (UnboxedTuple, digit_to_int c1)
+    c2 : t2 | isDigit c2 ->
+      let ar = digit_to_int c1 * 10 + digit_to_int c2
+      in case t2 of
+        [] -> Just (BoxedTuple, ar)
+        ['#'] -> Just (UnboxedTuple, ar)
+        _ -> Nothing
+    _ -> Nothing
+  _ -> Nothing
   where
     digit_to_int :: Char -> Int
     digit_to_int c = ord c - ord '0'
@@ -935,23 +985,25 @@ isPunOcc_maybe :: Module -> OccName -> Maybe Name
 isPunOcc_maybe mod occ
   | mod == gHC_TYPES, occ == occName listTyConName
   = Just listTyConName
-  | mod == gHC_INTERNAL_TUPLE_PRIM, occ == occName unitTyConName
+  | mod == gHC_INTERNAL_TUPLE, occ == occName unitTyConName
   = Just unitTyConName
-  | mod == gHC_INTERNAL_TUPLE_PRIM
-  = isTupleNTyOcc_maybe occ
+  | mod == gHC_TYPES, occ == occName unboxedUnitTyConName
+  = Just unboxedUnitTyConName
+  | mod == gHC_INTERNAL_TUPLE || mod == gHC_TYPES
+  = isTupleNTyOcc_maybe occ <|> isSumNTyOcc_maybe occ
 isPunOcc_maybe _ _ = Nothing
 
 mkTupleOcc :: NameSpace -> Boxity -> Arity -> OccName
 -- No need to cache these, the caching is done in mk_tuple
 mkTupleOcc ns Boxed   ar = mkOccName ns (mkBoxedTupleStr ns ar)
-mkTupleOcc ns Unboxed ar = mkOccName ns (mkUnboxedTupleStr ar)
+mkTupleOcc ns Unboxed ar = mkOccName ns (mkUnboxedTupleStr ns ar)
 
 mkCTupleOcc :: NameSpace -> Arity -> OccName
 mkCTupleOcc ns ar = mkOccName ns (mkConstraintTupleStr ar)
 
 mkTupleStr :: Boxity -> NameSpace -> Arity -> String
 mkTupleStr Boxed   = mkBoxedTupleStr
-mkTupleStr Unboxed = const mkUnboxedTupleStr
+mkTupleStr Unboxed = mkUnboxedTupleStr
 
 mkBoxedTupleStr :: NameSpace -> Arity -> String
 mkBoxedTupleStr ns 0
@@ -964,15 +1016,22 @@ mkBoxedTupleStr ns ar
   | isDataConNameSpace ns = '(' : commas ar ++ ")"
   | otherwise             = "Tuple" ++ showInt ar ""
 
-mkUnboxedTupleStr :: Arity -> String
-mkUnboxedTupleStr 0  = "(##)"
-mkUnboxedTupleStr 1  = "Solo#"  -- See Note [One-tuples]
-mkUnboxedTupleStr ar = "(#" ++ commas ar ++ "#)"
+
+mkUnboxedTupleStr :: NameSpace -> Arity -> String
+mkUnboxedTupleStr ns 0
+  | isDataConNameSpace ns = "(##)"
+  | otherwise             = "Unit#"
+mkUnboxedTupleStr ns 1
+  | isDataConNameSpace ns = "(# #)"  -- See Note [One-tuples]
+  | otherwise             = "Solo#"
+mkUnboxedTupleStr ns ar
+  | isDataConNameSpace ns = "(#" ++ commas ar ++ "#)"
+  | otherwise             = "Tuple" ++ show ar ++ "#"
 
 mkConstraintTupleStr :: Arity -> String
-mkConstraintTupleStr 0  = "(%%)"
-mkConstraintTupleStr 1  = "Solo%"   -- See Note [One-tuples]
-mkConstraintTupleStr ar = "(%" ++ commas ar ++ "%)"
+mkConstraintTupleStr 0 = "CUnit"
+mkConstraintTupleStr 1 = "CSolo"
+mkConstraintTupleStr ar = "CTuple" ++ show ar
 
 commas :: Arity -> String
 commas ar = replicate (ar-1) ','
@@ -1030,8 +1089,8 @@ cTupleSelId sc_pos arity
            ++ "(superclass position: " ++ show sc_pos
            ++ ", arity: " ++ show arity ++ ")")
 
-  | arity < 2
-  = panic ("cTupleSelId: Arity starts from 2. "
+  | arity < 1
+  = panic ("cTupleSelId: Arity starts from 1. "
            ++ "(superclass position: " ++ show sc_pos
            ++ ", arity: " ++ show arity ++ ")")
 
@@ -1122,7 +1181,7 @@ mk_tuple Boxed arity = (tycon, tuple_con)
     tuple_con  = pcDataCon dc_name dc_tvs dc_arg_tys tycon
 
     boxity  = Boxed
-    modu    = gHC_INTERNAL_TUPLE_PRIM
+    modu    = gHC_INTERNAL_TUPLE
     tc_name = mkWiredInName modu (mkTupleOcc tcName boxity arity) tc_uniq
                          (ATyCon tycon) UserSyntax
     dc_name = mkWiredInName modu (mkTupleOcc dataName boxity arity) dc_uniq
@@ -1156,9 +1215,9 @@ mk_tuple Unboxed arity = (tycon, tuple_con)
         | pos <- [1..arity] ]
 
     boxity  = Unboxed
-    modu    = gHC_PRIM
+    modu    = gHC_TYPES
     tc_name = mkWiredInName modu (mkTupleOcc tcName boxity arity) tc_uniq
-                         (ATyCon tycon) BuiltInSyntax
+                         (ATyCon tycon) UserSyntax
     dc_name = mkWiredInName modu (mkTupleOcc dataName boxity arity) dc_uniq
                             (AConLike (RealDataCon tuple_con)) BuiltInSyntax
     tc_uniq = mkTupleTyConUnique   boxity arity
@@ -1180,7 +1239,7 @@ mk_ctuple arity = (tycon, tuple_con, sc_sel_ids_arr)
 
     modu    = gHC_CLASSES
     tc_name = mkWiredInName modu (mkCTupleOcc tcName arity) tc_uniq
-                         (ATyCon tycon) BuiltInSyntax
+                         (ATyCon tycon) UserSyntax
     dc_name = mkWiredInName modu (mkCTupleOcc dataName arity) dc_uniq
                             (AConLike (RealDataCon tuple_con)) BuiltInSyntax
     tc_uniq = mkCTupleTyConUnique   arity
@@ -1233,9 +1292,19 @@ unboxedUnitTy = mkTyConTy unboxedUnitTyCon
 unboxedUnitTyCon :: TyCon
 unboxedUnitTyCon = tupleTyCon Unboxed 0
 
+unboxedUnitTyConName :: Name
+unboxedUnitTyConName = tyConName unboxedUnitTyCon
+
 unboxedUnitDataCon :: DataCon
 unboxedUnitDataCon = tupleDataCon Unboxed 0
 
+unboxedSoloTyCon :: TyCon
+unboxedSoloTyCon = tupleTyCon Unboxed 1
+
+unboxedSoloTyConName :: Name
+unboxedSoloTyConName = tyConName unboxedSoloTyCon
+
+
 {- *********************************************************************
 *                                                                      *
       Unboxed sums
@@ -1247,8 +1316,7 @@ mkSumTyConOcc :: Arity -> OccName
 mkSumTyConOcc n = mkOccName tcName str
   where
     -- No need to cache these, the caching is done in mk_sum
-    str = '(' : '#' : ' ' : bars ++ " #)"
-    bars = intersperse ' ' $ replicate (n-1) '|'
+    str = "Sum" ++ show n ++ "#"
 
 -- | OccName for i-th alternative of n-ary unboxed sum data constructor.
 mkSumDataConOcc :: ConTag -> Arity -> OccName
@@ -1328,8 +1396,8 @@ mk_sum arity = (tycon, sum_cons)
         | ty <- dc_arg_tys
         | pos <- [1..arity] ]
 
-    tc_name = mkWiredInName gHC_PRIM (mkSumTyConOcc arity) tc_uniq
-                            (ATyCon tycon) BuiltInSyntax
+    tc_name = mkWiredInName gHC_TYPES (mkSumTyConOcc arity) tc_uniq
+                            (ATyCon tycon) UserSyntax
 
     sum_cons = listArray (0,arity-1) [sum_con i | i <- [0..arity-1]]
     sum_con i =
@@ -1339,11 +1407,11 @@ mk_sum arity = (tycon, sum_cons)
                   [dc_arg_tys !! i] -- arg types
                   tycon
 
-          dc_name = mkWiredInName gHC_PRIM
-                      (mkSumDataConOcc i arity)
-                      (dc_uniq i)
-                      (AConLike (RealDataCon dc))
-                      BuiltInSyntax
+          dc_name = mkWiredInName gHC_TYPES
+                                  (mkSumDataConOcc i arity)
+                                  (dc_uniq i)
+                                  (AConLike (RealDataCon dc))
+                                  BuiltInSyntax
       in dc
 
     tc_uniq   = mkSumTyConUnique   arity
@@ -2510,3 +2578,59 @@ filterCTuple (Exact n)
   | Just arity <- cTupleTyConNameArity_maybe n
   = Exact $ tupleTyConName BoxedTuple arity
 filterCTuple rdr = rdr
+
+{-
+************************************************************************
+*                                                                      *
+   Semi-builtin names
+*                                                                      *
+************************************************************************
+
+Note [pretendNameIsInScope]
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In general, we filter out instances that mention types whose names are
+not in scope. However, in the situations listed below, we make an exception
+for some commonly used names, such as Data.Kind.Type, which may not actually
+be in scope but should be treated as though they were in scope.
+This includes built-in names, as well as a few extra names such as
+'Type', 'TYPE', 'BoxedRep', etc.
+
+Situations in which we apply this special logic:
+
+  - GHCi's :info command, see GHC.Runtime.Eval.getInfo.
+    This fixes #1581.
+
+  - When reporting instance overlap errors. Not doing so could mean
+    that we would omit instances for typeclasses like
+
+      type Cls :: k -> Constraint
+      class Cls a
+
+    because BoxedRep/Lifted were not in scope.
+    See GHC.Tc.Errors.potentialInstancesErrMsg.
+    This fixes one of the issues reported in #20465.
+-}
+
+-- | Should this name be considered in-scope, even though it technically isn't?
+--
+-- This ensures that we don't filter out information because, e.g.,
+-- Data.Kind.Type isn't imported.
+--
+-- See Note [pretendNameIsInScope].
+pretendNameIsInScope :: Name -> Bool
+pretendNameIsInScope n
+  = isBuiltInSyntax n
+  || isTupleTyConName n
+  || isSumTyConName n
+  || isCTupleTyConName n
+  || any (n `hasKey`)
+    [ liftedTypeKindTyConKey, unliftedTypeKindTyConKey
+    , liftedDataConKey, unliftedDataConKey
+    , tYPETyConKey
+    , cONSTRAINTTyConKey
+    , runtimeRepTyConKey, boxedRepDataConKey
+    , eqTyConKey
+    , listTyConKey
+    , oneDataConKey
+    , manyDataConKey
+    , fUNTyConKey, unrestrictedFunTyConKey ]
diff --git a/compiler/GHC/Builtin/Types.hs-boot b/compiler/GHC/Builtin/Types.hs-boot
index 857de8e10b75..eb4352996bd7 100644
--- a/compiler/GHC/Builtin/Types.hs-boot
+++ b/compiler/GHC/Builtin/Types.hs-boot
@@ -15,6 +15,7 @@ mkBoxedTupleTy :: [Type] -> Type
 coercibleTyCon, heqTyCon :: TyCon
 
 unitTy :: Type
+unitTyCon :: TyCon
 
 liftedTypeKindTyConName :: Name
 constraintKindTyConName :: Name
diff --git a/compiler/GHC/Builtin/Uniques.hs b/compiler/GHC/Builtin/Uniques.hs
index 39a4cc30fa53..4d0902c0be33 100644
--- a/compiler/GHC/Builtin/Uniques.hs
+++ b/compiler/GHC/Builtin/Uniques.hs
@@ -14,12 +14,14 @@ module GHC.Builtin.Uniques
       -- * Getting the 'Unique's of 'Name's
       -- ** Anonymous sums
     , mkSumTyConUnique, mkSumDataConUnique
+    , isSumTyConUnique
 
       -- ** Tuples
       -- *** Vanilla
     , mkTupleTyConUnique
     , mkTupleDataConUnique
     , isTupleTyConUnique
+    , isTupleDataConLikeUnique
       -- *** Constraint
     , mkCTupleTyConUnique
     , mkCTupleDataConUnique
@@ -120,6 +122,14 @@ mkSumTyConUnique arity =
               -- alternative
     mkUniqueInt 'z' (arity `shiftL` 8 .|. 0xfc)
 
+isSumTyConUnique :: Unique -> Maybe Arity
+isSumTyConUnique u =
+  case (tag, n .&. 0xfc) of
+    ('z', 0xfc) -> Just (word64ToInt n `shiftR` 8)
+    _ -> Nothing
+  where
+    (tag, n) = unpkUnique u
+
 mkSumDataConUnique :: ConTagZ -> Arity -> Unique
 mkSumDataConUnique alt arity
   | alt >= arity
@@ -284,6 +294,18 @@ isTupleTyConUnique u =
     (arity', i) = quotRem n 2
     arity = word64ToInt arity'
 
+-- | This function is an inverse of `mkTupleTyDataUnique` that also matches the worker and promoted tycon.
+isTupleDataConLikeUnique :: Unique -> Maybe (Boxity, Arity)
+isTupleDataConLikeUnique u =
+  case tag of
+    '7' -> Just (Boxed,   arity)
+    '8' -> Just (Unboxed, arity)
+    _ -> Nothing
+  where
+    (tag,   n) = unpkUnique u
+    (arity', _) = quotRem n 3
+    arity = word64ToInt arity'
+
 getTupleTyConName :: Boxity -> Int -> Name
 getTupleTyConName boxity n =
     case n `divMod` 2 of
diff --git a/compiler/GHC/Core/Predicate.hs b/compiler/GHC/Core/Predicate.hs
index 3ab1a03572fd..be9195b27b2f 100644
--- a/compiler/GHC/Core/Predicate.hs
+++ b/compiler/GHC/Core/Predicate.hs
@@ -73,7 +73,7 @@ data Pred
   -- NB: There is no TuplePred case
   --     Tuple predicates like (Eq a, Ord b) are just treated
   --     as ClassPred, as if we had a tuple class with two superclasses
-  --        class (c1, c2) => (%,%) c1 c2
+  --        class (c1, c2) => CTuple2 c1 c2
 
 classifyPredType :: PredType -> Pred
 classifyPredType ev_ty = case splitTyConApp_maybe ev_ty of
diff --git a/compiler/GHC/Driver/DynFlags.hs b/compiler/GHC/Driver/DynFlags.hs
index 6398f29f9a42..c79b0e2dd9b3 100644
--- a/compiler/GHC/Driver/DynFlags.hs
+++ b/compiler/GHC/Driver/DynFlags.hs
@@ -1357,8 +1357,9 @@ languageExtensions (Just Haskell98)
            -- turning it off breaks code, so we're keeping it on for
            -- backwards compatibility.  Cabal uses -XHaskell98 by
            -- default unless you specify another language.
-       LangExt.DeepSubsumption
+       LangExt.DeepSubsumption,
        -- Non-standard but enabled for backwards compatability (see GHC proposal #511)
+       LangExt.ListTuplePuns
       ]
 
 languageExtensions (Just Haskell2010)
@@ -1375,7 +1376,8 @@ languageExtensions (Just Haskell2010)
        LangExt.DoAndIfThenElse,
        LangExt.FieldSelectors,
        LangExt.RelaxedPolyRec,
-       LangExt.DeepSubsumption ]
+       LangExt.DeepSubsumption,
+       LangExt.ListTuplePuns ]
 
 languageExtensions (Just GHC2021)
     = [LangExt.ImplicitPrelude,
@@ -1389,6 +1391,7 @@ languageExtensions (Just GHC2021)
        LangExt.DoAndIfThenElse,
        LangExt.FieldSelectors,
        LangExt.RelaxedPolyRec,
+       LangExt.ListTuplePuns,
        -- Now the new extensions (not in Haskell2010)
        LangExt.BangPatterns,
        LangExt.BinaryLiterals,
@@ -1534,7 +1537,7 @@ initSDocContext dflags style = SDC
   , sdocErrorSpans                  = gopt Opt_ErrorSpans dflags
   , sdocStarIsType                  = xopt LangExt.StarIsType dflags
   , sdocLinearTypes                 = xopt LangExt.LinearTypes dflags
-  , sdocListTuplePuns               = True
+  , sdocListTuplePuns               = xopt LangExt.ListTuplePuns dflags
   , sdocPrintTypeAbbreviations      = True
   , sdocUnitIdForUser               = ftext
   }
@@ -1546,7 +1549,7 @@ initDefaultSDocContext dflags = initSDocContext dflags defaultUserStyle
 initPromotionTickContext :: DynFlags -> PromotionTickContext
 initPromotionTickContext dflags =
   PromTickCtx {
-    ptcListTuplePuns = True,
+    ptcListTuplePuns = xopt LangExt.ListTuplePuns dflags,
     ptcPrintRedundantPromTicks = gopt Opt_PrintRedundantPromotionTicks dflags
   }
 
diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs
index 72301f947f81..7cc7a562c4b9 100644
--- a/compiler/GHC/Driver/Session.hs
+++ b/compiler/GHC/Driver/Session.hs
@@ -2698,6 +2698,7 @@ xFlagsDeps = [
   flagSpec "LexicalNegation"                  LangExt.LexicalNegation,
   flagSpec "LiberalTypeSynonyms"              LangExt.LiberalTypeSynonyms,
   flagSpec "LinearTypes"                      LangExt.LinearTypes,
+  flagSpec "ListTuplePuns"                    LangExt.ListTuplePuns,
   flagSpec "MagicHash"                        LangExt.MagicHash,
   flagSpec "MonadComprehensions"              LangExt.MonadComprehensions,
   flagSpec "MonoLocalBinds"                   LangExt.MonoLocalBinds,
diff --git a/compiler/GHC/Hs/Type.hs b/compiler/GHC/Hs/Type.hs
index 4ace10c61ac4..4d925a58c000 100644
--- a/compiler/GHC/Hs/Type.hs
+++ b/compiler/GHC/Hs/Type.hs
@@ -1310,9 +1310,9 @@ ppr_mono_ty (HsExplicitTupleTy _ tys)
     -- Special-case unary boxed tuples so that they are pretty-printed as
     -- `'MkSolo x`, not `'(x)`
   | [ty] <- tys
-  = quote $ sep [text (mkTupleStr Boxed dataName 1), ppr_mono_lty ty]
+  = quoteIfPunsEnabled $ sep [text (mkTupleStr Boxed dataName 1), ppr_mono_lty ty]
   | otherwise
-  = quote $ parens (maybeAddSpace tys $ interpp'SP tys)
+  = quoteIfPunsEnabled $ parens (maybeAddSpace tys $ interpp'SP tys)
 ppr_mono_ty (HsTyLit _ t)       = ppr t
 ppr_mono_ty (HsWildCardTy {})   = char '_'
 
diff --git a/compiler/GHC/Iface/Type.hs b/compiler/GHC/Iface/Type.hs
index d088c5ce9455..ef3edbcda8a2 100644
--- a/compiler/GHC/Iface/Type.hs
+++ b/compiler/GHC/Iface/Type.hs
@@ -71,7 +71,8 @@ import {-# SOURCE #-} GHC.Builtin.Types
                                  , tupleTyConName
                                  , tupleDataConName
                                  , manyDataConTyCon
-                                 , liftedRepTyCon, liftedDataConTyCon )
+                                 , liftedRepTyCon, liftedDataConTyCon
+                                 , sumTyCon )
 import GHC.Core.Type ( isRuntimeRepTy, isMultiplicityTy, isLevityTy, funTyFlagTyCon )
 import GHC.Core.TyCo.Rep( CoSel )
 import GHC.Core.TyCo.Compare( eqForAllVis )
@@ -843,7 +844,7 @@ Note [Printing type abbreviations]
 Normally, we pretty-print
    `TYPE       'LiftedRep` as `Type` (or `*`)
    `CONSTRAINT 'LiftedRep` as `Constraint`
-   `FUN 'Many`             as `(->)`.
+   `FUN 'Many`             as `(->)`
 This way, error messages don't refer to representation polymorphism
 or linearity if it is not necessary.  Normally we'd would represent
 these types using their synonyms (see GHC.Core.Type
@@ -968,7 +969,7 @@ ppr_ty _         (IfaceForAllTy {})     = panic "ppr_ty"  -- Covered by not.isIf
 ppr_ty _         (IfaceFreeTyVar tyvar) = ppr tyvar  -- This is the main reason for IfaceFreeTyVar!
 ppr_ty _         (IfaceTyVar tyvar)     = ppr tyvar  -- See Note [Free tyvars in IfaceType]
 ppr_ty ctxt_prec (IfaceTyConApp tc tys) = pprTyTcApp ctxt_prec tc tys
-ppr_ty ctxt_prec (IfaceTupleTy i p tys) = pprTuple ctxt_prec i p tys -- always fully saturated
+ppr_ty ctxt_prec (IfaceTupleTy i p tys) = ppr_tuple ctxt_prec i p tys -- always fully saturated
 ppr_ty _         (IfaceLitTy n)         = pprIfaceTyLit n
 
         -- Function types
@@ -1574,14 +1575,14 @@ pprTyTcApp ctxt_prec tc tys =
        | IfaceTupleTyCon arity sort <- ifaceTyConSort info
        , not debug
        , arity == ifaceVisAppArgsLength tys
-       -> pprTuple ctxt_prec sort (ifaceTyConIsPromoted info) tys
-           -- NB: pprTuple requires a saturated tuple.
+       -> ppr_tuple ctxt_prec sort (ifaceTyConIsPromoted info) tys
+           -- NB: ppr_tuple requires a saturated tuple.
 
        | IfaceSumTyCon arity <- ifaceTyConSort info
        , not debug
        , arity == ifaceVisAppArgsLength tys
-       -> pprSum (ifaceTyConIsPromoted info) tys
-           -- NB: pprSum requires a saturated unboxed sum.
+       -> ppr_sum ctxt_prec (ifaceTyConIsPromoted info) tys
+           -- NB: ppr_sum requires a saturated unboxed sum.
 
        | tc `ifaceTyConHasKey` consDataConKey
        , False <- print_kinds
@@ -1750,68 +1751,104 @@ ppr_iface_tc_app pp ctxt_prec tc tys =
      | otherwise
      -> pprIfacePrefixApp ctxt_prec (parens (ppr tc)) (map (pp appPrec) tys)
 
--- | Pretty-print an unboxed sum type. The sum should be saturated:
--- as many visible arguments as the arity of the sum.
+data TupleOrSum = IsSum | IsTuple TupleSort
+  deriving (Eq)
+
+-- | Pretty-print a boxed tuple datacon in regular tuple syntax.
+-- Used when -XListTuplePuns is disabled.
+ppr_tuple_no_pun :: PprPrec -> [IfaceType] -> SDoc
+ppr_tuple_no_pun ctxt_prec = \case
+  [t] -> maybeParen ctxt_prec appPrec (text "MkSolo" <+> pprPrecIfaceType appPrec t)
+  tys -> tupleParens BoxedTuple (pprWithCommas pprIfaceType tys)
+
+-- | Pretty-print an unboxed tuple or sum type in its parenthesized, punned, form.
+-- Used when -XListTuplePuns is enabled.
+--
+-- The tycon should be saturated:
+-- as many visible arguments as the arity of the sum or tuple.
 --
 -- NB: this always strips off the invisible 'RuntimeRep' arguments,
 -- even with `-fprint-explicit-runtime-reps` and `-fprint-explicit-kinds`.
-pprSum :: PromotionFlag -> IfaceAppArgs -> SDoc
-pprSum is_promoted args
-  =   -- drop the RuntimeRep vars.
-      -- See Note [Unboxed tuple RuntimeRep vars] in GHC.Core.TyCon
-    let tys   = appArgsIfaceTypes args
-        args' = drop (length tys `div` 2) tys
-    in pprPromotionQuoteI is_promoted
-       <> sumParens (pprWithBars (ppr_ty topPrec) args')
+ppr_tuple_sum_pun :: PprPrec -> TupleOrSum -> PromotionFlag -> IfaceType -> Arity -> [IfaceType] -> SDoc
+ppr_tuple_sum_pun ctxt_prec sort promoted tc arity tys
+  | IsSum <- sort
+  = sumParens (pprWithBars (ppr_ty topPrec) tys)
+
+  |  IsTuple ConstraintTuple <- sort
+  ,  NotPromoted <- promoted
+  ,  arity == 0
+  = maybeParen ctxt_prec sigPrec $
+    text "() :: Constraint"
+
+  -- Special-case unary boxed tuples so that they are pretty-printed as
+  -- `Solo x`, not `(x)`
+  | IsTuple BoxedTuple <- sort
+  , arity == 1
+  = pprPrecIfaceType ctxt_prec tc
+
+  | IsTuple tupleSort <- sort
+  = pprPromotionQuoteI promoted <>
+    tupleParens tupleSort (quote_space (pprWithCommas pprIfaceType tys))
+  where
+    quote_space = case promoted of
+      IsPromoted -> spaceIfSingleQuote
+      NotPromoted -> id
+
+-- | Pretty-print an unboxed tuple or sum type either in the punned or unpunned form,
+-- depending on whether -XListTuplePuns is enabled.
+ppr_tuple_sum :: PprPrec -> TupleOrSum -> PromotionFlag -> IfaceAppArgs -> SDoc
+ppr_tuple_sum ctxt_prec sort is_promoted args =
+  sdocOption sdocListTuplePuns $ \case
+    True -> ppr_tuple_sum_pun ctxt_prec sort is_promoted prefix_tc arity non_rep_tys
+    False
+      | IsPromoted <- is_promoted
+      , IsTuple BoxedTuple <- sort
+      -> ppr_tuple_no_pun ctxt_prec non_rep_tys
+      | otherwise
+      -> pprPrecIfaceType ctxt_prec prefix_tc
+  where
+    -- This tycon is used to print in prefix notation for the punned Solo
+    -- case and the unabbreviated case.
+    prefix_tc = IfaceTyConApp (IfaceTyCon (mk_name arity) info) args
+
+    info = mkIfaceTyConInfo NotPromoted IfaceNormalTyCon
+
+    mk_name = case (sort, is_promoted) of
+      (IsTuple BoxedTuple, IsPromoted) -> tupleDataConName Boxed
+      (IsTuple s, _) -> tupleTyConName s
+      (IsSum, _) -> tyConName . sumTyCon
+
+    -- drop the RuntimeRep vars.
+    -- See Note [Unboxed tuple RuntimeRep vars] in GHC.Core.TyCon
+    non_rep_tys = if strip_reps then drop arity all_tys else all_tys
+
+    arity = if strip_reps then count `div` 2 else count
+
+    count = length all_tys
+
+    all_tys = appArgsIfaceTypes args
+
+    strip_reps = case is_promoted of
+      IsPromoted -> True
+      NotPromoted -> strip_reps_sort
+
+    strip_reps_sort = case sort of
+      IsTuple BoxedTuple -> False
+      IsTuple UnboxedTuple -> True
+      IsTuple ConstraintTuple -> False
+      IsSum -> True
+
+-- | Pretty-print an unboxed sum type.
+-- The sum should be saturated: as many visible arguments as the arity of
+-- the sum.
+ppr_sum :: PprPrec -> PromotionFlag -> IfaceAppArgs -> SDoc
+ppr_sum ctxt_prec = ppr_tuple_sum ctxt_prec IsSum
 
 -- | Pretty-print a tuple type (boxed tuple, constraint tuple, unboxed tuple).
 -- The tuple should be saturated: as many visible arguments as the arity of
 -- the tuple.
---
--- NB: this always strips off the invisible 'RuntimeRep' arguments,
--- even with `-fprint-explicit-runtime-reps` and `-fprint-explicit-kinds`.
-pprTuple :: PprPrec -> TupleSort -> PromotionFlag -> IfaceAppArgs -> SDoc
-pprTuple ctxt_prec sort promoted args =
-  case promoted of
-    IsPromoted
-      -> let tys = appArgsIfaceTypes args
-             args' = drop (length tys `div` 2) tys
-         in ppr_tuple_app args' $
-            pprPromotionQuoteI IsPromoted <>
-            tupleParens sort (spaceIfSingleQuote (pprWithCommas pprIfaceType args'))
-
-    NotPromoted
-      |  ConstraintTuple <- sort
-      ,  IA_Nil <- args
-      -> maybeParen ctxt_prec sigPrec $
-         text "() :: Constraint"
-
-      | otherwise
-      ->   -- drop the RuntimeRep vars.
-           -- See Note [Unboxed tuple RuntimeRep vars] in GHC.Core.TyCon
-         let tys   = appArgsIfaceTypes args
-             args' = case sort of
-                       UnboxedTuple -> drop (length tys `div` 2) tys
-                       _            -> tys
-         in
-         ppr_tuple_app args' $
-         pprPromotionQuoteI promoted <>
-         tupleParens sort (pprWithCommas pprIfaceType args')
-  where
-    ppr_tuple_app :: [IfaceType] -> SDoc -> SDoc
-    ppr_tuple_app args_wo_runtime_reps ppr_args_w_parens
-        -- Special-case unary boxed tuples so that they are pretty-printed as
-        -- `Solo x`, not `(x)`
-      | [_] <- args_wo_runtime_reps
-      , BoxedTuple <- sort
-      = let solo_tc_info = mkIfaceTyConInfo promoted IfaceNormalTyCon
-            tupleName = case promoted of
-              IsPromoted -> tupleDataConName (tupleSortBoxity sort)
-              NotPromoted -> tupleTyConName sort
-            solo_tc = IfaceTyCon (tupleName 1) solo_tc_info in
-        pprPrecIfaceType ctxt_prec $ IfaceTyConApp solo_tc args
-      | otherwise
-      = ppr_args_w_parens
+ppr_tuple :: PprPrec -> TupleSort -> PromotionFlag -> IfaceAppArgs -> SDoc
+ppr_tuple ctxt_prec sort = ppr_tuple_sum ctxt_prec (IsTuple sort)
 
 pprIfaceTyLit :: IfaceTyLit -> SDoc
 pprIfaceTyLit (IfaceNumTyLit n) = integer n
diff --git a/compiler/GHC/Parser.y b/compiler/GHC/Parser.y
index 20b1cbca2bea..363c0919b80a 100644
--- a/compiler/GHC/Parser.y
+++ b/compiler/GHC/Parser.y
@@ -2261,26 +2261,37 @@ atype :: { LHsType GhcPs }
         | '{' fielddecls '}'             {% do { decls <- amsA' (sLL $1 $> $ HsRecTy (AnnList (listAsAnchorM $2) (Just $ moc $1) (Just $ mcc $3) [] []) $2)
                                                ; checkRecordSyntax decls }}
                                                         -- Constructor sigs only
-        | '(' ')'                        {% amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParens (glAA $1) (glAA $2))
-                                                    HsBoxedOrConstraintTuple []) }
+
+        -- List and tuple syntax whose interpretation depends on the extension ListTuplePuns.
+        | '(' ')'                        {% amsA' . sLL $1 $> =<< (mkTupleSyntaxTy (glR $1) [] (glR $>)) }
         | '(' ktype ',' comma_types1 ')' {% do { h <- addTrailingCommaA $2 (gl $3)
-                                               ; amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParens (glAA $1) (glAA $5))
-                                                        HsBoxedOrConstraintTuple (h : $4)) }}
-        | '(#' '#)'                   {% amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParensHash (glAA $1) (glAA $2)) HsUnboxedTuple []) }
-        | '(#' comma_types1 '#)'      {% amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParensHash (glAA $1) (glAA $3)) HsUnboxedTuple $2) }
-        | '(#' bar_types2 '#)'        {% amsA' (sLL $1 $> $ HsSumTy (AnnParen AnnParensHash (glAA $1) (glAA $3)) $2) }
-        | '[' ktype ']'               {% amsA' (sLL $1 $> $ HsListTy (AnnParen AnnParensSquare (glAA $1) (glAA $3)) $2) }
+                                               ; amsA' . sLL $1 $> =<< (mkTupleSyntaxTy (glR $1) (h : $4) (glR $>)) }}
+        | '(#' '#)'                   {% do { requireLTPuns PEP_TupleSyntaxType $1 $>
+                                            ; amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParensHash (glAA $1) (glAA $2)) HsUnboxedTuple []) } }
+        | '(#' comma_types1 '#)'      {% do { requireLTPuns PEP_TupleSyntaxType $1 $>
+                                            ; amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParensHash (glAA $1) (glAA $3)) HsUnboxedTuple $2) } }
+        | '(#' bar_types2 '#)'        {% do { requireLTPuns PEP_SumSyntaxType $1 $>
+                                      ; amsA' (sLL $1 $> $ HsSumTy (AnnParen AnnParensHash (glAA $1) (glAA $3)) $2) } }
+        | '[' ktype ']'               {% amsA' . sLL $1 $> =<< (mkListSyntaxTy1 (glR $1) $2 (glR $3)) }
         | '(' ktype ')'               {% amsA' (sLL $1 $> $ HsParTy  (AnnParen AnnParens       (glAA $1) (glAA $3)) $2) }
-        | quasiquote                  { mapLocA (HsSpliceTy noExtField) $1 }
-        | splice_untyped              { mapLocA (HsSpliceTy noExtField) $1 }
                                       -- see Note [Promotion] for the followings
-        | SIMPLEQUOTE qcon_nowiredlist {% amsA' (sLL $1 $> $ HsTyVar [mj AnnSimpleQuote $1,mjN AnnName $2] IsPromoted $2) }
+        | SIMPLEQUOTE '(' ')'         {% do { requireLTPuns PEP_QuoteDisambiguation $1 $>
+                                            ; amsA' (sLL $1 $> $ HsExplicitTupleTy [mj AnnSimpleQuote $1,mop $2,mcp $3] []) }}
+        | SIMPLEQUOTE gen_qcon {% amsA' (sLL $1 $> $ HsTyVar [mj AnnSimpleQuote $1,mjN AnnName $2] IsPromoted $2) }
+        | SIMPLEQUOTE sysdcon_nolist {% do { requireLTPuns PEP_QuoteDisambiguation $1 (reLoc $>)
+                                           ; amsA' (sLL $1 $> $ HsTyVar [mj AnnSimpleQuote $1,mjN AnnName $2] IsPromoted (L (getLoc $2) $ nameRdrName (dataConName (unLoc $2)))) }}
         | SIMPLEQUOTE  '(' ktype ',' comma_types1 ')'
-                             {% do { h <- addTrailingCommaA $3 (gl $4)
+                             {% do { requireLTPuns PEP_QuoteDisambiguation $1 $>
+                                   ; h <- addTrailingCommaA $3 (gl $4)
                                    ; amsA' (sLL $1 $> $ HsExplicitTupleTy [mj AnnSimpleQuote $1,mop $2,mcp $6] (h : $5)) }}
-        | SIMPLEQUOTE  '[' comma_types0 ']'     {% amsA' (sLL $1 $> $ HsExplicitListTy [mj AnnSimpleQuote $1,mos $2,mcs $4] IsPromoted $3) }
+        | '[' ']'               {% withCombinedComments $1 $> (mkListSyntaxTy0 (glR $1) (glR $2)) }
+        | SIMPLEQUOTE  '[' comma_types0 ']'     {% do { requireLTPuns PEP_QuoteDisambiguation $1 $>
+                                                      ; amsA' (sLL $1 $> $ HsExplicitListTy [mj AnnSimpleQuote $1,mos $2,mcs $4] IsPromoted $3) }}
         | SIMPLEQUOTE var                       {% amsA' (sLL $1 $> $ HsTyVar [mj AnnSimpleQuote $1,mjN AnnName $2] IsPromoted $2) }
 
+        | quasiquote                  { mapLocA (HsSpliceTy noExtField) $1 }
+        | splice_untyped              { mapLocA (HsSpliceTy noExtField) $1 }
+
         -- Two or more [ty, ty, ty] must be a promoted list type, just as
         -- if you had written '[ty, ty, ty]
         -- (One means a list type, zero means the list type constructor,
@@ -2386,6 +2397,11 @@ bounded in the type level, then we look for it in the term level (we
 change its namespace to DataName, see Note [Demotion] in GHC.Types.Names.OccName).
 And both become a HsTyVar ("Zero", DataName) after the renamer.
 
+- ListTuplePuns
+When this extension is disabled, ticked constructors for lists and tuples are
+not accepted, while the unticked variants are unconditionally parsed as data
+constructors.
+
 -}
 
 
@@ -2472,8 +2488,13 @@ forall :: { Located ([AddEpAnn], Maybe [LHsTyVarBndr Specificity GhcPs]) }
 
 constr_stuff :: { Located (LocatedN RdrName, HsConDeclH98Details GhcPs) }
         : infixtype       {% fmap (reLoc. (fmap (\b -> (dataConBuilderCon b,
-                                                          dataConBuilderDetails b))))
-                                     (runPV $1) }
+                                                        dataConBuilderDetails b))))
+                                  (runPV $1) }
+        | '(#' usum_constr '#)' {% let (t, tag, arity) = $2 in pure (sLL $1 $3 $ mkUnboxedSumCon t tag arity)}
+
+usum_constr :: { (LHsType GhcPs, Int, Int) } -- constructor for the data decls SumN#
+         : ktype bars { ($1, 1, (snd $2 + 1)) }
+         | bars ktype bars0 { ($2, snd $1 + 1, snd $1 + snd $3 + 1) }
 
 fielddecls :: { [LConDeclField GhcPs] }
         : {- empty -}     { [] }
@@ -3590,10 +3611,6 @@ name_var : var { $1 }
 -- There are two different productions here as lifted list constructors
 -- are parsed differently.
 
-qcon_nowiredlist :: { LocatedN RdrName }
-        : gen_qcon                     { $1 }
-        | sysdcon_nolist               { L (getLoc $1) $ nameRdrName (dataConName (unLoc $1)) }
-
 qcon :: { LocatedN RdrName }
   : gen_qcon              { $1}
   | sysdcon               { L (getLoc $1) $ nameRdrName (dataConName (unLoc $1)) }
@@ -3620,8 +3637,7 @@ qcon_list : qcon                  { sL1 $1 [$1] }
 
 -- See Note [ExplicitTuple] in GHC.Hs.Expr
 sysdcon_nolist :: { LocatedN DataCon }  -- Wired in data constructors
-        : '(' ')'               {% amsr (sLL $1 $> unitDataCon) (NameAnnOnly NameParens (glAA $1) (glAA $2) []) }
-        | '(' commas ')'        {% amsr (sLL $1 $> $ tupleDataCon Boxed (snd $2 + 1))
+        : '(' commas ')'        {% amsr (sLL $1 $> $ tupleDataCon Boxed (snd $2 + 1))
                                        (NameAnnCommas NameParens (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }
         | '(#' '#)'             {% amsr (sLL $1 $> $ unboxedUnitDataCon) (NameAnnOnly NameParensHash (glAA $1) (glAA $2) []) }
         | '(#' commas '#)'      {% amsr (sLL $1 $> $ tupleDataCon Unboxed (snd $2 + 1))
@@ -3630,7 +3646,8 @@ sysdcon_nolist :: { LocatedN DataCon }  -- Wired in data constructors
 -- See Note [Empty lists] in GHC.Hs.Expr
 sysdcon :: { LocatedN DataCon }
         : sysdcon_nolist                 { $1 }
-        | '[' ']'               {% amsr (sLL $1 $> nilDataCon) (NameAnnOnly NameSquare (glAA $1) (glAA $2) []) }
+        | '(' ')'               {% amsr (sLL $1 $> unitDataCon) (NameAnnOnly NameParens (glAA $1) (glAA $2) []) }
+        |  '[' ']'               {% amsr (sLL $1 $> nilDataCon) (NameAnnOnly NameSquare (glAA $1) (glAA $2) []) }
 
 conop :: { LocatedN RdrName }
         : consym                { $1 }
@@ -3654,21 +3671,20 @@ gtycon :: { LocatedN RdrName }  -- A "general" qualified tycon, including unit t
                                                 (NameAnnOnly NameParens (glAA $1) (glAA $2) []) }
         | '(#' '#)'                    {% amsr (sLL $1 $> $ getRdrName unboxedUnitTyCon)
                                                 (NameAnnOnly NameParensHash (glAA $1) (glAA $2) []) }
+        | '[' ']'               {% amsr (sLL $1 $> $ listTyCon_RDR)
+                                      (NameAnnOnly NameSquare (glAA $1) (glAA $2) []) }
 
 ntgtycon :: { LocatedN RdrName }  -- A "general" qualified tycon, excluding unit tuples
         : oqtycon               { $1 }
-        | '(' commas ')'        {% amsr (sLL $1 $> $ getRdrName (tupleTyCon Boxed
-                                                       (snd $2 + 1)))
-                                       (NameAnnCommas NameParens (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }
-        | '(#' commas '#)'      {% amsr (sLL $1 $> $ getRdrName (tupleTyCon Unboxed
-                                                       (snd $2 + 1)))
-                                       (NameAnnCommas NameParensHash (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }
-        | '(#' bars '#)'        {% amsr (sLL $1 $> $ getRdrName (sumTyCon (snd $2 + 1)))
-                                       (NameAnnBars NameParensHash (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }
+        | '(' commas ')'        {% do { n <- mkTupleSyntaxTycon Boxed (snd $2 + 1)
+                                      ; amsr (sLL $1 $> n) (NameAnnCommas NameParens (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }}
+        | '(#' commas '#)'      {% do { n <- mkTupleSyntaxTycon Unboxed (snd $2 + 1)
+                                      ; amsr (sLL $1 $> n) (NameAnnCommas NameParensHash (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }}
+        | '(#' bars '#)'        {% do { requireLTPuns PEP_SumSyntaxType $1 $>
+                                      ; amsr (sLL $1 $> $ (getRdrName (sumTyCon (snd $2 + 1))))
+                                       (NameAnnBars NameParensHash (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) } }
         | '(' '->' ')'          {% amsr (sLL $1 $> $ getRdrName unrestrictedFunTyCon)
                                        (NameAnnRArrow (isUnicode $2) (Just $ glAA $1) (glAA $2) (Just $ glAA $3) []) }
-        | '[' ']'               {% amsr (sLL $1 $> $ listTyCon_RDR)
-                                       (NameAnnOnly NameSquare (glAA $1) (glAA $2) []) }
 
 oqtycon :: { LocatedN RdrName }  -- An "ordinary" qualified tycon;
                                 -- These can appear in export lists
diff --git a/compiler/GHC/Parser/Errors/Ppr.hs b/compiler/GHC/Parser/Errors/Ppr.hs
index 64e6ed992107..567922ce4f23 100644
--- a/compiler/GHC/Parser/Errors/Ppr.hs
+++ b/compiler/GHC/Parser/Errors/Ppr.hs
@@ -507,7 +507,25 @@ instance Diagnostic PsMessage where
                 , text "'" <> text [looks_like_char] <> text "' (" <> text looks_like_char_name <> text ")" <> comma
                 , text "but it is not" ]
 
-  diagnosticReason = \case
+    PsErrInvalidPun PEP_QuoteDisambiguation
+      -> mkSimpleDecorated $ vcat
+        [ text "Disambiguating data constructors of tuples and lists is disabled."
+        , text "Remove the quote to use the data constructor."
+        ]
+
+    PsErrInvalidPun PEP_TupleSyntaxType
+      -> mkSimpleDecorated $ vcat
+        [ text "Unboxed tuple data constructors are not supported in types."
+        , text "Use" <+> quotes (text "Tuple<n># a b c ...") <+> text "to refer to the type constructor."
+        ]
+
+    PsErrInvalidPun PEP_SumSyntaxType
+      -> mkSimpleDecorated $ vcat
+        [ text "Unboxed sum data constructors are not supported in types."
+        , text "Use" <+> quotes (text "Sum<n># a b c ...") <+> text "to refer to the type constructor."
+        ]
+
+  diagnosticReason  = \case
     PsUnknownMessage m                            -> diagnosticReason m
     PsHeaderMessage  m                            -> psHeaderMessageReason m
     PsWarnBidirectionalFormatChars{}              -> WarningWithFlag Opt_WarnUnicodeBidirectionalFormatCharacters
@@ -621,6 +639,7 @@ instance Diagnostic PsMessage where
     PsErrInvalidCApiImport {}                     -> ErrorWithoutFlag
     PsErrMultipleConForNewtype {}                 -> ErrorWithoutFlag
     PsErrUnicodeCharLooksLike{}                   -> ErrorWithoutFlag
+    PsErrInvalidPun {}                            -> ErrorWithoutFlag
 
   diagnosticHints = \case
     PsUnknownMessage m                            -> diagnosticHints m
@@ -788,6 +807,7 @@ instance Diagnostic PsMessage where
     PsErrInvalidCApiImport {}                     -> noHints
     PsErrMultipleConForNewtype {}                 -> noHints
     PsErrUnicodeCharLooksLike{}                   -> noHints
+    PsErrInvalidPun {}                            -> [suggestExtension LangExt.ListTuplePuns]
 
   diagnosticCode = constructorCode
 
diff --git a/compiler/GHC/Parser/Errors/Types.hs b/compiler/GHC/Parser/Errors/Types.hs
index cfbafce85467..0f0b8d19e284 100644
--- a/compiler/GHC/Parser/Errors/Types.hs
+++ b/compiler/GHC/Parser/Errors/Types.hs
@@ -459,6 +459,8 @@ data PsMessage
       Char -- ^ the character it looks like
       String -- ^ the name of the character that it looks like
 
+   | PsErrInvalidPun !PsErrPunDetails
+
    deriving Generic
 
 -- | Extra details about a parse error, which helps
@@ -509,6 +511,11 @@ data PsErrInPatDetails
                     !ParseContext
   | PEIP_OtherPatDetails !ParseContext
 
+data PsErrPunDetails
+  = PEP_QuoteDisambiguation
+  | PEP_TupleSyntaxType
+  | PEP_SumSyntaxType
+
 noParseContext :: ParseContext
 noParseContext = ParseContext Nothing NoIncompleteDoBlock
 
diff --git a/compiler/GHC/Parser/Lexer.x b/compiler/GHC/Parser/Lexer.x
index 596b4f7eb5aa..0f85c81074ca 100644
--- a/compiler/GHC/Parser/Lexer.x
+++ b/compiler/GHC/Parser/Lexer.x
@@ -3053,6 +3053,7 @@ data ExtBits
   | OverloadedRecordDotBit
   | OverloadedRecordUpdateBit
   | ExtendedLiteralsBit
+  | ListTuplePunsBit
 
   -- Flags that are updated once parsing starts
   | InRulePragBit
@@ -3133,6 +3134,7 @@ mkParserOpts extensionFlags diag_opts supported
       .|. OverloadedRecordDotBit      `xoptBit` LangExt.OverloadedRecordDot
       .|. OverloadedRecordUpdateBit   `xoptBit` LangExt.OverloadedRecordUpdate  -- Enable testing via 'getBit OverloadedRecordUpdateBit' in the parser (RecordDotSyntax parsing uses that information).
       .|. ExtendedLiteralsBit         `xoptBit` LangExt.ExtendedLiterals
+      .|. ListTuplePunsBit            `xoptBit` LangExt.ListTuplePuns
     optBits =
           HaddockBit        `setBitIf` isHaddock
       .|. RawTokenStreamBit `setBitIf` rawTokStream
diff --git a/compiler/GHC/Parser/PostProcess.hs b/compiler/GHC/Parser/PostProcess.hs
index 8193e1712c8f..582c35e2d249 100644
--- a/compiler/GHC/Parser/PostProcess.hs
+++ b/compiler/GHC/Parser/PostProcess.hs
@@ -112,6 +112,15 @@ module GHC.Parser.PostProcess (
         addUnpackednessP,
         dataConBuilderCon,
         dataConBuilderDetails,
+        mkUnboxedSumCon,
+
+        -- ListTuplePuns related parsers
+        mkTupleSyntaxTy,
+        mkTupleSyntaxTycon,
+        mkListSyntaxTy0,
+        mkListSyntaxTy1,
+        withCombinedComments,
+        requireLTPuns,
     ) where
 
 import GHC.Prelude
@@ -136,7 +145,8 @@ import GHC.Types.TyThing
 import GHC.Core.Type    ( Specificity(..) )
 import GHC.Builtin.Types( cTupleTyConName, tupleTyCon, tupleDataCon,
                           nilDataConName, nilDataConKey,
-                          listTyConName, listTyConKey, unrestrictedFunTyCon )
+                          listTyConName, listTyConKey, sumDataCon,
+                          unrestrictedFunTyCon , listTyCon_RDR )
 import GHC.Types.ForeignCall
 import GHC.Types.SrcLoc
 import GHC.Types.Unique ( hasKey )
@@ -146,6 +156,7 @@ import GHC.Data.FastString
 import GHC.Data.Maybe
 import GHC.Utils.Error
 import GHC.Utils.Misc
+import GHC.Utils.Monad (unlessM)
 import Data.Either
 import Data.List        ( findIndex )
 import Data.Foldable
@@ -1133,17 +1144,36 @@ checkContext orig_t@(L (EpAnn l _ _) _orig_t) =
     -- (Eq a, Ord b) shows up as a tuple type. Only boxed tuples can
     -- be used as context constraints.
     -- Ditto ()
-    = return (L (EpAnn l
-                  -- Append parens so that the original order in the source is maintained
-                  (AnnContext Nothing (oparens ++ [ap_open ann']) (ap_close ann':cparens)) cs) ts)
-
+    = mkCTuple (oparens ++ [ap_open ann'], ap_close ann' : cparens, cs) ts
+
+  -- With NoListTuplePuns, contexts are parsed as data constructors, which causes failure
+  -- downstream.
+  -- This converts them just like when they are parsed as types in the punned case.
+  check (oparens,cparens,cs) (L _l (HsExplicitTupleTy anns ts))
+    = punsAllowed >>= \case
+      True -> unprocessed
+      False -> do
+        let
+          (op, cp) = case anns of
+            [o, c] -> ([o], [c])
+            [q, _, c] -> ([q], [c])
+            _ -> ([], [])
+        mkCTuple (oparens ++ (addLoc <$> op), (addLoc <$> cp) ++ cparens, cs) ts
   check (opi,cpi,csi) (L _lp1 (HsParTy ann' ty))
                                   -- to be sure HsParTy doesn't get into the way
     = check (ap_open ann':opi, ap_close ann':cpi, csi) ty
 
   -- No need for anns, returning original
-  check (_opi,_cpi,_csi) _t =
-                 return (L (EpAnn l (AnnContext Nothing [] []) emptyComments) [orig_t])
+  check (_opi,_cpi,_csi) _t = unprocessed
+
+  unprocessed =
+    return (L (EpAnn l (AnnContext Nothing [] []) emptyComments) [orig_t])
+
+  addLoc (AddEpAnn _ l) = l
+
+  mkCTuple (oparens, cparens, cs) ts =
+    -- Append parens so that the original order in the source is maintained
+    return (L (EpAnn l (AnnContext Nothing oparens cparens) cs) ts)
 
 checkImportDecl :: Maybe EpaLocation
                 -> Maybe EpaLocation
@@ -2084,6 +2114,9 @@ tyToDataConBuilder (L l (HsTyVar _ prom v)) = do
 tyToDataConBuilder (L l (HsTupleTy _ HsBoxedOrConstraintTuple ts)) = do
   let data_con = L (l2l l) (getRdrName (tupleDataCon Boxed (length ts)))
   return $ L l (PrefixDataConBuilder (toOL ts) data_con)
+tyToDataConBuilder (L l (HsTupleTy _ HsUnboxedTuple ts)) = do
+  let data_con = L (l2l l) (getRdrName (tupleDataCon Unboxed (length ts)))
+  return $ L l (PrefixDataConBuilder (toOL ts) data_con)
 tyToDataConBuilder t =
   addFatalError $ mkPlainErrorMsgEnvelope (getLocA t) $
                     (PsErrInvalidDataCon (unLoc t))
@@ -2095,6 +2128,10 @@ checkNotPromotedDataCon IsPromoted (L l name) =
   addError $ mkPlainErrorMsgEnvelope (locA l) $
     PsErrIllegalPromotionQuoteDataCon name
 
+mkUnboxedSumCon :: LHsType GhcPs -> ConTag -> Arity -> (LocatedN RdrName, HsConDeclH98Details GhcPs)
+mkUnboxedSumCon t tag arity =
+  (noLocA (getRdrName (sumDataCon tag arity)), PrefixCon noTypeArgs [hsLinear t])
+
 {- Note [Ambiguous syntactic categories]
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 There are places in the grammar where we do not know whether we are parsing an
@@ -3243,3 +3280,114 @@ mkRdrProjUpdate loc (L l flds) arg isPun anns =
     , hfbRHS = arg
     , hfbPun = isPun
   }
+
+-----------------------------------------------------------------------------
+-- Tuple and list punning
+
+punsAllowed :: P Bool
+punsAllowed = getBit ListTuplePunsBit
+
+-- | Check whether @ListTuplePuns@ is enabled and return the first arg if it is,
+-- the second arg otherwise.
+punsIfElse :: a -> a -> P a
+punsIfElse enabled disabled = do
+  allowed <- punsAllowed
+  pure (if allowed then enabled else disabled)
+
+-- | Emit an error of type 'PsErrInvalidPun' with a location from @start@ to
+-- @end@ if the extension @ListTuplePuns@ is disabled.
+--
+-- This is used in Parser.y to guard rules that require punning.
+requireLTPuns :: PsErrPunDetails -> Located a -> Located b -> P ()
+requireLTPuns err start end =
+  unlessM punsAllowed $ do
+    addError (mkPlainErrorMsgEnvelope loc (PsErrInvalidPun err))
+  where
+    loc = (combineSrcSpans (getLoc start) (getLoc end))
+
+-- | Call a parser with a span and its comments given by a start and end token.
+withCombinedComments ::
+  HasLoc l1 =>
+  HasLoc l2 =>
+  l1 ->
+  l2 ->
+  (SrcSpan -> EpAnnComments -> P a) ->
+  P (LocatedA a)
+withCombinedComments start end use = do
+  cs <- getCommentsFor fullSpan
+  a <- use fullSpan cs
+  pure (L (noAnnSrcSpan fullSpan) a)
+  where
+    fullSpan = combineSrcSpans (getHasLoc start) (getHasLoc end)
+
+-- | Decide whether to parse tuple syntax @(Int, Double)@ in a type as a
+-- type or data constructor, based on the extension @ListTuplePuns@.
+-- The case with an explicit promotion quote, @'(Int, Double)@, is handled
+-- by 'mkExplicitTupleTy'.
+mkTupleSyntaxTy :: EpaLocation
+                -> [LocatedA (HsType GhcPs)]
+                -> EpaLocation
+                -> P (HsType GhcPs)
+mkTupleSyntaxTy parOpen args parClose =
+  punsIfElse enabled disabled
+  where
+    enabled =
+      HsTupleTy annParen HsBoxedOrConstraintTuple args
+    disabled =
+      HsExplicitTupleTy annsKeyword args
+
+    annParen = AnnParen AnnParens parOpen parClose
+    annsKeyword = [AddEpAnn AnnOpenP parOpen, AddEpAnn AnnCloseP parClose]
+
+-- | Decide whether to parse tuple con syntax @(,)@ in a type as a
+-- type or data constructor, based on the extension @ListTuplePuns@.
+-- The case with an explicit promotion quote, @'(,)@, is handled
+-- by the rule @SIMPLEQUOTE sysdcon_nolist@ in @atype@.
+mkTupleSyntaxTycon :: Boxity -> Int -> P RdrName
+mkTupleSyntaxTycon boxity n =
+  punsIfElse
+    (getRdrName (tupleTyCon boxity n))
+    (getRdrName (tupleDataCon boxity n))
+
+-- | Decide whether to parse list tycon syntax @[]@ in a type as a type or data
+-- constructor, based on the extension @ListTuplePuns@.
+-- The case with an explicit promotion quote, @'[]@, is handled by
+-- 'mkExplicitListTy'.
+mkListSyntaxTy0 :: EpaLocation
+                -> EpaLocation
+                -> SrcSpan
+                -> EpAnnComments
+                -> P (HsType GhcPs)
+mkListSyntaxTy0 brkOpen brkClose span comments =
+  punsIfElse enabled disabled
+  where
+    enabled = HsTyVar noAnn NotPromoted rn
+
+    -- attach the comments only to the RdrName since it's the innermost AST node
+    rn = L (EpAnn fullLoc rdrNameAnn comments) listTyCon_RDR
+
+    disabled =
+      HsExplicitListTy annsKeyword NotPromoted []
+
+    rdrNameAnn = NameAnnOnly NameSquare brkOpen brkClose []
+    annsKeyword = [AddEpAnn AnnOpenS brkOpen, AddEpAnn AnnCloseS brkClose]
+    fullLoc = EpaSpan span
+
+-- | Decide whether to parse list type syntax @[Int]@ in a type as a
+-- type or data constructor, based on the extension @ListTuplePuns@.
+-- The case with an explicit promotion quote, @'[Int]@, is handled
+-- by 'mkExplicitListTy'.
+mkListSyntaxTy1 :: EpaLocation
+                -> LocatedA (HsType GhcPs)
+                -> EpaLocation
+                -> P (HsType GhcPs)
+mkListSyntaxTy1 brkOpen t brkClose =
+  punsIfElse enabled disabled
+  where
+    enabled = HsListTy annParen t
+
+    disabled =
+      HsExplicitListTy annsKeyword NotPromoted [t]
+
+    annsKeyword = [AddEpAnn AnnOpenS brkOpen, AddEpAnn AnnCloseS brkClose]
+    annParen = AnnParen AnnParensSquare brkOpen brkClose
diff --git a/compiler/GHC/Runtime/Eval.hs b/compiler/GHC/Runtime/Eval.hs
index 5386eebda819..f6917598d7a7 100644
--- a/compiler/GHC/Runtime/Eval.hs
+++ b/compiler/GHC/Runtime/Eval.hs
@@ -79,7 +79,8 @@ import GHC.Tc.Utils.TcType
 import GHC.Tc.Types.Constraint
 import GHC.Tc.Types.Origin
 
-import GHC.Builtin.Names ( toDynName, pretendNameIsInScope )
+import GHC.Builtin.Names ( toDynName )
+import GHC.Builtin.Types ( pretendNameIsInScope )
 
 import GHC.Data.Maybe
 import GHC.Data.FastString
diff --git a/compiler/GHC/StgToJS/Linker/Linker.hs b/compiler/GHC/StgToJS/Linker/Linker.hs
index 084c03583900..73993e611c15 100644
--- a/compiler/GHC/StgToJS/Linker/Linker.hs
+++ b/compiler/GHC/StgToJS/Linker/Linker.hs
@@ -973,7 +973,7 @@ rtsDeps =
           [ ":"
           , "[]"
           ]
-      , mkPrimFuns "GHC.Tuple.Prim"
+      , mkPrimFuns "GHC.Tuple"
           [ "(,)"
           , "(,,)"
           , "(,,,)"
diff --git a/compiler/GHC/StgToJS/Linker/Utils.hs b/compiler/GHC/StgToJS/Linker/Utils.hs
index 57b3cbe4850d..7acaadd2e395 100644
--- a/compiler/GHC/StgToJS/Linker/Utils.hs
+++ b/compiler/GHC/StgToJS/Linker/Utils.hs
@@ -79,7 +79,7 @@ genMkTup profiling n = mconcat
   [ "#define MK_TUP", sn                                                          -- #define MK_TUPn
   , "(", B.intercalate "," xs, ")"                                                -- (x1,x2,...)
   , "(h$c", sn, "("                                                               -- (h$cn(
-  , bytesFS symbol, ","                                                           -- h$ghczmprimZCGHCziTupleziPrimziZnT_con_e,                                                                        -- ,
+  , bytesFS symbol, ","                                                           -- h$ghczmprimZCGHCziTupleziZnT_con_e,                                                                        -- ,
   , B.intercalate "," $ map (\x -> "(" <> x <> ")") xs                            -- (x1),(x2),(...)
   , if profiling then ",h$currentThread?h$currentThread.ccs:h$CCS_SYSTEM" else "" -- ,h$currentThread?h$currentThread.ccs:h$CCS_SYSTEM
   , "))\n"                                                                        -- ))\n
diff --git a/compiler/GHC/Tc/Errors/Ppr.hs b/compiler/GHC/Tc/Errors/Ppr.hs
index 9ed29c8a4438..01b7f6b4af73 100644
--- a/compiler/GHC/Tc/Errors/Ppr.hs
+++ b/compiler/GHC/Tc/Errors/Ppr.hs
@@ -38,7 +38,7 @@ import GHC.Prelude
 import qualified Language.Haskell.TH as TH
 
 import GHC.Builtin.Names
-import GHC.Builtin.Types ( boxedRepDataConTyCon, tYPETyCon, filterCTuple )
+import GHC.Builtin.Types ( boxedRepDataConTyCon, tYPETyCon, filterCTuple, pretendNameIsInScope )
 
 import GHC.Types.Name.Reader
 import GHC.Unit.Module.ModIface
diff --git a/compiler/GHC/Tc/Gen/HsType.hs b/compiler/GHC/Tc/Gen/HsType.hs
index 2ec7a76c5d0e..573f086f5223 100644
--- a/compiler/GHC/Tc/Gen/HsType.hs
+++ b/compiler/GHC/Tc/Gen/HsType.hs
@@ -1228,7 +1228,7 @@ tc_hs_type mode rn_ty@(HsListTy _ elt_ty) exp_kind
        ; checkWiredInTyCon listTyCon
        ; checkExpectedKind rn_ty (mkListTy tau_ty) liftedTypeKind exp_kind }
 
--- See Note [Distinguishing tuple kinds] in GHC.Hs.Type
+-- See Note [Distinguishing tuple kinds] in Language.Haskell.Syntax.Type
 -- See Note [Inferring tuple kinds]
 tc_hs_type mode rn_ty@(HsTupleTy _ HsBoxedOrConstraintTuple hs_tys) exp_kind
      -- (NB: not zonking before looking at exp_k, to avoid left-right bias)
diff --git a/compiler/GHC/Tc/Instance/Typeable.hs b/compiler/GHC/Tc/Instance/Typeable.hs
index c4e15328e6bf..ff14a3e1fb82 100644
--- a/compiler/GHC/Tc/Instance/Typeable.hs
+++ b/compiler/GHC/Tc/Instance/Typeable.hs
@@ -13,7 +13,7 @@ module GHC.Tc.Instance.Typeable(mkTypeableBinds, tyConIsTypeable) where
 import GHC.Prelude
 import GHC.Platform
 
-import GHC.Types.Basic ( Boxity(..), TypeOrConstraint(..), neverInlinePragma )
+import GHC.Types.Basic ( TypeOrConstraint(..), neverInlinePragma )
 import GHC.Types.SourceText ( SourceText(..) )
 import GHC.Iface.Env( newGlobalBinder )
 import GHC.Core.TyCo.Rep( Type(..), TyLit(..) )
@@ -25,7 +25,7 @@ import GHC.Types.TyThing ( lookupId )
 import GHC.Builtin.Names
 import GHC.Builtin.Types.Prim ( primTyCons )
 import GHC.Builtin.Types
-                  ( tupleTyCon, sumTyCon, runtimeRepTyCon
+                  ( runtimeRepTyCon
                   , levityTyCon, vecCountTyCon, vecElemTyCon
                   , nilDataCon, consDataCon )
 import GHC.Types.Name
@@ -39,7 +39,6 @@ import GHC.Driver.DynFlags
 import GHC.Data.Bag
 import GHC.Types.Var ( VarBndr(..) )
 import GHC.Core.Map.Type
-import GHC.Settings.Constants
 import GHC.Utils.Fingerprint(Fingerprint(..), fingerprintString, fingerprintFingerprints)
 import GHC.Utils.Outputable
 import GHC.Utils.Panic
@@ -105,7 +104,7 @@ There are many wrinkles:
 
 * GHC.Prim doesn't have any associated object code, so we need to put the
   representations for types defined in this module elsewhere. We chose this
-  place to be GHC.Types. GHC.Tc.Instance.Typeable.mkPrimTypeableBinds is responsible for
+  place to be GHC.Types. GHC.Tc.Instance.Typeable.mkPrimTypeableTodos is responsible for
   injecting the bindings for the GHC.Prim representations when compiling
   GHC.Types.
 
@@ -354,12 +353,10 @@ mkPrimTypeableTodos
 -- The majority of the types we need here are contained in 'primTyCons'.
 -- However, not all of them: in particular unboxed tuples are absent since we
 -- don't want to include them in the original name cache. See
--- Note [Built-in syntax and the OrigNameCache] in "GHC.Iface.Env" for more.
+-- Note [Built-in syntax and the OrigNameCache] in "GHC.Types.Name.Cache" for more.
 ghcPrimTypeableTyCons :: [TyCon]
 ghcPrimTypeableTyCons = concat
-    [ map (tupleTyCon Unboxed) [0..mAX_TUPLE_SIZE]
-    , map sumTyCon [2..mAX_SUM_SIZE]
-    , primTyCons
+    [ primTyCons
     ]
 
 -- | These are types which are defined in GHC.Types but are needed in order to
diff --git a/compiler/GHC/Tc/Validity.hs b/compiler/GHC/Tc/Validity.hs
index 2ec448da50b5..c8adbf36af1c 100644
--- a/compiler/GHC/Tc/Validity.hs
+++ b/compiler/GHC/Tc/Validity.hs
@@ -1624,7 +1624,11 @@ check_special_inst_head dflags hs_src ctxt clas cls_args
   = checkHasFieldInst clas cls_args
 
   | isCTupleClass clas
-  = failWithTc (TcRnTupleConstraintInst clas)
+  = do
+    -- Since we're now declaring instances for constraint tuples in
+    -- GHC.Classes, this check must exclude that file.
+    this_mod <- fmap tcg_mod getGblEnv
+    when (this_mod /= gHC_CLASSES) (failWithTc (TcRnTupleConstraintInst clas))
 
   -- Check language restrictions on the args to the class
   | check_h98_arg_shape
diff --git a/compiler/GHC/Types/Error/Codes.hs b/compiler/GHC/Types/Error/Codes.hs
index 211affa3cae0..751bab158c1c 100644
--- a/compiler/GHC/Types/Error/Codes.hs
+++ b/compiler/GHC/Types/Error/Codes.hs
@@ -286,6 +286,7 @@ type family GhcDiagnosticCode c = n | n -> c where
   GhcDiagnosticCode "PsErrInvalidCApiImport"                        = 72744
   GhcDiagnosticCode "PsErrMultipleConForNewtype"                    = 05380
   GhcDiagnosticCode "PsErrUnicodeCharLooksLike"                     = 31623
+  GhcDiagnosticCode "PsErrInvalidPun"                               = 52943
 
   -- Driver diagnostic codes
   GhcDiagnosticCode "DriverMissingHomeModules"                      = 32850
diff --git a/compiler/GHC/Types/Name.hs b/compiler/GHC/Types/Name.hs
index 795b65bc13a4..f1979dcbb9a3 100644
--- a/compiler/GHC/Types/Name.hs
+++ b/compiler/GHC/Types/Name.hs
@@ -67,6 +67,8 @@ module GHC.Types.Name (
         isTyVarName, isTyConName, isDataConName,
         isValName, isVarName, isDynLinkName, isFieldName,
         isWiredInName, isWiredIn, isBuiltInSyntax, isTupleTyConName,
+        isSumTyConName,
+        isUnboxedTupleDataConLikeName,
         isHoleName,
         wiredInNameTyThing_maybe,
         nameIsLocalOrFrom, nameIsExternalOrFrom, nameIsHomePackage,
@@ -102,12 +104,13 @@ import GHC.Utils.Binary
 import GHC.Data.FastString
 import GHC.Utils.Outputable
 import GHC.Utils.Panic
+import GHC.OldList (intersperse)
 
 import Control.DeepSeq
 import Data.Data
 import qualified Data.Semigroup as S
-import GHC.Types.Basic (Boxity(Boxed))
-import GHC.Builtin.Uniques (isTupleTyConUnique)
+import GHC.Types.Basic (Boxity(Boxed, Unboxed))
+import GHC.Builtin.Uniques (isTupleTyConUnique, isSumTyConUnique, isTupleDataConLikeUnique)
 
 {-
 ************************************************************************
@@ -309,6 +312,15 @@ isBuiltInSyntax _                                           = False
 isTupleTyConName :: Name -> Bool
 isTupleTyConName = isJust . isTupleTyConUnique . getUnique
 
+isSumTyConName :: Name -> Bool
+isSumTyConName = isJust . isSumTyConUnique . getUnique
+
+-- | This matches a datacon as well as its worker and promoted tycon.
+isUnboxedTupleDataConLikeName :: Name -> Bool
+isUnboxedTupleDataConLikeName n
+  | Just (Unboxed, _) <- isTupleDataConLikeUnique (getUnique n) = True
+  | otherwise = False
+
 isExternalName (Name {n_sort = External _})    = True
 isExternalName (Name {n_sort = WiredIn _ _ _}) = True
 isExternalName _                               = False
@@ -365,14 +377,26 @@ is_interactive_or_from from mod = from == mod || isInteractiveModule mod
 
 -- Return the pun for a name if available.
 -- Used for pretty-printing under ListTuplePuns.
+-- Arity 1 is skipped here because unary tuples have no prefix representation,
+-- since that is occupied by the unit tuple.
 namePun_maybe :: Name -> Maybe FastString
 namePun_maybe name
   | getUnique name == getUnique listTyCon = Just (fsLit "[]")
 
-  | Just (Boxed, ar) <- isTupleTyConUnique (getUnique name)
-  , ar /= 1 = Just (fsLit $ '(' : commas ar ++ ")")
+  | Just (boxity, ar) <- isTupleTyConUnique (getUnique name)
+  , ar /= 1 =
+    let
+      (lpar, rpar) =
+        case boxity of
+          Boxed -> ("(", ")")
+          Unboxed -> ("(#", "#)")
+    in Just (fsLit $ lpar ++ commas ar ++ rpar)
+
+  | Just ar <- isSumTyConUnique (getUnique name)
+  = Just (fsLit $ "(# " ++ bars ar ++ " #)")
   where
     commas ar = replicate (ar-1) ','
+    bars ar = intersperse ' ' (replicate (ar-1) '|')
 
 namePun_maybe _ = Nothing
 
diff --git a/compiler/GHC/Types/Name/Cache.hs b/compiler/GHC/Types/Name/Cache.hs
index dca89bd16adb..0e9a227ecd6b 100644
--- a/compiler/GHC/Types/Name/Cache.hs
+++ b/compiler/GHC/Types/Name/Cache.hs
@@ -31,7 +31,6 @@ import Control.Concurrent.MVar
 import Control.Monad
 import Control.Applicative
 
-
 {-
 
 Note [The Name Cache]
@@ -104,7 +103,7 @@ takeUniqFromNameCache (NameCache c _) = uniqFromTag c
 
 lookupOrigNameCache :: OrigNameCache -> Module -> OccName -> Maybe Name
 lookupOrigNameCache nc mod occ
-  | mod == gHC_TYPES || mod == gHC_PRIM || mod == gHC_INTERNAL_TUPLE_PRIM
+  | mod == gHC_TYPES || mod == gHC_PRIM || mod == gHC_INTERNAL_TUPLE || mod == gHC_CLASSES
   , Just name <- isBuiltInOcc_maybe occ <|> isPunOcc_maybe mod occ
   =     -- See Note [Known-key names], 3(c) in GHC.Builtin.Names
         -- Special case for tuples; there are too many
diff --git a/compiler/GHC/Types/Name/Ppr.hs b/compiler/GHC/Types/Name/Ppr.hs
index 3e6ca84acb71..7a50852c8495 100644
--- a/compiler/GHC/Types/Name/Ppr.hs
+++ b/compiler/GHC/Types/Name/Ppr.hs
@@ -125,6 +125,7 @@ mkQualName env = qual_name where
             , listTyConName
             , manyDataConName ]
           || isJust (isTupleTyOcc_maybe mod occ)
+          || isJust (isSumTyOcc_maybe mod occ)
 
         right_name gre = greDefinitionModule gre == Just mod
 
diff --git a/compiler/GHC/Unit/Types.hs b/compiler/GHC/Unit/Types.hs
index 7a418453c8b2..061c29e71a50 100644
--- a/compiler/GHC/Unit/Types.hs
+++ b/compiler/GHC/Unit/Types.hs
@@ -79,6 +79,7 @@ module GHC.Unit.Types
    , mainUnit
    , thisGhcUnit
    , interactiveUnit
+   , experimentalUnit
 
    , isInteractiveModule
    , wiredInUnitIds
@@ -595,10 +596,11 @@ Make sure you change 'GHC.Unit.State.findWiredInUnits' if you add an entry here.
 -}
 
 bignumUnitId, primUnitId, ghcInternalUnitId, baseUnitId, rtsUnitId,
-  thUnitId, mainUnitId, thisGhcUnitId, interactiveUnitId  :: UnitId
+  thUnitId, mainUnitId, thisGhcUnitId, interactiveUnitId,
+  experimentalUnitId :: UnitId
 
 bignumUnit, primUnit, ghcInternalUnit, baseUnit, rtsUnit,
-  thUnit, mainUnit, thisGhcUnit, interactiveUnit  :: Unit
+  thUnit, mainUnit, thisGhcUnit, interactiveUnit, experimentalUnit  :: Unit
 
 primUnitId        = UnitId (fsLit "ghc-prim")
 bignumUnitId      = UnitId (fsLit "ghc-bignum")
@@ -608,6 +610,7 @@ rtsUnitId         = UnitId (fsLit "rts")
 thisGhcUnitId     = UnitId (fsLit cProjectUnitId) -- See Note [GHC's Unit Id]
 interactiveUnitId = UnitId (fsLit "interactive")
 thUnitId          = UnitId (fsLit "template-haskell")
+experimentalUnitId = UnitId (fsLit "ghc-experimental")
 
 thUnit            = RealUnit (Definite thUnitId)
 primUnit          = RealUnit (Definite primUnitId)
@@ -617,6 +620,7 @@ baseUnit          = RealUnit (Definite baseUnitId)
 rtsUnit           = RealUnit (Definite rtsUnitId)
 thisGhcUnit       = RealUnit (Definite thisGhcUnitId)
 interactiveUnit   = RealUnit (Definite interactiveUnitId)
+experimentalUnit  = RealUnit (Definite experimentalUnitId)
 
 -- | This is the package Id for the current program.  It is the default
 -- package Id if you don't specify a package name.  We don't add this prefix
@@ -635,6 +639,7 @@ wiredInUnitIds =
    , baseUnitId
    , rtsUnitId
    , thUnitId
+   , experimentalUnitId
    ]
    -- NB: ghc is no longer part of the wired-in units since its unit-id, given
    -- by hadrian or cabal, is no longer overwritten and now matches both the
diff --git a/compiler/GHC/Utils/Outputable.hs b/compiler/GHC/Utils/Outputable.hs
index a107d5e1000d..ce7d606d4806 100644
--- a/compiler/GHC/Utils/Outputable.hs
+++ b/compiler/GHC/Utils/Outputable.hs
@@ -39,7 +39,7 @@ module GHC.Utils.Outputable (
         isEmpty, nest,
         ptext,
         int, intWithCommas, integer, word64, word, float, double, rational, doublePrec,
-        parens, cparen, brackets, braces, quotes, quote,
+        parens, cparen, brackets, braces, quotes, quote, quoteIfPunsEnabled,
         doubleQuotes, angleBrackets,
         semi, comma, colon, dcolon, space, equals, dot, vbar,
         arrow, lollipop, larrow, darrow, arrowt, larrowt, arrowtt, larrowtt,
@@ -734,6 +734,12 @@ cparen :: Bool -> SDoc -> SDoc
 {-# INLINE CONLIKE cparen #-}
 cparen b d = SDoc $ Pretty.maybeParens b . runSDoc d
 
+quoteIfPunsEnabled :: SDoc -> SDoc
+quoteIfPunsEnabled doc =
+  sdocOption sdocListTuplePuns $ \case
+    True -> quote doc
+    False -> doc
+
 -- 'quotes' encloses something in single quotes...
 -- but it omits them if the thing begins or ends in a single quote
 -- so that we don't get `foo''.  Instead we just have foo'.
diff --git a/docs/users_guide/9.10.1-notes.rst b/docs/users_guide/9.10.1-notes.rst
index c331a3a26a0f..18af67c4a37c 100644
--- a/docs/users_guide/9.10.1-notes.rst
+++ b/docs/users_guide/9.10.1-notes.rst
@@ -112,6 +112,18 @@ Language
     {-# WARNING in "x-partial" data Head [ "This is a partial synonym,"
                                          , "it throws an error on empty lists."] #-}
 
+- GHC Proposal `#475 <https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0475-tuple-syntax.rst>`_
+  "Non-punning list and tuple syntax" has been partially implemented.
+  When the newly introduced extension :extension:`ListTuplePuns` is disabled,
+  bracket syntax for lists, tuples and sums only denotes their data
+  constructors, while their type constructors have been changed to use regular
+  prefix syntax::
+
+    data List a = [] | a : List a
+    data Tuple2 a b = (a, b)
+
+  The extension is enabled by default, establishing the usual behavior.
+
 Compiler
 ~~~~~~~~
 
diff --git a/docs/users_guide/exts/data_kinds.rst b/docs/users_guide/exts/data_kinds.rst
index 278e82e6681c..57d1f5447583 100644
--- a/docs/users_guide/exts/data_kinds.rst
+++ b/docs/users_guide/exts/data_kinds.rst
@@ -295,3 +295,82 @@ following ways:
        -- Symbol, which requires DataKinds to use in a kind position
        data D4 :: MySymbol -> Type
        data D4 a
+
+Unique syntax for type-level lists and tuples
+=============================================
+
+.. extension:: ListTuplePuns
+    :shortdesc: Enable punning for list, tuple and sum types.
+
+    :since: 9.10.1
+
+    Accept bracket syntax to denote type constructors, using single quotes to
+    disambiguate data constructors.
+
+The previously defined mechanism for specifying data constructors with bracket
+syntax and single quotes is governed by this extension, which is enabled by
+default.
+
+With ``NoListTuplePuns``, brackets are unambiguously parsed as data
+constructors, while the single quote is not accepted as a prefix for them
+anymore.
+Type constructors cannot be expressed with brackets anymore; instead, new
+data type declarations in regular syntax have been added to ``ghc-prim``: ::
+
+    data List a = [] | a : List a
+    data Unit = ()
+    data Tuple2 a b = (a, b)
+    data Tuple2# a b = (# a, b #)
+    data Sum2# a b = (# a | #) | (# | b #)
+    class (a, b) => CTuple2 a b
+    instance (c1, c2) => CTuple2 c1 c2
+
+`CTuple2` is a constraint tuple, which historically only concerns declarations
+like: ::
+
+    type C = (Eq Int, Ord String)
+
+These are distinct from the usual specification of multiple constraints on
+functions or instances with parentheses, since those are treated specially by
+GHC.
+
+When the extension is disabled, any occurrence of special syntax in types will
+be treated as the data constructor, so a type of ``(Int, String)`` has kind
+``Tuple2 Type Type``, corresponding to the type ``'(Int, String)`` with kind
+``(Type, Type)`` when ``ListTuplePuns`` is enabled.
+
+The explicit disambiguation syntax using single quotes is invalid syntax when
+the extension is disabled.
+
+The earlier example would need to be rewritten like this: ::
+
+    data HList :: List Type -> Type where
+      HNil  :: HList []
+      HCons :: a -> HList t -> HList (a : t)
+
+    data Tuple :: Tuple2 Type Type -> Type where
+      Tuple :: a -> b -> Tuple2 a b
+
+    foo0 :: HList []
+    foo0 = HNil
+
+    foo1 :: HList [Int]
+    foo1 = HCons (3 :: Int) HNil
+
+    foo2 :: HList [Int, Bool]
+    foo2 = ...
+
+Constraint tuples may be mixed with conventional syntax: ::
+
+    f ::
+      Monad m =>
+      CTuple2 (Monad m) (Monad m) =>
+      (Monad m, CTuple2 (Monad m) (Monad m)) =>
+      m Int
+    f = pure 5
+
+The new type constructors are exported only from the library
+``ghc-experimental``, by the modules ``Data.Tuple.Experimental``,
+``Data.Sum.Experimental`` and ``Prelude.Experimental``.
+
+Please refer to `GHC Proposal #475 <https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0475-tuple-syntax.rst>`__ for the full specification of effects and interactions.
diff --git a/libraries/Cabal b/libraries/Cabal
index ec71ed5b44d7..fb3f4d47d261 160000
--- a/libraries/Cabal
+++ b/libraries/Cabal
@@ -1 +1 @@
-Subproject commit ec71ed5b44d7a35e3b421c0d3f1f9f52cc434992
+Subproject commit fb3f4d47d261f7401e4ea717ffab31af5d5470fb
diff --git a/libraries/base/src/Data/Foldable1.hs b/libraries/base/src/Data/Foldable1.hs
index 3ab8a2ac485b..a10b8f31f87c 100644
--- a/libraries/base/src/Data/Foldable1.hs
+++ b/libraries/base/src/Data/Foldable1.hs
@@ -34,7 +34,7 @@ import Data.List.NonEmpty (NonEmpty (..))
 import Data.Semigroup
        (Dual (..), First (..), Last (..), Max (..), Min (..), Product (..),
        Semigroup (..), Sum (..))
-import GHC.Tuple          (Solo (..))
+import GHC.Tuple (Solo (..))
 import Prelude
        (Maybe (..), Monad (..), Ord, Ordering (..), id, seq, ($!), ($), (.),
        (=<<), flip, const, error)
diff --git a/libraries/base/src/GHC/Base.hs b/libraries/base/src/GHC/Base.hs
index 586d6f9baf3b..2fd16860016f 100644
--- a/libraries/base/src/GHC/Base.hs
+++ b/libraries/base/src/GHC/Base.hs
@@ -139,9 +139,139 @@ module GHC.Base
     ) where
 
 import GHC.Internal.Base
-import GHC.Types
 import GHC.Prim hiding (dataToTagLarge#, dataToTagSmall#)
 import GHC.Prim.Ext
 import GHC.Prim.PtrEq
 import GHC.Internal.Err
 import GHC.Internal.Maybe
+import GHC.Types hiding (
+  Unit#,
+  Solo#,
+  Tuple0#,
+  Tuple1#,
+  Tuple2#,
+  Tuple3#,
+  Tuple4#,
+  Tuple5#,
+  Tuple6#,
+  Tuple7#,
+  Tuple8#,
+  Tuple9#,
+  Tuple10#,
+  Tuple11#,
+  Tuple12#,
+  Tuple13#,
+  Tuple14#,
+  Tuple15#,
+  Tuple16#,
+  Tuple17#,
+  Tuple18#,
+  Tuple19#,
+  Tuple20#,
+  Tuple21#,
+  Tuple22#,
+  Tuple23#,
+  Tuple24#,
+  Tuple25#,
+  Tuple26#,
+  Tuple27#,
+  Tuple28#,
+  Tuple29#,
+  Tuple30#,
+  Tuple31#,
+  Tuple32#,
+  Tuple33#,
+  Tuple34#,
+  Tuple35#,
+  Tuple36#,
+  Tuple37#,
+  Tuple38#,
+  Tuple39#,
+  Tuple40#,
+  Tuple41#,
+  Tuple42#,
+  Tuple43#,
+  Tuple44#,
+  Tuple45#,
+  Tuple46#,
+  Tuple47#,
+  Tuple48#,
+  Tuple49#,
+  Tuple50#,
+  Tuple51#,
+  Tuple52#,
+  Tuple53#,
+  Tuple54#,
+  Tuple55#,
+  Tuple56#,
+  Tuple57#,
+  Tuple58#,
+  Tuple59#,
+  Tuple60#,
+  Tuple61#,
+  Tuple62#,
+  Tuple63#,
+  Tuple64#,
+  Sum2#,
+  Sum3#,
+  Sum4#,
+  Sum5#,
+  Sum6#,
+  Sum7#,
+  Sum8#,
+  Sum9#,
+  Sum10#,
+  Sum11#,
+  Sum12#,
+  Sum13#,
+  Sum14#,
+  Sum15#,
+  Sum16#,
+  Sum17#,
+  Sum18#,
+  Sum19#,
+  Sum20#,
+  Sum21#,
+  Sum22#,
+  Sum23#,
+  Sum24#,
+  Sum25#,
+  Sum26#,
+  Sum27#,
+  Sum28#,
+  Sum29#,
+  Sum30#,
+  Sum31#,
+  Sum32#,
+  Sum33#,
+  Sum34#,
+  Sum35#,
+  Sum36#,
+  Sum37#,
+  Sum38#,
+  Sum39#,
+  Sum40#,
+  Sum41#,
+  Sum42#,
+  Sum43#,
+  Sum44#,
+  Sum45#,
+  Sum46#,
+  Sum47#,
+  Sum48#,
+  Sum49#,
+  Sum50#,
+  Sum51#,
+  Sum52#,
+  Sum53#,
+  Sum54#,
+  Sum55#,
+  Sum56#,
+  Sum57#,
+  Sum58#,
+  Sum59#,
+  Sum60#,
+  Sum61#,
+  Sum62#,
+  Sum63#,
+  )
diff --git a/libraries/base/src/GHC/Exts.hs b/libraries/base/src/GHC/Exts.hs
index 8c40a64c4456..28bf5539a201 100644
--- a/libraries/base/src/GHC/Exts.hs
+++ b/libraries/base/src/GHC/Exts.hs
@@ -111,15 +111,145 @@ module GHC.Exts
 
 import GHC.Internal.Exts
 import GHC.Internal.ArrayArray
-import GHC.Types
-  hiding ( IO   -- Exported from "GHC.IO"
-         , Type -- Exported from "Data.Kind"
-
-           -- GHC's internal representation of 'TyCon's, for 'Typeable'
-         , Module, TrName, TyCon, TypeLitSort, KindRep, KindBndr )
 import GHC.Prim hiding ( coerce, dataToTagSmall#, dataToTagLarge# )
   -- Hide dataToTag# ops because they are expected to break for
   -- GHC-internal reasons in the near future, and shouldn't
   -- be exposed from base (not even GHC.Exts)
 
 import GHC.Prim.Ext
+
+import GHC.Types hiding (
+  IO,   -- Exported from "GHC.IO"
+  Type, -- Exported from "Data.Kind"
+  -- GHC's internal representation of 'TyCon's, for 'Typeable'
+  Module, TrName, TyCon, TypeLitSort, KindRep, KindBndr,
+  Unit#,
+  Solo#,
+  Tuple0#,
+  Tuple1#,
+  Tuple2#,
+  Tuple3#,
+  Tuple4#,
+  Tuple5#,
+  Tuple6#,
+  Tuple7#,
+  Tuple8#,
+  Tuple9#,
+  Tuple10#,
+  Tuple11#,
+  Tuple12#,
+  Tuple13#,
+  Tuple14#,
+  Tuple15#,
+  Tuple16#,
+  Tuple17#,
+  Tuple18#,
+  Tuple19#,
+  Tuple20#,
+  Tuple21#,
+  Tuple22#,
+  Tuple23#,
+  Tuple24#,
+  Tuple25#,
+  Tuple26#,
+  Tuple27#,
+  Tuple28#,
+  Tuple29#,
+  Tuple30#,
+  Tuple31#,
+  Tuple32#,
+  Tuple33#,
+  Tuple34#,
+  Tuple35#,
+  Tuple36#,
+  Tuple37#,
+  Tuple38#,
+  Tuple39#,
+  Tuple40#,
+  Tuple41#,
+  Tuple42#,
+  Tuple43#,
+  Tuple44#,
+  Tuple45#,
+  Tuple46#,
+  Tuple47#,
+  Tuple48#,
+  Tuple49#,
+  Tuple50#,
+  Tuple51#,
+  Tuple52#,
+  Tuple53#,
+  Tuple54#,
+  Tuple55#,
+  Tuple56#,
+  Tuple57#,
+  Tuple58#,
+  Tuple59#,
+  Tuple60#,
+  Tuple61#,
+  Tuple62#,
+  Tuple63#,
+  Tuple64#,
+  Sum2#,
+  Sum3#,
+  Sum4#,
+  Sum5#,
+  Sum6#,
+  Sum7#,
+  Sum8#,
+  Sum9#,
+  Sum10#,
+  Sum11#,
+  Sum12#,
+  Sum13#,
+  Sum14#,
+  Sum15#,
+  Sum16#,
+  Sum17#,
+  Sum18#,
+  Sum19#,
+  Sum20#,
+  Sum21#,
+  Sum22#,
+  Sum23#,
+  Sum24#,
+  Sum25#,
+  Sum26#,
+  Sum27#,
+  Sum28#,
+  Sum29#,
+  Sum30#,
+  Sum31#,
+  Sum32#,
+  Sum33#,
+  Sum34#,
+  Sum35#,
+  Sum36#,
+  Sum37#,
+  Sum38#,
+  Sum39#,
+  Sum40#,
+  Sum41#,
+  Sum42#,
+  Sum43#,
+  Sum44#,
+  Sum45#,
+  Sum46#,
+  Sum47#,
+  Sum48#,
+  Sum49#,
+  Sum50#,
+  Sum51#,
+  Sum52#,
+  Sum53#,
+  Sum54#,
+  Sum55#,
+  Sum56#,
+  Sum57#,
+  Sum58#,
+  Sum59#,
+  Sum60#,
+  Sum61#,
+  Sum62#,
+  Sum63#,
+  )
diff --git a/libraries/ghc-boot-th/GHC/LanguageExtensions/Type.hs b/libraries/ghc-boot-th/GHC/LanguageExtensions/Type.hs
index 2b14665a789c..a74427c920e1 100644
--- a/libraries/ghc-boot-th/GHC/LanguageExtensions/Type.hs
+++ b/libraries/ghc-boot-th/GHC/LanguageExtensions/Type.hs
@@ -154,6 +154,7 @@ data Extension
    | OverloadedRecordUpdate
    | TypeAbstractions
    | ExtendedLiterals
+   | ListTuplePuns
    deriving (Eq, Enum, Show, Generic, Bounded)
 -- 'Ord' and 'Bounded' are provided for GHC API users (see discussions
 -- in https://gitlab.haskell.org/ghc/ghc/merge_requests/2707 and
diff --git a/libraries/ghc-boot/GHC/Utils/Encoding.hs b/libraries/ghc-boot/GHC/Utils/Encoding.hs
index 044ce06d55d4..38204e8bd215 100644
--- a/libraries/ghc-boot/GHC/Utils/Encoding.hs
+++ b/libraries/ghc-boot/GHC/Utils/Encoding.hs
@@ -81,7 +81,6 @@ The basic encoding scheme is this.
         (,,,,)          Z5T     5-tuple
         (# #)           Z1H     unboxed 1-tuple (note the space)
         (#,,,,#)        Z5H     unboxed 5-tuple
-                (NB: There is no Z1T nor Z0H.)
 -}
 
 type UserString = String        -- As the user typed it
@@ -223,20 +222,21 @@ Tuples are encoded as
 for 3-tuples or unboxed 3-tuples respectively.  No other encoding starts
         Z<digit>
 
-* "(# #)" is the tycon for an unboxed 1-tuple (not 0-tuple)
-  There are no unboxed 0-tuples.
+* "(##)" is the tycon for an unboxed 0-tuple
+* "(# #)" is the tycon for an unboxed 1-tuple
 
 * "()" is the tycon for a boxed 0-tuple.
-  There are no boxed 1-tuples.
 -}
 
 maybe_tuple :: UserString -> Maybe EncodedString
 
+maybe_tuple "(##)" = Just("Z0H")
 maybe_tuple "(# #)" = Just("Z1H")
 maybe_tuple ('(' : '#' : cs) = case count_commas (0::Int) cs of
                                  (n, '#' : ')' : _) -> Just ('Z' : shows (n+1) "H")
                                  _                  -> Nothing
 maybe_tuple "()" = Just("Z0T")
+maybe_tuple "MkSolo" = Just("Z1T")
 maybe_tuple ('(' : cs)       = case count_commas (0::Int) cs of
                                  (n, ')' : _) -> Just ('Z' : shows (n+1) "T")
                                  _            -> Nothing
diff --git a/libraries/ghc-experimental/ghc-experimental.cabal b/libraries/ghc-experimental/ghc-experimental.cabal
index 95c237c75ac6..2899c894cbdc 100644
--- a/libraries/ghc-experimental/ghc-experimental.cabal
+++ b/libraries/ghc-experimental/ghc-experimental.cabal
@@ -22,11 +22,17 @@ common warnings
 
 library
     import:           warnings
-    exposed-modules:  GHC.Profiling.Eras
+    exposed-modules:
+      GHC.Profiling.Eras
+      Data.Tuple.Experimental
+      Data.Sum.Experimental
+      Prelude.Experimental
     if arch(wasm32)
         exposed-modules:  GHC.Wasm.Prim
     other-extensions:
     build-depends:    base ^>=4.19,
-                      ghc-internal >= 0.1 && < 0.2
+                      ghc-internal >= 0.1 && < 0.2,
+                      ghc-prim >= 0.10 && < 0.11
     hs-source-dirs:   src
     default-language: Haskell2010
+    ghc-options: -this-unit-id ghc-experimental
diff --git a/libraries/ghc-experimental/src/Data/Sum/Experimental.hs b/libraries/ghc-experimental/src/Data/Sum/Experimental.hs
new file mode 100644
index 000000000000..3292cadcb651
--- /dev/null
+++ b/libraries/ghc-experimental/src/Data/Sum/Experimental.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE NoImplicitPrelude, MagicHash, UnboxedSums, NoListTuplePuns #-}
+
+{-
+Module      :  Data.Sum.Experimental
+Copyright   :  (c) The GHC Team
+License     :  see libraries/ghc-experimental/LICENSE
+
+Maintainer  :  ghc-devs@haskell.org
+Stability   :  experimental
+Portability :  non-portable (GHC extensions)
+
+This module exports the new user-syntax types for unboxed sums, which avoid the
+ambiguity of the old punned names.
+See the proposal for motivation and explanations:
+https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0475-tuple-syntax.rst
+-}
+module Data.Sum.Experimental (
+  Sum2#,
+  Sum3#,
+  Sum4#,
+  Sum5#,
+  Sum6#,
+  Sum7#,
+  Sum8#,
+  Sum9#,
+  Sum10#,
+  Sum11#,
+  Sum12#,
+  Sum13#,
+  Sum14#,
+  Sum15#,
+  Sum16#,
+  Sum17#,
+  Sum18#,
+  Sum19#,
+  Sum20#,
+  Sum21#,
+  Sum22#,
+  Sum23#,
+  Sum24#,
+  Sum25#,
+  Sum26#,
+  Sum27#,
+  Sum28#,
+  Sum29#,
+  Sum30#,
+  Sum31#,
+  Sum32#,
+  Sum33#,
+  Sum34#,
+  Sum35#,
+  Sum36#,
+  Sum37#,
+  Sum38#,
+  Sum39#,
+  Sum40#,
+  Sum41#,
+  Sum42#,
+  Sum43#,
+  Sum44#,
+  Sum45#,
+  Sum46#,
+  Sum47#,
+  Sum48#,
+  Sum49#,
+  Sum50#,
+  Sum51#,
+  Sum52#,
+  Sum53#,
+  Sum54#,
+  Sum55#,
+  Sum56#,
+  Sum57#,
+  Sum58#,
+  Sum59#,
+  Sum60#,
+  Sum61#,
+  Sum62#,
+  Sum63#,
+) where
+
+import GHC.Types
diff --git a/libraries/ghc-experimental/src/Data/Tuple/Experimental.hs b/libraries/ghc-experimental/src/Data/Tuple/Experimental.hs
new file mode 100644
index 000000000000..7eff83376b00
--- /dev/null
+++ b/libraries/ghc-experimental/src/Data/Tuple/Experimental.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE NoImplicitPrelude, MagicHash, UnboxedTuples, NoListTuplePuns #-}
+
+{-
+Module      :  Data.Tuple.Experimental
+Copyright   :  (c) The GHC Team
+License     :  see libraries/ghc-experimental/LICENSE
+
+Maintainer  :  ghc-devs@haskell.org
+Stability   :  experimental
+Portability :  non-portable (GHC extensions)
+
+This module exports the new user-syntax types for (boxed, unboxed, constraint)
+tuples, which avoid the ambiguity of the old punned names.
+See the proposal for motivation and explanations:
+https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0475-tuple-syntax.rst
+-}
+module Data.Tuple.Experimental (
+  module GHC.Tuple,
+  Solo (Solo, MkSolo),
+
+  -- * Unboxed tuples
+  Unit#,
+  Solo#,
+  Tuple0#,
+  Tuple1#,
+  Tuple2#,
+  Tuple3#,
+  Tuple4#,
+  Tuple5#,
+  Tuple6#,
+  Tuple7#,
+  Tuple8#,
+  Tuple9#,
+  Tuple10#,
+  Tuple11#,
+  Tuple12#,
+  Tuple13#,
+  Tuple14#,
+  Tuple15#,
+  Tuple16#,
+  Tuple17#,
+  Tuple18#,
+  Tuple19#,
+  Tuple20#,
+  Tuple21#,
+  Tuple22#,
+  Tuple23#,
+  Tuple24#,
+  Tuple25#,
+  Tuple26#,
+  Tuple27#,
+  Tuple28#,
+  Tuple29#,
+  Tuple30#,
+  Tuple31#,
+  Tuple32#,
+  Tuple33#,
+  Tuple34#,
+  Tuple35#,
+  Tuple36#,
+  Tuple37#,
+  Tuple38#,
+  Tuple39#,
+  Tuple40#,
+  Tuple41#,
+  Tuple42#,
+  Tuple43#,
+  Tuple44#,
+  Tuple45#,
+  Tuple46#,
+  Tuple47#,
+  Tuple48#,
+  Tuple49#,
+  Tuple50#,
+  Tuple51#,
+  Tuple52#,
+  Tuple53#,
+  Tuple54#,
+  Tuple55#,
+  Tuple56#,
+  Tuple57#,
+  Tuple58#,
+  Tuple59#,
+  Tuple60#,
+  Tuple61#,
+  Tuple62#,
+  Tuple63#,
+  Tuple64#,
+
+  -- * Constraint tuples
+  CUnit,
+  CSolo,
+  CTuple0,
+  CTuple1,
+  CTuple2,
+  CTuple3,
+  CTuple4,
+  CTuple5,
+  CTuple6,
+  CTuple7,
+  CTuple8,
+  CTuple9,
+  CTuple10,
+  CTuple11,
+  CTuple12,
+  CTuple13,
+  CTuple14,
+  CTuple15,
+  CTuple16,
+  CTuple17,
+  CTuple18,
+  CTuple19,
+  CTuple20,
+  CTuple21,
+  CTuple22,
+  CTuple23,
+  CTuple24,
+  CTuple25,
+  CTuple26,
+  CTuple27,
+  CTuple28,
+  CTuple29,
+  CTuple30,
+  CTuple31,
+  CTuple32,
+  CTuple33,
+  CTuple34,
+  CTuple35,
+  CTuple36,
+  CTuple37,
+  CTuple38,
+  CTuple39,
+  CTuple40,
+  CTuple41,
+  CTuple42,
+  CTuple43,
+  CTuple44,
+  CTuple45,
+  CTuple46,
+  CTuple47,
+  CTuple48,
+  CTuple49,
+  CTuple50,
+  CTuple51,
+  CTuple52,
+  CTuple53,
+  CTuple54,
+  CTuple55,
+  CTuple56,
+  CTuple57,
+  CTuple58,
+  CTuple59,
+  CTuple60,
+  CTuple61,
+  CTuple62,
+  CTuple63,
+  CTuple64,
+) where
+
+import GHC.Tuple
+import GHC.Types
+import GHC.Classes
diff --git a/libraries/ghc-experimental/src/Prelude/Experimental.hs b/libraries/ghc-experimental/src/Prelude/Experimental.hs
new file mode 100644
index 000000000000..79832eba3aaa
--- /dev/null
+++ b/libraries/ghc-experimental/src/Prelude/Experimental.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_HADDOCK not-home #-}
+
+{-
+Module      :  Prelude.Experimental
+Copyright   :  (c) The GHC Team
+License     :  see libraries/ghc-experimental/LICENSE
+
+Maintainer  :  libraries@haskell.org
+Stability   :  experimental
+Portability :  non-portable (GHC extensions)
+
+The Prelude for ghc-experimental, re-exporting definitions peculiar to GHC that
+are safe to use in ordinary code, but whose API may evolve rapidly over
+subsequent releases.
+-}
+module Prelude.Experimental (
+  List,
+
+  -- * Tuple/sum syntax families and tycons
+  module Data.Tuple.Experimental,
+  module Data.Sum.Experimental,
+) where
+
+import GHC.Types (List)
+import GHC.Classes
+
+import Data.Tuple.Experimental
+import Data.Sum.Experimental
diff --git a/libraries/ghc-internal/src/GHC/Internal/Base.hs b/libraries/ghc-internal/src/GHC/Internal/Base.hs
index ebbeac64dc70..24104a511bff 100644
--- a/libraries/ghc-internal/src/GHC/Internal/Base.hs
+++ b/libraries/ghc-internal/src/GHC/Internal/Base.hs
@@ -112,8 +112,206 @@ module GHC.Internal.Base
   )
         where
 
-import GHC.Types
-import GHC.Classes
+import GHC.Types hiding (
+  Unit#,
+  Solo#,
+  Tuple0#,
+  Tuple1#,
+  Tuple2#,
+  Tuple3#,
+  Tuple4#,
+  Tuple5#,
+  Tuple6#,
+  Tuple7#,
+  Tuple8#,
+  Tuple9#,
+  Tuple10#,
+  Tuple11#,
+  Tuple12#,
+  Tuple13#,
+  Tuple14#,
+  Tuple15#,
+  Tuple16#,
+  Tuple17#,
+  Tuple18#,
+  Tuple19#,
+  Tuple20#,
+  Tuple21#,
+  Tuple22#,
+  Tuple23#,
+  Tuple24#,
+  Tuple25#,
+  Tuple26#,
+  Tuple27#,
+  Tuple28#,
+  Tuple29#,
+  Tuple30#,
+  Tuple31#,
+  Tuple32#,
+  Tuple33#,
+  Tuple34#,
+  Tuple35#,
+  Tuple36#,
+  Tuple37#,
+  Tuple38#,
+  Tuple39#,
+  Tuple40#,
+  Tuple41#,
+  Tuple42#,
+  Tuple43#,
+  Tuple44#,
+  Tuple45#,
+  Tuple46#,
+  Tuple47#,
+  Tuple48#,
+  Tuple49#,
+  Tuple50#,
+  Tuple51#,
+  Tuple52#,
+  Tuple53#,
+  Tuple54#,
+  Tuple55#,
+  Tuple56#,
+  Tuple57#,
+  Tuple58#,
+  Tuple59#,
+  Tuple60#,
+  Tuple61#,
+  Tuple62#,
+  Tuple63#,
+  Tuple64#,
+  Sum2#,
+  Sum3#,
+  Sum4#,
+  Sum5#,
+  Sum6#,
+  Sum7#,
+  Sum8#,
+  Sum9#,
+  Sum10#,
+  Sum11#,
+  Sum12#,
+  Sum13#,
+  Sum14#,
+  Sum15#,
+  Sum16#,
+  Sum17#,
+  Sum18#,
+  Sum19#,
+  Sum20#,
+  Sum21#,
+  Sum22#,
+  Sum23#,
+  Sum24#,
+  Sum25#,
+  Sum26#,
+  Sum27#,
+  Sum28#,
+  Sum29#,
+  Sum30#,
+  Sum31#,
+  Sum32#,
+  Sum33#,
+  Sum34#,
+  Sum35#,
+  Sum36#,
+  Sum37#,
+  Sum38#,
+  Sum39#,
+  Sum40#,
+  Sum41#,
+  Sum42#,
+  Sum43#,
+  Sum44#,
+  Sum45#,
+  Sum46#,
+  Sum47#,
+  Sum48#,
+  Sum49#,
+  Sum50#,
+  Sum51#,
+  Sum52#,
+  Sum53#,
+  Sum54#,
+  Sum55#,
+  Sum56#,
+  Sum57#,
+  Sum58#,
+  Sum59#,
+  Sum60#,
+  Sum61#,
+  Sum62#,
+  Sum63#,
+  )
+import GHC.Classes hiding (
+  CUnit,
+  CSolo,
+  CTuple0,
+  CTuple1,
+  CTuple2,
+  CTuple3,
+  CTuple4,
+  CTuple5,
+  CTuple6,
+  CTuple7,
+  CTuple8,
+  CTuple9,
+  CTuple10,
+  CTuple11,
+  CTuple12,
+  CTuple13,
+  CTuple14,
+  CTuple15,
+  CTuple16,
+  CTuple17,
+  CTuple18,
+  CTuple19,
+  CTuple20,
+  CTuple21,
+  CTuple22,
+  CTuple23,
+  CTuple24,
+  CTuple25,
+  CTuple26,
+  CTuple27,
+  CTuple28,
+  CTuple29,
+  CTuple30,
+  CTuple31,
+  CTuple32,
+  CTuple33,
+  CTuple34,
+  CTuple35,
+  CTuple36,
+  CTuple37,
+  CTuple38,
+  CTuple39,
+  CTuple40,
+  CTuple41,
+  CTuple42,
+  CTuple43,
+  CTuple44,
+  CTuple45,
+  CTuple46,
+  CTuple47,
+  CTuple48,
+  CTuple49,
+  CTuple50,
+  CTuple51,
+  CTuple52,
+  CTuple53,
+  CTuple54,
+  CTuple55,
+  CTuple56,
+  CTuple57,
+  CTuple58,
+  CTuple59,
+  CTuple60,
+  CTuple61,
+  CTuple62,
+  CTuple63,
+  CTuple64,
+  )
 import GHC.CString
 import GHC.Magic
 import GHC.Magic.Dict
diff --git a/libraries/ghc-internal/src/GHC/Internal/Data/Tuple.hs b/libraries/ghc-internal/src/GHC/Internal/Data/Tuple.hs
index 85752bae7bc8..72f6baf004c1 100644
--- a/libraries/ghc-internal/src/GHC/Internal/Data/Tuple.hs
+++ b/libraries/ghc-internal/src/GHC/Internal/Data/Tuple.hs
@@ -16,7 +16,7 @@
 -----------------------------------------------------------------------------
 
 module GHC.Internal.Data.Tuple
-  ( Solo (..)
+  ( Solo (Solo, MkSolo)
   , getSolo
   , fst
   , snd
diff --git a/libraries/ghc-internal/src/GHC/Internal/Data/Typeable/Internal.hs b/libraries/ghc-internal/src/GHC/Internal/Data/Typeable/Internal.hs
index b9fd71eaa258..17d0a6cdceb0 100644
--- a/libraries/ghc-internal/src/GHC/Internal/Data/Typeable/Internal.hs
+++ b/libraries/ghc-internal/src/GHC/Internal/Data/Typeable/Internal.hs
@@ -91,7 +91,7 @@ import GHC.Internal.Base
 import qualified GHC.Internal.Arr as A
 import GHC.Internal.Data.Either (Either (..))
 import GHC.Internal.Data.Type.Equality
-import GHC.Internal.List ( splitAt, foldl', elem, replicate )
+import GHC.Internal.List ( splitAt, foldl', elem, replicate, length )
 import GHC.Internal.Unicode (isDigit)
 import GHC.Internal.Num ((-), (+), (*))
 import GHC.Internal.Word
@@ -882,13 +882,30 @@ showTypeable _ rep
 
     -- Take care only to render saturated tuple tycon applications
     -- with tuple notation (#14341).
-  | Just _ <- isTupleTyCon tc,
-    Just _ <- TrType `eqTypeRep` typeRepKind rep =
-    showChar '(' . showArgs (showChar ',') tys . showChar ')'
-    -- Print (,,,) instead of Tuple4
-  | Just n <- isTupleTyCon tc, [] <- tys =
-      showChar '(' . showString (replicate (n-1) ',') . showChar ')'
-  where (tc, tys) = splitApps rep
+  | Just (boxed, n) <- isTupleTyCon tc,
+    Just sat <- plainOrSaturated boxed n =
+      tuple n boxed sat
+  where
+    plainOrSaturated True _ | Just _ <- TrType `eqTypeRep` typeRepKind rep = Just True
+    plainOrSaturated False n | n == length tys = Just True
+    plainOrSaturated _ _ | [] <- tys = Just False
+    plainOrSaturated _ _ | otherwise = Nothing
+
+    (tc, tys) = splitApps rep
+
+    tuple n boxed sat =
+      let
+        (lpar, rpar) = case boxed of
+          True -> ("(", ")")
+          False -> ("(#", "#)")
+        commas = showString (replicate (n-1) ',')
+        args = showArgs (showString ",") tys
+        args' = case (boxed, sat) of
+          (True, True) -> args
+          (False, True) -> showChar ' ' . args . showChar ' '
+          (_, False) -> commas
+      in showString lpar . args' . showString rpar
+
 showTypeable _ (TrTyCon {trTyCon = tycon, trKindVars = []})
   = showTyCon tycon
 showTypeable p (TrTyCon {trTyCon = tycon, trKindVars = args})
@@ -976,22 +993,30 @@ funTyCon = typeRepTyCon (typeRep @(->))
 isListTyCon :: TyCon -> Bool
 isListTyCon tc = tc == typeRepTyCon (typeRep :: TypeRep [])
 
-isTupleTyCon :: TyCon -> Maybe Int
+isTupleTyCon :: TyCon -> Maybe (Bool, Int)
 isTupleTyCon tc
   | tyConPackage tc == "ghc-prim"
-  , tyConModule  tc == "GHC.Tuple.Prim"
+  , tyConModule  tc == "GHC.Tuple" || tyConModule tc == "GHC.Types"
   = case tyConName tc of
-      "Unit" -> Just 0
+      "Unit" -> Just (True, 0)
+      "Unit#" -> Just (False, 0)
       'T' : 'u' : 'p' : 'l' : 'e' : arity -> readTwoDigits arity
       _ -> Nothing
   | otherwise                   = Nothing
 
 -- | See Note [Small Ints parsing] in GHC.Builtin.Types
-readTwoDigits :: String -> Maybe Int
+readTwoDigits :: String -> Maybe (Bool, Int)
 readTwoDigits s = case s of
-  [c] | isDigit c -> Just (digit_to_int c)
-  [c1, c2] | isDigit c1, isDigit c2
-    -> Just (digit_to_int c1 * 10 + digit_to_int c2)
+  c1 : t1 | isDigit c1 -> case t1 of
+    [] -> Just (True, digit_to_int c1)
+    ['#'] -> Just (False, digit_to_int c1)
+    c2 : t2 | isDigit c2 ->
+      let ar = digit_to_int c1 * 10 + digit_to_int c2
+      in case t2 of
+        [] -> Just (True, ar)
+        ['#'] -> Just (False, ar)
+        _ -> Nothing
+    _ -> Nothing
   _ -> Nothing
   where
     digit_to_int :: Char -> Int
diff --git a/libraries/ghc-internal/src/GHC/Internal/Exts.hs b/libraries/ghc-internal/src/GHC/Internal/Exts.hs
index ddfb32e47ec8..40214b206f2c 100644
--- a/libraries/ghc-internal/src/GHC/Internal/Exts.hs
+++ b/libraries/ghc-internal/src/GHC/Internal/Exts.hs
@@ -143,7 +143,137 @@ import GHC.Types
          , Type -- Exported from "Data.Kind"
 
            -- GHC's internal representation of 'TyCon's, for 'Typeable'
-         , Module, TrName, TyCon, TypeLitSort, KindRep, KindBndr )
+         , Module, TrName, TyCon, TypeLitSort, KindRep, KindBndr,
+         Unit#,
+         Solo#,
+         Tuple0#,
+         Tuple1#,
+         Tuple2#,
+         Tuple3#,
+         Tuple4#,
+         Tuple5#,
+         Tuple6#,
+         Tuple7#,
+         Tuple8#,
+         Tuple9#,
+         Tuple10#,
+         Tuple11#,
+         Tuple12#,
+         Tuple13#,
+         Tuple14#,
+         Tuple15#,
+         Tuple16#,
+         Tuple17#,
+         Tuple18#,
+         Tuple19#,
+         Tuple20#,
+         Tuple21#,
+         Tuple22#,
+         Tuple23#,
+         Tuple24#,
+         Tuple25#,
+         Tuple26#,
+         Tuple27#,
+         Tuple28#,
+         Tuple29#,
+         Tuple30#,
+         Tuple31#,
+         Tuple32#,
+         Tuple33#,
+         Tuple34#,
+         Tuple35#,
+         Tuple36#,
+         Tuple37#,
+         Tuple38#,
+         Tuple39#,
+         Tuple40#,
+         Tuple41#,
+         Tuple42#,
+         Tuple43#,
+         Tuple44#,
+         Tuple45#,
+         Tuple46#,
+         Tuple47#,
+         Tuple48#,
+         Tuple49#,
+         Tuple50#,
+         Tuple51#,
+         Tuple52#,
+         Tuple53#,
+         Tuple54#,
+         Tuple55#,
+         Tuple56#,
+         Tuple57#,
+         Tuple58#,
+         Tuple59#,
+         Tuple60#,
+         Tuple61#,
+         Tuple62#,
+         Tuple63#,
+         Tuple64#,
+         Sum2#,
+         Sum3#,
+         Sum4#,
+         Sum5#,
+         Sum6#,
+         Sum7#,
+         Sum8#,
+         Sum9#,
+         Sum10#,
+         Sum11#,
+         Sum12#,
+         Sum13#,
+         Sum14#,
+         Sum15#,
+         Sum16#,
+         Sum17#,
+         Sum18#,
+         Sum19#,
+         Sum20#,
+         Sum21#,
+         Sum22#,
+         Sum23#,
+         Sum24#,
+         Sum25#,
+         Sum26#,
+         Sum27#,
+         Sum28#,
+         Sum29#,
+         Sum30#,
+         Sum31#,
+         Sum32#,
+         Sum33#,
+         Sum34#,
+         Sum35#,
+         Sum36#,
+         Sum37#,
+         Sum38#,
+         Sum39#,
+         Sum40#,
+         Sum41#,
+         Sum42#,
+         Sum43#,
+         Sum44#,
+         Sum45#,
+         Sum46#,
+         Sum47#,
+         Sum48#,
+         Sum49#,
+         Sum50#,
+         Sum51#,
+         Sum52#,
+         Sum53#,
+         Sum54#,
+         Sum55#,
+         Sum56#,
+         Sum57#,
+         Sum58#,
+         Sum59#,
+         Sum60#,
+         Sum61#,
+         Sum62#,
+         Sum63#,
+  )
 import qualified GHC.Prim.Ext
 import GHC.Internal.ArrayArray
 import GHC.Internal.Base hiding ( coerce )
diff --git a/libraries/ghc-prim/GHC/Classes.hs b/libraries/ghc-prim/GHC/Classes.hs
index 5be0b3617412..e08297eaf7b7 100644
--- a/libraries/ghc-prim/GHC/Classes.hs
+++ b/libraries/ghc-prim/GHC/Classes.hs
@@ -15,6 +15,10 @@
 -- -Wno-unused-top-binds is there (I hope) to stop Haddock complaining
 -- about the constraint tuples being defined but not used
 
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE UndecidableSuperClasses #-}
+{-# LANGUAGE ConstraintKinds #-}
+
 {-# OPTIONS_HADDOCK not-home #-}
 -----------------------------------------------------------------------------
 -- |
@@ -34,7 +38,7 @@
 -----------------------------------------------------------------------------
 
 module GHC.Classes(
-    -- * Implicit paramaters
+    -- * Implicit parameters
     IP(..),
 
     -- * Equality and ordering
@@ -60,7 +64,76 @@ module GHC.Classes(
     -- * Integer arithmetic
     divInt#, divInt8#, divInt16#, divInt32#,
     modInt#, modInt8#, modInt16#, modInt32#,
-    divModInt#, divModInt8#, divModInt16#, divModInt32#
+    divModInt#, divModInt8#, divModInt16#, divModInt32#,
+
+    -- * Constraint tuples
+    CUnit,
+    CSolo,
+    CTuple0,
+    CTuple1,
+    CTuple2,
+    CTuple3,
+    CTuple4,
+    CTuple5,
+    CTuple6,
+    CTuple7,
+    CTuple8,
+    CTuple9,
+    CTuple10,
+    CTuple11,
+    CTuple12,
+    CTuple13,
+    CTuple14,
+    CTuple15,
+    CTuple16,
+    CTuple17,
+    CTuple18,
+    CTuple19,
+    CTuple20,
+    CTuple21,
+    CTuple22,
+    CTuple23,
+    CTuple24,
+    CTuple25,
+    CTuple26,
+    CTuple27,
+    CTuple28,
+    CTuple29,
+    CTuple30,
+    CTuple31,
+    CTuple32,
+    CTuple33,
+    CTuple34,
+    CTuple35,
+    CTuple36,
+    CTuple37,
+    CTuple38,
+    CTuple39,
+    CTuple40,
+    CTuple41,
+    CTuple42,
+    CTuple43,
+    CTuple44,
+    CTuple45,
+    CTuple46,
+    CTuple47,
+    CTuple48,
+    CTuple49,
+    CTuple50,
+    CTuple51,
+    CTuple52,
+    CTuple53,
+    CTuple54,
+    CTuple55,
+    CTuple56,
+    CTuple57,
+    CTuple58,
+    CTuple59,
+    CTuple60,
+    CTuple61,
+    CTuple62,
+    CTuple63,
+    CTuple64,
  ) where
 
 -- GHC.Magic is used in some derived instances
@@ -877,339 +950,633 @@ x# `divModInt32#` y# = case (x# `plusInt32#` bias#) `quotRemInt32#` y# of
 *                                                              *
 ************************************************************* -}
 
-class ()
-class (c1, c2)     => (c1, c2)
-class (c1, c2, c3) => (c1, c2, c3)
-class (c1, c2, c3, c4) => (c1, c2, c3, c4)
-class (c1, c2, c3, c4, c5) => (c1, c2, c3, c4, c5)
-class (c1, c2, c3, c4, c5, c6) => (c1, c2, c3, c4, c5, c6)
-class (c1, c2, c3, c4, c5, c6, c7) => (c1, c2, c3, c4, c5, c6, c7)
-class (c1, c2, c3, c4, c5, c6, c7, c8) => (c1, c2, c3, c4, c5, c6, c7, c8)
+type CTuple0 = (() :: Constraint)
+type CTuple1 = CSolo
+
+class CUnit
+class a => CSolo a
+class (c1, c2) => CTuple2 c1 c2
+class (c1, c2, c3) => CTuple3 c1 c2 c3
+class (c1, c2, c3, c4) => CTuple4 c1 c2 c3 c4
+class (c1, c2, c3, c4, c5) => CTuple5 c1 c2 c3 c4 c5
+class (c1, c2, c3, c4, c5, c6) => CTuple6 c1 c2 c3 c4 c5 c6
+class (c1, c2, c3, c4, c5, c6, c7) => CTuple7 c1 c2 c3 c4 c5 c6 c7
+class (c1, c2, c3, c4, c5, c6, c7, c8) => CTuple8 c1 c2 c3 c4 c5 c6 c7 c8
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9)
+   => CTuple9 c1 c2 c3 c4 c5 c6 c7 c8 c9
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)
+   => CTuple10 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)
+   => CTuple11 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)
+   => CTuple12 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
+   => CTuple13 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14)
+   => CTuple14 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15)
+   => CTuple15 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16)
+   => CTuple16 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17)
+   => CTuple17 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17,c18)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18)
+   => CTuple18 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19)
+   => CTuple19 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20)
+   => CTuple20 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21)
+   => CTuple21 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22)
+   => CTuple22 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23)
+   => CTuple23 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24)
+   => CTuple24 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25)
+   => CTuple25 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26)
+   => CTuple26 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27)
+   => CTuple27 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28)
+   => CTuple28 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29)
+   => CTuple29 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30)
+   => CTuple30 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31)
+   => CTuple31 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32)
+   => CTuple32 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33)
+   => CTuple33 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34)
+   => CTuple34 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35)
+   => CTuple35 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35, c36)
+   => CTuple36 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35, c36, c37)
+   => CTuple37 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35, c36, c37, c38)
+   => CTuple38 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35, c36, c37, c38, c39)
+   => CTuple39 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40)
+   => CTuple40 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41)
+   => CTuple41 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42)
+   => CTuple42 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43)
+   => CTuple43 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44)
+   => CTuple44 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
        c45)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
-       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
-       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45)
+   => CTuple45 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
        c45, c46)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+   => CTuple46 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46
+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46)
+       c45, c46, c47)
+   => CTuple47 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48)
+   => CTuple48 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48
+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47)
+       c45, c46, c47, c48, c49)
+   => CTuple49 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50)
+   => CTuple50 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50
+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48)
+       c45, c46, c47, c48, c49, c50, c51)
+   => CTuple51 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52)
+   => CTuple52 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52
+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49)
+       c45, c46, c47, c48, c49, c50, c51, c52, c53)
+   => CTuple53 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54)
+   => CTuple54 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50)
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55)
+   => CTuple55 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56)
+   => CTuple56 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56
+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51)
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57)
+   => CTuple57 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58)
+   => CTuple58 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58
+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52)
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
+       c59)
+   => CTuple59 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
+       c59, c60)
+   => CTuple60 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59 c60
+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53)
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
+       c59, c60, c61)
+   => CTuple61 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59 c60 c61
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
+       c59, c60, c61, c62)
+   => CTuple62 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59 c60 c61 c62
+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54)
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
+       c59, c60, c61, c62, c63)
+   => CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59 c60 c61 c62 c63
 class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
+       c59, c60, c61, c62, c63, c64)
+   => CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59 c60 c61 c62 c63 c64
+
+instance CUnit
+instance a => CSolo a
+instance (c1, c2) => CTuple2 c1 c2
+instance (c1, c2, c3) => CTuple3 c1 c2 c3
+instance (c1, c2, c3, c4) => CTuple4 c1 c2 c3 c4
+instance (c1, c2, c3, c4, c5) => CTuple5 c1 c2 c3 c4 c5
+instance (c1, c2, c3, c4, c5, c6) => CTuple6 c1 c2 c3 c4 c5 c6
+instance (c1, c2, c3, c4, c5, c6, c7) => CTuple7 c1 c2 c3 c4 c5 c6 c7
+instance (c1, c2, c3, c4, c5, c6, c7, c8) => CTuple8 c1 c2 c3 c4 c5 c6 c7 c8
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9)
+   => CTuple9 c1 c2 c3 c4 c5 c6 c7 c8 c9
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)
+   => CTuple10 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)
+   => CTuple11 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)
+   => CTuple12 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
+   => CTuple13 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14)
+   => CTuple14 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15)
+   => CTuple15 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16)
+   => CTuple16 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17)
+   => CTuple17 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17,c18)
+   => CTuple18 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19)
+   => CTuple19 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20)
+   => CTuple20 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21)
+   => CTuple21 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22)
+   => CTuple22 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23)
+   => CTuple23 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24)
+   => CTuple24 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25)
+   => CTuple25 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26)
+   => CTuple26 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27)
+   => CTuple27 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28)
+   => CTuple28 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29)
+   => CTuple29 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30)
+   => CTuple30 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31)
+   => CTuple31 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32)
+   => CTuple32 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33)
+   => CTuple33 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34)
+   => CTuple34 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35)
+   => CTuple35 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35, c36)
+   => CTuple36 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35, c36, c37)
+   => CTuple37 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35, c36, c37, c38)
+   => CTuple38 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35, c36, c37, c38, c39)
+   => CTuple39 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40)
+   => CTuple40 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41)
+   => CTuple41 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42)
+   => CTuple42 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43)
+   => CTuple43 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44)
+   => CTuple44 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55)
-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45)
+   => CTuple45 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46)
+   => CTuple46 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56)
-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47)
+   => CTuple47 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48)
+   => CTuple48 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57)
-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49)
+   => CTuple49 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50)
+   => CTuple50 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58)
-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51)
+   => CTuple51 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52)
+   => CTuple52 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59)
-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53)
+   => CTuple53 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59, c60)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54)
+   => CTuple54 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59, c60)
-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55)
+   => CTuple55 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59, c60, c61)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56)
+   => CTuple56 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
-       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59, c60, c61)
-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57)
+   => CTuple57 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
+       c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
+       c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58)
+   => CTuple58 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
        c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59, c60, c61, c62)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c59)
+   => CTuple59 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
        c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59, c60, c61, c62)
-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c59, c60)
+   => CTuple60 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59 c60
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
        c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59, c60, c61, c62, c63)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c59, c60, c61)
+   => CTuple61 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59 c60 c61
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
        c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59, c60, c61, c62, c63)
-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c59, c60, c61, c62)
+   => CTuple62 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59 c60 c61 c62
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
        c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
-       c59, c60, c61, c62, c63, c64)
-   => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
+       c59, c60, c61, c62, c63)
+   => CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59 c60 c61 c62 c63
+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,
        c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,
        c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,
        c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,
        c59, c60, c61, c62, c63, c64)
+   => CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
+       c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36
+       c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54
+       c55 c56 c57 c58 c59 c60 c61 c62 c63 c64
diff --git a/libraries/ghc-prim/GHC/Tuple.hs b/libraries/ghc-prim/GHC/Tuple.hs
index 7c8cf95eee76..22dbb69214e3 100644
--- a/libraries/ghc-prim/GHC/Tuple.hs
+++ b/libraries/ghc-prim/GHC/Tuple.hs
@@ -17,18 +17,585 @@
 -----------------------------------------------------------------------------
 
 module GHC.Tuple (
-  module GHC.Tuple.Prim,
-  Solo (Solo, MkSolo),
+  Tuple0, Tuple1,
+  Unit(..),
+  Solo (Solo, MkSolo), getSolo,
+  Tuple2(..),  Tuple3(..),  Tuple4(..),  Tuple5(..),  Tuple6(..),  Tuple7(..),  Tuple8(..),  Tuple9(..),
+  Tuple10(..), Tuple11(..), Tuple12(..), Tuple13(..), Tuple14(..), Tuple15(..), Tuple16(..), Tuple17(..), Tuple18(..), Tuple19(..),
+  Tuple20(..), Tuple21(..), Tuple22(..), Tuple23(..), Tuple24(..), Tuple25(..), Tuple26(..), Tuple27(..), Tuple28(..), Tuple29(..),
+  Tuple30(..), Tuple31(..), Tuple32(..), Tuple33(..), Tuple34(..), Tuple35(..), Tuple36(..), Tuple37(..), Tuple38(..), Tuple39(..),
+  Tuple40(..), Tuple41(..), Tuple42(..), Tuple43(..), Tuple44(..), Tuple45(..), Tuple46(..), Tuple47(..), Tuple48(..), Tuple49(..),
+  Tuple50(..), Tuple51(..), Tuple52(..), Tuple53(..), Tuple54(..), Tuple55(..), Tuple56(..), Tuple57(..), Tuple58(..), Tuple59(..),
+  Tuple60(..), Tuple61(..), Tuple62(..), Tuple63(..), Tuple64(..),
 ) where
 
 import GHC.CString ()  -- Make sure we do it first, so that the
                        -- implicit Typeable stuff can see GHC.Types.TyCon
                        -- and unpackCString# etc
-import GHC.Tuple.Prim
 
 default () -- Double and Integer aren't available yet
 
+-- | The unit datatype @Unit@ has one non-undefined member, the nullary
+-- constructor @()@.
+--
+-- @since 0.11.0
+--
+data Unit = ()
+
+-- The desugarer uses 1-tuples,
+-- but "Unit" is already used up for 0-tuples
+-- See Note [One-tuples] in GHC.Builtin.Types
+
+-- | @Solo@ is the canonical lifted 1-tuple, just like 'Tuple2' is the canonical
+-- lifted 2-tuple (pair) and 'Tuple3' is the canonical lifted 3-tuple (triple).
+--
+-- The most important feature of @Solo@ is that it is possible to force its
+-- "outside" (usually by pattern matching) without forcing its "inside",
+-- because it is defined as a datatype rather than a newtype. One situation
+-- where this can be useful is when writing a function to extract a value from
+-- a data structure. Suppose you write an implementation of arrays and offer
+-- only this function to index into them:
+--
+-- @
+-- index :: Array a -> Int -> a
+-- @
+--
+-- Now imagine that someone wants to extract a value from an array and store it
+-- in a lazy-valued finite map/dictionary:
+--
+-- @
+-- insert "hello" (arr `index` 12) m
+-- @
+--
+-- This can actually lead to a space leak. The value is not actually extracted
+-- from the array until that value (now buried in a map) is forced. That means
+-- the entire array may be kept live by just that value!  Often, the solution
+-- is to use a strict map, or to force the value before storing it, but for
+-- some purposes that's undesirable.
+--
+-- One common solution is to include an indexing function that can produce its
+-- result in an arbitrary @Applicative@ context:
+--
+-- @
+-- indexA :: Applicative f => Array a -> Int -> f a
+-- @
+--
+-- When using @indexA@ in a /pure/ context, @Solo@ serves as a handy
+-- @Applicative@ functor to hold the result. You could write a non-leaky
+-- version of the above example thus:
+--
+-- @
+-- case arr `indexA` 12 of
+--   Solo a -> insert "hello" a m
+-- @
+--
+-- While such simple extraction functions are the most common uses for
+-- unary tuples, they can also be useful for fine-grained control of
+-- strict-spined data structure traversals, and for unifying the
+-- implementations of lazy and strict mapping functions.
+data Solo a = MkSolo a
+
+-- This will have to wait for https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0065-type-infix.rst
+-- Otherwise the deprecation would apply to the data type as well.
 {-# DEPRECATED data Solo "The Solo constructor has been renamed to MkSolo to avoid punning." #-}
 pattern Solo :: a -> Solo a
 pattern Solo x = MkSolo x
 {-# COMPLETE Solo #-}
+
+-- | Extract the value from a 'Solo'. Very often, values should be extracted
+-- directly using pattern matching, to control just what gets evaluated when.
+-- @getSolo@ is for convenience in situations where that is not the case:
+--
+-- When the result is passed to a /strict/ function, it makes no difference
+-- whether the pattern matching is done on the \"outside\" or on the
+-- \"inside\":
+--
+-- @
+-- Data.Set.insert (getSolo sol) set === case sol of Solo v -> Data.Set.insert v set
+-- @
+--
+-- A traversal may be performed in 'Solo' in order to control evaluation
+-- internally, while using @getSolo@ to extract the final result. A strict
+-- mapping function, for example, could be defined
+--
+-- @
+-- map' :: Traversable t => (a -> b) -> t a -> t b
+-- map' f = getSolo . traverse ((Solo $!) . f)
+-- @
+getSolo :: Solo a -> a
+-- getSolo is a standalone function, rather than a record field of Solo,
+-- because Solo is a wired-in TyCon, and a wired-in TyCon that  has
+-- record fields is a bit more inconvenient than if it doesn't.
+-- (No other wired-in TyCon has record fields.)  So it seems easier
+-- to have getSolo as its own separate function (#20562)
+getSolo (MkSolo a) = a
+
+-- | A tuple of zero elements, a synonym for 'Unit'.
+--
+-- @since 0.11.0
+--
+type Tuple0 = Unit
+
+-- | A tuple of one element, a synonym for 'Solo'.
+--
+-- @since 0.11.0
+--
+type Tuple1 = Solo
+
+-- | A tuple of two elements.
+--
+-- @since 0.11.0
+--
+data Tuple2 a b = (a,b)
+
+-- | A tuple of three elements.
+--
+-- @since 0.11.0
+--
+data Tuple3 a b c = (a,b,c)
+
+-- | A tuple of four elements.
+--
+-- @since 0.11.0
+--
+data Tuple4 a b c d = (a,b,c,d)
+
+-- | A tuple of five elements.
+--
+-- @since 0.11.0
+--
+data Tuple5 a b c d e = (a,b,c,d,e)
+
+-- | A tuple of six elements.
+--
+-- @since 0.11.0
+--
+data Tuple6 a b c d e f = (a,b,c,d,e,f)
+
+-- | A tuple of seven elements.
+--
+-- @since 0.11.0
+--
+data Tuple7 a b c d e f g = (a,b,c,d,e,f,g)
+
+-- | A tuple of eight elements.
+--
+-- @since 0.11.0
+--
+data Tuple8 a b c d e f g h = (a,b,c,d,e,f,g,h)
+
+-- | A tuple of nine elements.
+--
+-- @since 0.11.0
+--
+data Tuple9 a b c d e f g h i = (a,b,c,d,e,f,g,h,i)
+
+-- | A tuple of ten elements.
+--
+-- @since 0.11.0
+--
+data Tuple10 a b c d e f g h i j = (a,b,c,d,e,f,g,h,i,j)
+
+-- | A tuple of eleven elements.
+--
+-- @since 0.11.0
+--
+data Tuple11 a b c d e f g h i j k = (a,b,c,d,e,f,g,h,i,j,k)
+
+-- | A tuple of twelve elements.
+--
+-- @since 0.11.0
+--
+data Tuple12 a b c d e f g h i j k l = (a,b,c,d,e,f,g,h,i,j,k,l)
+
+-- | A tuple of 13 elements.
+--
+-- @since 0.11.0
+--
+data Tuple13 a b c d e f g h i j k l m = (a,b,c,d,e,f,g,h,i,j,k,l,m)
+
+-- | A tuple of 14 elements.
+--
+-- @since 0.11.0
+--
+data Tuple14 a b c d e f g h i j k l m n = (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
+
+-- | A tuple of 15 elements.
+--
+-- @since 0.11.0
+--
+data Tuple15 a b c d e f g h i j k l m n o = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
+
+-- | A tuple of 16 elements.
+--
+-- @since 0.11.0
+--
+data Tuple16 a b c d e f g h i j k l m n o p = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
+
+-- | A tuple of 17 elements.
+--
+-- @since 0.11.0
+--
+data Tuple17 a b c d e f g h i j k l m n o p q = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
+
+-- | A tuple of 18 elements.
+--
+-- @since 0.11.0
+--
+data Tuple18 a b c d e f g h i j k l m n o p q r = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
+
+-- | A tuple of 19 elements.
+--
+-- @since 0.11.0
+--
+data Tuple19 a b c d e f g h i j k l m n o p q r s = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s)
+
+-- | A tuple of 20 elements.
+--
+-- @since 0.11.0
+--
+data Tuple20 a b c d e f g h i j k l m n o p q r s t = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t)
+
+-- | A tuple of 21 elements.
+
+--
+-- @since 0.11.0
+--
+data Tuple21 a b c d e f g h i j k l m n o p q r s t u = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u)
+
+-- | A tuple of 22 elements.
+--
+-- @since 0.11.0
+--
+data Tuple22 a b c d e f g h i j k l m n o p q r s t u v = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v)
+
+-- | A tuple of 23 elements.
+--
+-- @since 0.11.0
+--
+data Tuple23 a b c d e f g h i j k l m n o p q r s t u v w = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w)
+
+-- | A tuple of 24 elements.
+--
+-- @since 0.11.0
+--
+data Tuple24 a b c d e f g h i j k l m n o p q r s t u v w x = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x)
+
+-- | A tuple of 25 elements.
+--
+-- @since 0.11.0
+--
+data Tuple25 a b c d e f g h i j k l m n o p q r s t u v w x y = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)
+
+-- | A tuple of 26 elements.
+--
+-- @since 0.11.0
+--
+data Tuple26 a b c d e f g h i j k l m n o p q r s t u v w x y z = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z)
+
+-- | A tuple of 27 elements.
+--
+-- @since 0.11.0
+--
+data Tuple27 a b c d e f g h i j k l m n o p q r s t u v w x y z a1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1)
+
+-- | A tuple of 28 elements.
+--
+-- @since 0.11.0
+--
+data Tuple28 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1)
+
+-- | A tuple of 29 elements.
+--
+-- @since 0.11.0
+--
+data Tuple29 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1)
+
+-- | A tuple of 30 elements.
+--
+-- @since 0.11.0
+--
+data Tuple30 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1)
+
+-- | A tuple of 31 elements.
+--
+-- @since 0.11.0
+--
+data Tuple31 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1)
+
+-- | A tuple of 32 elements.
+--
+-- @since 0.11.0
+--
+data Tuple32 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1)
+
+-- | A tuple of 33 elements.
+--
+-- @since 0.11.0
+--
+data Tuple33 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1)
+
+-- | A tuple of 34 elements.
+--
+-- @since 0.11.0
+--
+data Tuple34 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1)
+
+-- | A tuple of 35 elements.
+--
+-- @since 0.11.0
+--
+data Tuple35 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1)
+
+-- | A tuple of 36 elements.
+--
+-- @since 0.11.0
+--
+data Tuple36 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1)
+
+-- | A tuple of 37 elements.
+--
+-- @since 0.11.0
+--
+data Tuple37 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1)
+
+-- | A tuple of 38 elements.
+--
+-- @since 0.11.0
+--
+data Tuple38 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1)
+
+-- | A tuple of 39 elements.
+--
+-- @since 0.11.0
+--
+data Tuple39 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1)
+
+-- | A tuple of 40 elements.
+--
+-- @since 0.11.0
+--
+data Tuple40 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1)
+
+-- | A tuple of 41 elements.
+--
+-- @since 0.11.0
+--
+data Tuple41 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1)
+
+-- | A tuple of 42 elements.
+--
+-- @since 0.11.0
+--
+data Tuple42 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1)
+
+-- | A tuple of 43 elements.
+--
+-- @since 0.11.0
+--
+data Tuple43 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1)
+
+-- | A tuple of 44 elements.
+--
+-- @since 0.11.0
+--
+data Tuple44 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1)
+
+-- | A tuple of 45 elements.
+--
+-- @since 0.11.0
+--
+data Tuple45 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1)
+
+-- | A tuple of 46 elements.
+--
+-- @since 0.11.0
+--
+data Tuple46 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1)
+
+-- | A tuple of 47 elements.
+--
+-- @since 0.11.0
+--
+data Tuple47 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1)
+
+-- | A tuple of 48 elements.
+--
+-- @since 0.11.0
+--
+data Tuple48 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1)
+
+-- | A tuple of 49 elements.
+--
+-- @since 0.11.0
+--
+data Tuple49 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1)
+
+-- | A tuple of 50 elements.
+--
+-- @since 0.11.0
+--
+data Tuple50 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1)
+
+-- | A tuple of 51 elements.
+--
+-- @since 0.11.0
+--
+data Tuple51 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1)
+
+-- | A tuple of 52 elements.
+--
+-- @since 0.11.0
+--
+data Tuple52 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1)
+
+-- | A tuple of 53 elements.
+--
+-- @since 0.11.0
+--
+data Tuple53 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2)
+
+-- | A tuple of 54 elements.
+--
+-- @since 0.11.0
+--
+data Tuple54 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2)
+
+-- | A tuple of 55 elements.
+--
+-- @since 0.11.0
+--
+data Tuple55 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2)
+
+-- | A tuple of 56 elements.
+--
+-- @since 0.11.0
+--
+data Tuple56 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2)
+
+-- | A tuple of 57 elements.
+--
+-- @since 0.11.0
+--
+data Tuple57 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2)
+
+-- | A tuple of 58 elements.
+--
+-- @since 0.11.0
+--
+data Tuple58 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2)
+
+-- | A tuple of 59 elements.
+--
+-- @since 0.11.0
+--
+data Tuple59 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2)
+
+-- | A tuple of 60 elements.
+--
+-- @since 0.11.0
+--
+data Tuple60 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2)
+
+-- | A tuple of 61 elements.
+--
+-- @since 0.11.0
+--
+data Tuple61 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2)
+
+-- | A tuple of 62 elements.
+--
+-- @since 0.11.0
+--
+data Tuple62 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2)
+
+-- | A tuple of 63 elements.
+--
+-- @since 0.11.0
+--
+data Tuple63 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2)
+
+-- | A tuple of 64 elements.
+--
+-- @since 0.11.0
+--
+data Tuple64 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 l2
+  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
+     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2,l2)
diff --git a/libraries/ghc-prim/GHC/Tuple/Prim.hs b/libraries/ghc-prim/GHC/Tuple/Prim.hs
deleted file mode 100644
index 90876cefb6b4..000000000000
--- a/libraries/ghc-prim/GHC/Tuple/Prim.hs
+++ /dev/null
@@ -1,581 +0,0 @@
-{-# LANGUAGE Trustworthy #-}
-{-# LANGUAGE NoImplicitPrelude, DeriveGeneric #-}
------------------------------------------------------------------------------
--- |
--- Module      :  GHC.Tuple.Prim
--- Copyright   :  (c) The University of Glasgow 2001
--- License     :  BSD-style (see the file libraries/ghc-prim/LICENSE)
---
--- Maintainer  :  libraries@haskell.org
--- Stability   :  experimental
--- Portability :  non-portable (GHC extensions)
---
--- The tuple data types
---
------------------------------------------------------------------------------
-
-module GHC.Tuple.Prim where
-
-import GHC.CString ()  -- Make sure we do it first, so that the
-                       -- implicit Typeable stuff can see GHC.Types.TyCon
-                       -- and unpackCString# etc
-
-default () -- Double and Integer aren't available yet
-
--- | The unit datatype @Unit@ has one non-undefined member, the nullary
--- constructor @()@.
---
--- @since 0.11.0
---
-data Unit = ()
-
--- The desugarer uses 1-tuples,
--- but "Unit" is already used up for 0-tuples
--- See Note [One-tuples] in GHC.Builtin.Types
-
--- | @Solo@ is the canonical lifted 1-tuple, just like 'Tuple2' is the canonical
--- lifted 2-tuple (pair) and 'Tuple3' is the canonical lifted 3-tuple (triple).
---
--- The most important feature of @Solo@ is that it is possible to force its
--- "outside" (usually by pattern matching) without forcing its "inside",
--- because it is defined as a datatype rather than a newtype. One situation
--- where this can be useful is when writing a function to extract a value from
--- a data structure. Suppose you write an implementation of arrays and offer
--- only this function to index into them:
---
--- @
--- index :: Array a -> Int -> a
--- @
---
--- Now imagine that someone wants to extract a value from an array and store it
--- in a lazy-valued finite map/dictionary:
---
--- @
--- insert "hello" (arr `index` 12) m
--- @
---
--- This can actually lead to a space leak. The value is not actually extracted
--- from the array until that value (now buried in a map) is forced. That means
--- the entire array may be kept live by just that value!  Often, the solution
--- is to use a strict map, or to force the value before storing it, but for
--- some purposes that's undesirable.
---
--- One common solution is to include an indexing function that can produce its
--- result in an arbitrary @Applicative@ context:
---
--- @
--- indexA :: Applicative f => Array a -> Int -> f a
--- @
---
--- When using @indexA@ in a /pure/ context, @Solo@ serves as a handy
--- @Applicative@ functor to hold the result. You could write a non-leaky
--- version of the above example thus:
---
--- @
--- case arr `indexA` 12 of
---   Solo a -> insert "hello" a m
--- @
---
--- While such simple extraction functions are the most common uses for
--- unary tuples, they can also be useful for fine-grained control of
--- strict-spined data structure traversals, and for unifying the
--- implementations of lazy and strict mapping functions.
-data Solo a = MkSolo a
-
--- | Extract the value from a 'Solo'. Very often, values should be extracted
--- directly using pattern matching, to control just what gets evaluated when.
--- @getSolo@ is for convenience in situations where that is not the case:
---
--- When the result is passed to a /strict/ function, it makes no difference
--- whether the pattern matching is done on the \"outside\" or on the
--- \"inside\":
---
--- @
--- Data.Set.insert (getSolo sol) set === case sol of Solo v -> Data.Set.insert v set
--- @
---
--- A traversal may be performed in 'Solo' in order to control evaluation
--- internally, while using @getSolo@ to extract the final result. A strict
--- mapping function, for example, could be defined
---
--- @
--- map' :: Traversable t => (a -> b) -> t a -> t b
--- map' f = getSolo . traverse ((Solo $!) . f)
--- @
-getSolo :: Solo a -> a
--- getSolo is a standalone function, rather than a record field of Solo,
--- because Solo is a wired-in TyCon, and a wired-in TyCon that  has
--- record fields is a bit more inconvenient than if it doesn't.
--- (No other wired-in TyCon has record fields.)  So it seems easier
--- to have getSolo as its own separate function (#20562)
-getSolo (MkSolo a) = a
-
--- | A tuple of zero elements, a synonym for 'Unit'.
---
--- @since 0.11.0
---
-type Tuple0 = Unit
-
--- | A tuple of one element, a synonym for 'Solo'.
---
--- @since 0.11.0
---
-type Tuple1 = Solo
-
--- | A tuple of two elements.
---
--- @since 0.11.0
---
-data Tuple2 a b = (a,b)
-
--- | A tuple of three elements.
---
--- @since 0.11.0
---
-data Tuple3 a b c = (a,b,c)
-
--- | A tuple of four elements.
---
--- @since 0.11.0
---
-data Tuple4 a b c d = (a,b,c,d)
-
--- | A tuple of five elements.
---
--- @since 0.11.0
---
-data Tuple5 a b c d e = (a,b,c,d,e)
-
--- | A tuple of six elements.
---
--- @since 0.11.0
---
-data Tuple6 a b c d e f = (a,b,c,d,e,f)
-
--- | A tuple of seven elements.
---
--- @since 0.11.0
---
-data Tuple7 a b c d e f g = (a,b,c,d,e,f,g)
-
--- | A tuple of eight elements.
---
--- @since 0.11.0
---
-data Tuple8 a b c d e f g h = (a,b,c,d,e,f,g,h)
-
--- | A tuple of nine elements.
---
--- @since 0.11.0
---
-data Tuple9 a b c d e f g h i = (a,b,c,d,e,f,g,h,i)
-
--- | A tuple of ten elements.
---
--- @since 0.11.0
---
-data Tuple10 a b c d e f g h i j = (a,b,c,d,e,f,g,h,i,j)
-
--- | A tuple of eleven elements.
---
--- @since 0.11.0
---
-data Tuple11 a b c d e f g h i j k = (a,b,c,d,e,f,g,h,i,j,k)
-
--- | A tuple of twelve elements.
---
--- @since 0.11.0
---
-data Tuple12 a b c d e f g h i j k l = (a,b,c,d,e,f,g,h,i,j,k,l)
-
--- | A tuple of 13 elements.
---
--- @since 0.11.0
---
-data Tuple13 a b c d e f g h i j k l m = (a,b,c,d,e,f,g,h,i,j,k,l,m)
-
--- | A tuple of 14 elements.
---
--- @since 0.11.0
---
-data Tuple14 a b c d e f g h i j k l m n = (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
-
--- | A tuple of 15 elements.
---
--- @since 0.11.0
---
-data Tuple15 a b c d e f g h i j k l m n o = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
-
--- | A tuple of 16 elements.
---
--- @since 0.11.0
---
-data Tuple16 a b c d e f g h i j k l m n o p = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
-
--- | A tuple of 17 elements.
---
--- @since 0.11.0
---
-data Tuple17 a b c d e f g h i j k l m n o p q = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
-
--- | A tuple of 18 elements.
---
--- @since 0.11.0
---
-data Tuple18 a b c d e f g h i j k l m n o p q r = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
-
--- | A tuple of 19 elements.
---
--- @since 0.11.0
---
-data Tuple19 a b c d e f g h i j k l m n o p q r s = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s)
-
--- | A tuple of 20 elements.
---
--- @since 0.11.0
---
-data Tuple20 a b c d e f g h i j k l m n o p q r s t = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t)
-
--- | A tuple of 21 elements.
-
---
--- @since 0.11.0
---
-data Tuple21 a b c d e f g h i j k l m n o p q r s t u = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u)
-
--- | A tuple of 22 elements.
---
--- @since 0.11.0
---
-data Tuple22 a b c d e f g h i j k l m n o p q r s t u v = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v)
-
--- | A tuple of 23 elements.
---
--- @since 0.11.0
---
-data Tuple23 a b c d e f g h i j k l m n o p q r s t u v w = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w)
-
--- | A tuple of 24 elements.
---
--- @since 0.11.0
---
-data Tuple24 a b c d e f g h i j k l m n o p q r s t u v w x = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x)
-
--- | A tuple of 25 elements.
---
--- @since 0.11.0
---
-data Tuple25 a b c d e f g h i j k l m n o p q r s t u v w x y = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y)
-
--- | A tuple of 26 elements.
---
--- @since 0.11.0
---
-data Tuple26 a b c d e f g h i j k l m n o p q r s t u v w x y z = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z)
-
--- | A tuple of 27 elements.
---
--- @since 0.11.0
---
-data Tuple27 a b c d e f g h i j k l m n o p q r s t u v w x y z a1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1)
-
--- | A tuple of 28 elements.
---
--- @since 0.11.0
---
-data Tuple28 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1)
-
--- | A tuple of 29 elements.
---
--- @since 0.11.0
---
-data Tuple29 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1)
-
--- | A tuple of 30 elements.
---
--- @since 0.11.0
---
-data Tuple30 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1)
-
--- | A tuple of 31 elements.
---
--- @since 0.11.0
---
-data Tuple31 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1)
-
--- | A tuple of 32 elements.
---
--- @since 0.11.0
---
-data Tuple32 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1)
-
--- | A tuple of 33 elements.
---
--- @since 0.11.0
---
-data Tuple33 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1)
-
--- | A tuple of 34 elements.
---
--- @since 0.11.0
---
-data Tuple34 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1)
-
--- | A tuple of 35 elements.
---
--- @since 0.11.0
---
-data Tuple35 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1)
-
--- | A tuple of 36 elements.
---
--- @since 0.11.0
---
-data Tuple36 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1)
-
--- | A tuple of 37 elements.
---
--- @since 0.11.0
---
-data Tuple37 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1)
-
--- | A tuple of 38 elements.
---
--- @since 0.11.0
---
-data Tuple38 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1)
-
--- | A tuple of 39 elements.
---
--- @since 0.11.0
---
-data Tuple39 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1)
-
--- | A tuple of 40 elements.
---
--- @since 0.11.0
---
-data Tuple40 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1)
-
--- | A tuple of 41 elements.
---
--- @since 0.11.0
---
-data Tuple41 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1)
-
--- | A tuple of 42 elements.
---
--- @since 0.11.0
---
-data Tuple42 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1)
-
--- | A tuple of 43 elements.
---
--- @since 0.11.0
---
-data Tuple43 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1)
-
--- | A tuple of 44 elements.
---
--- @since 0.11.0
---
-data Tuple44 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1)
-
--- | A tuple of 45 elements.
---
--- @since 0.11.0
---
-data Tuple45 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1)
-
--- | A tuple of 46 elements.
---
--- @since 0.11.0
---
-data Tuple46 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1)
-
--- | A tuple of 47 elements.
---
--- @since 0.11.0
---
-data Tuple47 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1)
-
--- | A tuple of 48 elements.
---
--- @since 0.11.0
---
-data Tuple48 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1)
-
--- | A tuple of 49 elements.
---
--- @since 0.11.0
---
-data Tuple49 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1)
-
--- | A tuple of 50 elements.
---
--- @since 0.11.0
---
-data Tuple50 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1)
-
--- | A tuple of 51 elements.
---
--- @since 0.11.0
---
-data Tuple51 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1)
-
--- | A tuple of 52 elements.
---
--- @since 0.11.0
---
-data Tuple52 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1)
-
--- | A tuple of 53 elements.
---
--- @since 0.11.0
---
-data Tuple53 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2)
-
--- | A tuple of 54 elements.
---
--- @since 0.11.0
---
-data Tuple54 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2)
-
--- | A tuple of 55 elements.
---
--- @since 0.11.0
---
-data Tuple55 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2)
-
--- | A tuple of 56 elements.
---
--- @since 0.11.0
---
-data Tuple56 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2)
-
--- | A tuple of 57 elements.
---
--- @since 0.11.0
---
-data Tuple57 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2)
-
--- | A tuple of 58 elements.
---
--- @since 0.11.0
---
-data Tuple58 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2)
-
--- | A tuple of 59 elements.
---
--- @since 0.11.0
---
-data Tuple59 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2)
-
--- | A tuple of 60 elements.
---
--- @since 0.11.0
---
-data Tuple60 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2)
-
--- | A tuple of 61 elements.
---
--- @since 0.11.0
---
-data Tuple61 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2)
-
--- | A tuple of 62 elements.
---
--- @since 0.11.0
---
-data Tuple62 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2)
-
--- | A tuple of 63 elements.
---
--- @since 0.11.0
---
-data Tuple63 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2)
-
--- | A tuple of 64 elements.
---
--- @since 0.11.0
---
-data Tuple64 a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
-      r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 l2
-  = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,
-     r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2,l2)
diff --git a/libraries/ghc-prim/GHC/Types.hs b/libraries/ghc-prim/GHC/Types.hs
index 3c43f69a4a21..c3a9fe623149 100644
--- a/libraries/ghc-prim/GHC/Types.hs
+++ b/libraries/ghc-prim/GHC/Types.hs
@@ -2,7 +2,7 @@
              MultiParamTypeClasses, RoleAnnotations, CPP, TypeOperators,
              PolyKinds, NegativeLiterals, DataKinds, ScopedTypeVariables,
              TypeApplications, StandaloneKindSignatures, GADTs,
-             FlexibleInstances, UndecidableInstances #-}
+             FlexibleInstances, UndecidableInstances, UnboxedSums #-}
 -- NegativeLiterals: see Note [Fixity of (->)]
 {-# OPTIONS_HADDOCK print-explicit-runtime-reps #-}
 -----------------------------------------------------------------------------
@@ -62,6 +62,140 @@ module GHC.Types (
         -- * Runtime type representation
         Module(..), TrName(..), TyCon(..), TypeLitSort(..),
         KindRep(..), KindBndr,
+
+        -- * Unboxed tuples
+        Unit#,
+        Solo#,
+        Tuple0#,
+        Tuple1#,
+        Tuple2#,
+        Tuple3#,
+        Tuple4#,
+        Tuple5#,
+        Tuple6#,
+        Tuple7#,
+        Tuple8#,
+        Tuple9#,
+        Tuple10#,
+        Tuple11#,
+        Tuple12#,
+        Tuple13#,
+        Tuple14#,
+        Tuple15#,
+        Tuple16#,
+        Tuple17#,
+        Tuple18#,
+        Tuple19#,
+        Tuple20#,
+        Tuple21#,
+        Tuple22#,
+        Tuple23#,
+        Tuple24#,
+        Tuple25#,
+        Tuple26#,
+        Tuple27#,
+        Tuple28#,
+        Tuple29#,
+        Tuple30#,
+        Tuple31#,
+        Tuple32#,
+        Tuple33#,
+        Tuple34#,
+        Tuple35#,
+        Tuple36#,
+        Tuple37#,
+        Tuple38#,
+        Tuple39#,
+        Tuple40#,
+        Tuple41#,
+        Tuple42#,
+        Tuple43#,
+        Tuple44#,
+        Tuple45#,
+        Tuple46#,
+        Tuple47#,
+        Tuple48#,
+        Tuple49#,
+        Tuple50#,
+        Tuple51#,
+        Tuple52#,
+        Tuple53#,
+        Tuple54#,
+        Tuple55#,
+        Tuple56#,
+        Tuple57#,
+        Tuple58#,
+        Tuple59#,
+        Tuple60#,
+        Tuple61#,
+        Tuple62#,
+        Tuple63#,
+        Tuple64#,
+
+        -- * Unboxed sums
+        Sum2#,
+        Sum3#,
+        Sum4#,
+        Sum5#,
+        Sum6#,
+        Sum7#,
+        Sum8#,
+        Sum9#,
+        Sum10#,
+        Sum11#,
+        Sum12#,
+        Sum13#,
+        Sum14#,
+        Sum15#,
+        Sum16#,
+        Sum17#,
+        Sum18#,
+        Sum19#,
+        Sum20#,
+        Sum21#,
+        Sum22#,
+        Sum23#,
+        Sum24#,
+        Sum25#,
+        Sum26#,
+        Sum27#,
+        Sum28#,
+        Sum29#,
+        Sum30#,
+        Sum31#,
+        Sum32#,
+        Sum33#,
+        Sum34#,
+        Sum35#,
+        Sum36#,
+        Sum37#,
+        Sum38#,
+        Sum39#,
+        Sum40#,
+        Sum41#,
+        Sum42#,
+        Sum43#,
+        Sum44#,
+        Sum45#,
+        Sum46#,
+        Sum47#,
+        Sum48#,
+        Sum49#,
+        Sum50#,
+        Sum51#,
+        Sum52#,
+        Sum53#,
+        Sum54#,
+        Sum55#,
+        Sum56#,
+        Sum57#,
+        Sum58#,
+        Sum59#,
+        Sum60#,
+        Sum61#,
+        Sum62#,
+        Sum63#,
+
     ) where
 
 import GHC.Prim
@@ -744,3 +878,2768 @@ data TyCon = TyCon Word64#    -- ^ Fingerprint (high)
                    TrName     -- ^ Type constructor name
                    Int#       -- ^ How many kind variables do we accept?
                    KindRep    -- ^ A representation of the type's kind
+
+{- *********************************************************************
+*                                                                      *
+             Unboxed tuples and sums
+*                                                                      *
+********************************************************************* -}
+
+type Unit# :: TYPE (TupleRep '[])
+data Unit# = (# #)
+
+type Solo# :: TYPE rep -> TYPE (TupleRep '[rep])
+data Solo# a = (# a #)
+
+type Tuple0# = Unit#
+type Tuple1# = Solo#
+
+type Tuple2# :: TYPE r1 -> TYPE r2 -> TYPE (TupleRep [r1, r2])
+data Tuple2# a b =
+  (# a,b #)
+type Tuple3# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE (TupleRep [r1, r2, r3])
+data Tuple3# a b c =
+  (# a,b,c #)
+type Tuple4# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE (TupleRep [r1, r2, r3, r4])
+data Tuple4# a b c d =
+  (# a,b,c,d #)
+type Tuple5# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE (TupleRep [r1, r2, r3, r4, r5])
+data Tuple5# a b c d e =
+  (# a,b,c,d,e #)
+type Tuple6# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6])
+data Tuple6# a b c d e f =
+  (# a,b,c,d,e,f #)
+type Tuple7# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7])
+data Tuple7# a b c d e f g =
+  (# a,b,c,d,e,f,g #)
+type Tuple8# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8])
+data Tuple8# a b c d e f g h =
+  (# a,b,c,d,e,f,g,h #)
+type Tuple9# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9])
+data Tuple9# a b c d e f g h i =
+  (# a,b,c,d,e,f,g,h,i #)
+type Tuple10# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10])
+data Tuple10# a b c d e f g h i j =
+  (# a,b,c,d,e,f,g,h,i,j #)
+type Tuple11# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11])
+data Tuple11# a b c d e f g h i j k =
+  (# a,b,c,d,e,f,g,h,i,j,k #)
+type Tuple12# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12])
+data Tuple12# a b c d e f g h i j k l =
+  (# a,b,c,d,e,f,g,h,i,j,k,l #)
+type Tuple13# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13])
+data Tuple13# a b c d e f g h i j k l m =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m #)
+type Tuple14# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14])
+data Tuple14# a b c d e f g h i j k l m n =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n #)
+type Tuple15# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15])
+data Tuple15# a b c d e f g h i j k l m n o =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o #)
+type Tuple16# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16])
+data Tuple16# a b c d e f g h i j k l m n o p =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p #)
+type Tuple17# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17])
+data Tuple17# a b c d e f g h i j k l m n o p q =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q #)
+type Tuple18# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18])
+data Tuple18# a b c d e f g h i j k l m n o p q r =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r #)
+type Tuple19# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19])
+data Tuple19# a b c d e f g h i j k l m n o p q r s =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s #)
+type Tuple20# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20])
+data Tuple20# a b c d e f g h i j k l m n o p q r s t =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t #)
+type Tuple21# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21])
+data Tuple21# a b c d e f g h i j k l m n o p q r s t u =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u #)
+type Tuple22# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22])
+data Tuple22# a b c d e f g h i j k l m n o p q r s t u v =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v #)
+type Tuple23# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23])
+data Tuple23# a b c d e f g h i j k l m n o p q r s t u v w =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w #)
+type Tuple24# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24])
+data Tuple24# a b c d e f g h i j k l m n o p q r s t u v w x =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x #)
+type Tuple25# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25])
+data Tuple25# a b c d e f g h i j k l m n o p q r s t u v w x y =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y #)
+type Tuple26# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26])
+data Tuple26# a b c d e f g h i j k l m n o p q r s t u v w x y z =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z #)
+type Tuple27# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27])
+data Tuple27# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1 #)
+type Tuple28# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28])
+data Tuple28# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1 #)
+type Tuple29# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29])
+data Tuple29# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1 #)
+type Tuple30# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30])
+data Tuple30# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1 #)
+type Tuple31# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31])
+data Tuple31# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1 #)
+type Tuple32# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32])
+data Tuple32# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1 #)
+type Tuple33# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33])
+data Tuple33# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1 #)
+type Tuple34# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34])
+data Tuple34# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1 #)
+type Tuple35# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35])
+data Tuple35# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1 #)
+type Tuple36# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36])
+data Tuple36# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1 #)
+type Tuple37# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37])
+data Tuple37# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1 #)
+type Tuple38# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38])
+data Tuple38# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1 #)
+type Tuple39# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39])
+data Tuple39# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1 #)
+type Tuple40# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40])
+data Tuple40# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1 #)
+type Tuple41# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41])
+data Tuple41# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1 #)
+type Tuple42# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42])
+data Tuple42# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1 #)
+type Tuple43# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43])
+data Tuple43# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1 #)
+type Tuple44# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44])
+data Tuple44# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1 #)
+type Tuple45# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45])
+data Tuple45# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1 #)
+type Tuple46# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46])
+data Tuple46# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1 #)
+type Tuple47# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47])
+data Tuple47# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1 #)
+type Tuple48# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48])
+data Tuple48# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1 #)
+type Tuple49# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49])
+data Tuple49# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1 #)
+type Tuple50# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50])
+data Tuple50# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1 #)
+type Tuple51# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51])
+data Tuple51# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1 #)
+type Tuple52# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52])
+data Tuple52# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1 #)
+type Tuple53# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53])
+data Tuple53# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2 #)
+type Tuple54# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54])
+data Tuple54# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2 #)
+type Tuple55# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE r55 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54, r55])
+data Tuple55# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2,c2 #)
+type Tuple56# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE r55 -> TYPE r56 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56])
+data Tuple56# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2,c2,d2 #)
+type Tuple57# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE r55 -> TYPE r56 -> TYPE r57 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57])
+data Tuple57# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2 #)
+type Tuple58# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58])
+data Tuple58# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2 #)
+type Tuple59# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59])
+data Tuple59# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2 #)
+type Tuple60# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60])
+data Tuple60# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2 #)
+type Tuple61# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61])
+data Tuple61# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2 #)
+type Tuple62# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62])
+data Tuple62# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2 #)
+type Tuple63# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 -> TYPE r63 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63])
+data Tuple63# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2 #)
+type Tuple64# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->
+  TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->
+  TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->
+  TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->
+  TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->
+  TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->
+  TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 -> TYPE r63 -> TYPE r64 ->
+  TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,
+  r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,
+  r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r64])
+data Tuple64# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1
+     r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 l2 =
+  (# a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,
+     u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2,l2 #)
+
+{-
+Note [Unboxed sum with arity 64]
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+While tuples are defined up to arity 64, sums can maximally have 63 alternatives.
+This is due to the Unique layout for unboxed sums, which allots only six bits
+for encoding the alternative.
+-}
+
+type Sum2# :: TYPE r1 -> TYPE r2 -> TYPE (SumRep [r1, r2])
+data Sum2# a b =
+    (# a | #)
+  | (# | b #)
+
+type Sum3# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE (SumRep [r1, r2, r3])
+data Sum3# a b c =
+    (# a | | #)
+  | (# | b | #)
+  | (# | | c #)
+
+type Sum4# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE (SumRep [r1, r2, r3, r4])
+data Sum4# a b c d =
+    (# a | | | #)
+  | (# | b | | #)
+  | (# | | c | #)
+  | (# | | | d #)
+
+type Sum5# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE (SumRep [r1, r2, r3, r4, r5])
+data Sum5# a b c d e =
+    (# a | | | | #)
+  | (# | b | | | #)
+  | (# | | c | | #)
+  | (# | | | d | #)
+  | (# | | | | e #)
+
+type Sum6# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6])
+data Sum6# a b c d e f =
+    (# a | | | | | #)
+  | (# | b | | | | #)
+  | (# | | c | | | #)
+  | (# | | | d | | #)
+  | (# | | | | e | #)
+  | (# | | | | | f #)
+
+type Sum7# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7])
+data Sum7# a b c d e f g =
+    (# a | | | | | | #)
+  | (# | b | | | | | #)
+  | (# | | c | | | | #)
+  | (# | | | d | | | #)
+  | (# | | | | e | | #)
+  | (# | | | | | f | #)
+  | (# | | | | | | g #)
+
+type Sum8# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8])
+data Sum8# a b c d e f g h =
+    (# a | | | | | | | #)
+  | (# | b | | | | | | #)
+  | (# | | c | | | | | #)
+  | (# | | | d | | | | #)
+  | (# | | | | e | | | #)
+  | (# | | | | | f | | #)
+  | (# | | | | | | g | #)
+  | (# | | | | | | | h #)
+
+type Sum9# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9])
+data Sum9# a b c d e f g h i =
+    (# a | | | | | | | | #)
+  | (# | b | | | | | | | #)
+  | (# | | c | | | | | | #)
+  | (# | | | d | | | | | #)
+  | (# | | | | e | | | | #)
+  | (# | | | | | f | | | #)
+  | (# | | | | | | g | | #)
+  | (# | | | | | | | h | #)
+  | (# | | | | | | | | i #)
+
+type Sum10# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10])
+data Sum10# a b c d e f g h i j =
+    (# a | | | | | | | | | #)
+  | (# | b | | | | | | | | #)
+  | (# | | c | | | | | | | #)
+  | (# | | | d | | | | | | #)
+  | (# | | | | e | | | | | #)
+  | (# | | | | | f | | | | #)
+  | (# | | | | | | g | | | #)
+  | (# | | | | | | | h | | #)
+  | (# | | | | | | | | i | #)
+  | (# | | | | | | | | | j #)
+
+type Sum11# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11])
+data Sum11# a b c d e f g h i j k =
+    (# a | | | | | | | | | | #)
+  | (# | b | | | | | | | | | #)
+  | (# | | c | | | | | | | | #)
+  | (# | | | d | | | | | | | #)
+  | (# | | | | e | | | | | | #)
+  | (# | | | | | f | | | | | #)
+  | (# | | | | | | g | | | | #)
+  | (# | | | | | | | h | | | #)
+  | (# | | | | | | | | i | | #)
+  | (# | | | | | | | | | j | #)
+  | (# | | | | | | | | | | k #)
+
+type Sum12# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12])
+data Sum12# a b c d e f g h i j k l =
+    (# a | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | #)
+  | (# | | | d | | | | | | | | #)
+  | (# | | | | e | | | | | | | #)
+  | (# | | | | | f | | | | | | #)
+  | (# | | | | | | g | | | | | #)
+  | (# | | | | | | | h | | | | #)
+  | (# | | | | | | | | i | | | #)
+  | (# | | | | | | | | | j | | #)
+  | (# | | | | | | | | | | k | #)
+  | (# | | | | | | | | | | | l #)
+
+type Sum13# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13])
+data Sum13# a b c d e f g h i j k l m =
+    (# a | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | #)
+  | (# | | | | | f | | | | | | | #)
+  | (# | | | | | | g | | | | | | #)
+  | (# | | | | | | | h | | | | | #)
+  | (# | | | | | | | | i | | | | #)
+  | (# | | | | | | | | | j | | | #)
+  | (# | | | | | | | | | | k | | #)
+  | (# | | | | | | | | | | | l | #)
+  | (# | | | | | | | | | | | | m #)
+
+type Sum14# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14])
+data Sum14# a b c d e f g h i j k l m n =
+    (# a | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | #)
+  | (# | | | | | | | h | | | | | | #)
+  | (# | | | | | | | | i | | | | | #)
+  | (# | | | | | | | | | j | | | | #)
+  | (# | | | | | | | | | | k | | | #)
+  | (# | | | | | | | | | | | l | | #)
+  | (# | | | | | | | | | | | | m | #)
+  | (# | | | | | | | | | | | | | n #)
+
+type Sum15# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15])
+data Sum15# a b c d e f g h i j k l m n o =
+    (# a | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | #)
+  | (# | | | | | | | | | j | | | | | #)
+  | (# | | | | | | | | | | k | | | | #)
+  | (# | | | | | | | | | | | l | | | #)
+  | (# | | | | | | | | | | | | m | | #)
+  | (# | | | | | | | | | | | | | n | #)
+  | (# | | | | | | | | | | | | | | o #)
+
+type Sum16# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16])
+data Sum16# a b c d e f g h i j k l m n o p =
+    (# a | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | #)
+  | (# | | | | | | | | | | | l | | | | #)
+  | (# | | | | | | | | | | | | m | | | #)
+  | (# | | | | | | | | | | | | | n | | #)
+  | (# | | | | | | | | | | | | | | o | #)
+  | (# | | | | | | | | | | | | | | | p #)
+
+type Sum17# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17])
+data Sum17# a b c d e f g h i j k l m n o p q =
+    (# a | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | #)
+  | (# | | | | | | | | | | | | | n | | | #)
+  | (# | | | | | | | | | | | | | | o | | #)
+  | (# | | | | | | | | | | | | | | | p | #)
+  | (# | | | | | | | | | | | | | | | | q #)
+
+type Sum18# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18])
+data Sum18# a b c d e f g h i j k l m n o p q r =
+    (# a | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | #)
+  | (# | | | | | | | | | | | | | | | p | | #)
+  | (# | | | | | | | | | | | | | | | | q | #)
+  | (# | | | | | | | | | | | | | | | | | r #)
+
+type Sum19# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19])
+data Sum19# a b c d e f g h i j k l m n o p q r s =
+    (# a | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | #)
+  | (# | | | | | | | | | | | | | | | | | r | #)
+  | (# | | | | | | | | | | | | | | | | | | s #)
+
+type Sum20# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20])
+data Sum20# a b c d e f g h i j k l m n o p q r s t =
+    (# a | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | #)
+  | (# | | | | | | | | | | | | | | | | | | | t #)
+
+type Sum21# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21])
+data Sum21# a b c d e f g h i j k l m n o p q r s t u =
+    (# a | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u #)
+
+type Sum22# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22])
+data Sum22# a b c d e f g h i j k l m n o p q r s t u v =
+    (# a | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v #)
+
+type Sum23# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23])
+data Sum23# a b c d e f g h i j k l m n o p q r s t u v w =
+    (# a | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w #)
+
+type Sum24# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24])
+data Sum24# a b c d e f g h i j k l m n o p q r s t u v w x =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x #)
+
+type Sum25# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25])
+data Sum25# a b c d e f g h i j k l m n o p q r s t u v w x y =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y #)
+
+type Sum26# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26])
+data Sum26# a b c d e f g h i j k l m n o p q r s t u v w x y z =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z #)
+
+type Sum27# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27])
+data Sum27# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 #)
+
+type Sum28# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28])
+data Sum28# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 #)
+
+type Sum29# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29])
+data Sum29# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 #)
+
+type Sum30# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30])
+data Sum30# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 #)
+
+type Sum31# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31])
+data Sum31# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 #)
+
+type Sum32# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32])
+data Sum32# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 #)
+
+type Sum33# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33])
+data Sum33# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 #)
+
+type Sum34# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34])
+data Sum34# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 #)
+
+type Sum35# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35])
+data Sum35# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 #)
+
+type Sum36# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36])
+data Sum36# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 #)
+
+type Sum37# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37])
+data Sum37# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 #)
+
+type Sum38# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38])
+data Sum38# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 #)
+
+type Sum39# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39])
+data Sum39# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 #)
+
+type Sum40# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40])
+data Sum40# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 #)
+
+type Sum41# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41])
+data Sum41# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 #)
+
+type Sum42# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42])
+data Sum42# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 #)
+
+type Sum43# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43])
+data Sum43# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 #)
+
+type Sum44# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44])
+data Sum44# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 #)
+
+type Sum45# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45])
+data Sum45# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 #)
+
+type Sum46# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46])
+data Sum46# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 #)
+
+type Sum47# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47])
+data Sum47# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 #)
+
+type Sum48# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48])
+data Sum48# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 #)
+
+type Sum49# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49])
+data Sum49# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 #)
+
+type Sum50# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50])
+data Sum50# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 #)
+
+type Sum51# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51])
+data Sum51# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 #)
+
+type Sum52# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52])
+data Sum52# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 #)
+
+type Sum53# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53])
+data Sum53# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 #)
+
+type Sum54# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54])
+data Sum54# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 #)
+
+type Sum55# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55])
+data Sum55# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 #)
+
+type Sum56# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56])
+data Sum56# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 #)
+
+type Sum57# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57])
+data Sum57# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 #)
+
+type Sum58# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58])
+data Sum58# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 #)
+
+type Sum59# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59])
+data Sum59# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 #)
+
+type Sum60# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60])
+data Sum60# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h2 #)
+
+type Sum61# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61])
+data Sum61# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h2 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i2 #)
+
+type Sum62# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62])
+data Sum62# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h2 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i2 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j2 #)
+
+type Sum63# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 -> TYPE r63 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63])
+data Sum63# a b c d e f g h i j k l m n o p q r s t u v w x y z a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 =
+    (# a | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | b | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | d | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | e | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | f | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | g | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | h | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | i | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | j | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | k | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | l | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | m | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | o | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | p | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | q | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | r | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | t | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | u | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | w | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | x | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | y | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 | | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h2 | | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i2 | | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j2 | #)
+  | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k2 #)
diff --git a/libraries/ghc-prim/changelog.md b/libraries/ghc-prim/changelog.md
index 5d967e995ff8..66bb88eb2b95 100644
--- a/libraries/ghc-prim/changelog.md
+++ b/libraries/ghc-prim/changelog.md
@@ -68,6 +68,17 @@
   constructors in scope and the levity of `t` is statically known,
   then the constraint `DataToTag t` can always be solved.
 
+- Renamed several built-in tycon syntaxes to avoid punning:
+
+  - Unboxed tuple tycons are now `Tuple#<N>`
+  - Unboxed sum tycons are now `Sum#<N>`
+  - Constraint tuple classes are now `CTuple<N>`
+  - Unit tycons are now `Unit#`, `CUnit`.
+  - Solo tycons are now `Solo#`, `CSolo`.
+  - `Tuple<N>` have been moved back to `GHC.Tuple`.
+
+  See [https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0475-tuple-syntax.rst].
+
 ## 0.11.0
 
 - Shipped with GHC 9.8.1
diff --git a/libraries/ghc-prim/ghc-prim.cabal b/libraries/ghc-prim/ghc-prim.cabal
index 345d91265c79..8dc838ed88a4 100644
--- a/libraries/ghc-prim/ghc-prim.cabal
+++ b/libraries/ghc-prim/ghc-prim.cabal
@@ -59,7 +59,6 @@ Library
         GHC.Prim.PtrEq
         GHC.PrimopWrappers
         GHC.Tuple
-        GHC.Tuple.Prim
         GHC.Types
 
     virtual-modules:
diff --git a/libraries/template-haskell/Language/Haskell/TH/Syntax.hs b/libraries/template-haskell/Language/Haskell/TH/Syntax.hs
index c937204c69a5..e449cb0c938c 100644
--- a/libraries/template-haskell/Language/Haskell/TH/Syntax.hs
+++ b/libraries/template-haskell/Language/Haskell/TH/Syntax.hs
@@ -1431,7 +1431,7 @@ dataToQa mkCon mkLit appCon antiQ t =
                       con@('(':_) -> Name (mkOccName con)
                                           (NameG DataName
                                                 (mkPkgName "ghc-prim")
-                                                (mkModName "GHC.Tuple.Prim"))
+                                                (mkModName "GHC.Tuple"))
 
                       -- Tricky case: see Note [Data for non-algebraic types]
                       fun@(x:_)   | startsVarSym x || startsVarId x
@@ -1923,10 +1923,12 @@ mk_tup_name n space boxed
     withParens thing
       | boxed     = "("  ++ thing ++ ")"
       | otherwise = "(#" ++ thing ++ "#)"
-    tup_occ | n == 1    = if boxed then solo else "Solo#"
+    tup_occ | n == 0, space == TcClsName = if boxed then "Unit" else "Unit#"
+            | n == 1 = if boxed then solo else "Solo#"
+            | space == TcClsName = "Tuple" ++ show n ++ if boxed then "" else "#"
             | otherwise = withParens (replicate n_commas ',')
     n_commas = n - 1
-    tup_mod  = mkModName "GHC.Tuple.Prim"
+    tup_mod  = mkModName (if boxed then "GHC.Tuple" else "GHC.Prim")
     solo
       | space == DataName = "MkSolo"
       | otherwise = "Solo"
diff --git a/rts/Prelude.h b/rts/Prelude.h
index d76443c77f3c..092f09830b29 100644
--- a/rts/Prelude.h
+++ b/rts/Prelude.h
@@ -26,7 +26,7 @@ PRELUDE_CLOSURE(ghczmprim_GHCziPrimziPanic_absentSumFieldError_closure);
  * modules these names are defined in.
  */
 
-PRELUDE_CLOSURE(ghczmprim_GHCziTupleziPrim_Z0T_closure);
+PRELUDE_CLOSURE(ghczmprim_GHCziTuple_Z0T_closure);
 PRELUDE_CLOSURE(ghczmprim_GHCziTypes_True_closure);
 PRELUDE_CLOSURE(ghczmprim_GHCziTypes_False_closure);
 PRELUDE_CLOSURE(ghczminternal_GHCziInternalziPack_unpackCString_closure);
@@ -87,7 +87,7 @@ PRELUDE_INFO(ghczminternal_GHCziInternalziWord_W32zh_con_info);
 PRELUDE_INFO(ghczminternal_GHCziInternalziWord_W64zh_con_info);
 PRELUDE_INFO(ghczminternal_GHCziInternalziStable_StablePtr_con_info);
 
-#define Unit_closure              DLL_IMPORT_DATA_REF(ghczmprim_GHCziTupleziPrim_Z0T_closure)
+#define Unit_closure              DLL_IMPORT_DATA_REF(ghczmprim_GHCziTuple_Z0T_closure)
 #define True_closure              DLL_IMPORT_DATA_REF(ghczmprim_GHCziTypes_True_closure)
 #define False_closure             DLL_IMPORT_DATA_REF(ghczmprim_GHCziTypes_False_closure)
 #define unpackCString_closure     DLL_IMPORT_DATA_REF(ghczminternal_GHCziInternalziPack_unpackCString_closure)
diff --git a/rts/external-symbols.list.in b/rts/external-symbols.list.in
index 5b4629ac2388..48d04423004b 100644
--- a/rts/external-symbols.list.in
+++ b/rts/external-symbols.list.in
@@ -14,7 +14,7 @@ findPtr
 
 ghczminternal_GHCziInternalziTopHandler_runIO_closure
 ghczminternal_GHCziInternalziTopHandler_runNonIO_closure
-ghczmprim_GHCziTupleziPrim_Z0T_closure
+ghczmprim_GHCziTuple_Z0T_closure
 ghczmprim_GHCziTypes_True_closure
 ghczmprim_GHCziTypes_False_closure
 ghczminternal_GHCziInternalziPack_unpackCString_closure
diff --git a/rts/wasm/scheduler.cmm b/rts/wasm/scheduler.cmm
index 19b9095bd86a..c9424744c4d3 100644
--- a/rts/wasm/scheduler.cmm
+++ b/rts/wasm/scheduler.cmm
@@ -113,7 +113,7 @@
 // JavaScript main thread.
 #define BUSY_YIELD_NS 15000000
 
-import CLOSURE ghczmprim_GHCziTupleziPrim_Z0T_closure;
+import CLOSURE ghczmprim_GHCziTuple_Z0T_closure;
 #if !defined(UnregisterisedCompiler)
 import CLOSURE stg_scheduler_loop_epoch;
 import CLOSURE stg_scheduler_loop_tid;
@@ -139,7 +139,7 @@ stg_scheduler_loopzh ()
   // Only meant to be run from a "main thread" (aka bound to an InCall
   // frame), not from a forked thread!
   if (StgTSO_bound(CurrentTSO) == NULL) {
-    return (ghczmprim_GHCziTupleziPrim_Z0T_closure);
+    return (ghczmprim_GHCziTuple_Z0T_closure);
   }
 
   // Entering the scheduler loop for the first time.
@@ -154,7 +154,7 @@ stg_scheduler_loopzh ()
 
   // Someone else is running the loop, not my business anymore.
   if (I64[stg_scheduler_loop_tid] != StgTSO_id(CurrentTSO)) {
-    return (ghczmprim_GHCziTupleziPrim_Z0T_closure);
+    return (ghczmprim_GHCziTuple_Z0T_closure);
   }
 
 work:
@@ -180,7 +180,7 @@ work:
 
 cleanup:
   I64[stg_scheduler_loop_tid] = 0 :: I64;
-  return (ghczmprim_GHCziTupleziPrim_Z0T_closure);
+  return (ghczmprim_GHCziTuple_Z0T_closure);
 }
 
 // After creating a new thread with only a stop frame on the stack,
diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py
index 448672b91b7b..4238febf84f1 100644
--- a/testsuite/driver/testlib.py
+++ b/testsuite/driver/testlib.py
@@ -1081,6 +1081,9 @@ def multiline_grep_errmsg(needle):
         return "" if match is None else match.group(0)
     return normalise_errmsg_fun(norm)
 
+def limit_stdout_lines(count):
+    return normalise_fun(lambda str: "".join(str.splitlines(True)[:count]))
+
 def normalise_whitespace_fun(f):
     return lambda name, opts: _normalise_whitespace_fun(name, opts, f)
 
diff --git a/testsuite/tests/cpranal/should_compile/T18174.stderr b/testsuite/tests/cpranal/should_compile/T18174.stderr
index b47152a95c68..44d4b42c29ad 100644
--- a/testsuite/tests/cpranal/should_compile/T18174.stderr
+++ b/testsuite/tests/cpranal/should_compile/T18174.stderr
@@ -48,7 +48,7 @@ $krep2_r1fT = GHC.Types.: @GHC.Types.KindRep $krep_r1fR $krep1_r1fS
 
 -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
 $krep3_r1fU :: GHC.Types.KindRep
-$krep3_r1fU = GHC.Types.KindRepTyConApp GHC.Tuple.Prim.$tcTuple2 $krep2_r1fT
+$krep3_r1fU = GHC.Types.KindRepTyConApp GHC.Tuple.$tcTuple2 $krep2_r1fT
 
 -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
 T18174.$tcT2 :: GHC.Prim.Addr#
diff --git a/testsuite/tests/deSugar/should_compile/T22719.stderr b/testsuite/tests/deSugar/should_compile/T22719.stderr
index 1a863e7e699a..1354df1c35ea 100644
--- a/testsuite/tests/deSugar/should_compile/T22719.stderr
+++ b/testsuite/tests/deSugar/should_compile/T22719.stderr
@@ -6,7 +6,7 @@ Result size of Tidy Core
 -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
 ex1 :: ()
 [GblId, Unf=OtherCon []]
-ex1 = GHC.Tuple.Prim.()
+ex1 = GHC.Tuple.()
 
 Rec {
 -- RHS size: {terms: 15, types: 5, coercions: 0, joins: 0/0}
@@ -25,7 +25,7 @@ end Rec }
 -- RHS size: {terms: 6, types: 1, coercions: 0, joins: 0/0}
 ex2 :: ()
 [GblId]
-ex2 = case f (GHC.Types.I# 10#) of { T -> GHC.Tuple.Prim.() }
+ex2 = case f (GHC.Types.I# 10#) of { T -> GHC.Tuple.() }
 
 
 
diff --git a/testsuite/tests/dmdanal/should_compile/T13143.stderr b/testsuite/tests/dmdanal/should_compile/T13143.stderr
index 62de56471652..e5a091890313 100644
--- a/testsuite/tests/dmdanal/should_compile/T13143.stderr
+++ b/testsuite/tests/dmdanal/should_compile/T13143.stderr
@@ -8,7 +8,7 @@ Rec {
 T13143.$wf [InlPrag=NOINLINE, Occ=LoopBreaker]
   :: forall {a}. (# #) -> a
 [GblId, Arity=1, Str=<B>b{sBo->S}, Cpr=b, Unf=OtherCon []]
-T13143.$wf = \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Prim.(##)
+T13143.$wf = \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Types.(##)
 end Rec }
 
 -- RHS size: {terms: 4, types: 3, coercions: 0, joins: 0/0}
@@ -20,8 +20,8 @@ f [InlPrag=NOINLINE[final]] :: forall a. Int -> a
  Unf=Unf{Src=StableSystem, TopLvl=True,
          Value=True, ConLike=True, WorkFree=True, Expandable=True,
          Guidance=ALWAYS_IF(arity=1,unsat_ok=True,boring_ok=True)
-         Tmpl= \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Prim.(##)}]
-f = \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Prim.(##)
+         Tmpl= \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Types.(##)}]
+f = \ (@a) _ [Occ=Dead] -> T13143.$wf @a GHC.Types.(##)
 
 -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
 T13143.$trModule4 :: GHC.Prim.Addr#
@@ -67,7 +67,7 @@ T13143.$trModule
 -- RHS size: {terms: 2, types: 1, coercions: 0, joins: 0/0}
 lvl :: Int
 [GblId, Str=b{sBo->S}, Cpr=b]
-lvl = T13143.$wf @Int GHC.Prim.(##)
+lvl = T13143.$wf @Int GHC.Types.(##)
 
 Rec {
 -- RHS size: {terms: 28, types: 7, coercions: 0, joins: 0/0}
diff --git a/testsuite/tests/dmdanal/should_compile/T23398.stderr b/testsuite/tests/dmdanal/should_compile/T23398.stderr
index 03a7dbb9fd0c..065cfcb6668b 100644
--- a/testsuite/tests/dmdanal/should_compile/T23398.stderr
+++ b/testsuite/tests/dmdanal/should_compile/T23398.stderr
@@ -28,15 +28,15 @@ foo [InlPrag=[2]] :: forall a. PairDict a => a -> a -> String
          Value=True, ConLike=True, WorkFree=True, Expandable=True,
          Guidance=ALWAYS_IF(arity=3,unsat_ok=True,boring_ok=False)
          Tmpl= \ (@a)
-                 ($d(%,%) [Occ=Once1!] :: PairDict a)
+                 ($dCTuple2 [Occ=Once1!] :: PairDict a)
                  (eta [Occ=Once1] :: a)
                  (eta1 [Occ=Once1] :: a) ->
-                 case $d(%,%) of { (ww [Occ=Once1], ww1 [Occ=Once1]) ->
+                 case $dCTuple2 of { (ww [Occ=Once1], ww1 [Occ=Once1]) ->
                  T23398.$wfoo @a ww ww1 eta eta1
                  }}]
 foo
-  = \ (@a) ($d(%,%) :: PairDict a) (eta :: a) (eta1 :: a) ->
-      case $d(%,%) of { (ww, ww1) -> T23398.$wfoo @a ww ww1 eta eta1 }
+  = \ (@a) ($dCTuple2 :: PairDict a) (eta :: a) (eta1 :: a) ->
+      case $dCTuple2 of { (ww, ww1) -> T23398.$wfoo @a ww ww1 eta eta1 }
 
 Rec {
 -- RHS size: {terms: 21, types: 19, coercions: 3, joins: 0/0}
diff --git a/testsuite/tests/ghci/scripts/ListTuplePunsPpr.script b/testsuite/tests/ghci/scripts/ListTuplePunsPpr.script
new file mode 100644
index 000000000000..641602ca6427
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ListTuplePunsPpr.script
@@ -0,0 +1,28 @@
+
+:set -XUnboxedTuples -XNoListTuplePuns -XDataKinds
+import GHC.Tuple (Solo (MkSolo))
+
+:i ()
+:i (##)
+:i Solo
+:t ()
+:t (##)
+:t (   )
+:t (#   #)
+:i (,)
+:i (#,#)
+:t (,)
+:t (#,#)
+:t (  ,  )
+:t (#  ,  #)
+type T = (Int, Int)
+type S = MkSolo Int
+type L = [Int]
+:k (Int, Int)
+:i T
+:i S
+:i L
+f i (j, k) = i + j + k :: Int
+:t f
+:t (\ (_, _) -> ())
+:t (\ (MkSolo _) -> ())
diff --git a/testsuite/tests/ghci/scripts/ListTuplePunsPpr.stdout b/testsuite/tests/ghci/scripts/ListTuplePunsPpr.stdout
new file mode 100644
index 000000000000..e6c6f8ee5d4b
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ListTuplePunsPpr.stdout
@@ -0,0 +1,87 @@
+type Unit :: *
+data Unit = ()
+  	-- Defined in ‘GHC.Tuple’
+instance Monoid Unit -- Defined in ‘GHC.Internal.Base’
+instance Semigroup Unit -- Defined in ‘GHC.Internal.Base’
+instance Bounded Unit -- Defined in ‘GHC.Internal.Enum’
+instance Read Unit -- Defined in ‘GHC.Internal.Read’
+instance Enum Unit -- Defined in ‘GHC.Internal.Enum’
+instance Show Unit -- Defined in ‘GHC.Internal.Show’
+instance Eq Unit -- Defined in ‘GHC.Classes’
+instance Ord Unit -- Defined in ‘GHC.Classes’
+type Unit# :: GHC.Types.ZeroBitType
+data Unit# = (##)
+  	-- Defined in ‘GHC.Types’
+type Solo :: * -> *
+data Solo a = MkSolo a
+  	-- Defined in ‘GHC.Tuple’
+instance Traversable Solo
+  -- Defined in ‘GHC.Internal.Data.Traversable’
+instance Applicative Solo -- Defined in ‘GHC.Internal.Base’
+instance Foldable Solo -- Defined in ‘GHC.Internal.Data.Foldable’
+instance Functor Solo -- Defined in ‘GHC.Internal.Base’
+instance Monad Solo -- Defined in ‘GHC.Internal.Base’
+instance Monoid a => Monoid (Solo a)
+  -- Defined in ‘GHC.Internal.Base’
+instance Semigroup a => Semigroup (Solo a)
+  -- Defined in ‘GHC.Internal.Base’
+instance Bounded a => Bounded (Solo a)
+  -- Defined in ‘GHC.Internal.Enum’
+instance Enum a => Enum (Solo a) -- Defined in ‘GHC.Internal.Enum’
+instance Read a => Read (Solo a) -- Defined in ‘GHC.Internal.Read’
+instance Eq a => Eq (Solo a) -- Defined in ‘GHC.Classes’
+instance Ord a => Ord (Solo a) -- Defined in ‘GHC.Classes’
+instance Show a => Show (Solo a) -- Defined in ‘GHC.Internal.Show’
+() :: Unit
+(##) :: Unit#
+(   ) :: Unit
+(#   #) :: Unit#
+type Tuple2 :: * -> * -> *
+data Tuple2 a b = (,) a b
+  	-- Defined in ‘GHC.Tuple’
+instance Traversable (Tuple2 a)
+  -- Defined in ‘GHC.Internal.Data.Traversable’
+instance Foldable (Tuple2 a)
+  -- Defined in ‘GHC.Internal.Data.Foldable’
+instance Monoid a => Applicative (Tuple2 a)
+  -- Defined in ‘GHC.Internal.Base’
+instance Functor (Tuple2 a) -- Defined in ‘GHC.Internal.Base’
+instance Monoid a => Monad (Tuple2 a)
+  -- Defined in ‘GHC.Internal.Base’
+instance (Monoid a, Monoid b) => Monoid (Tuple2 a b)
+  -- Defined in ‘GHC.Internal.Base’
+instance (Semigroup a, Semigroup b) => Semigroup (Tuple2 a b)
+  -- Defined in ‘GHC.Internal.Base’
+instance (Bounded a, Bounded b) => Bounded (Tuple2 a b)
+  -- Defined in ‘GHC.Internal.Enum’
+instance (Ord a, Ord b) => Ord (Tuple2 a b)
+  -- Defined in ‘GHC.Classes’
+instance (Read a, Read b) => Read (Tuple2 a b)
+  -- Defined in ‘GHC.Internal.Read’
+instance (Show a, Show b) => Show (Tuple2 a b)
+  -- Defined in ‘GHC.Internal.Show’
+instance (Eq a, Eq b) => Eq (Tuple2 a b)
+  -- Defined in ‘GHC.Classes’
+type Tuple2# :: *
+                -> *
+                -> TYPE
+                     (GHC.Types.TupleRep [GHC.Types.LiftedRep, GHC.Types.LiftedRep])
+data Tuple2# a b = (#,#) a b
+  	-- Defined in ‘GHC.Types’
+(,) :: a -> b -> Tuple2 a b
+(#,#) :: a -> b -> Tuple2# a b
+(  ,  ) :: a -> b -> Tuple2 a b
+(#  ,  #) :: a -> b -> Tuple2# a b
+(Int, Int) :: Tuple2 (*) (*)
+type T :: Tuple2 (*) (*)
+type T = (Int, Int) :: Tuple2 (*) (*)
+  	-- Defined at <interactive>:18:1
+type S :: Solo (*)
+type S = MkSolo Int :: Solo (*)
+  	-- Defined at <interactive>:19:1
+type L :: List (*)
+type L = [Int] :: List (*)
+  	-- Defined at <interactive>:20:1
+f :: Int -> Tuple2 Int Int -> Int
+(\ (_, _) -> ()) :: Tuple2 a b -> Unit
+(\ (MkSolo _) -> ()) :: Solo a -> Unit
diff --git a/testsuite/tests/ghci/scripts/ListTuplePunsPprNoAbbrevTuple.script b/testsuite/tests/ghci/scripts/ListTuplePunsPprNoAbbrevTuple.script
new file mode 100644
index 000000000000..7a6786136a69
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ListTuplePunsPprNoAbbrevTuple.script
@@ -0,0 +1,5 @@
+
+:set -XNoListTuplePuns
+import Data.Tuple.Experimental (Tuple)
+
+:i Tuple
diff --git a/testsuite/tests/ghci/scripts/ListTuplePunsPprNoAbbrevTuple.stdout b/testsuite/tests/ghci/scripts/ListTuplePunsPprNoAbbrevTuple.stdout
new file mode 100644
index 000000000000..dbfaaa29c7a9
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ListTuplePunsPprNoAbbrevTuple.stdout
@@ -0,0 +1,13 @@
+type Tuple :: forall (n :: GHC.TypeNats.Nat).
+              Data.Tuple.Experimental.TupleArgKind (*) n -> *
+type family Tuple ts = r | r -> n ts where
+    Tuple () = Unit
+    Tuple (a, b) = Tuple2 a b
+    Tuple (a, b, c) = Tuple3 a b c
+    Tuple (a, b, c, d) = Tuple4 a b c d
+    Tuple (a, b, c, d, e) = Tuple5 a b c d e
+    Tuple (a, b, c, d, e, f) = Tuple6 a b c d e f
+    Tuple (a, b, c, d, e, f, g) = Tuple7 a b c d e f g
+    Tuple (a, b, c, d, e, f, g, h) = Tuple8 a b c d e f g h
+    Tuple (a, b, c, d, e, f, g, h, i) = Tuple9 a b c d e f g h i
+    Tuple (a, b, c, d, e, f, g, h, i, j) = Tuple10 a b c d e f g h i j
diff --git a/testsuite/tests/ghci/scripts/T4127.stdout b/testsuite/tests/ghci/scripts/T4127.stdout
index 96ed462f5186..3315eddf007a 100644
--- a/testsuite/tests/ghci/scripts/T4127.stdout
+++ b/testsuite/tests/ghci/scripts/T4127.stdout
@@ -1 +1 @@
-[InstanceD Nothing [] (AppT (ConT GHC.Internal.Base.Monad) (AppT (ConT GHC.Tuple.Prim.Tuple2) (VarT a_0))) [ValD (VarP GHC.Internal.Base.>>=) (NormalB (VarE GHC.Internal.Err.undefined)) []]]
+[InstanceD Nothing [] (AppT (ConT GHC.Internal.Base.Monad) (AppT (ConT GHC.Tuple.Tuple2) (VarT a_0))) [ValD (VarP GHC.Internal.Base.>>=) (NormalB (VarE GHC.Internal.Err.undefined)) []]]
diff --git a/testsuite/tests/ghci/scripts/T4175.stdout b/testsuite/tests/ghci/scripts/T4175.stdout
index 5fa3f991d2f6..e8918c771732 100644
--- a/testsuite/tests/ghci/scripts/T4175.stdout
+++ b/testsuite/tests/ghci/scripts/T4175.stdout
@@ -24,7 +24,7 @@ type family E a where
   	-- Defined at T4175.hs:25:1
 type Unit :: *
 data Unit = ()
-  	-- Defined in ‘GHC.Tuple.Prim’
+  	-- Defined in ‘GHC.Tuple’
 instance [safe] C () -- Defined at T4175.hs:22:10
 instance Monoid () -- Defined in ‘GHC.Internal.Base’
 instance Semigroup () -- Defined in ‘GHC.Internal.Base’
diff --git a/testsuite/tests/ghci/scripts/T7627.stdout b/testsuite/tests/ghci/scripts/T7627.stdout
index cf0aa291fcdb..d71ab2179860 100644
--- a/testsuite/tests/ghci/scripts/T7627.stdout
+++ b/testsuite/tests/ghci/scripts/T7627.stdout
@@ -1,6 +1,6 @@
 type Unit :: *
 data Unit = ()
-  	-- Defined in ‘GHC.Tuple.Prim’
+  	-- Defined in ‘GHC.Tuple’
 instance Monoid () -- Defined in ‘GHC.Internal.Base’
 instance Semigroup () -- Defined in ‘GHC.Internal.Base’
 instance Bounded () -- Defined in ‘GHC.Internal.Enum’
@@ -9,16 +9,16 @@ instance Enum () -- Defined in ‘GHC.Internal.Enum’
 instance Show () -- Defined in ‘GHC.Internal.Show’
 instance Eq () -- Defined in ‘GHC.Classes’
 instance Ord () -- Defined in ‘GHC.Classes’
-type (##) :: GHC.Types.ZeroBitType
-data (##) = (##)
-  	-- Defined in ‘GHC.Prim’
+type Unit# :: GHC.Types.ZeroBitType
+data Unit# = (##)
+  	-- Defined in ‘GHC.Types’
 () :: ()
 (##) :: (# #)
 (   ) :: ()
 (#   #) :: (# #)
 type Tuple2 :: * -> * -> *
 data Tuple2 a b = (,) a b
-  	-- Defined in ‘GHC.Tuple.Prim’
+  	-- Defined in ‘GHC.Tuple’
 instance Traversable ((,) a)
   -- Defined in ‘GHC.Internal.Data.Traversable’
 instance Monoid a => Applicative ((,) a)
@@ -40,12 +40,12 @@ instance (Eq a, Eq b) => Eq (a, b) -- Defined in ‘GHC.Classes’
 instance (Ord a, Ord b) => Ord (a, b) -- Defined in ‘GHC.Classes’
 instance (Show a, Show b) => Show (a, b)
   -- Defined in ‘GHC.Internal.Show’
-type (#,#) :: *
-              -> *
-              -> TYPE
-                   (GHC.Types.TupleRep [GHC.Types.LiftedRep, GHC.Types.LiftedRep])
-data (#,#) a b = (#,#) a b
-  	-- Defined in ‘GHC.Prim’
+type Tuple2# :: *
+                -> *
+                -> TYPE
+                     (GHC.Types.TupleRep [GHC.Types.LiftedRep, GHC.Types.LiftedRep])
+data Tuple2# a b = (#,#) a b
+  	-- Defined in ‘GHC.Types’
 (,) :: a -> b -> (a, b)
 (#,#) :: a -> b -> (# a, b #)
 (  ,  ) :: a -> b -> (a, b)
diff --git a/testsuite/tests/ghci/scripts/all.T b/testsuite/tests/ghci/scripts/all.T
index 4b194f3a96a1..c9d08cbcd4f6 100755
--- a/testsuite/tests/ghci/scripts/all.T
+++ b/testsuite/tests/ghci/scripts/all.T
@@ -382,3 +382,5 @@ test('T23062', normal, ghci_script, ['T23062.script'])
 test('T16468', normal, ghci_script, ['T16468.script'])
 test('T23686', normal, ghci_script, ['T23686.script'])
 test('T13869', extra_files(['T13869a.hs', 'T13869b.hs']), ghci_script, ['T13869.script'])
+test('ListTuplePunsPpr', normal, ghci_script, ['ListTuplePunsPpr.script'])
+test('ListTuplePunsPprNoAbbrevTuple', [expect_broken(23135), limit_stdout_lines(13)], ghci_script, ['ListTuplePunsPprNoAbbrevTuple.script'])
diff --git a/testsuite/tests/ghci/scripts/ghci011.stdout b/testsuite/tests/ghci/scripts/ghci011.stdout
index 6613289317fa..d65c3144bcfc 100644
--- a/testsuite/tests/ghci/scripts/ghci011.stdout
+++ b/testsuite/tests/ghci/scripts/ghci011.stdout
@@ -17,7 +17,7 @@ instance Eq a => Eq [a] -- Defined in ‘GHC.Classes’
 instance Ord a => Ord [a] -- Defined in ‘GHC.Classes’
 type Unit :: *
 data Unit = ()
-  	-- Defined in ‘GHC.Tuple.Prim’
+  	-- Defined in ‘GHC.Tuple’
 instance Monoid () -- Defined in ‘GHC.Internal.Base’
 instance Read () -- Defined in ‘GHC.Internal.Read’
 instance Semigroup () -- Defined in ‘GHC.Internal.Base’
@@ -28,7 +28,7 @@ instance Show () -- Defined in ‘GHC.Internal.Show’
 instance Eq () -- Defined in ‘GHC.Classes’
 type Tuple2 :: * -> * -> *
 data Tuple2 a b = (,) a b
-  	-- Defined in ‘GHC.Tuple.Prim’
+  	-- Defined in ‘GHC.Tuple’
 instance Traversable ((,) a)
   -- Defined in ‘GHC.Internal.Data.Traversable’
 instance Monoid a => Applicative ((,) a)
diff --git a/testsuite/tests/ghci/should_run/T21052.stdout b/testsuite/tests/ghci/should_run/T21052.stdout
index 9c3b2b9dbe41..5778d19ed4f4 100644
--- a/testsuite/tests/ghci/should_run/T21052.stdout
+++ b/testsuite/tests/ghci/should_run/T21052.stdout
@@ -6,7 +6,7 @@ BCO_toplevel :: GHC.Types.IO [GHC.Types.Any]
         let {
           sat :: [GHC.Types.Any]
           [LclId] =
-              :! [GHC.Tuple.Prim.() GHC.Types.[]];
+              :! [GHC.Tuple.() GHC.Types.[]];
         } in  GHC.Internal.Base.returnIO sat;
 
 
diff --git a/testsuite/tests/interface-stability/ghc-experimental-exports.stdout b/testsuite/tests/interface-stability/ghc-experimental-exports.stdout
index 1a8abff937e1..973430a43452 100644
--- a/testsuite/tests/interface-stability/ghc-experimental-exports.stdout
+++ b/testsuite/tests/interface-stability/ghc-experimental-exports.stdout
@@ -1,9 +1,8694 @@
 
+module Data.Sum.Experimental where
+  -- Safety: Trustworthy
+  type Sum10# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9])
+  data Sum10# a b c d e f g h i j = ...
+  type Sum11# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10])
+  data Sum11# a b c d e f g h i j k = ...
+  type Sum12# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11])
+  data Sum12# a b c d e f g h i j k l = ...
+  type Sum13# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12])
+  data Sum13# a b c d e f g h i j k l m = ...
+  type Sum14# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13])
+  data Sum14# a b c d e f g h i j k l m n = ...
+  type Sum15# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14])
+  data Sum15# a b c d e f g h i j k l m n o = ...
+  type Sum16# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15])
+  data Sum16# a b c d e f g h i j k l m n o p = ...
+  type Sum17# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16])
+  data Sum17# a b c d e f g h i j k l m n o p q = ...
+  type Sum18# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17])
+  data Sum18# a b c d e f g h i j k l m n o p q r = ...
+  type Sum19# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18])
+  data Sum19# a b c d e f g h i j k l m n o p q r s = ...
+  type Sum2# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE (GHC.Types.SumRep [k0, k1])
+  data Sum2# a b = ...
+  type Sum20# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19])
+  data Sum20# a b c d e f g h i j k l m n o p q r s t = ...
+  type Sum21# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20])
+  data Sum21# a b c d e f g h i j k l m n o p q r s t u = ...
+  type Sum22# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21])
+  data Sum22# a b c d e f g h i j k l m n o p q r s t u v = ...
+  type Sum23# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22])
+  data Sum23# a b c d e f g h i j k l m n o p q r s t u v w = ...
+  type Sum24# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23])
+  data Sum24# a b c d e f g h i j k l m n o p q r s t u v w x = ...
+  type Sum25# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24])
+  data Sum25# a b c d e f g h i j k l m n o p q r s t u v w x y = ...
+  type Sum26# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25])
+  data Sum26# a b c d e f g h i j k l m n o p q r s t u v w x y z = ...
+  type Sum27# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26])
+  data Sum27# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 = ...
+  type Sum28# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27])
+  data Sum28# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 = ...
+  type Sum29# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28])
+  data Sum29# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 = ...
+  type Sum3# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE (GHC.Types.SumRep [k0, k1, k2])
+  data Sum3# a b c = ...
+  type Sum30# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29])
+  data Sum30# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 = ...
+  type Sum31# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30])
+  data Sum31# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 = ...
+  type Sum32# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31])
+  data Sum32# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 = ...
+  type Sum33# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32])
+  data Sum33# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 = ...
+  type Sum34# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33])
+  data Sum34# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 = ...
+  type Sum35# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34])
+  data Sum35# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 = ...
+  type Sum36# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35])
+  data Sum36# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 = ...
+  type Sum37# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36])
+  data Sum37# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 = ...
+  type Sum38# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE k37 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37])
+  data Sum38# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 = ...
+  type Sum39# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE k37 -> TYPE k38 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38])
+  data Sum39# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 = ...
+  type Sum4# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3])
+  data Sum4# a b c d = ...
+  type Sum40# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39])
+  data Sum40# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 = ...
+  type Sum41# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40])
+  data Sum41# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 = ...
+  type Sum42# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41])
+  data Sum42# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 = ...
+  type Sum43# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42])
+  data Sum43# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 = ...
+  type Sum44# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43])
+  data Sum44# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 = ...
+  type Sum45# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44])
+  data Sum45# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 = ...
+  type Sum46# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45])
+  data Sum46# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 = ...
+  type Sum47# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46])
+  data Sum47# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 = ...
+  type Sum48# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47])
+  data Sum48# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 = ...
+  type Sum49# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48])
+  data Sum49# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 = ...
+  type Sum5# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4])
+  data Sum5# a b c d e = ...
+  type Sum50# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49])
+  data Sum50# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 = ...
+  type Sum51# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50])
+  data Sum51# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 = ...
+  type Sum52# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51])
+  data Sum52# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 = ...
+  type Sum53# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52])
+  data Sum53# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 = ...
+  type Sum54# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53])
+  data Sum54# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 = ...
+  type Sum55# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54])
+  data Sum55# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 = ...
+  type Sum56# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55])
+  data Sum56# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 = ...
+  type Sum57# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56])
+  data Sum57# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 = ...
+  type Sum58# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57])
+  data Sum58# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 = ...
+  type Sum59# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE k58
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58])
+  data Sum59# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 = ...
+  type Sum6# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5])
+  data Sum6# a b c d e f = ...
+  type Sum60# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE k58
+                 -> TYPE k59
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59])
+  data Sum60# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 = ...
+  type Sum61# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE k58
+                 -> TYPE k59
+                 -> TYPE k60
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60])
+  data Sum61# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 = ...
+  type Sum62# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep) (k61 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE k58
+                 -> TYPE k59
+                 -> TYPE k60
+                 -> TYPE k61
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61])
+  data Sum62# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 = ...
+  type Sum63# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep) (k61 :: GHC.Types.RuntimeRep) (k62 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE k58
+                 -> TYPE k59
+                 -> TYPE k60
+                 -> TYPE k61
+                 -> TYPE k62
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62])
+  data Sum63# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 = ...
+  type Sum7# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6])
+  data Sum7# a b c d e f g = ...
+  type Sum8# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7])
+  data Sum8# a b c d e f g h = ...
+  type Sum9# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8])
+  data Sum9# a b c d e f g h i = ...
+
+module Data.Tuple.Experimental where
+  -- Safety: Trustworthy
+  type CSolo :: Constraint -> Constraint
+  class a => CSolo a
+    {-# MINIMAL #-}
+  type CTuple0 :: Constraint
+  type CTuple0 = () :: Constraint :: Constraint
+  type CTuple1 :: Constraint -> Constraint
+  type CTuple1 = CSolo :: Constraint -> Constraint
+  type CTuple10 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j) => CTuple10 a b c d e f g h i j
+    {-# MINIMAL #-}
+  type CTuple11 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k) => CTuple11 a b c d e f g h i j k
+    {-# MINIMAL #-}
+  type CTuple12 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l) => CTuple12 a b c d e f g h i j k l
+    {-# MINIMAL #-}
+  type CTuple13 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m) => CTuple13 a b c d e f g h i j k l m
+    {-# MINIMAL #-}
+  type CTuple14 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n) => CTuple14 a b c d e f g h i j k l m n
+    {-# MINIMAL #-}
+  type CTuple15 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => CTuple15 a b c d e f g h i j k l m n o
+    {-# MINIMAL #-}
+  type CTuple16 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => CTuple16 a b c d e f g h i j k l m n o p
+    {-# MINIMAL #-}
+  type CTuple17 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) => CTuple17 a b c d e f g h i j k l m n o p q
+    {-# MINIMAL #-}
+  type CTuple18 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) => CTuple18 a b c d e f g h i j k l m n o p q r
+    {-# MINIMAL #-}
+  type CTuple19 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) => CTuple19 a b c d e f g h i j k l m n o p q r s
+    {-# MINIMAL #-}
+  type CTuple2 :: Constraint -> Constraint -> Constraint
+  class (a, b) => CTuple2 a b
+    {-# MINIMAL #-}
+  type CTuple20 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) => CTuple20 a b c d e f g h i j k l m n o p q r s t
+    {-# MINIMAL #-}
+  type CTuple21 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) => CTuple21 a b c d e f g h i j k l m n o p q r s t u
+    {-# MINIMAL #-}
+  type CTuple22 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) => CTuple22 a b c d e f g h i j k l m n o p q r s t u v
+    {-# MINIMAL #-}
+  type CTuple23 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) => CTuple23 a b c d e f g h i j k l m n o p q r s t u v w
+    {-# MINIMAL #-}
+  type CTuple24 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) => CTuple24 a b c d e f g h i j k l m n o p q r s t u v w x
+    {-# MINIMAL #-}
+  type CTuple25 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) => CTuple25 a b c d e f g h i j k l m n o p q r s t u v w x y
+    {-# MINIMAL #-}
+  type CTuple26 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) => CTuple26 a b c d e f g h i j k l m n o p q r s t u v w x y z
+    {-# MINIMAL #-}
+  type CTuple27 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26) => CTuple27 a b c d e f g h i j k l m n o p q r s t u v w x y z t26
+    {-# MINIMAL #-}
+  type CTuple28 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27) => CTuple28 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27
+    {-# MINIMAL #-}
+  type CTuple29 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28) => CTuple29 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28
+    {-# MINIMAL #-}
+  type CTuple3 :: Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c) => CTuple3 a b c
+    {-# MINIMAL #-}
+  type CTuple30 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29) => CTuple30 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29
+    {-# MINIMAL #-}
+  type CTuple31 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30) => CTuple31 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30
+    {-# MINIMAL #-}
+  type CTuple32 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31) => CTuple32 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31
+    {-# MINIMAL #-}
+  type CTuple33 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32) => CTuple33 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32
+    {-# MINIMAL #-}
+  type CTuple34 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33) => CTuple34 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33
+    {-# MINIMAL #-}
+  type CTuple35 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34) => CTuple35 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34
+    {-# MINIMAL #-}
+  type CTuple36 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35) => CTuple36 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35
+    {-# MINIMAL #-}
+  type CTuple37 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36) => CTuple37 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36
+    {-# MINIMAL #-}
+  type CTuple38 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37) => CTuple38 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37
+    {-# MINIMAL #-}
+  type CTuple39 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38) => CTuple39 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38
+    {-# MINIMAL #-}
+  type CTuple4 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d) => CTuple4 a b c d
+    {-# MINIMAL #-}
+  type CTuple40 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39) => CTuple40 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39
+    {-# MINIMAL #-}
+  type CTuple41 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40) => CTuple41 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40
+    {-# MINIMAL #-}
+  type CTuple42 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41) => CTuple42 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41
+    {-# MINIMAL #-}
+  type CTuple43 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42) => CTuple43 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42
+    {-# MINIMAL #-}
+  type CTuple44 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43) => CTuple44 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43
+    {-# MINIMAL #-}
+  type CTuple45 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44) => CTuple45 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44
+    {-# MINIMAL #-}
+  type CTuple46 :: Constraint
+                   -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45) => CTuple46 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45
+    {-# MINIMAL #-}
+  type CTuple47 :: Constraint
+                   -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46) => CTuple47 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46
+    {-# MINIMAL #-}
+  type CTuple48 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47) => CTuple48 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47
+    {-# MINIMAL #-}
+  type CTuple49 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48) => CTuple49 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48
+    {-# MINIMAL #-}
+  type CTuple5 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e) => CTuple5 a b c d e
+    {-# MINIMAL #-}
+  type CTuple50 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49) => CTuple50 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49
+    {-# MINIMAL #-}
+  type CTuple51 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50) => CTuple51 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50
+    {-# MINIMAL #-}
+  type CTuple52 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51) => CTuple52 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51
+    {-# MINIMAL #-}
+  type CTuple53 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52) => CTuple53 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52
+    {-# MINIMAL #-}
+  type CTuple54 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53) => CTuple54 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53
+    {-# MINIMAL #-}
+  type CTuple55 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54) => CTuple55 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54
+    {-# MINIMAL #-}
+  type CTuple56 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55) => CTuple56 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55
+    {-# MINIMAL #-}
+  type CTuple57 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56) => CTuple57 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56
+    {-# MINIMAL #-}
+  type CTuple58 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57) => CTuple58 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57
+    {-# MINIMAL #-}
+  type CTuple59 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58) => CTuple59 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58
+    {-# MINIMAL #-}
+  type CTuple6 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f) => CTuple6 a b c d e f
+    {-# MINIMAL #-}
+  type CTuple60 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59) => CTuple60 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59
+    {-# MINIMAL #-}
+  type CTuple61 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60) => CTuple61 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60
+    {-# MINIMAL #-}
+  type CTuple62 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61) => CTuple62 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61
+    {-# MINIMAL #-}
+  type CTuple63 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62) => CTuple63 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
+    {-# MINIMAL #-}
+  type CTuple64 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63) => CTuple64 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63
+    {-# MINIMAL #-}
+  type CTuple7 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g) => CTuple7 a b c d e f g
+    {-# MINIMAL #-}
+  type CTuple8 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h) => CTuple8 a b c d e f g h
+    {-# MINIMAL #-}
+  type CTuple9 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i) => CTuple9 a b c d e f g h i
+    {-# MINIMAL #-}
+  type CUnit :: Constraint
+  class CUnit
+    {-# MINIMAL #-}
+  pattern Solo :: forall a. a -> Solo a
+  type Solo :: * -> *
+  data Solo a = MkSolo a
+  type Solo# :: forall (k :: GHC.Types.RuntimeRep). TYPE k -> TYPE (GHC.Types.TupleRep '[k])
+  data Solo# a = ...
+  type Tuple0 :: *
+  type Tuple0 = ()
+  type Tuple0# :: GHC.Types.ZeroBitType
+  type Tuple0# = (# #) :: GHC.Types.ZeroBitType
+  type Tuple1 :: * -> *
+  type Tuple1 = Solo :: * -> *
+  type Tuple1# :: * -> TYPE (GHC.Types.TupleRep '[GHC.Types.LiftedRep])
+  type Tuple1# = Solo# :: * -> TYPE (GHC.Types.TupleRep '[GHC.Types.LiftedRep])
+  type Tuple10 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple10 a b c d e f g h i j = ...
+  type Tuple10# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9])
+  data Tuple10# a b c d e f g h i j = ...
+  type Tuple11 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple11 a b c d e f g h i j k = ...
+  type Tuple11# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10])
+  data Tuple11# a b c d e f g h i j k = ...
+  type Tuple12 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple12 a b c d e f g h i j k l = ...
+  type Tuple12# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11])
+  data Tuple12# a b c d e f g h i j k l = ...
+  type Tuple13 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple13 a b c d e f g h i j k l m = ...
+  type Tuple13# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12])
+  data Tuple13# a b c d e f g h i j k l m = ...
+  type Tuple14 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple14 a b c d e f g h i j k l m n = ...
+  type Tuple14# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13])
+  data Tuple14# a b c d e f g h i j k l m n = ...
+  type Tuple15 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple15 a b c d e f g h i j k l m n o = ...
+  type Tuple15# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14])
+  data Tuple15# a b c d e f g h i j k l m n o = ...
+  type Tuple16 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple16 a b c d e f g h i j k l m n o p = ...
+  type Tuple16# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15])
+  data Tuple16# a b c d e f g h i j k l m n o p = ...
+  type Tuple17 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple17 a b c d e f g h i j k l m n o p q = ...
+  type Tuple17# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16])
+  data Tuple17# a b c d e f g h i j k l m n o p q = ...
+  type Tuple18 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple18 a b c d e f g h i j k l m n o p q r = ...
+  type Tuple18# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17])
+  data Tuple18# a b c d e f g h i j k l m n o p q r = ...
+  type Tuple19 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple19 a b c d e f g h i j k l m n o p q r s = ...
+  type Tuple19# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18])
+  data Tuple19# a b c d e f g h i j k l m n o p q r s = ...
+  type Tuple2 :: * -> * -> *
+  data Tuple2 a b = ...
+  type Tuple2# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE (GHC.Types.TupleRep [k0, k1])
+  data Tuple2# a b = ...
+  type Tuple20 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple20 a b c d e f g h i j k l m n o p q r s t = ...
+  type Tuple20# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19])
+  data Tuple20# a b c d e f g h i j k l m n o p q r s t = ...
+  type Tuple21 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple21 a b c d e f g h i j k l m n o p q r s t u = ...
+  type Tuple21# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20])
+  data Tuple21# a b c d e f g h i j k l m n o p q r s t u = ...
+  type Tuple22 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple22 a b c d e f g h i j k l m n o p q r s t u v = ...
+  type Tuple22# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21])
+  data Tuple22# a b c d e f g h i j k l m n o p q r s t u v = ...
+  type Tuple23 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple23 a b c d e f g h i j k l m n o p q r s t u v w = ...
+  type Tuple23# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22])
+  data Tuple23# a b c d e f g h i j k l m n o p q r s t u v w = ...
+  type Tuple24 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple24 a b c d e f g h i j k l m n o p q r s t u v w x = ...
+  type Tuple24# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23])
+  data Tuple24# a b c d e f g h i j k l m n o p q r s t u v w x = ...
+  type Tuple25 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple25 a b c d e f g h i j k l m n o p q r s t u v w x y = ...
+  type Tuple25# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24])
+  data Tuple25# a b c d e f g h i j k l m n o p q r s t u v w x y = ...
+  type Tuple26 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple26 a b c d e f g h i j k l m n o p q r s t u v w x y z = ...
+  type Tuple26# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25])
+  data Tuple26# a b c d e f g h i j k l m n o p q r s t u v w x y z = ...
+  type Tuple27 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple27 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 = ...
+  type Tuple27# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26])
+  data Tuple27# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 = ...
+  type Tuple28 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple28 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 = ...
+  type Tuple28# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27])
+  data Tuple28# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 = ...
+  type Tuple29 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple29 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 = ...
+  type Tuple29# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28])
+  data Tuple29# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 = ...
+  type Tuple3 :: * -> * -> * -> *
+  data Tuple3 a b c = ...
+  type Tuple3# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE (GHC.Types.TupleRep [k0, k1, k2])
+  data Tuple3# a b c = ...
+  type Tuple30 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple30 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 = ...
+  type Tuple30# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29])
+  data Tuple30# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 = ...
+  type Tuple31 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple31 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 = ...
+  type Tuple31# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30])
+  data Tuple31# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 = ...
+  type Tuple32 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple32 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 = ...
+  type Tuple32# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31])
+  data Tuple32# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 = ...
+  type Tuple33 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple33 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 = ...
+  type Tuple33# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32])
+  data Tuple33# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 = ...
+  type Tuple34 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple34 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 = ...
+  type Tuple34# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33])
+  data Tuple34# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 = ...
+  type Tuple35 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple35 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 = ...
+  type Tuple35# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34])
+  data Tuple35# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 = ...
+  type Tuple36 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple36 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 = ...
+  type Tuple36# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35])
+  data Tuple36# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 = ...
+  type Tuple37 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple37 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 = ...
+  type Tuple37# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36])
+  data Tuple37# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 = ...
+  type Tuple38 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple38 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 = ...
+  type Tuple38# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE k37 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37])
+  data Tuple38# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 = ...
+  type Tuple39 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple39 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 = ...
+  type Tuple39# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE k37 -> TYPE k38 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38])
+  data Tuple39# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 = ...
+  type Tuple4 :: * -> * -> * -> * -> *
+  data Tuple4 a b c d = ...
+  type Tuple4# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3])
+  data Tuple4# a b c d = ...
+  type Tuple40 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple40 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 = ...
+  type Tuple40# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39])
+  data Tuple40# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 = ...
+  type Tuple41 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple41 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 = ...
+  type Tuple41# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40])
+  data Tuple41# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 = ...
+  type Tuple42 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple42 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 = ...
+  type Tuple42# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41])
+  data Tuple42# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 = ...
+  type Tuple43 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple43 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 = ...
+  type Tuple43# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42])
+  data Tuple43# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 = ...
+  type Tuple44 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple44 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 = ...
+  type Tuple44# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43])
+  data Tuple44# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 = ...
+  type Tuple45 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple45 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 = ...
+  type Tuple45# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44])
+  data Tuple45# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 = ...
+  type Tuple46 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple46 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 = ...
+  type Tuple46# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45])
+  data Tuple46# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 = ...
+  type Tuple47 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple47 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 = ...
+  type Tuple47# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46])
+  data Tuple47# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 = ...
+  type Tuple48 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple48 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 = ...
+  type Tuple48# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47])
+  data Tuple48# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 = ...
+  type Tuple49 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple49 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 = ...
+  type Tuple49# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48])
+  data Tuple49# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 = ...
+  type Tuple5 :: * -> * -> * -> * -> * -> *
+  data Tuple5 a b c d e = ...
+  type Tuple5# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4])
+  data Tuple5# a b c d e = ...
+  type Tuple50 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple50 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 = ...
+  type Tuple50# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49])
+  data Tuple50# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 = ...
+  type Tuple51 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple51 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 = ...
+  type Tuple51# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50])
+  data Tuple51# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 = ...
+  type Tuple52 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple52 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 = ...
+  type Tuple52# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51])
+  data Tuple52# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 = ...
+  type Tuple53 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple53 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 = ...
+  type Tuple53# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52])
+  data Tuple53# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 = ...
+  type Tuple54 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple54 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 = ...
+  type Tuple54# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53])
+  data Tuple54# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 = ...
+  type Tuple55 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple55 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 = ...
+  type Tuple55# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54])
+  data Tuple55# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 = ...
+  type Tuple56 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple56 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 = ...
+  type Tuple56# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55])
+  data Tuple56# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 = ...
+  type Tuple57 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple57 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 = ...
+  type Tuple57# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56])
+  data Tuple57# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 = ...
+  type Tuple58 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple58 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 = ...
+  type Tuple58# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57])
+  data Tuple58# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 = ...
+  type Tuple59 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple59 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 = ...
+  type Tuple59# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58])
+  data Tuple59# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 = ...
+  type Tuple6 :: * -> * -> * -> * -> * -> * -> *
+  data Tuple6 a b c d e f = ...
+  type Tuple6# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5])
+  data Tuple6# a b c d e f = ...
+  type Tuple60 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple60 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 = ...
+  type Tuple60# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE k59
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59])
+  data Tuple60# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 = ...
+  type Tuple61 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple61 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 = ...
+  type Tuple61# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE k59
+                   -> TYPE k60
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60])
+  data Tuple61# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 = ...
+  type Tuple62 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple62 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 = ...
+  type Tuple62# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep) (k61 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE k59
+                   -> TYPE k60
+                   -> TYPE k61
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61])
+  data Tuple62# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 = ...
+  type Tuple63 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple63 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 = ...
+  type Tuple63# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep) (k61 :: GHC.Types.RuntimeRep) (k62 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE k59
+                   -> TYPE k60
+                   -> TYPE k61
+                   -> TYPE k62
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62])
+  data Tuple63# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 = ...
+  type Tuple64 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple64 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63 = ...
+  type Tuple64# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep) (k61 :: GHC.Types.RuntimeRep) (k62 :: GHC.Types.RuntimeRep) (k63 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE k59
+                   -> TYPE k60
+                   -> TYPE k61
+                   -> TYPE k62
+                   -> TYPE k63
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63])
+  data Tuple64# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63 = ...
+  type Tuple7 :: * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple7 a b c d e f g = ...
+  type Tuple7# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6])
+  data Tuple7# a b c d e f g = ...
+  type Tuple8 :: * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple8 a b c d e f g h = ...
+  type Tuple8# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7])
+  data Tuple8# a b c d e f g h = ...
+  type Tuple9 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple9 a b c d e f g h i = ...
+  type Tuple9# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8])
+  data Tuple9# a b c d e f g h i = ...
+  type Unit :: *
+  data Unit = ...
+  type Unit# :: GHC.Types.ZeroBitType
+  data Unit# = ...
+  getSolo :: forall a. Solo a -> a
+
 module GHC.Profiling.Eras where
   -- Safety: Trustworthy
   getUserEra :: GHC.Types.IO GHC.Types.Word
   incrementUserEra :: GHC.Types.Word -> GHC.Types.IO GHC.Types.Word
   setUserEra :: GHC.Types.Word -> GHC.Types.IO ()
 
+module Prelude.Experimental where
+  -- Safety: Trustworthy
+  type CSolo :: Constraint -> Constraint
+  class a => CSolo a
+    {-# MINIMAL #-}
+  type CTuple0 :: Constraint
+  type CTuple0 = () :: Constraint :: Constraint
+  type CTuple1 :: Constraint -> Constraint
+  type CTuple1 = CSolo :: Constraint -> Constraint
+  type CTuple10 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j) => CTuple10 a b c d e f g h i j
+    {-# MINIMAL #-}
+  type CTuple11 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k) => CTuple11 a b c d e f g h i j k
+    {-# MINIMAL #-}
+  type CTuple12 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l) => CTuple12 a b c d e f g h i j k l
+    {-# MINIMAL #-}
+  type CTuple13 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m) => CTuple13 a b c d e f g h i j k l m
+    {-# MINIMAL #-}
+  type CTuple14 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n) => CTuple14 a b c d e f g h i j k l m n
+    {-# MINIMAL #-}
+  type CTuple15 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => CTuple15 a b c d e f g h i j k l m n o
+    {-# MINIMAL #-}
+  type CTuple16 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => CTuple16 a b c d e f g h i j k l m n o p
+    {-# MINIMAL #-}
+  type CTuple17 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) => CTuple17 a b c d e f g h i j k l m n o p q
+    {-# MINIMAL #-}
+  type CTuple18 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) => CTuple18 a b c d e f g h i j k l m n o p q r
+    {-# MINIMAL #-}
+  type CTuple19 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) => CTuple19 a b c d e f g h i j k l m n o p q r s
+    {-# MINIMAL #-}
+  type CTuple2 :: Constraint -> Constraint -> Constraint
+  class (a, b) => CTuple2 a b
+    {-# MINIMAL #-}
+  type CTuple20 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) => CTuple20 a b c d e f g h i j k l m n o p q r s t
+    {-# MINIMAL #-}
+  type CTuple21 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) => CTuple21 a b c d e f g h i j k l m n o p q r s t u
+    {-# MINIMAL #-}
+  type CTuple22 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) => CTuple22 a b c d e f g h i j k l m n o p q r s t u v
+    {-# MINIMAL #-}
+  type CTuple23 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) => CTuple23 a b c d e f g h i j k l m n o p q r s t u v w
+    {-# MINIMAL #-}
+  type CTuple24 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) => CTuple24 a b c d e f g h i j k l m n o p q r s t u v w x
+    {-# MINIMAL #-}
+  type CTuple25 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) => CTuple25 a b c d e f g h i j k l m n o p q r s t u v w x y
+    {-# MINIMAL #-}
+  type CTuple26 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) => CTuple26 a b c d e f g h i j k l m n o p q r s t u v w x y z
+    {-# MINIMAL #-}
+  type CTuple27 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26) => CTuple27 a b c d e f g h i j k l m n o p q r s t u v w x y z t26
+    {-# MINIMAL #-}
+  type CTuple28 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27) => CTuple28 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27
+    {-# MINIMAL #-}
+  type CTuple29 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28) => CTuple29 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28
+    {-# MINIMAL #-}
+  type CTuple3 :: Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c) => CTuple3 a b c
+    {-# MINIMAL #-}
+  type CTuple30 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29) => CTuple30 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29
+    {-# MINIMAL #-}
+  type CTuple31 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30) => CTuple31 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30
+    {-# MINIMAL #-}
+  type CTuple32 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31) => CTuple32 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31
+    {-# MINIMAL #-}
+  type CTuple33 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32) => CTuple33 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32
+    {-# MINIMAL #-}
+  type CTuple34 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33) => CTuple34 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33
+    {-# MINIMAL #-}
+  type CTuple35 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34) => CTuple35 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34
+    {-# MINIMAL #-}
+  type CTuple36 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35) => CTuple36 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35
+    {-# MINIMAL #-}
+  type CTuple37 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36) => CTuple37 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36
+    {-# MINIMAL #-}
+  type CTuple38 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37) => CTuple38 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37
+    {-# MINIMAL #-}
+  type CTuple39 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38) => CTuple39 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38
+    {-# MINIMAL #-}
+  type CTuple4 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d) => CTuple4 a b c d
+    {-# MINIMAL #-}
+  type CTuple40 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39) => CTuple40 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39
+    {-# MINIMAL #-}
+  type CTuple41 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40) => CTuple41 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40
+    {-# MINIMAL #-}
+  type CTuple42 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41) => CTuple42 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41
+    {-# MINIMAL #-}
+  type CTuple43 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42) => CTuple43 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42
+    {-# MINIMAL #-}
+  type CTuple44 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43) => CTuple44 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43
+    {-# MINIMAL #-}
+  type CTuple45 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44) => CTuple45 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44
+    {-# MINIMAL #-}
+  type CTuple46 :: Constraint
+                   -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45) => CTuple46 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45
+    {-# MINIMAL #-}
+  type CTuple47 :: Constraint
+                   -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46) => CTuple47 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46
+    {-# MINIMAL #-}
+  type CTuple48 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47) => CTuple48 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47
+    {-# MINIMAL #-}
+  type CTuple49 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48) => CTuple49 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48
+    {-# MINIMAL #-}
+  type CTuple5 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e) => CTuple5 a b c d e
+    {-# MINIMAL #-}
+  type CTuple50 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49) => CTuple50 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49
+    {-# MINIMAL #-}
+  type CTuple51 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50) => CTuple51 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50
+    {-# MINIMAL #-}
+  type CTuple52 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51) => CTuple52 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51
+    {-# MINIMAL #-}
+  type CTuple53 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52) => CTuple53 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52
+    {-# MINIMAL #-}
+  type CTuple54 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53) => CTuple54 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53
+    {-# MINIMAL #-}
+  type CTuple55 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54) => CTuple55 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54
+    {-# MINIMAL #-}
+  type CTuple56 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55) => CTuple56 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55
+    {-# MINIMAL #-}
+  type CTuple57 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56) => CTuple57 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56
+    {-# MINIMAL #-}
+  type CTuple58 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57) => CTuple58 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57
+    {-# MINIMAL #-}
+  type CTuple59 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58) => CTuple59 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58
+    {-# MINIMAL #-}
+  type CTuple6 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f) => CTuple6 a b c d e f
+    {-# MINIMAL #-}
+  type CTuple60 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59) => CTuple60 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59
+    {-# MINIMAL #-}
+  type CTuple61 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60) => CTuple61 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60
+    {-# MINIMAL #-}
+  type CTuple62 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61) => CTuple62 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61
+    {-# MINIMAL #-}
+  type CTuple63 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62) => CTuple63 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62
+    {-# MINIMAL #-}
+  type CTuple64 :: Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+                   -> Constraint
+  class (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63) => CTuple64 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63
+    {-# MINIMAL #-}
+  type CTuple7 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g) => CTuple7 a b c d e f g
+    {-# MINIMAL #-}
+  type CTuple8 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h) => CTuple8 a b c d e f g h
+    {-# MINIMAL #-}
+  type CTuple9 :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint
+  class (a, b, c, d, e, f, g, h, i) => CTuple9 a b c d e f g h i
+    {-# MINIMAL #-}
+  type CUnit :: Constraint
+  class CUnit
+    {-# MINIMAL #-}
+  type List :: * -> *
+  data List a = ...
+  pattern Solo :: forall a. a -> Solo a
+  type Solo :: * -> *
+  data Solo a = ...
+  type Solo# :: forall (k :: GHC.Types.RuntimeRep). TYPE k -> TYPE (GHC.Types.TupleRep '[k])
+  data Solo# a = ...
+  type Sum10# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9])
+  data Sum10# a b c d e f g h i j = ...
+  type Sum11# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10])
+  data Sum11# a b c d e f g h i j k = ...
+  type Sum12# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11])
+  data Sum12# a b c d e f g h i j k l = ...
+  type Sum13# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12])
+  data Sum13# a b c d e f g h i j k l m = ...
+  type Sum14# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13])
+  data Sum14# a b c d e f g h i j k l m n = ...
+  type Sum15# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14])
+  data Sum15# a b c d e f g h i j k l m n o = ...
+  type Sum16# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15])
+  data Sum16# a b c d e f g h i j k l m n o p = ...
+  type Sum17# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16])
+  data Sum17# a b c d e f g h i j k l m n o p q = ...
+  type Sum18# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17])
+  data Sum18# a b c d e f g h i j k l m n o p q r = ...
+  type Sum19# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18])
+  data Sum19# a b c d e f g h i j k l m n o p q r s = ...
+  type Sum2# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE (GHC.Types.SumRep [k0, k1])
+  data Sum2# a b = ...
+  type Sum20# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19])
+  data Sum20# a b c d e f g h i j k l m n o p q r s t = ...
+  type Sum21# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20])
+  data Sum21# a b c d e f g h i j k l m n o p q r s t u = ...
+  type Sum22# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21])
+  data Sum22# a b c d e f g h i j k l m n o p q r s t u v = ...
+  type Sum23# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22])
+  data Sum23# a b c d e f g h i j k l m n o p q r s t u v w = ...
+  type Sum24# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23])
+  data Sum24# a b c d e f g h i j k l m n o p q r s t u v w x = ...
+  type Sum25# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24])
+  data Sum25# a b c d e f g h i j k l m n o p q r s t u v w x y = ...
+  type Sum26# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25])
+  data Sum26# a b c d e f g h i j k l m n o p q r s t u v w x y z = ...
+  type Sum27# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26])
+  data Sum27# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 = ...
+  type Sum28# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27])
+  data Sum28# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 = ...
+  type Sum29# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28])
+  data Sum29# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 = ...
+  type Sum3# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE (GHC.Types.SumRep [k0, k1, k2])
+  data Sum3# a b c = ...
+  type Sum30# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29])
+  data Sum30# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 = ...
+  type Sum31# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30])
+  data Sum31# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 = ...
+  type Sum32# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31])
+  data Sum32# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 = ...
+  type Sum33# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32])
+  data Sum33# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 = ...
+  type Sum34# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33])
+  data Sum34# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 = ...
+  type Sum35# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34])
+  data Sum35# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 = ...
+  type Sum36# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35])
+  data Sum36# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 = ...
+  type Sum37# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36])
+  data Sum37# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 = ...
+  type Sum38# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE k37 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37])
+  data Sum38# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 = ...
+  type Sum39# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep).
+                 TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE k37 -> TYPE k38 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38])
+  data Sum39# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 = ...
+  type Sum4# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3])
+  data Sum4# a b c d = ...
+  type Sum40# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39])
+  data Sum40# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 = ...
+  type Sum41# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40])
+  data Sum41# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 = ...
+  type Sum42# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41])
+  data Sum42# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 = ...
+  type Sum43# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42])
+  data Sum43# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 = ...
+  type Sum44# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43])
+  data Sum44# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 = ...
+  type Sum45# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44])
+  data Sum45# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 = ...
+  type Sum46# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45])
+  data Sum46# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 = ...
+  type Sum47# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46])
+  data Sum47# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 = ...
+  type Sum48# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47])
+  data Sum48# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 = ...
+  type Sum49# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48])
+  data Sum49# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 = ...
+  type Sum5# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4])
+  data Sum5# a b c d e = ...
+  type Sum50# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49])
+  data Sum50# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 = ...
+  type Sum51# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50])
+  data Sum51# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 = ...
+  type Sum52# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51])
+  data Sum52# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 = ...
+  type Sum53# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52])
+  data Sum53# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 = ...
+  type Sum54# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53])
+  data Sum54# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 = ...
+  type Sum55# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54])
+  data Sum55# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 = ...
+  type Sum56# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55])
+  data Sum56# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 = ...
+  type Sum57# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56])
+  data Sum57# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 = ...
+  type Sum58# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57])
+  data Sum58# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 = ...
+  type Sum59# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE k58
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58])
+  data Sum59# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 = ...
+  type Sum6# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5])
+  data Sum6# a b c d e f = ...
+  type Sum60# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE k58
+                 -> TYPE k59
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59])
+  data Sum60# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 = ...
+  type Sum61# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE k58
+                 -> TYPE k59
+                 -> TYPE k60
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60])
+  data Sum61# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 = ...
+  type Sum62# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep) (k61 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE k58
+                 -> TYPE k59
+                 -> TYPE k60
+                 -> TYPE k61
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61])
+  data Sum62# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 = ...
+  type Sum63# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                        (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                        (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep) (k61 :: GHC.Types.RuntimeRep) (k62 :: GHC.Types.RuntimeRep).
+                 TYPE k0
+                 -> TYPE k1
+                 -> TYPE k2
+                 -> TYPE k3
+                 -> TYPE k4
+                 -> TYPE k5
+                 -> TYPE k6
+                 -> TYPE k7
+                 -> TYPE k8
+                 -> TYPE k9
+                 -> TYPE k10
+                 -> TYPE k11
+                 -> TYPE k12
+                 -> TYPE k13
+                 -> TYPE k14
+                 -> TYPE k15
+                 -> TYPE k16
+                 -> TYPE k17
+                 -> TYPE k18
+                 -> TYPE k19
+                 -> TYPE k20
+                 -> TYPE k21
+                 -> TYPE k22
+                 -> TYPE k23
+                 -> TYPE k24
+                 -> TYPE k25
+                 -> TYPE k26
+                 -> TYPE k27
+                 -> TYPE k28
+                 -> TYPE k29
+                 -> TYPE k30
+                 -> TYPE k31
+                 -> TYPE k32
+                 -> TYPE k33
+                 -> TYPE k34
+                 -> TYPE k35
+                 -> TYPE k36
+                 -> TYPE k37
+                 -> TYPE k38
+                 -> TYPE k39
+                 -> TYPE k40
+                 -> TYPE k41
+                 -> TYPE k42
+                 -> TYPE k43
+                 -> TYPE k44
+                 -> TYPE k45
+                 -> TYPE k46
+                 -> TYPE k47
+                 -> TYPE k48
+                 -> TYPE k49
+                 -> TYPE k50
+                 -> TYPE k51
+                 -> TYPE k52
+                 -> TYPE k53
+                 -> TYPE k54
+                 -> TYPE k55
+                 -> TYPE k56
+                 -> TYPE k57
+                 -> TYPE k58
+                 -> TYPE k59
+                 -> TYPE k60
+                 -> TYPE k61
+                 -> TYPE k62
+                 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62])
+  data Sum63# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 = ...
+  type Sum7# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6])
+  data Sum7# a b c d e f g = ...
+  type Sum8# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7])
+  data Sum8# a b c d e f g h = ...
+  type Sum9# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE (GHC.Types.SumRep [k0, k1, k2, k3, k4, k5, k6, k7, k8])
+  data Sum9# a b c d e f g h i = ...
+  type Tuple0 :: *
+  type Tuple0 = ()
+  type Tuple0# :: GHC.Types.ZeroBitType
+  type Tuple0# = (# #) :: GHC.Types.ZeroBitType
+  type Tuple1 :: * -> *
+  type Tuple1 = Solo :: * -> *
+  type Tuple1# :: * -> TYPE (GHC.Types.TupleRep '[GHC.Types.LiftedRep])
+  type Tuple1# = Solo# :: * -> TYPE (GHC.Types.TupleRep '[GHC.Types.LiftedRep])
+  type Tuple10 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple10 a b c d e f g h i j = ...
+  type Tuple10# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9])
+  data Tuple10# a b c d e f g h i j = ...
+  type Tuple11 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple11 a b c d e f g h i j k = ...
+  type Tuple11# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10])
+  data Tuple11# a b c d e f g h i j k = ...
+  type Tuple12 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple12 a b c d e f g h i j k l = ...
+  type Tuple12# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11])
+  data Tuple12# a b c d e f g h i j k l = ...
+  type Tuple13 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple13 a b c d e f g h i j k l m = ...
+  type Tuple13# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12])
+  data Tuple13# a b c d e f g h i j k l m = ...
+  type Tuple14 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple14 a b c d e f g h i j k l m n = ...
+  type Tuple14# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13])
+  data Tuple14# a b c d e f g h i j k l m n = ...
+  type Tuple15 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple15 a b c d e f g h i j k l m n o = ...
+  type Tuple15# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14])
+  data Tuple15# a b c d e f g h i j k l m n o = ...
+  type Tuple16 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple16 a b c d e f g h i j k l m n o p = ...
+  type Tuple16# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15])
+  data Tuple16# a b c d e f g h i j k l m n o p = ...
+  type Tuple17 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple17 a b c d e f g h i j k l m n o p q = ...
+  type Tuple17# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16])
+  data Tuple17# a b c d e f g h i j k l m n o p q = ...
+  type Tuple18 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple18 a b c d e f g h i j k l m n o p q r = ...
+  type Tuple18# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17])
+  data Tuple18# a b c d e f g h i j k l m n o p q r = ...
+  type Tuple19 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple19 a b c d e f g h i j k l m n o p q r s = ...
+  type Tuple19# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18])
+  data Tuple19# a b c d e f g h i j k l m n o p q r s = ...
+  type Tuple2 :: * -> * -> *
+  data Tuple2 a b = ...
+  type Tuple2# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE (GHC.Types.TupleRep [k0, k1])
+  data Tuple2# a b = ...
+  type Tuple20 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple20 a b c d e f g h i j k l m n o p q r s t = ...
+  type Tuple20# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19])
+  data Tuple20# a b c d e f g h i j k l m n o p q r s t = ...
+  type Tuple21 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple21 a b c d e f g h i j k l m n o p q r s t u = ...
+  type Tuple21# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20])
+  data Tuple21# a b c d e f g h i j k l m n o p q r s t u = ...
+  type Tuple22 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple22 a b c d e f g h i j k l m n o p q r s t u v = ...
+  type Tuple22# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21])
+  data Tuple22# a b c d e f g h i j k l m n o p q r s t u v = ...
+  type Tuple23 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple23 a b c d e f g h i j k l m n o p q r s t u v w = ...
+  type Tuple23# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22])
+  data Tuple23# a b c d e f g h i j k l m n o p q r s t u v w = ...
+  type Tuple24 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple24 a b c d e f g h i j k l m n o p q r s t u v w x = ...
+  type Tuple24# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23])
+  data Tuple24# a b c d e f g h i j k l m n o p q r s t u v w x = ...
+  type Tuple25 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple25 a b c d e f g h i j k l m n o p q r s t u v w x y = ...
+  type Tuple25# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24])
+  data Tuple25# a b c d e f g h i j k l m n o p q r s t u v w x y = ...
+  type Tuple26 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple26 a b c d e f g h i j k l m n o p q r s t u v w x y z = ...
+  type Tuple26# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25])
+  data Tuple26# a b c d e f g h i j k l m n o p q r s t u v w x y z = ...
+  type Tuple27 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple27 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 = ...
+  type Tuple27# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26])
+  data Tuple27# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 = ...
+  type Tuple28 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple28 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 = ...
+  type Tuple28# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27])
+  data Tuple28# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 = ...
+  type Tuple29 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple29 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 = ...
+  type Tuple29# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28])
+  data Tuple29# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 = ...
+  type Tuple3 :: * -> * -> * -> *
+  data Tuple3 a b c = ...
+  type Tuple3# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE (GHC.Types.TupleRep [k0, k1, k2])
+  data Tuple3# a b c = ...
+  type Tuple30 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple30 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 = ...
+  type Tuple30# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29])
+  data Tuple30# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 = ...
+  type Tuple31 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple31 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 = ...
+  type Tuple31# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30])
+  data Tuple31# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 = ...
+  type Tuple32 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple32 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 = ...
+  type Tuple32# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31])
+  data Tuple32# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 = ...
+  type Tuple33 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple33 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 = ...
+  type Tuple33# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32])
+  data Tuple33# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 = ...
+  type Tuple34 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple34 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 = ...
+  type Tuple34# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33])
+  data Tuple34# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 = ...
+  type Tuple35 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple35 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 = ...
+  type Tuple35# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34])
+  data Tuple35# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 = ...
+  type Tuple36 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple36 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 = ...
+  type Tuple36# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35])
+  data Tuple36# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 = ...
+  type Tuple37 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple37 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 = ...
+  type Tuple37# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36])
+  data Tuple37# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 = ...
+  type Tuple38 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple38 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 = ...
+  type Tuple38# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep).
+                   TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE k37 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37])
+  data Tuple38# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 = ...
+  type Tuple39 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple39 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 = ...
+  type Tuple39# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE k9 -> TYPE k10 -> TYPE k11 -> TYPE k12 -> TYPE k13 -> TYPE k14 -> TYPE k15 -> TYPE k16 -> TYPE k17 -> TYPE k18 -> TYPE k19 -> TYPE k20 -> TYPE k21 -> TYPE k22 -> TYPE k23 -> TYPE k24 -> TYPE k25 -> TYPE k26 -> TYPE k27 -> TYPE k28 -> TYPE k29 -> TYPE k30 -> TYPE k31 -> TYPE k32 -> TYPE k33 -> TYPE k34 -> TYPE k35 -> TYPE k36 -> TYPE k37 -> TYPE k38 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38])
+  data Tuple39# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 = ...
+  type Tuple4 :: * -> * -> * -> * -> *
+  data Tuple4 a b c d = ...
+  type Tuple4# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3])
+  data Tuple4# a b c d = ...
+  type Tuple40 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple40 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 = ...
+  type Tuple40# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39])
+  data Tuple40# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 = ...
+  type Tuple41 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple41 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 = ...
+  type Tuple41# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40])
+  data Tuple41# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 = ...
+  type Tuple42 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple42 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 = ...
+  type Tuple42# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41])
+  data Tuple42# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 = ...
+  type Tuple43 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple43 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 = ...
+  type Tuple43# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42])
+  data Tuple43# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 = ...
+  type Tuple44 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple44 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 = ...
+  type Tuple44# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43])
+  data Tuple44# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 = ...
+  type Tuple45 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple45 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 = ...
+  type Tuple45# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44])
+  data Tuple45# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 = ...
+  type Tuple46 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple46 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 = ...
+  type Tuple46# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45])
+  data Tuple46# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 = ...
+  type Tuple47 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple47 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 = ...
+  type Tuple47# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46])
+  data Tuple47# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 = ...
+  type Tuple48 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple48 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 = ...
+  type Tuple48# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47])
+  data Tuple48# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 = ...
+  type Tuple49 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple49 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 = ...
+  type Tuple49# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48])
+  data Tuple49# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 = ...
+  type Tuple5 :: * -> * -> * -> * -> * -> *
+  data Tuple5 a b c d e = ...
+  type Tuple5# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4])
+  data Tuple5# a b c d e = ...
+  type Tuple50 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple50 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 = ...
+  type Tuple50# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49])
+  data Tuple50# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 = ...
+  type Tuple51 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple51 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 = ...
+  type Tuple51# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50])
+  data Tuple51# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 = ...
+  type Tuple52 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple52 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 = ...
+  type Tuple52# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51])
+  data Tuple52# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 = ...
+  type Tuple53 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple53 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 = ...
+  type Tuple53# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52])
+  data Tuple53# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 = ...
+  type Tuple54 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple54 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 = ...
+  type Tuple54# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53])
+  data Tuple54# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 = ...
+  type Tuple55 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple55 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 = ...
+  type Tuple55# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54])
+  data Tuple55# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 = ...
+  type Tuple56 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple56 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 = ...
+  type Tuple56# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55])
+  data Tuple56# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 = ...
+  type Tuple57 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple57 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 = ...
+  type Tuple57# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56])
+  data Tuple57# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 = ...
+  type Tuple58 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple58 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 = ...
+  type Tuple58# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57])
+  data Tuple58# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 = ...
+  type Tuple59 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple59 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 = ...
+  type Tuple59# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58])
+  data Tuple59# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 = ...
+  type Tuple6 :: * -> * -> * -> * -> * -> * -> *
+  data Tuple6 a b c d e f = ...
+  type Tuple6# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5])
+  data Tuple6# a b c d e f = ...
+  type Tuple60 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple60 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 = ...
+  type Tuple60# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE k59
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59])
+  data Tuple60# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 = ...
+  type Tuple61 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple61 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 = ...
+  type Tuple61# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE k59
+                   -> TYPE k60
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60])
+  data Tuple61# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 = ...
+  type Tuple62 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple62 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 = ...
+  type Tuple62# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep) (k61 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE k59
+                   -> TYPE k60
+                   -> TYPE k61
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61])
+  data Tuple62# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 = ...
+  type Tuple63 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple63 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 = ...
+  type Tuple63# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep) (k61 :: GHC.Types.RuntimeRep) (k62 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE k59
+                   -> TYPE k60
+                   -> TYPE k61
+                   -> TYPE k62
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62])
+  data Tuple63# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 = ...
+  type Tuple64 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple64 a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63 = ...
+  type Tuple64# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep) (k9 :: GHC.Types.RuntimeRep) (k10 :: GHC.Types.RuntimeRep) (k11 :: GHC.Types.RuntimeRep) (k12 :: GHC.Types.RuntimeRep) (k13 :: GHC.Types.RuntimeRep) (k14 :: GHC.Types.RuntimeRep) (k15 :: GHC.Types.RuntimeRep) (k16 :: GHC.Types.RuntimeRep) (k17 :: GHC.Types.RuntimeRep) (k18 :: GHC.Types.RuntimeRep) (k19 :: GHC.Types.RuntimeRep) (k20 :: GHC.Types.RuntimeRep)
+                          (k21 :: GHC.Types.RuntimeRep) (k22 :: GHC.Types.RuntimeRep) (k23 :: GHC.Types.RuntimeRep) (k24 :: GHC.Types.RuntimeRep) (k25 :: GHC.Types.RuntimeRep) (k26 :: GHC.Types.RuntimeRep) (k27 :: GHC.Types.RuntimeRep) (k28 :: GHC.Types.RuntimeRep) (k29 :: GHC.Types.RuntimeRep) (k30 :: GHC.Types.RuntimeRep) (k31 :: GHC.Types.RuntimeRep) (k32 :: GHC.Types.RuntimeRep) (k33 :: GHC.Types.RuntimeRep) (k34 :: GHC.Types.RuntimeRep) (k35 :: GHC.Types.RuntimeRep) (k36 :: GHC.Types.RuntimeRep) (k37 :: GHC.Types.RuntimeRep) (k38 :: GHC.Types.RuntimeRep) (k39 :: GHC.Types.RuntimeRep) (k40 :: GHC.Types.RuntimeRep) (k41 :: GHC.Types.RuntimeRep) (k42 :: GHC.Types.RuntimeRep)
+                          (k43 :: GHC.Types.RuntimeRep) (k44 :: GHC.Types.RuntimeRep) (k45 :: GHC.Types.RuntimeRep) (k46 :: GHC.Types.RuntimeRep) (k47 :: GHC.Types.RuntimeRep) (k48 :: GHC.Types.RuntimeRep) (k49 :: GHC.Types.RuntimeRep) (k50 :: GHC.Types.RuntimeRep) (k51 :: GHC.Types.RuntimeRep) (k52 :: GHC.Types.RuntimeRep) (k53 :: GHC.Types.RuntimeRep) (k54 :: GHC.Types.RuntimeRep) (k55 :: GHC.Types.RuntimeRep) (k56 :: GHC.Types.RuntimeRep) (k57 :: GHC.Types.RuntimeRep) (k58 :: GHC.Types.RuntimeRep) (k59 :: GHC.Types.RuntimeRep) (k60 :: GHC.Types.RuntimeRep) (k61 :: GHC.Types.RuntimeRep) (k62 :: GHC.Types.RuntimeRep) (k63 :: GHC.Types.RuntimeRep).
+                   TYPE k0
+                   -> TYPE k1
+                   -> TYPE k2
+                   -> TYPE k3
+                   -> TYPE k4
+                   -> TYPE k5
+                   -> TYPE k6
+                   -> TYPE k7
+                   -> TYPE k8
+                   -> TYPE k9
+                   -> TYPE k10
+                   -> TYPE k11
+                   -> TYPE k12
+                   -> TYPE k13
+                   -> TYPE k14
+                   -> TYPE k15
+                   -> TYPE k16
+                   -> TYPE k17
+                   -> TYPE k18
+                   -> TYPE k19
+                   -> TYPE k20
+                   -> TYPE k21
+                   -> TYPE k22
+                   -> TYPE k23
+                   -> TYPE k24
+                   -> TYPE k25
+                   -> TYPE k26
+                   -> TYPE k27
+                   -> TYPE k28
+                   -> TYPE k29
+                   -> TYPE k30
+                   -> TYPE k31
+                   -> TYPE k32
+                   -> TYPE k33
+                   -> TYPE k34
+                   -> TYPE k35
+                   -> TYPE k36
+                   -> TYPE k37
+                   -> TYPE k38
+                   -> TYPE k39
+                   -> TYPE k40
+                   -> TYPE k41
+                   -> TYPE k42
+                   -> TYPE k43
+                   -> TYPE k44
+                   -> TYPE k45
+                   -> TYPE k46
+                   -> TYPE k47
+                   -> TYPE k48
+                   -> TYPE k49
+                   -> TYPE k50
+                   -> TYPE k51
+                   -> TYPE k52
+                   -> TYPE k53
+                   -> TYPE k54
+                   -> TYPE k55
+                   -> TYPE k56
+                   -> TYPE k57
+                   -> TYPE k58
+                   -> TYPE k59
+                   -> TYPE k60
+                   -> TYPE k61
+                   -> TYPE k62
+                   -> TYPE k63
+                   -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k60, k61, k62, k63])
+  data Tuple64# a b c d e f g h i j k l m n o p q r s t u v w x y z t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63 = ...
+  type Tuple7 :: * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple7 a b c d e f g = ...
+  type Tuple7# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6])
+  data Tuple7# a b c d e f g = ...
+  type Tuple8 :: * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple8 a b c d e f g h = ...
+  type Tuple8# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7])
+  data Tuple8# a b c d e f g h = ...
+  type Tuple9 :: * -> * -> * -> * -> * -> * -> * -> * -> * -> *
+  data Tuple9 a b c d e f g h i = ...
+  type Tuple9# :: forall (k0 :: GHC.Types.RuntimeRep) (k1 :: GHC.Types.RuntimeRep) (k2 :: GHC.Types.RuntimeRep) (k3 :: GHC.Types.RuntimeRep) (k4 :: GHC.Types.RuntimeRep) (k5 :: GHC.Types.RuntimeRep) (k6 :: GHC.Types.RuntimeRep) (k7 :: GHC.Types.RuntimeRep) (k8 :: GHC.Types.RuntimeRep). TYPE k0 -> TYPE k1 -> TYPE k2 -> TYPE k3 -> TYPE k4 -> TYPE k5 -> TYPE k6 -> TYPE k7 -> TYPE k8 -> TYPE (GHC.Types.TupleRep [k0, k1, k2, k3, k4, k5, k6, k7, k8])
+  data Tuple9# a b c d e f g h i = ...
+  type Unit :: *
+  data Unit = ...
+  type Unit# :: GHC.Types.ZeroBitType
+  data Unit# = ...
+  getSolo :: forall a. Solo a -> a
+
 
 -- Instances:
+instance GHC.Classes.Eq GHC.Types.Bool -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Eq GHC.Types.Char -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Eq GHC.Types.Double -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Eq GHC.Types.Float -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Eq GHC.Types.Int -- Defined in ‘GHC.Classes’
+instance forall a. GHC.Classes.Eq a => GHC.Classes.Eq [a] -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Eq GHC.Types.Module -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Eq GHC.Types.Ordering -- Defined in ‘GHC.Classes’
+instance forall a. GHC.Classes.Eq a => GHC.Classes.Eq (Solo a) -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Eq GHC.Types.TrName -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e, GHC.Classes.Eq f, GHC.Classes.Eq g, GHC.Classes.Eq h, GHC.Classes.Eq i, GHC.Classes.Eq j) => GHC.Classes.Eq (a, b, c, d, e, f, g, h, i, j) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j k. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e, GHC.Classes.Eq f, GHC.Classes.Eq g, GHC.Classes.Eq h, GHC.Classes.Eq i, GHC.Classes.Eq j, GHC.Classes.Eq k) => GHC.Classes.Eq (a, b, c, d, e, f, g, h, i, j, k) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j k l. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e, GHC.Classes.Eq f, GHC.Classes.Eq g, GHC.Classes.Eq h, GHC.Classes.Eq i, GHC.Classes.Eq j, GHC.Classes.Eq k, GHC.Classes.Eq l) => GHC.Classes.Eq (a, b, c, d, e, f, g, h, i, j, k, l) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j k l m. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e, GHC.Classes.Eq f, GHC.Classes.Eq g, GHC.Classes.Eq h, GHC.Classes.Eq i, GHC.Classes.Eq j, GHC.Classes.Eq k, GHC.Classes.Eq l, GHC.Classes.Eq m) => GHC.Classes.Eq (a, b, c, d, e, f, g, h, i, j, k, l, m) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j k l m n. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e, GHC.Classes.Eq f, GHC.Classes.Eq g, GHC.Classes.Eq h, GHC.Classes.Eq i, GHC.Classes.Eq j, GHC.Classes.Eq k, GHC.Classes.Eq l, GHC.Classes.Eq m, GHC.Classes.Eq n) => GHC.Classes.Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j k l m n o. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e, GHC.Classes.Eq f, GHC.Classes.Eq g, GHC.Classes.Eq h, GHC.Classes.Eq i, GHC.Classes.Eq j, GHC.Classes.Eq k, GHC.Classes.Eq l, GHC.Classes.Eq m, GHC.Classes.Eq n, GHC.Classes.Eq o) => GHC.Classes.Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -- Defined in ‘GHC.Classes’
+instance forall a b. (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (a, b) -- Defined in ‘GHC.Classes’
+instance forall a b c. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c) => GHC.Classes.Eq (a, b, c) -- Defined in ‘GHC.Classes’
+instance forall a b c d. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d) => GHC.Classes.Eq (a, b, c, d) -- Defined in ‘GHC.Classes’
+instance forall a b c d e. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e) => GHC.Classes.Eq (a, b, c, d, e) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e, GHC.Classes.Eq f) => GHC.Classes.Eq (a, b, c, d, e, f) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e, GHC.Classes.Eq f, GHC.Classes.Eq g) => GHC.Classes.Eq (a, b, c, d, e, f, g) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e, GHC.Classes.Eq f, GHC.Classes.Eq g, GHC.Classes.Eq h) => GHC.Classes.Eq (a, b, c, d, e, f, g, h) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i. (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c, GHC.Classes.Eq d, GHC.Classes.Eq e, GHC.Classes.Eq f, GHC.Classes.Eq g, GHC.Classes.Eq h, GHC.Classes.Eq i) => GHC.Classes.Eq (a, b, c, d, e, f, g, h, i) -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Eq GHC.Types.TyCon -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Eq () -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Eq GHC.Types.Word -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Ord GHC.Types.Bool -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Ord GHC.Types.Char -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Ord GHC.Types.Double -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Ord GHC.Types.Float -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Ord GHC.Types.Int -- Defined in ‘GHC.Classes’
+instance forall a. GHC.Classes.Ord a => GHC.Classes.Ord [a] -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Ord GHC.Types.Ordering -- Defined in ‘GHC.Classes’
+instance forall a. GHC.Classes.Ord a => GHC.Classes.Ord (Solo a) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e, GHC.Classes.Ord f, GHC.Classes.Ord g, GHC.Classes.Ord h, GHC.Classes.Ord i, GHC.Classes.Ord j) => GHC.Classes.Ord (a, b, c, d, e, f, g, h, i, j) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j k. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e, GHC.Classes.Ord f, GHC.Classes.Ord g, GHC.Classes.Ord h, GHC.Classes.Ord i, GHC.Classes.Ord j, GHC.Classes.Ord k) => GHC.Classes.Ord (a, b, c, d, e, f, g, h, i, j, k) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j k l. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e, GHC.Classes.Ord f, GHC.Classes.Ord g, GHC.Classes.Ord h, GHC.Classes.Ord i, GHC.Classes.Ord j, GHC.Classes.Ord k, GHC.Classes.Ord l) => GHC.Classes.Ord (a, b, c, d, e, f, g, h, i, j, k, l) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j k l m. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e, GHC.Classes.Ord f, GHC.Classes.Ord g, GHC.Classes.Ord h, GHC.Classes.Ord i, GHC.Classes.Ord j, GHC.Classes.Ord k, GHC.Classes.Ord l, GHC.Classes.Ord m) => GHC.Classes.Ord (a, b, c, d, e, f, g, h, i, j, k, l, m) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j k l m n. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e, GHC.Classes.Ord f, GHC.Classes.Ord g, GHC.Classes.Ord h, GHC.Classes.Ord i, GHC.Classes.Ord j, GHC.Classes.Ord k, GHC.Classes.Ord l, GHC.Classes.Ord m, GHC.Classes.Ord n) => GHC.Classes.Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i j k l m n o. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e, GHC.Classes.Ord f, GHC.Classes.Ord g, GHC.Classes.Ord h, GHC.Classes.Ord i, GHC.Classes.Ord j, GHC.Classes.Ord k, GHC.Classes.Ord l, GHC.Classes.Ord m, GHC.Classes.Ord n, GHC.Classes.Ord o) => GHC.Classes.Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -- Defined in ‘GHC.Classes’
+instance forall a b. (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (a, b) -- Defined in ‘GHC.Classes’
+instance forall a b c. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c) => GHC.Classes.Ord (a, b, c) -- Defined in ‘GHC.Classes’
+instance forall a b c d. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d) => GHC.Classes.Ord (a, b, c, d) -- Defined in ‘GHC.Classes’
+instance forall a b c d e. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e) => GHC.Classes.Ord (a, b, c, d, e) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e, GHC.Classes.Ord f) => GHC.Classes.Ord (a, b, c, d, e, f) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e, GHC.Classes.Ord f, GHC.Classes.Ord g) => GHC.Classes.Ord (a, b, c, d, e, f, g) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e, GHC.Classes.Ord f, GHC.Classes.Ord g, GHC.Classes.Ord h) => GHC.Classes.Ord (a, b, c, d, e, f, g, h) -- Defined in ‘GHC.Classes’
+instance forall a b c d e f g h i. (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c, GHC.Classes.Ord d, GHC.Classes.Ord e, GHC.Classes.Ord f, GHC.Classes.Ord g, GHC.Classes.Ord h, GHC.Classes.Ord i) => GHC.Classes.Ord (a, b, c, d, e, f, g, h, i) -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Ord GHC.Types.TyCon -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Ord () -- Defined in ‘GHC.Classes’
+instance GHC.Classes.Ord GHC.Types.Word -- Defined in ‘GHC.Classes’
diff --git a/testsuite/tests/parser/should_compile/ListTuplePunsFamilies.hs b/testsuite/tests/parser/should_compile/ListTuplePunsFamilies.hs
new file mode 100644
index 000000000000..a5faf1a9c7c2
--- /dev/null
+++ b/testsuite/tests/parser/should_compile/ListTuplePunsFamilies.hs
@@ -0,0 +1,30 @@
+{-# language UnboxedTuples, UnboxedSums, MagicHash, DataKinds #-}
+
+module ListTuplePunsFamilies where
+
+import Data.Tuple.Experimental
+import Data.Sum.Experimental
+
+b1 :: Int
+b1 =
+  case (5, 6) :: Tuple (Int, Double) of
+    (_, _) -> 5
+
+ut :: Int
+ut =
+  case (# 5, 6 #) :: Tuple# (Int, Double) of
+    (# _, _ #) -> 5
+
+us :: Int
+us =
+  case (# 5 | #) :: Sum# (Int, Double) of
+    (# a | #) -> a
+
+c :: Constraints (Monad m, Eq a) => a -> m Bool
+c a = pure (a == a)
+
+c1 :: Monad m => Eq a => a -> m Bool
+c1 = c
+
+c2 :: IO Bool
+c2 = c1 (5 :: Int)
diff --git a/testsuite/tests/parser/should_compile/ListTuplePunsFamilies.script b/testsuite/tests/parser/should_compile/ListTuplePunsFamilies.script
new file mode 100644
index 000000000000..4ba863d9e7c0
--- /dev/null
+++ b/testsuite/tests/parser/should_compile/ListTuplePunsFamilies.script
@@ -0,0 +1,2 @@
+:set -XNoListTuplePuns
+:load ListTuplePunsFamilies
diff --git a/testsuite/tests/parser/should_compile/ListTuplePunsFamiliesCompat.hs b/testsuite/tests/parser/should_compile/ListTuplePunsFamiliesCompat.hs
new file mode 100644
index 000000000000..901d34e153e9
--- /dev/null
+++ b/testsuite/tests/parser/should_compile/ListTuplePunsFamiliesCompat.hs
@@ -0,0 +1,30 @@
+{-# language UnboxedTuples, UnboxedSums, MagicHash, DataKinds #-}
+
+module ListTuplePunsFamiliesCompat where
+
+import Data.Tuple.Experimental
+import Data.Sum.Experimental
+
+b2 :: Int
+b2 =
+  case (5, 6) :: Tuple '(Int, Double) of
+    (_, _) -> 5
+
+ut :: Int
+ut =
+  case (# 5, 6 #) :: Tuple# '(Int, Double) of
+    (# _, _ #) -> 5
+
+us :: Int
+us =
+  case (# 5 | #) :: Sum# '(Int, Double) of
+    (# a | #) -> a
+
+c :: Constraints '(Monad m, Eq a) => a -> m Bool
+c a = pure (a == a)
+
+c1 :: Monad m => Eq a => a -> m Bool
+c1 = c
+
+c2 :: IO Bool
+c2 = c1 (5 :: Int)
diff --git a/testsuite/tests/parser/should_compile/ListTuplePunsSuccess1.hs b/testsuite/tests/parser/should_compile/ListTuplePunsSuccess1.hs
new file mode 100644
index 000000000000..2c6a36339d84
--- /dev/null
+++ b/testsuite/tests/parser/should_compile/ListTuplePunsSuccess1.hs
@@ -0,0 +1,43 @@
+{-# language TypeFamilies, DataKinds, UnboxedTuples, MagicHash #-}
+
+module ListTuplePunsSuccess1 where
+
+import Data.Kind (Type)
+-- import Data.Tuple.Experimental (Tuple, Tuple#)
+import GHC.Tuple (Unit, Tuple2)
+import GHC.Types (List)
+
+type family F (a :: Tuple2 Type Type) :: Type where
+  F (a, _) = a
+
+type X = F (Int, Double)
+
+x :: X
+x = (5 :: Int)
+
+type family G (a :: Unit) :: Type where
+  G () = Unit
+
+type Y = G ()
+
+type family H (a :: List Type) :: Type where
+  H [] = Char
+  H (a : _) = a
+
+type Z0 = H [Int]
+
+z0 :: Z0
+z0 = (5 :: Int)
+
+type Z1 = H [Int, Double]
+
+z1 :: Z1
+z1 = (5 :: Int)
+
+-- swap :: Tuple (a, b) -> Tuple (b, a)
+-- swap (x, y) = (y, x)
+
+-- unboxedSoloFam :: Int
+-- unboxedSoloFam =
+--   case (# 1 #) :: Tuple# Int of
+--     _ -> 0
diff --git a/testsuite/tests/parser/should_compile/ListTuplePunsSuccess1.script b/testsuite/tests/parser/should_compile/ListTuplePunsSuccess1.script
new file mode 100644
index 000000000000..976ea45998ca
--- /dev/null
+++ b/testsuite/tests/parser/should_compile/ListTuplePunsSuccess1.script
@@ -0,0 +1,2 @@
+:set -XNoListTuplePuns
+:load ListTuplePunsSuccess1
diff --git a/testsuite/tests/parser/should_compile/all.T b/testsuite/tests/parser/should_compile/all.T
index 5b88fb97b588..79966ae1a8bb 100644
--- a/testsuite/tests/parser/should_compile/all.T
+++ b/testsuite/tests/parser/should_compile/all.T
@@ -196,3 +196,6 @@ test('T20718b',  normal, compile, ['-dsuppress-uniques -ddump-parsed-ast -dkeep-
 
 test('T21589', normal, compile, [''])
 test('T19372consym', normal, compile, [''])
+test('ListTuplePunsSuccess1', extra_files(['ListTuplePunsSuccess1.hs']), ghci_script, ['ListTuplePunsSuccess1.script'])
+test('ListTuplePunsFamiliesCompat', expect_broken(23135), compile, [''])
+test('ListTuplePunsFamilies', [expect_broken(23135), extra_files(['ListTuplePunsFamilies.hs'])], ghci_script, ['ListTuplePunsFamilies.script'])
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail1.hs b/testsuite/tests/parser/should_fail/ListTuplePunsFail1.hs
new file mode 100644
index 000000000000..d05bd65eb8e0
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail1.hs
@@ -0,0 +1,23 @@
+{-# language UnboxedTuples #-}
+
+module ListTuplePunsFail1 where
+
+type T = '(Int, Double)
+
+type U = '()
+
+type L = '[Int, Double]
+
+type L0 = '[]
+
+type L1 = '[Int]
+
+type Uu = '(##)
+
+type Bc = '(,,,)
+
+type Uud = (##)
+
+type S2du = (# | #)
+
+type S2da = (# Int | Int #)
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail1.script b/testsuite/tests/parser/should_fail/ListTuplePunsFail1.script
new file mode 100644
index 000000000000..769406fec98d
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail1.script
@@ -0,0 +1,2 @@
+:set -XNoListTuplePuns
+:load ListTuplePunsFail1
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail1.stderr b/testsuite/tests/parser/should_fail/ListTuplePunsFail1.stderr
new file mode 100644
index 000000000000..21de0aa9aa81
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail1.stderr
@@ -0,0 +1,79 @@
+ListTuplePunsFail1.hs:5:10: error: [GHC-52943]
+    Disambiguating data constructors of tuples and lists is disabled.
+    Remove the quote to use the data constructor.
+    Suggested fix:
+      Perhaps you intended to use ListTuplePuns
+      You may enable this language extension in GHCi with:
+        :set -XListTuplePuns
+
+ListTuplePunsFail1.hs:7:10: error: [GHC-52943]
+    Disambiguating data constructors of tuples and lists is disabled.
+    Remove the quote to use the data constructor.
+    Suggested fix:
+      Perhaps you intended to use ListTuplePuns
+      You may enable this language extension in GHCi with:
+        :set -XListTuplePuns
+
+ListTuplePunsFail1.hs:9:10: error: [GHC-52943]
+    Disambiguating data constructors of tuples and lists is disabled.
+    Remove the quote to use the data constructor.
+    Suggested fix:
+      Perhaps you intended to use ListTuplePuns
+      You may enable this language extension in GHCi with:
+        :set -XListTuplePuns
+
+ListTuplePunsFail1.hs:11:11: error: [GHC-52943]
+    Disambiguating data constructors of tuples and lists is disabled.
+    Remove the quote to use the data constructor.
+    Suggested fix:
+      Perhaps you intended to use ListTuplePuns
+      You may enable this language extension in GHCi with:
+        :set -XListTuplePuns
+
+ListTuplePunsFail1.hs:13:11: error: [GHC-52943]
+    Disambiguating data constructors of tuples and lists is disabled.
+    Remove the quote to use the data constructor.
+    Suggested fix:
+      Perhaps you intended to use ListTuplePuns
+      You may enable this language extension in GHCi with:
+        :set -XListTuplePuns
+
+ListTuplePunsFail1.hs:15:11: error: [GHC-52943]
+    Disambiguating data constructors of tuples and lists is disabled.
+    Remove the quote to use the data constructor.
+    Suggested fix:
+      Perhaps you intended to use ListTuplePuns
+      You may enable this language extension in GHCi with:
+        :set -XListTuplePuns
+
+ListTuplePunsFail1.hs:17:11: error: [GHC-52943]
+    Disambiguating data constructors of tuples and lists is disabled.
+    Remove the quote to use the data constructor.
+    Suggested fix:
+      Perhaps you intended to use ListTuplePuns
+      You may enable this language extension in GHCi with:
+        :set -XListTuplePuns
+
+ListTuplePunsFail1.hs:19:12: [GHC-52943]
+    Unboxed tuple data constructors are not supported in types.
+    Use ‘Tuple<n># a b c ...’ to refer to the type constructor.
+    Suggested fix:
+      Perhaps you intended to use ListTuplePuns
+      You may enable this language extension in GHCi with:
+        :set -XListTuplePuns
+
+ListTuplePunsFail1.hs:21:13: [GHC-52943]
+    Unboxed sum data constructors are not supported in types.
+    Use ‘Sum<n># a b c ...’ to refer to the type constructor.
+    Suggested fix:
+      Perhaps you intended to use ListTuplePuns
+      You may enable this language extension in GHCi with:
+        :set -XListTuplePuns
+
+ListTuplePunsFail1.hs:23:13: [GHC-52943]
+    Unboxed sum data constructors are not supported in types.
+    Use ‘Sum<n># a b c ...’ to refer to the type constructor.
+    Suggested fix:
+      Perhaps you intended to use ListTuplePuns
+      You may enable this language extension in GHCi with:
+        :set -XListTuplePuns
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail2.hs b/testsuite/tests/parser/should_fail/ListTuplePunsFail2.hs
new file mode 100644
index 000000000000..b806fc510a09
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail2.hs
@@ -0,0 +1,9 @@
+{-# language TypeFamilies, DataKinds #-}
+
+module ListTuplePunsFail2 where
+
+import Data.Kind (Type)
+
+type family F1 (a :: Type) :: Type where
+
+type T1 = F1 (Int, Double)
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail2.script b/testsuite/tests/parser/should_fail/ListTuplePunsFail2.script
new file mode 100644
index 000000000000..de27b7ea3fa3
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail2.script
@@ -0,0 +1,2 @@
+:set -XNoListTuplePuns
+:load ListTuplePunsFail2
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail2.stderr b/testsuite/tests/parser/should_fail/ListTuplePunsFail2.stderr
new file mode 100644
index 000000000000..77f9e72b6cc2
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail2.stderr
@@ -0,0 +1,5 @@
+ListTuplePunsFail2.hs:9:14: [GHC-83865]
+     Expected a type, but ‘(Int, Double)’ has kind ‘Tuple2 (*) (*)’
+     In the first argument of ‘F1’, namely ‘(Int, Double)’
+      In the type ‘F1 (Int, Double)’
+      In the type declaration for ‘T1’
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail3.hs b/testsuite/tests/parser/should_fail/ListTuplePunsFail3.hs
new file mode 100644
index 000000000000..fa36efb79896
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail3.hs
@@ -0,0 +1,10 @@
+{-# language TypeFamilies, DataKinds #-}
+
+module ListTuplePunsFail3 where
+
+import Data.Kind (Type)
+import GHC.Exts (TYPE)
+
+type family F2 (a :: Type -> Type -> TYPE rep) :: Type where
+
+type T2 = F2 (,)
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail3.script b/testsuite/tests/parser/should_fail/ListTuplePunsFail3.script
new file mode 100644
index 000000000000..a86087d16c39
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail3.script
@@ -0,0 +1,2 @@
+:set -XNoListTuplePuns
+:load ListTuplePunsFail3
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail3.stderr b/testsuite/tests/parser/should_fail/ListTuplePunsFail3.stderr
new file mode 100644
index 000000000000..9ba0768d25d2
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail3.stderr
@@ -0,0 +1,7 @@
+ListTuplePunsFail3.hs:10:14: [GHC-83865]
+     Couldn't match kind ‘Tuple2 (*) (*)’ with ‘*’
+      Expected kind ‘* -> * -> *’,
+        but ‘(,)’ has kind ‘* -> * -> Tuple2 (*) (*)’
+     In the first argument of ‘F2’, namely ‘(,)’
+      In the type ‘F2 (,)’
+      In the type declaration for ‘T2’
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail4.hs b/testsuite/tests/parser/should_fail/ListTuplePunsFail4.hs
new file mode 100644
index 000000000000..5e46a753fc15
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail4.hs
@@ -0,0 +1,10 @@
+{-# language TypeFamilies, DataKinds, UnboxedTuples #-}
+
+module ListTuplePunsFail4 where
+
+import Data.Kind (Type)
+import GHC.Exts (TYPE)
+
+type family F2 (a :: Type -> Type -> TYPE rep) :: Type where
+
+type T3 = F2 (#,#)
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail4.script b/testsuite/tests/parser/should_fail/ListTuplePunsFail4.script
new file mode 100644
index 000000000000..0dfa462fcd41
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail4.script
@@ -0,0 +1,2 @@
+:set -XNoListTuplePuns
+:load ListTuplePunsFail4
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail4.stderr b/testsuite/tests/parser/should_fail/ListTuplePunsFail4.stderr
new file mode 100644
index 000000000000..820ffb8867b1
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail4.stderr
@@ -0,0 +1,7 @@
+ListTuplePunsFail4.hs:10:14: [GHC-83865]
+     Couldn't match kind ‘Tuple2# (*) (*)’ with ‘*’
+      Expected kind ‘* -> * -> *’,
+        but ‘(#,#)’ has kind ‘* -> * -> Tuple2# (*) (*)’
+     In the first argument of ‘F2’, namely ‘(#,#)’
+      In the type ‘F2 (#,#)’
+      In the type declaration for ‘T3’
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail5.hs b/testsuite/tests/parser/should_fail/ListTuplePunsFail5.hs
new file mode 100644
index 000000000000..c80dcf984330
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail5.hs
@@ -0,0 +1,9 @@
+{-# language DataKinds #-}
+
+module ListTuplePunsFail5 where
+
+f ::
+  Monad m =>
+  (Monad m, (Monad m, Monad m)) =>
+  m Int
+f = pure 5
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail5.script b/testsuite/tests/parser/should_fail/ListTuplePunsFail5.script
new file mode 100644
index 000000000000..f82d6c77488b
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail5.script
@@ -0,0 +1,2 @@
+:set -XNoListTuplePuns
+:load ListTuplePunsFail5
diff --git a/testsuite/tests/parser/should_fail/ListTuplePunsFail5.stderr b/testsuite/tests/parser/should_fail/ListTuplePunsFail5.stderr
new file mode 100644
index 000000000000..1409ac2552c7
--- /dev/null
+++ b/testsuite/tests/parser/should_fail/ListTuplePunsFail5.stderr
@@ -0,0 +1,6 @@
+ListTuplePunsFail5.hs:7:13: [GHC-83865]
+     Expected a constraint,
+      but ‘(Monad m, Monad m)’ has kind
+      ‘Tuple2 Constraint Constraint’
+     In the type signature:
+        f :: Monad m => (Monad m, (Monad m, Monad m)) => m Int
diff --git a/testsuite/tests/parser/should_fail/all.T b/testsuite/tests/parser/should_fail/all.T
index a442431bd8d6..12f3889882a2 100644
--- a/testsuite/tests/parser/should_fail/all.T
+++ b/testsuite/tests/parser/should_fail/all.T
@@ -220,3 +220,8 @@ test('T20609b', normal, compile_fail, [''])
 test('T20609c', normal, compile_fail, [''])
 test('T20609d', normal, compile_fail, [''])
 test('SuffixAtFail', normal, compile_fail, ['-fdiagnostics-show-caret'])
+test('ListTuplePunsFail1', extra_files(['ListTuplePunsFail1.hs']), ghci_script, ['ListTuplePunsFail1.script'])
+test('ListTuplePunsFail2', extra_files(['ListTuplePunsFail2.hs']), ghci_script, ['ListTuplePunsFail2.script'])
+test('ListTuplePunsFail3', extra_files(['ListTuplePunsFail3.hs']), ghci_script, ['ListTuplePunsFail3.script'])
+test('ListTuplePunsFail4', extra_files(['ListTuplePunsFail4.hs']), ghci_script, ['ListTuplePunsFail4.script'])
+test('ListTuplePunsFail5', extra_files(['ListTuplePunsFail5.hs']), ghci_script, ['ListTuplePunsFail5.script'])
diff --git a/testsuite/tests/parser/should_run/ListTuplePunsConstraints.hs b/testsuite/tests/parser/should_run/ListTuplePunsConstraints.hs
new file mode 100644
index 000000000000..3f029268fcd1
--- /dev/null
+++ b/testsuite/tests/parser/should_run/ListTuplePunsConstraints.hs
@@ -0,0 +1,18 @@
+{-# language DataKinds #-}
+
+module ListTuplePunsConstraints where
+
+-- import Data.Tuple.Experimental (Constraints)
+import GHC.Classes (CTuple2)
+
+-- type C1 m = Constraints (Monad m, Monad m)
+type C2 m = CTuple2 (Monad m) (Monad m)
+
+f ::
+  Monad m =>
+  -- C1 m =>
+  C2 m =>
+  CTuple2 (Monad m) (Monad m) =>
+  -- (Monad m, Constraints (Monad m, Monad m)) =>
+  m Int
+f = pure 5
diff --git a/testsuite/tests/parser/should_run/ListTuplePunsConstraints.script b/testsuite/tests/parser/should_run/ListTuplePunsConstraints.script
new file mode 100644
index 000000000000..beced6906dbb
--- /dev/null
+++ b/testsuite/tests/parser/should_run/ListTuplePunsConstraints.script
@@ -0,0 +1,2 @@
+:set -XNoListTuplePuns
+:load ListTuplePunsConstraints
diff --git a/testsuite/tests/parser/should_run/all.T b/testsuite/tests/parser/should_run/all.T
index 92c6d0fcb331..acfbf78c4cef 100644
--- a/testsuite/tests/parser/should_run/all.T
+++ b/testsuite/tests/parser/should_run/all.T
@@ -20,3 +20,4 @@ test('RecordDotSyntax2', normal, compile_and_run, [''])
 test('RecordDotSyntax3', [extra_files(['RecordDotSyntaxA.hs'])], multimod_compile_and_run, ['RecordDotSyntax3', ''])
 test('RecordDotSyntax4', [extra_files(['RecordDotSyntaxA.hs'])], multimod_compile_and_run, ['RecordDotSyntax4', ''])
 test('RecordDotSyntax5', normal, compile_and_run, [''])
+test('ListTuplePunsConstraints', extra_files(['ListTuplePunsConstraints.hs']), ghci_script, ['ListTuplePunsConstraints.script'])
diff --git a/testsuite/tests/printer/AnnotationNoListTuplePuns.hs b/testsuite/tests/printer/AnnotationNoListTuplePuns.hs
new file mode 100644
index 000000000000..0eb210a8ace8
--- /dev/null
+++ b/testsuite/tests/printer/AnnotationNoListTuplePuns.hs
@@ -0,0 +1,17 @@
+{-# language NoListTuplePuns #-}
+module AnnotationNoListTuplePuns where
+
+type A =
+  -- comment pre
+  [
+    -- comment inside
+  ]
+  -- comment post
+
+type B =
+  -- comment pre
+  [
+    -- comment inside
+    Bool
+  ]
+  -- comment post
diff --git a/testsuite/tests/printer/ListTuplePuns.hs b/testsuite/tests/printer/ListTuplePuns.hs
new file mode 100644
index 000000000000..bfe54f86e34d
--- /dev/null
+++ b/testsuite/tests/printer/ListTuplePuns.hs
@@ -0,0 +1,39 @@
+{-# language MagicHash, UnboxedTuples #-}
+
+import GHC.Tuple
+import GHC.Types
+
+u0e :: Int
+u0e =
+  case False :: Unit# of
+    (# #) -> 5
+
+u1e :: Int
+u1e =
+  case False :: Solo# Int of
+    (# _ #) -> 5
+
+u2e :: Int
+u2e =
+  case False :: Tuple2# Int Double of
+    (# _, _ #) -> 5
+
+b0e :: Int
+b0e =
+  case False :: Unit of
+    () -> 5
+
+b1e :: Int
+b1e =
+  case False :: Solo Int of
+    _ -> 5
+
+b2e :: Int
+b2e =
+  case False :: Tuple2 Int Double of
+    _ -> 5
+
+s2e :: Int
+s2e =
+  case False :: Sum2# Int Double of
+    (# _ | #) -> 5
diff --git a/testsuite/tests/printer/ListTuplePuns.script b/testsuite/tests/printer/ListTuplePuns.script
new file mode 100644
index 000000000000..de19c36b09fa
--- /dev/null
+++ b/testsuite/tests/printer/ListTuplePuns.script
@@ -0,0 +1,2 @@
+:set -XNoListTuplePuns
+:load ListTuplePuns
diff --git a/testsuite/tests/printer/ListTuplePuns.stderr b/testsuite/tests/printer/ListTuplePuns.stderr
new file mode 100644
index 000000000000..77eea4ce2bcb
--- /dev/null
+++ b/testsuite/tests/printer/ListTuplePuns.stderr
@@ -0,0 +1,49 @@
+ListTuplePuns.hs:8:8: [GHC-83865]
+     Couldn't match expected type ‘Unit#’ with actual type ‘Bool’
+     In the expression: False :: Unit#
+      In the expression: case False :: Unit# of (##) -> 5
+      In an equation for ‘u0e’: u0e = case False :: Unit# of (##) -> 5
+
+ListTuplePuns.hs:13:8: [GHC-83865]
+     Couldn't match expected type ‘Solo# Int’ with actual type ‘Bool’
+     In the expression: False :: Solo# Int
+      In the expression: case False :: Solo# Int of (# _ #) -> 5
+      In an equation for ‘u1e’:
+          u1e = case False :: Solo# Int of (# _ #) -> 5
+
+ListTuplePuns.hs:18:8: [GHC-83865]
+     Couldn't match expected type ‘Tuple2# Int Double’
+                  with actual type ‘Bool’
+     In the expression: False :: Tuple2# Int Double
+      In the expression:
+        case False :: Tuple2# Int Double of (# _, _ #) -> 5
+      In an equation for ‘u2e’:
+          u2e = case False :: Tuple2# Int Double of (# _, _ #) -> 5
+
+ListTuplePuns.hs:23:8: [GHC-83865]
+     Couldn't match expected type ‘Unit’ with actual type ‘Bool’
+     In the expression: False :: Unit
+      In the expression: case False :: Unit of () -> 5
+      In an equation for ‘b0e’: b0e = case False :: Unit of () -> 5
+
+ListTuplePuns.hs:28:8: [GHC-83865]
+     Couldn't match expected type ‘Solo Int’ with actual type ‘Bool’
+     In the expression: False :: Solo Int
+      In the expression: case False :: Solo Int of _ -> 5
+      In an equation for ‘b1e’: b1e = case False :: Solo Int of _ -> 5
+
+ListTuplePuns.hs:33:8: [GHC-83865]
+     Couldn't match expected type ‘Tuple2 Int Double’
+                  with actual type ‘Bool’
+     In the expression: False :: Tuple2 Int Double
+      In the expression: case False :: Tuple2 Int Double of _ -> 5
+      In an equation for ‘b2e’:
+          b2e = case False :: Tuple2 Int Double of _ -> 5
+
+ListTuplePuns.hs:38:8: [GHC-83865]
+     Couldn't match expected type ‘Sum2# Int Double’
+                  with actual type ‘Bool’
+     In the expression: False :: Sum2# Int Double
+      In the expression: case False :: Sum2# Int Double of (# _ | #) -> 5
+      In an equation for ‘s2e’:
+          s2e = case False :: Sum2# Int Double of (# _ | #) -> 5
diff --git a/testsuite/tests/printer/Makefile b/testsuite/tests/printer/Makefile
index de7f34691115..e52d57162936 100644
--- a/testsuite/tests/printer/Makefile
+++ b/testsuite/tests/printer/Makefile
@@ -811,3 +811,8 @@ Test23885:
 	# ppr is not currently unicode aware
 	# $(CHECK_PPR)   $(LIBDIR) Test23885.hs
 	$(CHECK_EXACT) $(LIBDIR) Test23885.hs
+
+.PHONY: AnnotationNoListTuplePuns
+AnnotationNoListTuplePuns:
+	$(CHECK_PPR)   $(LIBDIR) AnnotationNoListTuplePuns.hs
+	$(CHECK_EXACT) $(LIBDIR) AnnotationNoListTuplePuns.hs
diff --git a/testsuite/tests/printer/all.T b/testsuite/tests/printer/all.T
index 1aed2018f395..5f0a10b5f889 100644
--- a/testsuite/tests/printer/all.T
+++ b/testsuite/tests/printer/all.T
@@ -194,3 +194,5 @@ test('Test22771', [ignore_stderr, req_ppr_deps], makefile_test, ['Test22771'])
 test('Test23465', [ignore_stderr, req_ppr_deps], makefile_test, ['Test23465'])
 test('Test23887', [ignore_stderr, req_ppr_deps], makefile_test, ['Test23887'])
 test('Test23885', [ignore_stderr, req_ppr_deps], makefile_test, ['Test23885'])
+test('ListTuplePuns', extra_files(['ListTuplePuns.hs']), ghci_script, ['ListTuplePuns.script'])
+test('AnnotationNoListTuplePuns', [ignore_stderr, req_ppr_deps], makefile_test, ['AnnotationNoListTuplePuns'])
diff --git a/testsuite/tests/roles/should_compile/T8958.stderr b/testsuite/tests/roles/should_compile/T8958.stderr
index f2f906e617ba..9a6a7eb5a145 100644
--- a/testsuite/tests/roles/should_compile/T8958.stderr
+++ b/testsuite/tests/roles/should_compile/T8958.stderr
@@ -53,7 +53,7 @@ $krep [InlPrag=[~]]
   = GHC.Types.KindRepFun GHC.Types.krep$* GHC.Types.krep$Constraint
 $krep [InlPrag=[~]]
   = GHC.Types.KindRepTyConApp
-      GHC.Tuple.Prim.$tcTuple2
+      GHC.Tuple.$tcTuple2
       ((:) @GHC.Types.KindRep
          $krep ((:) @GHC.Types.KindRep $krep [] @GHC.Types.KindRep))
 $krep [InlPrag=[~]]
diff --git a/testsuite/tests/showIface/DocsInHiFile1.stdout b/testsuite/tests/showIface/DocsInHiFile1.stdout
index 3751e2c6c263..f1ddcc65e5f0 100644
--- a/testsuite/tests/showIface/DocsInHiFile1.stdout
+++ b/testsuite/tests/showIface/DocsInHiFile1.stdout
@@ -146,5 +146,6 @@ docs:
          ImportQualifiedPost
          StandaloneKindSignatures
          FieldSelectors
+         ListTuplePuns
 extensible fields:
 
diff --git a/testsuite/tests/showIface/DocsInHiFileTH.stdout b/testsuite/tests/showIface/DocsInHiFileTH.stdout
index 86d67fc60dfb..650829d4de6f 100644
--- a/testsuite/tests/showIface/DocsInHiFileTH.stdout
+++ b/testsuite/tests/showIface/DocsInHiFileTH.stdout
@@ -288,5 +288,6 @@ docs:
          ImportQualifiedPost
          StandaloneKindSignatures
          FieldSelectors
+         ListTuplePuns
 extensible fields:
 
diff --git a/testsuite/tests/showIface/HaddockIssue849.stdout b/testsuite/tests/showIface/HaddockIssue849.stdout
index d7ca709db7c6..07ca8cef20f3 100644
--- a/testsuite/tests/showIface/HaddockIssue849.stdout
+++ b/testsuite/tests/showIface/HaddockIssue849.stdout
@@ -69,5 +69,6 @@ docs:
          ImportQualifiedPost
          StandaloneKindSignatures
          FieldSelectors
+         ListTuplePuns
 extensible fields:
 
diff --git a/testsuite/tests/showIface/HaddockOpts.stdout b/testsuite/tests/showIface/HaddockOpts.stdout
index b3f057e50eb2..9af90477e250 100644
--- a/testsuite/tests/showIface/HaddockOpts.stdout
+++ b/testsuite/tests/showIface/HaddockOpts.stdout
@@ -60,5 +60,6 @@ docs:
          ImportQualifiedPost
          StandaloneKindSignatures
          FieldSelectors
+         ListTuplePuns
 extensible fields:
 
diff --git a/testsuite/tests/showIface/HaddockSpanIssueT24378.stdout b/testsuite/tests/showIface/HaddockSpanIssueT24378.stdout
index 75efdafaca4e..a0da5e3e97e4 100644
--- a/testsuite/tests/showIface/HaddockSpanIssueT24378.stdout
+++ b/testsuite/tests/showIface/HaddockSpanIssueT24378.stdout
@@ -82,5 +82,6 @@ docs:
          ImportQualifiedPost
          StandaloneKindSignatures
          FieldSelectors
+         ListTuplePuns
 extensible fields:
 
diff --git a/testsuite/tests/showIface/LanguageExts.stdout b/testsuite/tests/showIface/LanguageExts.stdout
index 30f8b9c1301b..9e3ebc0d6a21 100644
--- a/testsuite/tests/showIface/LanguageExts.stdout
+++ b/testsuite/tests/showIface/LanguageExts.stdout
@@ -24,5 +24,6 @@ docs:
          StarIsType
          CUSKs
          FieldSelectors
+         ListTuplePuns
 extensible fields:
 
diff --git a/testsuite/tests/showIface/MagicHashInHaddocks.stdout b/testsuite/tests/showIface/MagicHashInHaddocks.stdout
index d105d04801f6..076828ae2692 100644
--- a/testsuite/tests/showIface/MagicHashInHaddocks.stdout
+++ b/testsuite/tests/showIface/MagicHashInHaddocks.stdout
@@ -70,5 +70,6 @@ docs:
          ImportQualifiedPost
          StandaloneKindSignatures
          FieldSelectors
+         ListTuplePuns
 extensible fields:
 
diff --git a/testsuite/tests/showIface/NoExportList.stdout b/testsuite/tests/showIface/NoExportList.stdout
index fb8d3e8e4b3b..83fd28fa68d7 100644
--- a/testsuite/tests/showIface/NoExportList.stdout
+++ b/testsuite/tests/showIface/NoExportList.stdout
@@ -96,5 +96,6 @@ docs:
          ImportQualifiedPost
          StandaloneKindSignatures
          FieldSelectors
+         ListTuplePuns
 extensible fields:
 
diff --git a/testsuite/tests/showIface/PragmaDocs.stdout b/testsuite/tests/showIface/PragmaDocs.stdout
index 341a065b2c01..1a86336cb19a 100644
--- a/testsuite/tests/showIface/PragmaDocs.stdout
+++ b/testsuite/tests/showIface/PragmaDocs.stdout
@@ -68,5 +68,6 @@ docs:
          ImportQualifiedPost
          StandaloneKindSignatures
          FieldSelectors
+         ListTuplePuns
 extensible fields:
 
diff --git a/testsuite/tests/showIface/ReExports.stdout b/testsuite/tests/showIface/ReExports.stdout
index 17bf91259e16..c60a6bcdfa77 100644
--- a/testsuite/tests/showIface/ReExports.stdout
+++ b/testsuite/tests/showIface/ReExports.stdout
@@ -67,5 +67,6 @@ docs:
          ImportQualifiedPost
          StandaloneKindSignatures
          FieldSelectors
+         ListTuplePuns
 extensible fields:
 
diff --git a/testsuite/tests/simplCore/should_compile/T3772.stdout b/testsuite/tests/simplCore/should_compile/T3772.stdout
index 43847f89e5c8..5897cee25917 100644
--- a/testsuite/tests/simplCore/should_compile/T3772.stdout
+++ b/testsuite/tests/simplCore/should_compile/T3772.stdout
@@ -52,7 +52,7 @@ $wxs
   = \ (ww :: GHC.Prim.Int#) ->
       case ww of ds1 {
         __DEFAULT -> $wxs (GHC.Prim.-# ds1 1#);
-        1# -> GHC.Prim.(##)
+        1# -> GHC.Types.(##)
       }
 end Rec }
 
@@ -62,7 +62,7 @@ T3772.$wfoo [InlPrag=NOINLINE] :: GHC.Prim.Int# -> (# #)
 T3772.$wfoo
   = \ (ww :: GHC.Prim.Int#) ->
       case GHC.Prim.<# 0# ww of {
-        __DEFAULT -> GHC.Prim.(##);
+        __DEFAULT -> GHC.Types.(##);
         1# -> $wxs ww
       }
 
@@ -77,12 +77,12 @@ foo [InlPrag=NOINLINE[final]] :: Int -> ()
          Guidance=ALWAYS_IF(arity=1,unsat_ok=True,boring_ok=False)
          Tmpl= \ (n [Occ=Once1!] :: Int) ->
                  case n of { GHC.Types.I# ww [Occ=Once1] ->
-                 case T3772.$wfoo ww of { (# #) -> GHC.Tuple.Prim.() }
+                 case T3772.$wfoo ww of { (# #) -> GHC.Tuple.() }
                  }}]
 foo
   = \ (n :: Int) ->
       case n of { GHC.Types.I# ww ->
-      case T3772.$wfoo ww of { (# #) -> GHC.Tuple.Prim.() }
+      case T3772.$wfoo ww of { (# #) -> GHC.Tuple.() }
       }
 
 
diff --git a/testsuite/tests/simplCore/should_compile/T4908.stderr b/testsuite/tests/simplCore/should_compile/T4908.stderr
index a306a5a5e726..37d23bfd90a5 100644
--- a/testsuite/tests/simplCore/should_compile/T4908.stderr
+++ b/testsuite/tests/simplCore/should_compile/T4908.stderr
@@ -49,9 +49,9 @@ T4908.f_$s$wf
         __DEFAULT ->
           case sc1 of ds1 {
             __DEFAULT -> T4908.f_$s$wf sc ds1 (-# ds 1#);
-            0# -> GHC.Prim.(##)
+            0# -> GHC.Types.(##)
           };
-        0# -> GHC.Prim.(##)
+        0# -> GHC.Types.(##)
       }
 end Rec }
 
diff --git a/testsuite/tests/simplCore/should_compile/T7360.stderr b/testsuite/tests/simplCore/should_compile/T7360.stderr
index 26e4ed26e62a..242065b3bb9a 100644
--- a/testsuite/tests/simplCore/should_compile/T7360.stderr
+++ b/testsuite/tests/simplCore/should_compile/T7360.stderr
@@ -23,7 +23,7 @@ T7360.$WFoo3
 T7360.$wfun1 [InlPrag=NOINLINE] :: Foo -> (# #)
 [GblId[StrictWorker([!])], Arity=1, Str=<1A>, Unf=OtherCon []]
 T7360.$wfun1
-  = \ (x :: Foo) -> case x of { __DEFAULT -> GHC.Prim.(##) }
+  = \ (x :: Foo) -> case x of { __DEFAULT -> GHC.Types.(##) }
 
 -- RHS size: {terms: 6, types: 2, coercions: 0, joins: 0/0}
 fun1 [InlPrag=NOINLINE[final]] :: Foo -> ()
@@ -35,10 +35,10 @@ fun1 [InlPrag=NOINLINE[final]] :: Foo -> ()
          Value=True, ConLike=True, WorkFree=True, Expandable=True,
          Guidance=ALWAYS_IF(arity=1,unsat_ok=True,boring_ok=False)
          Tmpl= \ (x [Occ=Once1] :: Foo) ->
-                 case T7360.$wfun1 x of { (# #) -> GHC.Tuple.Prim.() }}]
+                 case T7360.$wfun1 x of { (# #) -> GHC.Tuple.() }}]
 fun1
   = \ (x :: Foo) ->
-      case T7360.$wfun1 x of { (# #) -> GHC.Tuple.Prim.() }
+      case T7360.$wfun1 x of { (# #) -> GHC.Tuple.() }
 
 -- RHS size: {terms: 5, types: 1, coercions: 0, joins: 0/0}
 T7360.fun4 :: ()
@@ -47,7 +47,7 @@ T7360.fun4 :: ()
          Value=False, ConLike=False, WorkFree=False, Expandable=False,
          Guidance=IF_ARGS [] 30 10}]
 T7360.fun4
-  = case T7360.$wfun1 T7360.Foo1 of { (# #) -> GHC.Tuple.Prim.() }
+  = case T7360.$wfun1 T7360.Foo1 of { (# #) -> GHC.Tuple.() }
 
 -- RHS size: {terms: 14, types: 9, coercions: 0, joins: 0/0}
 fun2 :: forall {a}. [a] -> ((), Int)
diff --git a/testsuite/tests/simplStg/should_compile/T15226b.stderr b/testsuite/tests/simplStg/should_compile/T15226b.stderr
index 416b9321be2a..879f845e97da 100644
--- a/testsuite/tests/simplStg/should_compile/T15226b.stderr
+++ b/testsuite/tests/simplStg/should_compile/T15226b.stderr
@@ -20,7 +20,7 @@ T15226b.testFun1
 [GblId, Arity=3, Str=<L><ML><L>, Unf=OtherCon []] =
     {} \r [x y void]
         case seq# [x GHC.Prim.void#] of ds1 {
-        Solo# ipv1 [Occ=Once1] ->
+        (# #) ipv1 [Occ=Once1] ->
         let {
           sat [Occ=Once1] :: T15226b.StrictPair a b
           [LclId] =
diff --git a/testsuite/tests/th/ListTuplePunsTH.hs b/testsuite/tests/th/ListTuplePunsTH.hs
new file mode 100644
index 000000000000..c31800763895
--- /dev/null
+++ b/testsuite/tests/th/ListTuplePunsTH.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE TemplateHaskell #-}
+
+module ListTuplePunsTH where
+
+import Data.Kind (Type, Constraint)
+import Language.Haskell.TH hiding (Type)
+import GHC.Exts (List)
+import Data.Tuple.Experimental (Tuple2, Unit)
+
+$(do  tys <- sequence [ [t| forall a. (a :: Constraint) |]
+                      , [t| forall a. (a :: List Type) |]
+                      , [t| forall a. (a :: Tuple2 Type Bool) |]
+                      , [t| forall a. (a :: Unit) |]
+                      , [t| forall a. (a :: (Type -> Bool)
+                                         -> (Tuple2 Type (Type -> Type) -> Bool)) |]
+                      ]
+
+      reportWarning (pprint tys)
+      return [])
diff --git a/testsuite/tests/th/ListTuplePunsTH.script b/testsuite/tests/th/ListTuplePunsTH.script
new file mode 100644
index 000000000000..de9b3ca4ccca
--- /dev/null
+++ b/testsuite/tests/th/ListTuplePunsTH.script
@@ -0,0 +1,2 @@
+:set -XNoListTuplePuns
+:load ListTuplePunsTH
diff --git a/testsuite/tests/th/ListTuplePunsTH.stderr b/testsuite/tests/th/ListTuplePunsTH.stderr
new file mode 100644
index 000000000000..6dec7de651fc
--- /dev/null
+++ b/testsuite/tests/th/ListTuplePunsTH.stderr
@@ -0,0 +1,8 @@
+ListTuplePunsTH.hs:14:2: warning: [GHC-39584]
+forall a_0 . (a_0 :: Constraint)
+forall a_1 . (a_1 :: GHC.Types.List *)
+forall a_2 . (a_2 :: GHC.Tuple.Tuple2 * GHC.Types.Bool)
+forall a_3 . (a_3 :: GHC.Tuple.Unit)
+forall a_4 .
+(a_4 :: (* -> GHC.Types.Bool) ->
+        GHC.Tuple.Tuple2 * (* -> *) -> GHC.Types.Bool)
diff --git a/testsuite/tests/th/T10734.stdout b/testsuite/tests/th/T10734.stdout
index 834377c9049b..18071195cff8 100644
--- a/testsuite/tests/th/T10734.stdout
+++ b/testsuite/tests/th/T10734.stdout
@@ -1,3 +1,3 @@
-do {let {}; GHC.Internal.Base.return GHC.Tuple.Prim.()}
+do {let {}; GHC.Internal.Base.return GHC.Tuple.()}
 do {let {x_0 = 5}; GHC.Internal.Base.return x_0}
 do {let {x_0 = 5; y_1 = 3}; GHC.Internal.Base.return x_0}
diff --git a/testsuite/tests/th/T12478_4.stderr b/testsuite/tests/th/T12478_4.stderr
index 852b104cd55f..58eb91fb6a6a 100644
--- a/testsuite/tests/th/T12478_4.stderr
+++ b/testsuite/tests/th/T12478_4.stderr
@@ -2,5 +2,5 @@
 T12478_4.hs:7:7: error: [GHC-97721]
     • Illegal sum arity: 1
         Sums must have an arity of at least 2
-      When splicing a TH type: (#  #) GHC.Tuple.Prim.Unit
+      When splicing a TH type: (#  #) GHC.Tuple.Unit
     • In the untyped splice: $(unboxedSumT 1 `appT` conT ''())
diff --git a/testsuite/tests/th/T15843.stdout b/testsuite/tests/th/T15843.stdout
index bd56e72b5ff9..2f9a3cad4704 100644
--- a/testsuite/tests/th/T15843.stdout
+++ b/testsuite/tests/th/T15843.stdout
@@ -2,8 +2,8 @@ TupE [Just (LitE (IntegerL 909)),Nothing]
 (909,)
 TupE [Nothing,Just (LitE (IntegerL 909))]
 (, 909)
-ConE GHC.Tuple.Prim.(,)
-GHC.Tuple.Prim.(,)
+ConE GHC.Tuple.(,)
+GHC.Tuple.(,)
 TupE [Just (LitE (IntegerL 909)),Just (LitE (IntegerL 606))]
 (909, 606)
 TupE [Nothing,Nothing,Just (LitE (IntegerL 909))]
@@ -12,8 +12,8 @@ TupE [Just (LitE (IntegerL 909)),Nothing]
 (909,)
 TupE [Nothing,Just (LitE (IntegerL 909))]
 (, 909)
-ConE GHC.Tuple.Prim.(,)
-GHC.Tuple.Prim.(,)
+ConE GHC.Tuple.(,)
+GHC.Tuple.(,)
 TupE [Just (LitE (IntegerL 909)),Just (LitE (IntegerL 606))]
 (909, 606)
 TupE [Nothing,Nothing,Just (LitE (IntegerL 909))]
@@ -21,8 +21,8 @@ TupE [Nothing,Nothing,Just (LitE (IntegerL 909))]
 "(909,) applied to 'c' should be (909, 'c') ===> True"
 "(,909) applied to False should be (False, 909) ===> True"
 "(,,909) applied to 606 and True should be (606, True, 909) ===> True"
-ConE GHC.Prim.(#,#)
-GHC.Prim.(#,#)
+ConE GHC.Types.(#,#)
+GHC.Types.(#,#)
 UnboxedTupE [Just (LitE (CharL 'c')),Just (ConE GHC.Types.False)]
 (# 'c', GHC.Types.False #)
 UnboxedTupE [Just (LitE (CharL 'c')),Nothing]
diff --git a/testsuite/tests/th/T20711.stdout b/testsuite/tests/th/T20711.stdout
index 922cf37e8f6e..f14e7b3479fc 100644
--- a/testsuite/tests/th/T20711.stdout
+++ b/testsuite/tests/th/T20711.stdout
@@ -1,2 +1,2 @@
-f_0 (-1) = GHC.Tuple.Prim.()
-f_0 (-10) = GHC.Tuple.Prim.()
+f_0 (-1) = GHC.Tuple.()
+f_0 (-10) = GHC.Tuple.()
diff --git a/testsuite/tests/th/T8761.stderr b/testsuite/tests/th/T8761.stderr
index 1a10fd29e3db..7f05140e507d 100644
--- a/testsuite/tests/th/T8761.stderr
+++ b/testsuite/tests/th/T8761.stderr
@@ -1,5 +1,5 @@
 pattern Q1 x1_0 x2_1 x3_2 <- ((x1_0, x2_1), [x3_2], _, _)
-pattern x1_0 `Q2` x2_1 = GHC.Tuple.Prim.MkSolo (x1_0, x2_1)
+pattern x1_0 `Q2` x2_1 = GHC.Tuple.MkSolo (x1_0, x2_1)
 pattern Q3 {qx3, qy3, qz3} <- ((qx3, qy3), [qz3]) where
                                   Q3 qx3 qy3 qz3 = ((qx3, qy3), [qz3])
 T8761.hs:(16,1)-(39,13): Splicing declarations
diff --git a/testsuite/tests/th/TH_tuple1.stdout b/testsuite/tests/th/TH_tuple1.stdout
index b76f7e1fbfae..310734a7d463 100644
--- a/testsuite/tests/th/TH_tuple1.stdout
+++ b/testsuite/tests/th/TH_tuple1.stdout
@@ -1,10 +1,10 @@
-SigE (AppE (AppE (ConE GHC.Tuple.Prim.(,)) (LitE (IntegerL 1))) (LitE (IntegerL 2))) (AppT (AppT (ConT GHC.Tuple.Prim.(,)) (ConT GHC.Num.Integer.Integer)) (ConT GHC.Num.Integer.Integer))
-GHC.Tuple.Prim.(,) 1 2 :: GHC.Tuple.Prim.(,) GHC.Num.Integer.Integer
-                                             GHC.Num.Integer.Integer
-SigE (AppE (ConE GHC.Tuple.Prim.MkSolo) (LitE (IntegerL 1))) (AppT (ConT GHC.Tuple.Prim.Solo) (ConT GHC.Num.Integer.Integer))
-GHC.Tuple.Prim.MkSolo 1 :: GHC.Tuple.Prim.Solo GHC.Num.Integer.Integer
-SigE (AppE (AppE (ConE GHC.Tuple.Prim.(#,#)) (LitE (IntegerL 1))) (LitE (IntegerL 2))) (AppT (AppT (ConT GHC.Tuple.Prim.(#,#)) (ConT GHC.Num.Integer.Integer)) (ConT GHC.Num.Integer.Integer))
-GHC.Tuple.Prim.(#,#) 1 2 :: GHC.Tuple.Prim.(#,#) GHC.Num.Integer.Integer
-                                                 GHC.Num.Integer.Integer
-SigE (AppE (ConE GHC.Tuple.Prim.Solo#) (LitE (IntegerL 1))) (AppT (ConT GHC.Tuple.Prim.Solo#) (ConT GHC.Num.Integer.Integer))
-GHC.Tuple.Prim.Solo# 1 :: GHC.Tuple.Prim.Solo# GHC.Num.Integer.Integer
+SigE (AppE (AppE (ConE GHC.Tuple.(,)) (LitE (IntegerL 1))) (LitE (IntegerL 2))) (AppT (AppT (ConT GHC.Tuple.Tuple2) (ConT GHC.Num.Integer.Integer)) (ConT GHC.Num.Integer.Integer))
+GHC.Tuple.(,) 1 2 :: GHC.Tuple.Tuple2 GHC.Num.Integer.Integer
+                                      GHC.Num.Integer.Integer
+SigE (AppE (ConE GHC.Tuple.MkSolo) (LitE (IntegerL 1))) (AppT (ConT GHC.Tuple.Solo) (ConT GHC.Num.Integer.Integer))
+GHC.Tuple.MkSolo 1 :: GHC.Tuple.Solo GHC.Num.Integer.Integer
+SigE (AppE (AppE (ConE GHC.Prim.(#,#)) (LitE (IntegerL 1))) (LitE (IntegerL 2))) (AppT (AppT (ConT GHC.Prim.Tuple2#) (ConT GHC.Num.Integer.Integer)) (ConT GHC.Num.Integer.Integer))
+GHC.Prim.(#,#) 1 2 :: GHC.Prim.Tuple2# GHC.Num.Integer.Integer
+                                       GHC.Num.Integer.Integer
+SigE (AppE (ConE GHC.Prim.Solo#) (LitE (IntegerL 1))) (AppT (ConT GHC.Prim.Solo#) (ConT GHC.Num.Integer.Integer))
+GHC.Prim.Solo# 1 :: GHC.Prim.Solo# GHC.Num.Integer.Integer
diff --git a/testsuite/tests/th/all.T b/testsuite/tests/th/all.T
index 781e4950dda8..bfcfd989cd0c 100644
--- a/testsuite/tests/th/all.T
+++ b/testsuite/tests/th/all.T
@@ -603,3 +603,4 @@ test('T24190', normal, compile_and_run, [''])
 test('T24308', normal, compile_and_run, [''])
 test('T14032a', normal, compile, [''])
 test('T14032e', normal, compile_fail, ['-dsuppress-uniques'])
+test('ListTuplePunsTH', [only_ways(['ghci']), extra_files(['ListTuplePunsTH.hs', 'T15843a.hs'])], ghci_script, ['ListTuplePunsTH.script'])
diff --git a/testsuite/tests/th/overloaded/TH_overloaded_csp.stdout b/testsuite/tests/th/overloaded/TH_overloaded_csp.stdout
index 95bb18b0030a..5a64654110bb 100644
--- a/testsuite/tests/th/overloaded/TH_overloaded_csp.stdout
+++ b/testsuite/tests/th/overloaded/TH_overloaded_csp.stdout
@@ -1,2 +1,2 @@
-ConE GHC.Tuple.Prim.()
-ConE GHC.Tuple.Prim.()
+ConE GHC.Tuple.()
+ConE GHC.Tuple.()
diff --git a/testsuite/tests/th/overloaded/TH_overloaded_extract.stdout b/testsuite/tests/th/overloaded/TH_overloaded_extract.stdout
index 28bd18742abb..a79867d8d3c0 100644
--- a/testsuite/tests/th/overloaded/TH_overloaded_extract.stdout
+++ b/testsuite/tests/th/overloaded/TH_overloaded_extract.stdout
@@ -1,6 +1,6 @@
 InfixE (Just (LitE (IntegerL 1))) (VarE GHC.Internal.Num.+) (Just (LitE (IntegerL 2)))
 LamE [VisAP (VarP x)] (InfixE (Just (LitE (IntegerL 1))) (VarE GHC.Internal.Num.+) (Just (LitE (IntegerL 2))))
 [DataD [] Foo [] Nothing [NormalC Foo []] []]
-ConP GHC.Tuple.Prim.() [] []
+ConP GHC.Tuple.() [] []
 AppT ListT (ConT GHC.Types.Int)
 InfixE Nothing (VarE GHC.Internal.Num.+) (Just (LitE (IntegerL 1)))
diff --git a/testsuite/tests/typecheck/should_compile/DataToTagSolving.hs b/testsuite/tests/typecheck/should_compile/DataToTagSolving.hs
index c09a761c0d23..5621c4795f44 100644
--- a/testsuite/tests/typecheck/should_compile/DataToTagSolving.hs
+++ b/testsuite/tests/typecheck/should_compile/DataToTagSolving.hs
@@ -2,7 +2,7 @@
 module DataToTagSolving where
 
 import GHC.Exts
-import GHC.Tuple.Prim
+import GHC.Tuple
 import Data.Void (absurd)
 import Type.Reflection
 
diff --git a/testsuite/tests/typecheck/should_compile/T18529.stderr b/testsuite/tests/typecheck/should_compile/T18529.stderr
index 21b41159d45f..570c2557a456 100644
--- a/testsuite/tests/typecheck/should_compile/T18529.stderr
+++ b/testsuite/tests/typecheck/should_compile/T18529.stderr
@@ -32,7 +32,7 @@ $krep [InlPrag=[~]]
   = GHC.Types.KindRepFun GHC.Types.krep$* GHC.Types.krep$Constraint
 $krep [InlPrag=[~]]
   = GHC.Types.KindRepTyConApp
-      GHC.Tuple.Prim.$tcUnit [] @GHC.Types.KindRep
+      GHC.Tuple.$tcUnit [] @GHC.Types.KindRep
 Bug.$trModule
   = GHC.Types.Module
       (GHC.Types.TrNameS "main"#) (GHC.Types.TrNameS "Bug"#)
diff --git a/testsuite/tests/typecheck/should_run/T14341.stdout b/testsuite/tests/typecheck/should_run/T14341.stdout
index ea3d3441a28d..862acc959a2d 100644
--- a/testsuite/tests/typecheck/should_run/T14341.stdout
+++ b/testsuite/tests/typecheck/should_run/T14341.stdout
@@ -1,3 +1,3 @@
 (,,)
 (,,) Int
-(Int,Int,Int)
\ No newline at end of file
+(Int,Int,Int)
diff --git a/testsuite/tests/typecheck/should_run/T22510.stdout b/testsuite/tests/typecheck/should_run/T22510.stdout
index 56f6aa096c87..4216e70760dd 100644
--- a/testsuite/tests/typecheck/should_run/T22510.stdout
+++ b/testsuite/tests/typecheck/should_run/T22510.stdout
@@ -8,8 +8,8 @@ VecCount: GHC.Types
 'Vec2: GHC.Types
 VecElem: GHC.Types
 'Int8ElemRep: GHC.Types
-((),()): GHC.Tuple.Prim
-(#,#) ('BoxedRep 'Lifted) ('BoxedRep 'Lifted) () (): GHC.Prim
+((),()): GHC.Tuple
+(# (),() #): GHC.Types
 Int64#: GHC.Prim
 Word64#: GHC.Prim
 TYPE: GHC.Prim
diff --git a/testsuite/tests/typecheck/should_run/TypeRep.stdout b/testsuite/tests/typecheck/should_run/TypeRep.stdout
index d3df982ecf1c..8de9791dc680 100644
--- a/testsuite/tests/typecheck/should_run/TypeRep.stdout
+++ b/testsuite/tests/typecheck/should_run/TypeRep.stdout
@@ -10,10 +10,10 @@ IO
 Bool
 Ordering
 Int -> Int
-(%,%) (Eq Int) (Eq [Char])
+CTuple2 (Eq Int) (Eq [Char])
 Int#
-(##)
-(#,#) 'IntRep ('BoxedRep 'Lifted) Int# Int
+(#  #)
+(# Int#,Int #)
 Proxy (CONSTRAINT ('BoxedRep 'Lifted)) (Eq Int)
 Proxy * (Int,Int)
 Proxy Symbol "hello world"
diff --git a/utils/dump-decls/Main.hs b/utils/dump-decls/Main.hs
index 7083558cdebb..cd90257858d7 100644
--- a/utils/dump-decls/Main.hs
+++ b/utils/dump-decls/Main.hs
@@ -15,13 +15,13 @@ import GHC.Types.Unique.Set (nonDetEltsUniqSet)
 import GHC.Types.TyThing (tyThingParent_maybe)
 import GHC.Types.TyThing.Ppr (pprTyThing)
 import GHC.Types.Name (nameOccName, nameModule_maybe, stableNameCmp)
-import GHC.Types.Name.Occurrence (OccName, mkDataOcc, mkVarOcc)
+import GHC.Types.Name.Occurrence (OccName, mkDataOcc, mkVarOcc, occNameString)
 import GHC.Unit.External (eps_inst_env)
 import GHC.Iface.Syntax (ShowSub(..), ShowHowMuch(..), AltPpr(..))
 import GHC.Iface.Type (ShowForAllFlag(..))
 
 import Data.Function (on)
-import Data.List (sortBy)
+import Data.List (sortBy, isPrefixOf)
 import Control.Monad.IO.Class
 import System.Environment (getArgs)
 import Prelude hiding ((<>))
@@ -148,6 +148,16 @@ ignoredTyCon = ignoredName . getName
 ignoredType :: Type -> Bool
 ignoredType = any ignoredTyCon . nonDetEltsUniqSet . tyConsOfType
 
+ctupleInstance :: Name -> Bool
+ctupleInstance name =
+  isPrefixOf "CTuple" nameS
+  ||
+  nameS == "CUnit"
+  ||
+  nameS == "CSolo"
+  where
+    nameS = occNameString (getOccName name)
+
 -- | Ignore instances whose heads mention ignored types.
 ignoredInstance :: ClsInst -> Bool
 ignoredInstance inst
@@ -155,6 +165,8 @@ ignoredInstance inst
   = True
   | any ignoredType tys
   = True
+  | ctupleInstance $ getName cls
+  = True
   | otherwise
   = False
   where
diff --git a/utils/haddock b/utils/haddock
index 6b2b51043f6f..91f338a4f1ae 160000
--- a/utils/haddock
+++ b/utils/haddock
@@ -1 +1 @@
-Subproject commit 6b2b51043f6fe2581cbf2de9b2c33969a99a8e3f
+Subproject commit 91f338a4f1ae59fd6ea482b73a27708113912d5d
-- 
GitLab