#include<bits/stdc++.h> using namespace std; const long long maxn=1e7+9; typedef long long ll; ll n,k,a[maxn],b[maxn]; void dfs(ll level) { if(level==k+1) { for(ll i=1;i<=k;i++) { cout<<setw(3)<<a[i]; } cout<<endl; return; } for(ll i=a[level-1]+1;i<=n;i++) //这步是关键,i=a[level-1]+1可以避免乱序的情况,保证了输出的一定是升序 { if(b[i]==0) { b[i]=1; a[level]=i; dfs(level+1); b[i]=0; } } } int main() { cin>>n>>k; dfs(1); }