#include <iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
#include<iomanip>
int n, r;
int stack[22];
int visited[22];
void dfs(int depth, int maxDepth)
{
if (depth == maxDepth)
{
for (int i = 0; i+1 < maxDepth; i++)
{
if (stack[i] >= stack[i + 1])return;
}
for (int i = 0; i < maxDepth; i++)
{
cout << " " << stack[i];
}
cout << endl;
return;
}
for (int i = 0; i < n; i++)
{
if (!visited[i])
{
visited[i] = 1;
stack[depth] = i + 1;
dfs(depth + 1, maxDepth);
visited[i] = 0;
}
}
}
int main()
{
cin >> n >> r;
memset(visited, 0, sizeof(visited));
int maxDepth = r;
dfs(0, maxDepth);
return 0;
}