#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 12;
bool flag, vis[maxn];
int n, sum, nums[maxn], tri[maxn][maxn];
void dfs(int cur, int val) {
if (flag || val > sum) return ;
if (cur > n) {
int s = 0;
for (int i = 1; i <= n; i++) s += nums[i] * tri[n][i];
if (s - sum) return ;
for (int i = 1; i <= n; i++) printf("%d ", nums[i]);
putchar(10), flag = true;
return ;
}
for (int i = 1; i <= n; i++) {
if (vis[i]) continue;
vis[i] = true;
nums[cur] = i;
dfs(cur + 1, val + i);
vis[i] = false;
}
return ;
}
int main() {
scanf("%d %d", &n, &sum);
tri[1][1] = 1;
for (int i = 2; i <= maxn; i++) {
for (int j = 1; j <= i; j++){
tri[i][j] = tri[i - 1][j] + tri[i - 1][j - 1];
}
}
dfs(1, 0);
return 0;
}