#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
int n;
int P[maxn];
bool hashTable[maxn]={false};
void generate(int index){
if(index==n+1){
int i;
for( i=1;i<n;i++) {
printf("%d ",P[i]);
}
printf("%d\n",P[i]);
return ;
}//if
for(int x=1;x<=n;x++){
if(hashTable[x]==false){
P[index]=x;
hashTable[x]=true;
generate(index+1);
hashTable[x]=false;
}
}
}//void
int main(){
scanf("%d",&n);
generate(1);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
int n,r;
int P[maxn];
bool hashTable[maxn]={false};
bool hash[maxn]={false};
void generate(int index,int head,int rear){
if(index==r+1){
int i;
for( i=1;i<r;i++) {
printf("%d ",P[i]);
}
printf("%d\n",P[i]);
return ;
}//if
for(int x=head;x<=rear;x++){
if(hashTable[x]==false){
P[index]=x;
hashTable[x]=true;
generate(index+1,x+1,rear);
hashTable[x]=false;
}
}
}//void
int main(){
scanf("%d%d",&n,&r);
generate(1,1,n);
return 0;
}