#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define Ma_PI 3.141592653589793 #define eps 0.00000000000000000000000001 #define LONG_INF 10000000000000000 #define GOLD 1.61803398874989484820458 #define MAX_MOD 1000000007 #define REP(i,n) for(long long i = 0;i < n;++i) int priority_grid[300000] = {}; int main() { int k; cin >> k; long long hoge = 1; REP(i, k) { hoge *= 2; } hoge--; for (int i = 1;i <= hoge;++i){ int time = 0; int now = i; while (now != 0) { if (now % 2 == 1) { break; } now /= 2; time++; } priority_grid[i] = time; } if (k > 2) { priority_queue> wow; for (int i = 1;i <= hoge - 3;++i) { wow.push(make_pair(priority_grid[i], i)); } vector ans; while (wow.empty() == false) { ans.push_back(wow.top().second); wow.pop(); } ans.push_back(hoge - 2); ans.push_back(hoge - 1); ans.push_back(hoge); REP(i, ans.size()) { cout << ans[i] << " "; } cout << endl; return 0; } else { cout << "1 3 2" << endl; return 0; } }