let rec combinations n l =
match n, l with
| 0, _ -> [[]]
| _, [] -> []
| k, (x::xs) -> List.map ((@) [x]) (combinations (k-1) xs) @ combinations k xs
let rec cross acc xs =
match xs with
| h :: t -> cross ([ for e in t -> h, e] @ acc) t
| [] -> acc
let solve n (lst : int list) =
[ for e in 1..n -> combinations e lst ]
|> Seq.collect id
|> Seq.groupBy List.sum
|> Seq.filter (fun (_,e) -> Seq.length e > 1)
|> Seq.collect (snd >> Seq.toList >> cross [])
|> Seq.toList
solve 6 [1..12]
|> List.rev |> List.head
|> printfn "%A"
bGV0IHJlYyBjb21iaW5hdGlvbnMgbiBsID0KICAgICAgICBtYXRjaCBuLCBsIHdpdGgKICAgICAgICB8IDAsIF8gLT4gW1tdXQogICAgICAgIHwgXywgW10gLT4gW10KICAgICAgICB8IGssICh4Ojp4cykgLT4gTGlzdC5tYXAgKChAKSBbeF0pIChjb21iaW5hdGlvbnMgKGstMSkgeHMpIEAgY29tYmluYXRpb25zIGsgeHMKCmxldCByZWMgY3Jvc3MgYWNjIHhzID0gCiAgICAgICAgbWF0Y2ggeHMgd2l0aCAKICAgICAgICB8IGggOjogdCAtPiBjcm9zcyAoWyBmb3IgZSBpbiB0IC0+IGgsIGVdIEAgYWNjKSB0CiAgICAgICAgfCBbXSAtPiBhY2MKICAgICAgICAKbGV0IHNvbHZlIG4gKGxzdCA6IGludCBsaXN0KSA9IAogICAgICAgIFsgZm9yIGUgaW4gMS4ubiAtPiBjb21iaW5hdGlvbnMgZSBsc3QgXQogICAgICAgIHw+IFNlcS5jb2xsZWN0IGlkIAogICAgICAgIHw+IFNlcS5ncm91cEJ5IExpc3Quc3VtCiAgICAgICAgfD4gU2VxLmZpbHRlciAoZnVuIChfLGUpIC0+IFNlcS5sZW5ndGggZSA+IDEpCiAgICAgICAgfD4gU2VxLmNvbGxlY3QgKHNuZCA+PiBTZXEudG9MaXN0ID4+IGNyb3NzIFtdKQogICAgICAgIHw+IFNlcS50b0xpc3QKCnNvbHZlIDYgWzEuLjEyXSAKfD4gTGlzdC5yZXYgfD4gTGlzdC5oZWFkCnw+IHByaW50Zm4gIiVBIg==