#include <algorithm> #include <cstdio> #include <iostream> #include <map> #include <cmath> #include <queue> #include <set> #include <sstream> #include <stack> #include <string> #include <vector> #include <stdlib.h> #include <stdio.h> #include <bitset> #include <cstring> using namespace std; #define FOR(I,A,B) for(int I = (A); I < (B); ++I) #define CLR(mat) memset(mat, 0, sizeof(mat)) typedef long long ll; vector<int> x; void dfs(int l, int r) { int cen = (r + l) / 2; x.push_back(cen); if(l == r) return; dfs(l,cen-1); dfs(cen+1,r); } int main() { int K; cin >> K; int n = pow(2, K) - 1; dfs(1, n); FOR(i,0,n) { if(x[i] == n) cout << x[i] - 1; else if(x[i] == n - 1) cout << x[i] + 1; else cout << x[i]; if(i != n - 1) cout << " "; } cout << endl; return 0; }