import Data.List data Trump = Card {suit :: Char, num :: Char} deriving Eq instance Ord Trump where c1 <= c2 = scomp (suit c1) (suit c2) || ((suit c1) == (suit c2) && ncomp (num c1) (num c2)) where scomp s1 s2 = elemIndex s1 "DCHS" < elemIndex s2 "DCHS" ncomp n1 n2 = elemIndex n1 "A23456789TJQK" <= elemIndex n2 "A23456789TJQK" instance Show Trump where show c = [suit c, num c] main = getContents >>= putStrLn . unwords . map show . sort . map (\[s,n] -> Card {suit = s, num = n}) . tail . words