#include "bits/stdc++.h" using namespace std; using ll = long long int; using ld = long double; using vi = vector; using vvi = vector; using vvvi = vector; using vl = vector; using vvl = vector; using vvvl = vector; using vd = vector; using vvd = vector; using vs = vector; using vb = vector; using vvb = vector; const int INF = (1 << 30) - 1; const ll INF64 = ((ll)1 << 62) - 1; const double PI = 3.1415926535897932384626433832795; const int dx[] = { -1, 0, 1, 0 }; const int dy[] = { 0, 1, 0, -1 }; int gcd(int x, int y) { return y ? gcd(y, x % y) : x; } ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : x; } int lcm(int x, int y) { return x / gcd(x, y) * y; } ll lcm(ll x, ll y) { return x / gcd(x, y) * y; } vi binarySearch(vi a, int left, int right) { vi res = a; if (left > right) { return res; } else if (left == right) { res.push_back(left); return res; } int mid = (left + right) / 2; res.push_back(mid); res = binarySearch(res, left, mid - 1); res = binarySearch(res, mid + 1, right); return res; } int main() { ios::sync_with_stdio(false); cin.tie(0); int k; cin >> k; int n = (1 << k) - 1; vi res = binarySearch({1}, 2, n); for (int i = 0; i < res.size(); i++) { if (i) cout << " "; cout << res[i]; } cout << endl; return 0; }