#include<fstream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define MAX 100
ifstream fin("combinari.in");
ofstream fout("combinari.out");
void afisare(int n, int x[])
{
int i;
for (i = 1; i <= n; i++)
fout<<x[i]<<" ";
fout<<'\n';
}
int condcontinuare(int n, int x[])
{
if ((n > 1 && x[n] > x[n-1]) || (n == 1))
return TRUE;
else
return FALSE;
}
int main()
{
int n, m, k, gata;
int x[MAX];
fin>>n>>m;
k = 1; x[k] = 0;
while (k > 0)
{
gata = FALSE;
while (x[k] + 1 <= n && gata == FALSE)
{
x[k] = x[k]+1;
if (condcontinuare(k, x))
gata = TRUE;
}
if (gata == TRUE)
if (k == m)
afisare(k, x);
else
{
k = k + 1;
x[k] = 0;
}
else
k = k - 1;
}
return 0;
}