#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
struct node {
  long long k, a;
} q[N], r[N];
int cmp(node a, node b) { return a.k > b.k; }
int n;
int main() {
  long long p;
  long long tk;
  long long tot;
  long long tt;
  int top;
  int i, j;
  while (scanf("%d", &n) != EOF) {
    for (i = 0; i < n; i++) scanf("%I64d %I64d", &q[i].k, &q[i].a);
    sort(q, q + n, cmp);
    tk = 0;
    top = 0;
    tot = q[0].a;
    r[top++] = q[0];
    for (i = 1; i < n; i++) {
      tk += q[i - 1].k - q[i].k;
      while (tk && q[i].a > tot) {
        tk--;
        tot *= 4;
      }
      if (q[i].a <= tot)
        q[i].a = 0;
      else {
        q[i].a -= tot;
        r[top++] = q[i];
      }
    }
    tk = 0;
    tt = 4;
    for (p = r[0].k + 1;; p++) {
      tk = 0;
      tot = tt - q[0].a;
      tt *= 4;
      if (tot < 0) continue;
      for (i = 1; i < top; i++) {
        tk += r[i - 1].k - r[i].k;
        while (tk && r[i].a > tot) {
          tk--;
          tot *= 4;
        }
        tot -= r[i].a;
        if (tot < 0) break;
      }
      if (i == top) break;
    }
    printf("%I64d\n", p);
  }
  return 0;
}
