unmerges (x:xs) = [([x],xs)] 
                  ++ map (applyFst (x:)) (unmerges xs)
                  ++ map (applySnd (x:)) (unmerges xs)
unmerges (x:xs) = [([x],xs)] 
                  ++ map (applyFst (x:)) (unmerges xs)
                  ++ map (applySnd (x:)) (unmerges xs)
unmerges (x:xs) = [([x],xs)] 
                  ++ map (applyFst (x:)) (unmerges xs)
                  ++ map (applySnd (x:)) (unmerges xs)