code:
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 100020
#define ll long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
struct data
{
int p,v;
bool operator<(data a) const { return p<a.p; }
}a[N];
int s[N],cnt[31],tot;
int main()
{
// setIO("input");
int n,m,i,j,c;
ll ans=0;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i) scanf("%d%d",&a[i].p,&a[i].v);
sort(a+1,a+1+m);
for(c=1;c<=m;++c)
{
tot=1,s[1]=a[c].v;
while(c<m&&a[c+1].p-a[c].p==1)
++tot,s[tot]=a[++c].v^s[tot-1];
if(!(c-tot)&&a[1].p==1)
{
for(i=1;i<=tot;++i) ans+=s[i];
}
else
{
for(i=0;i<30;++i)
{
cnt[i]=0;
for(j=1;j<=tot;++j)
{
if(s[j]&(1<<i)) ++cnt[i];
}
ans+=(1ll<<i)*min(cnt[i],tot-cnt[i]+1);
}
}
}
printf("%lld\n",ans);
return 0;
}