//组合数,深搜入门
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int n,r;
int num[10];
void dfs(int a,int b)
{
if(b==r)
{
for(int i=0;i<r;i++)
{
printf("%d",num[i]);
}
cout<<endl;
return ;
}
for(int i=a;i>0;i--)
{
num[b]=i;
dfs(--a,b+1);
}
}
int main(int argc, char *argv[]) {
cin>>n>>r;
dfs(n,0);
return 0;
}
/*
描述找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。
输入
输入n、r。
输出
按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。
样例输入
5 3
样例输出
543
542
541
532
531
521
432
431
421
*/