#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
inline void write(int x){
if(x==0){putchar('0');return;}
int len=0,k1=x,c[10005];
if(k1<0)k1=-k1,putchar('-');
while(k1)c[len++]=k1%10+'0',k1/=10;
while(len--)putchar(c[len]);
}
const int N=5e6+5,mod=998244353;
int inv[N],fac[N];
struct solve1{
void init(int n){
inv[0]=inv[1]=1;fac[1]=1;
for(int i=2;i<=n;i++){
inv[i]=(mod-mod/i)*inv[mod%i]%mod;
inv[i]=inv[i]*inv[i-1]%mod;fac[i]=fac[i-1]*i%mod;
}
}
int c(int n,int m){
if(n<m)return 0;
return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
}s1;
signed main(){
int t=read(),nn=read(),ans=0;
s1.init(nn);
while(t--){
int n=read(),m=read();
ans^=s1.c(n,m);
}
cout<<ans;
return 0;
}