#include<iostream>
#include<stdio.h>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<math.h>
#include<map>
#include<sstream>
#define STD using namespace std;
#define ll long long
#define db double
#define ldb long double
#define IOS std::ios::sync_with_stdio(false),std::cin.tie(0),std::cout.tie(0);
#define MAX 88888888
#define INF 0x3f
#define r0 return 0;
#define SYP system("pause");
#define endl '\n';
STD;
struct Node {
int l, r, sum, lazy, max;
Node() { l = r = sum = lazy =max= 0; }
}a[(1 << 7) + 7];
int num[(1 << 7) + 7];
inline void update(int k) {
a[k].sum = a[k << 1].sum + a[k << 1 | 1].sum;
a[k].max = (num[a[k << 1].max] > num[a[k << 1 | 1].max]) ? a[k << 1].max : a[k << 1 | 1].max;
}
void build(int k,int l,int r) {
a[k].l = l; a[k].r = r;
if (l==r)
{
a[k].sum = num[l];
a[k].max = l;
return;
}
int mid = (l + r) >> 1;
build(k << 1, l, mid);
build(k << 1 | 1, mid + 1, r);
update(k);
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= (1 << n); i++)
{
cin >> num[i];
}
build(1, 1, 1 << n);
if (a[2].max == a[1].max)
{
cout << a[3].max << endl;
}
else
{
cout << a[2].max << endl;
}
}