(* Implementation of KSubsets taken from packet DiscreteMath`Combinatorica` *)
KSubsets[l_List, 0] := {{}}
KSubsets[l_List, 1] := Partition[l, 1]
KSubsets[l_List, k_Integer?Positive] := {l} /; (k == Length[l])
KSubsets[l_List, k_Integer?Positive] := {} /; (k > Length[l])
KSubsets[l_List, k_Integer?Positive] := Join[Map[(Prepend[#, First[l]]) &, KSubsets[Rest[l], k - 1]],
       KSubsets[Rest[l], k]]