#include<stdio.h>
const int maxn=10;
int totalN,selectM;
int mat[10];//存储数组
int num[10];//输出数组
void solve(int startVar,int selectVar)
{
int i;
if(selectVar>=selectM)
{
for(i=0;i<selectM;++i)
printf("%d ", num[i]);
puts("");
return;
}
for(i=startVar;i<totalN;++i){
num[selectVar]=mat[i];
solve(i+1,selectVar+1);
}
}
int main()
{
int i;
while(scanf("%d%d", &totalN, &selectM)!=EOF)
{
for(i=0;i<totalN;++i)
mat[i]=i+1;
solve(0,0);
}
return 0;
}
const int maxn=10;
int totalN,selectM;
int mat[10];//存储数组
int num[10];//输出数组
void solve(int startVar,int selectVar)
{
int i;
if(selectVar>=selectM)
{
for(i=0;i<selectM;++i)
printf("%d ", num[i]);
puts("");
return;
}
for(i=startVar;i<totalN;++i){
num[selectVar]=mat[i];
solve(i+1,selectVar+1);
}
}
int main()
{
int i;
while(scanf("%d%d", &totalN, &selectM)!=EOF)
{
for(i=0;i<totalN;++i)
mat[i]=i+1;
solve(0,0);
}
return 0;
}