Ci( z, b, n, k ) = { local( c = 1 ); n--; k--; while( k >= 0 , if( z < b, print1(c, " "); c++; if( n > 0, b = b*k \ n); n--; k--; , c++; z -= b; b = b*(n-k)\n; n-- ) ); print; } combI( n, k ) = { local( bnk = binomial( n, k ), b11 = bnk * k \ n ); \\ binomial( n-1, k-1 ) for( z = 0, bnk - 1, Ci(z, b11, n, k ) ); }