#include<iostream>
using namespace std;
int n,m;
const int N=26;
int w[N];
void dfs(int u,int st)//u表示的是当前选的位置,st是当前可以选的数
{
       if(u-1+n-st+1<m)return ;//剪枝,当把后面所有数都选上都不够时,就停止搜索
    if(u==m+1){
        for(int i=1;i<=m;i++)
        {
            cout<<w[i]<<" ";
        }
        cout<<endl;
        return ;
    }
    for(int i=st;i<=n;i++)
    {
        w[u]=i;
        dfs(u+1,i+1);
        w[i]=0;
        
    }
}
int main()
{
    cin>>n>>m;
    dfs(1,1);
}