#include<bits/stdc++.h>
#pragma GCC optimize("O2")
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#define int long long
#define pii pair<int,int>
#define ii int,int
#define fi first
#define se second
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define umap unordered_map
#define BIT(mask, i) ((mask >> i)&1)
#define ALL(c) c.begin(), c.end()
using namespace std;
mt19937 rd(chrono::high_resolution_clock::now().time_since_epoch().count());
int rand(int l, int r){
return l + rd()*rd()%(r-l+1);
}
const int N = 1e6+7;
const int M = 1e3+3;
const int MOD = 1e9+7;
const int inf = 3e18;
int n, f, visited[11], x[11];
// Sinh các hoán vị của 1, 2, 3, ... ,n
// mảng x có tác dụng là để lưu hoán vị
// mảng visited có tác dụng để xét các số chưa xuất hiện trong hoán vị
void backtracking(int i){
for(int j = 1; j <= n; j++){
if(visited[j] == false){ // j chưa xuất hiện trong hoán vị
visited[j] = true;
x[i] = j;
if(i == n){ // đã đủ 1 hoán vị
// xét hoán vị có thỏa mãn đề hay không
vector<int> v;
for(int k = 1; k <= n; k++){
v.push_back(x[k]);
}
while(v.size() != 1){
vector<int> u;
for(int k = 1; k < v.size(); k++){
u.push_back(v[k] + v[k-1]);
}
v = u;
}
if(v[0] == f){
for(int k = 1; k <= n; k++){
cout << x[k] << ' ';
}
return;
}
}
else backtracking(i + 1); // i chưa đủ 1 hoán vị thì thêm 1 phần tử nữa
// để đủ 1 hoán vị
visited[j] = false;
}
}
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> f;
backtracking(1);
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNwcmFnbWEgR0NDIG9wdGltaXplKCJPMiIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJPMyIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJPZmFzdCIpCgojZGVmaW5lIGludCBsb25nIGxvbmcKCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBpaSBpbnQsaW50CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBsYiBsb3dlcl9ib3VuZAojZGVmaW5lIHViIHVwcGVyX2JvdW5kCiNkZWZpbmUgdW1hcCB1bm9yZGVyZWRfbWFwCiNkZWZpbmUgQklUKG1hc2ssIGkpICgobWFzayA+PiBpKSYxKQojZGVmaW5lIEFMTChjKSBjLmJlZ2luKCksIGMuZW5kKCkKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgptdDE5OTM3IHJkKGNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CmludCByYW5kKGludCBsLCBpbnQgcil7CiAgICByZXR1cm4gIGwgKyByZCgpKnJkKCklKHItbCsxKTsKfQoKY29uc3QgaW50IE4gPSAxZTYrNzsKY29uc3QgaW50IE0gPSAxZTMrMzsKY29uc3QgaW50IE1PRCA9IDFlOSs3Owpjb25zdCBpbnQgaW5mID0gM2UxODsKCmludCBuLCBmLCB2aXNpdGVkWzExXSwgeFsxMV07CgovLyBTaW5oIGPDoWMgaG/DoW4gduG7iyBj4bunYSAxLCAyLCAzLCAuLi4gLG4KCi8vIG3huqNuZyB4IGPDsyB0w6FjIGThu6VuZyBsw6AgxJHhu4MgbMawdSBob8OhbiB24buLCi8vIG3huqNuZyB2aXNpdGVkIGPDsyB0w6FjIGThu6VuZyDEkeG7gyB4w6l0IGPDoWMgc+G7kSBjaMawYSB4deG6pXQgaGnhu4duIHRyb25nIGhvw6FuIHbhu4sKCnZvaWQgYmFja3RyYWNraW5nKGludCBpKXsKICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbjsgaisrKXsKICAgICAgICBpZih2aXNpdGVkW2pdID09IGZhbHNlKXsgLy8gaiBjaMawYSB4deG6pXQgaGnhu4duIHRyb25nIGhvw6FuIHbhu4sKICAgICAgICAgICAgdmlzaXRlZFtqXSA9IHRydWU7CiAgICAgICAgICAgIHhbaV0gPSBqOwogICAgICAgICAgICBpZihpID09IG4peyAvLyDEkcOjIMSR4bunIDEgaG/DoW4gduG7iwogICAgICAgICAgICAgICAgLy8geMOpdCBob8OhbiB24buLIGPDsyB0aOG7j2EgbcOjbiDEkeG7gSBoYXkga2jDtG5nCiAgICAgICAgICAgICAgICB2ZWN0b3I8aW50PiB2OwogICAgICAgICAgICAgICAgZm9yKGludCBrID0gMTsgayA8PSBuOyBrKyspewogICAgICAgICAgICAgICAgICAgIHYucHVzaF9iYWNrKHhba10pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHdoaWxlKHYuc2l6ZSgpICE9IDEpewogICAgICAgICAgICAgICAgICAgIHZlY3RvcjxpbnQ+IHU7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBrID0gMTsgayA8IHYuc2l6ZSgpOyBrKyspewogICAgICAgICAgICAgICAgICAgICAgICB1LnB1c2hfYmFjayh2W2tdICsgdltrLTFdKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdiA9IHU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZih2WzBdID09IGYpewogICAgICAgICAgICAgICAgICAgIGZvcihpbnQgayA9IDE7IGsgPD0gbjsgaysrKXsKICAgICAgICAgICAgICAgICAgICAgICAgY291dCA8PCB4W2tdIDw8ICcgJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfSAgIAogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgYmFja3RyYWNraW5nKGkgKyAxKTsgLy8gaSBjaMawYSDEkeG7pyAxIGhvw6FuIHbhu4sgdGjDrCB0aMOqbSAxIHBo4bqnbiB04butIG7hu69hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gxJHhu4MgxJHhu6cgMSBob8OhbiB24buLCiAgICAgICAgICAgIHZpc2l0ZWRbal0gPSBmYWxzZTsKICAgICAgICB9CiAgICB9Cgp9CgpzaWduZWQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIGNpbiA+PiBuID4+IGY7CiAgICBiYWNrdHJhY2tpbmcoMSk7Cn0K