#include <stdio.h>
int a[1001],b[1001],num;
int f(int m,int n,int k){ // 从m个中选n个进行排列,k起始位置
int i,j;
for(i=1;i<=m;i++){
if(!b[i]){ // 判断i是否可用,是否满足条件
a[k]=i; // 保存结果
b[i]=1; // 标志位置一,表示该数字已被使用
if(k==n){ // 是否已经取了n个数
num++; // 方案总数,输出解
printf("NO.%-2d:\t",num);
for(j=1;j<=n;j++) printf("%3d",a[j]);
printf("\n");
}
else f(m,n,k+1); // 未到底目的地,继续往下一步走
b[i]=0; // 回溯:保存结果之前的状态(回溯一步)
}
}
}
int main(){
int m,n;
scanf("%d%d",&m,&n);
f(m,n,1);
return 0;
}