import Data.Tuple.OneTuple
class Tupleify a b | a -> b where
tupleify :: a -> b
data Test a b c
= Test1 a
| Test2 b c
| Test3
String Int deriving (Eq, Show)
instance Tupleify (Test a b c) (OneTuple a) where
tupleify (Test1 x) = OneTuple x
instance Tupleify (Test a b c) (b, c) where
tupleify (Test2 x y) = (x, y)
tupleify (Test3 x y) = (x, y)
aW1wb3J0IERhdGEuVHVwbGUuT25lVHVwbGUKCmNsYXNzIFR1cGxlaWZ5IGEgYiB8IGEgLT4gYiB3aGVyZQogICAgdHVwbGVpZnkgOjogYSAtPiBiCgpkYXRhIFRlc3QgYSBiIGMgPSBUZXN0MSBhIHwgVGVzdDIgYiBjIHwgVGVzdDMgU3RyaW5nIEludCBkZXJpdmluZyAoRXEsIFNob3cpCgppbnN0YW5jZSBUdXBsZWlmeSAoVGVzdCBhIGIgYykgKE9uZVR1cGxlIGEpIHdoZXJlCiAgICB0dXBsZWlmeSAoVGVzdDEgeCkgPSBPbmVUdXBsZSB4CgppbnN0YW5jZSBUdXBsZWlmeSAoVGVzdCBhIGIgYykgKGIsIGMpIHdoZXJlCiAgICB0dXBsZWlmeSAoVGVzdDIgeCB5KSA9ICh4LCB5KQogICAgdHVwbGVpZnkgKFRlc3QzIHggeSkgPSAoeCwgeSk=