{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
data Nat = Z | S Nat
data family AlsoANat :: nat
type family IdNat (n :: Nat) :: Nat where
IdNat 'Z = 'Z
IdNat ('S n) = 'S n
IdNat AlsoANat = AlsoANat
ey0jIExBTkdVQUdFIFR5cGVGYW1pbGllcyAjLX0Key0jIExBTkdVQUdFIERhdGFLaW5kcyAjLX0Key0jIExBTkdVQUdFIFBvbHlLaW5kcyAjLX0KCmRhdGEgTmF0ID0gWiB8IFMgTmF0CgpkYXRhIGZhbWlseSBBbHNvQU5hdCA6OiBuYXQKCnR5cGUgZmFtaWx5IElkTmF0IChuIDo6IE5hdCkgOjogTmF0IHdoZXJlCiAgICBJZE5hdCAnWiA9ICdaCiAgICBJZE5hdCAoJ1MgbikgPSAnUyBuCiAgICBJZE5hdCBBbHNvQU5hdCA9IEFsc29BTmF0CgptYWluID0gcHJpbnQgKCk=