#include #include #include #include using namespace std; struct node{ int element; node* left; node* right; }; class tree{ public: node* root; deque> player; int playernum; tree(const deque>& x): player(x), playernum(player.size()){}; pair winner(){ deque> tmp(player); reverse(tmp.begin(), tmp.end()); for(int i = 0; i < 2 * playernum - 2; i += 2){ pair m = tmp[i].second < tmp[i + 1].second ? tmp[i + 1] : tmp[i] ; tmp.push_back(m); } return tmp.back(); } }; int main(){ deque> m1, m2; int n; cin >> n; int tmp; for(int i = 0; i < pow(2, n - 1); i++){ cin >> tmp; m1.push_back(make_pair(i + 1, tmp)); } for(int i = pow(2, n - 1); i < pow(2, n); i++){ cin >> tmp; m2.push_back(make_pair(i + 1, tmp)); } tree t1(m1), t2(m2); pair m = t1.winner().second > t2.winner().second ? t2.winner() : t1.winner(); cout << m.first << endl; }