#include <bits/stdc++.h>
using namespace std;
int n, a[1 << 20], f[1 << 20];
int o;
inline void dfs1(const int &k, const int &h) {
  if (h == n) return;
  dfs1(k << 1, h + 1);
  dfs1((k << 1) | 1, h + 1);
  f[k] = max(f[k << 1] + a[k << 1], f[(k << 1) | 1] + a[(k << 1) | 1]);
  return;
}
inline void dfs2(const int &k, const int &h, const int &s) {
  int t;
  if (h > n) return;
  t = f[1] - f[k] - s;
  o += t;
  dfs2(k << 1, h + 1, s + t + a[k << 1]);
  dfs2((k << 1) | 1, h + 1, s + t + a[(k << 1) | 1]);
  return;
}
int main(void) {
  int i;
  scanf("%d", &n);
  for (i = 2; i < (1 << (n + 1)); i++) scanf("%d", &a[i]);
  dfs1(1, 0);
  dfs2(1, 0, 0);
  printf("%d\n", o);
  return 0;
}
