#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;

int n;
P t[50];
int id[50];

int a[50];
int b[50];
int c[50];
int ans[50];

void solve(){
  
  priority_queue< P , vector< P > , greater< P > > Q;
  for(int i=0;i<n;i++){
    Q.push(P(0,i));
  }

  while(!Q.empty()){
    P p=Q.top();Q.pop();
    int x=p.first,y=p.second;
    //   cout<<x<<' '<<y<<' '<<a[y]<<' '<<b[y]<<' '<<c[y]<<endl;

    if(c[y]==t[y].second){
      c[y]++;
      continue;
    }
    
    int next=x+t[y].first;
    for(int i=0;i<n;i++){
      if(c[i]>t[i].second)continue;
      if(i==y)continue;
      if(b[i]!=b[y]){
        next=max(next,a[i]);
      }
    }
    a[y]=next;
    b[y]=1-b[y];
    if(b[y]==0)c[y]++;
    
    Q.push(P(a[y],y));
  }
  
  for(int i=0;i<n;i++){
    ans[id[i]]=a[i];
  }
}

void init(){
  for(int i=0;i<50;i++){
    a[i]=0;
    b[i]=0;
    c[i]=0;
  }
}

int main(){
  while(1){
    cin>>n;
    if(n==0)break;
    init();
    for(int i=0;i<n;i++){
      cin>>t[i].first>>t[i].second;
      id[i]=i;
    }
    for(int i=n-1;i>0;i--){
      for(int j=0;j<i;j++){
        if(t[j]>t[j+1]){
          swap(t[j],t[j+1]);
          swap(id[j],id[j+1]);
        }
      }
    }
    solve();
    int ANS=0;
    for(int i=0;i<n;i++)
      ANS=max(ANS,ans[i]);
    cout<<ANS<<endl;
  }
  return 0;
}