sps[{}]:={{}};sps[set:{i_,___}]:=联接@@函数[s,前缀[#,s]和/@sps[Complement[set,s]]/@Cases[子集[set],{i,___}];
mpm[n_]:=连接@@表[Union[Sort[Sort/@(#/.x_Integer:>s[[x]])]和/@sps[Range[n]]],{s,Flatten[MapIndexed[Table[#2,{#1}]&,#]]和/@整数分区[n]}];
brute[m_]:=第一个[Sort[Table[Sort[排序/@(m/.Rule@@@表[{i,p[i]]},{i,长度[p]}])],{p,排列[Union@@m]}]];
csm[s_]:=使用[{c=Select[Subsets[Range[Length[s]],{2}],Length[Intersection@@s[[#]]>0&]},如果[c=={},s,csm[Sort[Append[Delete[s,List/@c[[1]]],Union@@s[[c[1]]]]];
表[Length[Union[brute/@Select[mpm[n],UnsameQ@@#&And@@UnsameQ@@@#&Length[csm[#]]==1&Select[Tuples[#],UnnameQ@@#&]={}&]],{n,0,6}]