#include<bits/stdc++.h>
using namespace std;
const int L=70;
long long n,a[L],s;
struct SB
{
long long b,c;
}k[1003];
bool C(SB x,SB y)
{
return x.c>y.c;
}
bool I(long long x)
{
for(int i=L;i>=0;i--)
{
if((x&(1l<<i))==0)continue;
if(a[i])
{
x^=a[i];continue;
}
a[i]=x;return 1;
}
return 0;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>k[i].b>>k[i].c;
}
sort(k+1,k+n+1,C);
for(int i=1;i<=n;i++)
{
if(I(k[i].b))s+=k[i].c;
}
cout<<s<<endl;
return 0;
}
求助各位大佬们,万分感谢