intmain(){ int n; std::cin >> n; std::vector<int> a(1 << n); for (auto &x : a) std::cin >> x;
int ans = 0; auto F = [&](auto f, int p, int prefix) -> std::vector<int> { if (p == 0) { ans ^= a[prefix]; return {a[prefix]}; }
// suppose 1 on this bit auto l = f(f, p - 1, prefix << 1 | 1); // suppose 0 on this bit auto r = f(f, p - 1, prefix << 1);
assert(l.size() == r.size()); assert(l.size() == std::pow(3, p - 1));
int sum = 0; std::vector<int> ret; for (int i = 0; i < l.size(); i++) { ans ^= l[i] + r[i]; ret.push_back(l[i] + r[i]); } for (auto i : l) ret.push_back(i), sum += i; for (auto i : r) ret.push_back(i), sum += i;