#include <bits/stdc++.h>
using namespace std;
int const maxnode = 1e5;
struct Tree {
  int a;
  int sum;
};
Tree tr[maxnode];
int n;
int main() {
  while (cin >> n) {
    for (int t = 2; t <= ((1 << (n + 1)) - 1); t++) {
      scanf("%d", &tr[t].a);
      tr[t].sum = 0;
    }
    int S = 0;
    for (int h = n; h > 0; h--) {
      for (int g = (1 << h); g <= ((1 << (h + 1)) - 1); g++) {
        if (g & 1) {
          int k1 = (tr[g].a + tr[g].sum);
          int k2 = (tr[g - 1].a + tr[g - 1].sum);
          int sum = k1 > k2 ? k1 : k2;
          S += ((sum << 1) - k1 - k2);
          tr[g >> 1].sum = sum;
        }
      }
    }
    cout << S << endl;
  }
  return 0;
}
