Dou:=proc(C,n) local C1,i: C1:=[seq(C[i] union {n},i=1..nops(C))]: if nops(C)>1 then [op(C),C1[nops(C1)]],[op(1..nops(C1)-1,C1)]: else : [op(C),C1[nops(C1)]]: fi end: Scd:=proc(n) local S: if n=0 then RETURN([[{}]]): fi: S:=Scd(n-1): [seq(Dou(S[i],n),i=1..nops(S))]: end: