#include <stdio.h>
#include <vector>
using namespace std;
void bkt( int N, int K, vector< int > V, int Max, FILE * fout ) {
if( V.size( ) == K ) {
for( int i = 0; i < K; i ++ ) {
fprintf( fout, "%d ", V[ i ] );
}
fprintf( fout, "\n" );
} else {
for( int i = Max + 1; i <= N; i ++ ) {
vector< int > nV = V;
nV.push_back( i );
int nMax = i;
bkt( N, K, nV, nMax, fout );
}
}
}
int main()
{
FILE * fin, * fout;
fin = fopen( "combinari.in", "r" );
fout = fopen( "combinari.out", "w" );
int N, K;
fscanf( fin, "%d%d", &N, &K );
vector< int > vNULL;
bkt( N, K, vNULL, 0, fout );
fclose( fin );
fclose( fout );
return 0;
}