#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int f[4010][4010],a[200010],b[200010],fac[8010],inv[8010];
inline int qpow(int a,int b) {
	int ans=1;
	while(b) {
		if(b&1)ans=1ll*ans*a%mod;
		a=1ll*a*a%mod;
		b>>=1;
	}
	return ans;
}
inline int C(int n,int m) {
	return 1ll*fac[n]*inv[m]%mod*inv[n-m]%mod;
}
int main() {
	fac[0]=1;
	for(int i=1;i<=8000;i++)fac[i]=1ll*fac[i-1]*i%mod;
	inv[8000]=qpow(fac[8000],mod-2);
	for(int i=8000-1;i>=0;i--)inv[i]=1ll*inv[i+1]*(i+1)%mod;
	int n,ans=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++) {
		scanf("%d%d",a+i,b+i);
		f[2000-a[i]][2000-b[i]]++;
	}
	for(int i=0;i<=4000;i++)
		for(int j=0;j<=4000;j++) {
			f[i][j+1]=(f[i][j+1]+f[i][j])%mod;
			f[i+1][j]=(f[i+1][j]+f[i][j])%mod;
		}
	for(int i=1;i<=n;i++)ans=(ans+f[2000+a[i]][2000+b[i]]-C((a[i]+b[i])<<1,a[i]<<1))%mod;
	ans=(mod+ans)%mod;
	printf("%lld\n",1ll*ans*inv[2]%mod);
	return 0;
}