#include<bits/stdc++.h>
using namespace std;
const long long mod = 998244353;
long long mul[5000005];
long long sv[5000005],s[5000005],inv[5000005],t,n;
long long binpow(long long a, long long b) {
a %= mod;
long long res = 1;
while (b > 0) {
if (b & 1) res = res * a % mod;
a = a * a % mod;
b >>= 1;
}
return res;
}
long long x, y;
int main() {
cin >> t >> n;
mul[0] = 1;
for (long long i = 1; i <= n; i++) {
mul[i] = mul[i - 1] * i % mod;
}
long long p=mod;
s[0] = 1;
for (long long i = 1; i <= n; ++i) s[i] = s[i - 1] * mul[i] % p;
sv[n] = binpow(s[n], p - 2);
for (long long i = n; i >= 1; --i) sv[i - 1] = sv[i] * mul[i] % p;
for (long long i = 1; i <= n; ++i) inv[i] = sv[i] * s[i - 1] % p;
long long ans = 0;
while(t--) {
scanf("%lld%lld", &x, &y);
ans ^= (x == y ? 1 : mul[x]*inv[y]% mod *inv[x-y] % mod);
}
cout <<ans;
return 0;
}