subsequencesOfSize
:: Int -> [a
] -> [[a
]]subsequencesOfSize n xs
| n
> length xs
= []subsequencesOfSize n xs = subsequencesBySize xs !! n where
subsequencesBySize [] = [[[]]]
subsequencesBySize
(x:xs
) = zipWith (++) ([] :
map (map (x:
)) next
) (next
++ [[]]) where next = subsequencesBySize xs
main = do
c3Vic2VxdWVuY2VzT2ZTaXplIDo6IEludCAtPiBbYV0gLT4gW1thXV0Kc3Vic2VxdWVuY2VzT2ZTaXplIG4geHMgfCBuID4gbGVuZ3RoIHhzID0gW10Kc3Vic2VxdWVuY2VzT2ZTaXplIG4geHMgPSBzdWJzZXF1ZW5jZXNCeVNpemUgeHMgISEgbiB3aGVyZQoJc3Vic2VxdWVuY2VzQnlTaXplICAgIFtdICA9IFtbW11dXQoJc3Vic2VxdWVuY2VzQnlTaXplICh4OnhzKSA9IHppcFdpdGggKCsrKSAoW10gOiBtYXAgKG1hcCAoeDopKSBuZXh0KSAobmV4dCArKyBbW11dKQoJCXdoZXJlIG5leHQgPSBzdWJzZXF1ZW5jZXNCeVNpemUgeHMKCm1haW4gPSBkbwoJcHJpbnQgJCBsZW5ndGggJCBzdWJzZXF1ZW5jZXNPZlNpemUgMyAgIFsxLi4zNTBdCglwcmludCAkIGxlbmd0aCAkIHN1YnNlcXVlbmNlc09mU2l6ZSAxNDcgWzEuLjE1MF0=