#include<bits/stdc++.h>
using namespace std;
int limit[]={0,8,5,3,3,2,2,2,2};
int kind[]={0,2,3,5,7,11,13,17,19};
int a[11];
int n;
int otp[550][10];
int p[550];
int v[550];
int ans=0;
int chk(){
int cnt=0;
for(int i=1;i<=500;i++) p[i]=0;
for(int i=1;i<=n;i++){
bool fl=1;
for(int j=1;j<=8;j++){
if(a[j]<otp[i][j]) fl=0;
}if(fl){
p[otp[i][9]]+=v[i];
}
}for(int i=1;i<=500;i++){
if(p[i]>0) cnt+=p[i];
}return cnt;
}void dfs(int id){
if(id>=9){
ans=max(chk(),ans);
return ;
}for(int i=0;i<=limit[id];i++){
a[id]=i;
dfs(id+1);
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int x;cin>>x>>v[i];
for(int j=1;j<=8;j++){
while(x%kind[j]==0) otp[i][j]++,x/=kind[j];
}otp[i][9]=x;
//cout<<x;
}dfs(1);
cout<<ans<<endl;
return 0;
}
hack: 2 2 -1 46 2
比赛已结束。