不知为何TLE
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll t,p;
const int N=5*1e6,mod=998244353;
ll fac[N],ifac[N];
ll ans;
ll read()
{
char v;
ll sum=0;
while(v<'0'||v>'9')
v=getchar();
while(v>='0'&&v<='9')
sum=sum*10+v-'0',v=getchar();
return sum;
}
ll ksm(ll a,ll b)
{
if(b==0)
return 1%mod;
ll c=ksm(a,b/2)%mod;
c=(__int128)c*c%mod;
if(b&1)
c=(__int128)c*a%mod;
return c;
}
int main()
{
t=read();
p=read();
fac[0]=ifac[0]=1;
for(int i=1;i<=p;i++)
{
fac[i]=fac[i-1]*i%mod;
fac[i]%=mod;
ifac[i]=ksm(fac[i],mod-2)%mod;
// cout<<"fac["<<i<<"]="<<fac[i]<<" ifac["<<i<<"]="<<ifac[i]<<endl;
}
for(int i=1;i<=t;i++)
{
ll n,m;
n=read(),m=read();
ll sum=(__int128)((fac[n]*ifac[m])%mod)*ifac[n-m]%mod;
ans=ans^sum;
// cout<<sum<<endl;
}
cout<<ans<<"\n";
return 0;
}