#include <bits/stdc++.h>
using namespace std;
struct S {
  int t, v, r;
  bool operator<(S a) const { return v < a.v; }
};
int main() {
  for (int n; cin >> n, n;) {
    vector<S> v;
    queue<S> que[2];
    for (int i = 0; i < n; i++) {
      S p;
      cin >> p.v >> p.r;
      p.r *= 2;
      p.t = p.v;
      que[0].push(p);
    }
    int t;
    while (!que[0].empty() || !que[1].empty()) {
      int x = que[0].empty() ||
              (!que[1].empty() && que[0].front().t > que[1].front().t);
      t = que[x].front().t;
      vector<S> b;
      while (!que[x].empty() && que[x].front().t <= t) {
        S c = que[x].front();
        if (--c.r) {
          c.t = t + c.v;
          b.push_back(c);
        }
        que[x].pop();
      }
      sort(b.begin(), b.end());
      for (int i = 0; i < b.size(); i++) {
        que[!x].push(b[i]);
      }
    }
    cout << t << endl;
  }
  return 0;
}
