#include<cstdio>
using namespace std;
const long long Mod=1e9+7;
long long n,a[200005],b[200005],f[8005][8005],inv[8005],ans,fac[8005];
long long quipow(long long a,long long b)
{
	long long ret=1;
	while(b){
		if(b&1) ret=(ret*a)%Mod;
		b>>=1;
		a=(a*a)%Mod;
	}
	return ret;
}
int main()
{
	fac[0]=fac[1]=1;
	for(int i=2;i<=8000;i++) fac[i]=(fac[i-1]*i)%Mod;
	inv[8000]=quipow(fac[8000],Mod-2);
	for(int i=7999;i>=0;i--)inv[i]=(inv[i+1]*(i+1))%Mod;
	scanf("%lld",&n);
	for(int i=1;i<=n;i++) scanf("%lld%lld",&a[i],&b[i]),f[2001-a[i]][2001-b[i]]++;
    for(int i=1;i<4002;i++) for(int j=1;j<4002;j++) f[i][j]=(f[i][j]+f[i-1][j]+f[i][j-1])%Mod;
    for(int i=1;i<=n;i++) ans=(ans+f[2001+a[i]][2001+b[i]])%Mod;
    for(int i=1;i<=n;i++) ans=(ans-(fac[(a[i]+b[i])<<1]*inv[a[i]<<1]%Mod*inv[((a[i]+b[i])<<1)-(a[i]<<1)]%Mod)+Mod)%Mod;
    ans=(ans*quipow(2,Mod-2))%Mod;
    printf("%lld\n",ans);
    return 0;
}