#include <cstdio>
#include <iostream>
using namespace std;
const int N = 233233;
const int Maxn = 8010;
int n;
int p;
int a[N];
int b[N];
long long fact[Maxn];
long long inv[Maxn];
long long res;
long long power_quick (long long x, long long y, long long Mod) {
long long ans = 1;
while (y) {
if (y & 1) {
ans = ans * x % Mod;
}
x = x * x % Mod;
y >>= 1;
}
return ans;
}
long long C (int n, int m) {
return fact[n] * inv[n - m] % p * inv[m] % p;
}
int main () {
freopen ("BBQ.in", "r", stdin);
freopen ("BBQ.out", "w", stdout);
scanf ("%d %d", &n, &p);
if (n > 5000 && p == 2) {
cout << 0 << endl;
return 0;
}
for (int i = 1; i <= n; i++) {
scanf ("%d %d", &(a[i]), &(b[i]));
}
fact[0] = inv[0] = 1;
for (int i = 1; i < Maxn; i++) {
fact[i] = fact[i - 1] * i % p;
}
inv[Maxn - 1] = power_quick (fact[Maxn - 1], p - 2, p);
for (int i = Maxn - 2; i; i--) {
inv[i] = inv[i + 1] * (i + 1) % p;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j < i; j++) {
res = (res + C (a[i] + a[j] + b[i] + b[j], a[i] + a[j])) % p;
}
}
printf ("%lld", res);
return 0;
}