#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxn 200 //数组要开足够大
int mark[maxn];
int k,store[maxn],r,n;
void STL(int r)
{
int i;
if(r==0)
{
int ok=1;
for(i=k;i>=1;i--)
if(store[i-1]>store[i])
{ok=0;break;}
if(ok)
{
for(i=k;i>=1;i--)
printf("%d",store[i]);
printf("\n");
}
}
for(i=n;i>=1;i--)
{
if(!mark[i])
{
store[r]=i;
mark[i]=1;
STL(r-1);
mark[i]=0;
}
}
}
int main()
{
scanf("%d%d",&n,&r);
memset(mark,0,sizeof(mark));
memset(store,0,sizeof(store));
k=r;
STL(r);
//system("pause");
return 0;
}
#include<stdlib.h>
#include<string.h>
#define maxn 200 //数组要开足够大
int mark[maxn];
int k,store[maxn],r,n;
void STL(int r)
{
int i;
if(r==0)
{
int ok=1;
for(i=k;i>=1;i--)
if(store[i-1]>store[i])
{ok=0;break;}
if(ok)
{
for(i=k;i>=1;i--)
printf("%d",store[i]);
printf("\n");
}
}
for(i=n;i>=1;i--)
{
if(!mark[i])
{
store[r]=i;
mark[i]=1;
STL(r-1);
mark[i]=0;
}
}
}
int main()
{
scanf("%d%d",&n,&r);
memset(mark,0,sizeof(mark));
memset(store,0,sizeof(store));
k=r;
STL(r);
//system("pause");
return 0;
}