#include <iostream>
#include <stack>
using namespace std;
int n, m;
// void dfs(int u, int sum, int state)
// {
// // 0
// if(sum + n - u < m) return;
// if(sum == m)
// {
// for(int i = 0; i < n; i++)
// if(state >> i & 1)
// cout << i + 1 << " ";
// cout << endl;
// return;
// }
// dfs(u + 1, sum + 1, state | 1 << u);
// // 1
// dfs(u + 1, sum, state);
// // 2
// }
struct State
{
int pos, u, sum, state;
};
int main()
{
cin >> n >> m;
// dfs(0, 0, 0);
stack<State> stk;
stk.push({0, 0, 0, 0});
while(!stk.empty())
{
auto t = stk.top(); stk.pop();
if(t.pos == 0)
{
if(t.sum + n - t.u < m) continue;
if(t.sum == m)
{
for(int i = 0; i < n; i++)
if(t.state >> i & 1)
cout << i + 1 << " ";
cout << endl;
continue;
}
t.pos = 1;
stk.push(t);
stk.push({0, t.u + 1, t.sum + 1, t.state | 1 << t.u});
}
else if(t.pos == 1)
{
t.pos = 2;
stk.push(t);
stk.push({0, t.u + 1, t.sum, t.state});
}
}
}