#include<bits/stdc++.h>
using namespace std;
#define MOD 1000000007
#define INF 1000000010
#define EPS 1e-9
#define fst first
#define scd second

#define debug(x) cout<<x<<endl;
#define repi(i,x,n) for(int i=x;i<n;i++)
#define rep(i,n) repi(i,0,n)
#define lp(i,n) repi(i,0,n)
#define repn(i,n) for(int i=n;i>=0;i--)
#define int long long
#define endl "\n"


signed main(){
  cin.tie(0);	
  //ios::sync_with_stdio(false);
  while(1){
    int n;
    cin>>n;
    if(n==0) break;
    queue<pair<pair<int,int>,int > > a,b;
    priority_queue<pair<pair<int,int>,int > > c;
    queue<pair<pair<int,int>,int > > d;
    pair<int,int> p[n];
    pair<pair<int,int>,int > pr;
    int ans=0;
    rep(i,n) cin>>p[i].fst>>p[i].scd;
    sort(p,p+n);
    rep(i,n) a.push(make_pair(p[i],p[i].fst));
    while(!a.empty() || !b.empty() ){
      /* rep(i,a.size() ){
	pr=a.front();
	cout<<pr.fst<<" ";
	a.pop();
	a.push(pr);
      }
      cout<<endl;*/
      pair<pair<int,int>,int >at,bt;
      at=bt=make_pair(make_pair(0,0),INF);
      if(!a.empty() ) at=a.front();
      if(!b.empty() ) bt=b.front();
      if(at.scd<=bt.scd){
	while(!a.empty() && a.front().scd<=at.scd){
	  pr=a.front();
	  a.pop();
	  
	  pr.scd=(pr.fst.fst+at.scd);
	  pr.fst.fst*=(-1);
	  c.push(pr);
	  
	}
	while(!c.empty() ){
	  pr=c.top();
	  pr.fst.fst*=(-1);
	  b.push(pr );
	  c.pop();
	}

      }else{
	while(!b.empty() && b.front().scd<=bt.scd){
	  pr=b.front();
	  b.pop();
	  
	  pr.fst.scd--;
	  if(pr.fst.scd!=0){
	    pr.scd=(pr.fst.fst+bt.scd);
	    pr.fst.fst*=(-1);
	    c.push(pr);
	  }else{
	    ans=max(ans,bt.scd);
	  }
	  
	}
	while(!c.empty() ){
	  pr=c.top();
	  pr.fst.fst*=(-1);
	  a.push(pr );
	  c.pop();
	}

      }
    }
    cout<<ans<<endl;
  }
 

  return 0;
}

