#include using namespace std; #define int long long const int N=3005,mod=1e9+7; int n,s1[N],s2[N],c2[N],fac[N]; int f[N],g[N],C[N][N]; signed main(){ ios::sync_with_stdio(0);cin.tie(0); cin>>n; C[0][0]=fac[0]=1; for(int i=1;i<=n;i++){ C[i][0]=1;fac[i]=fac[i-1]*i%mod; for(int j=1;j<=i;j++){ C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod; } } for(int i=1,op,x;i<=n;i++){ cin>>op>>x; if(op==1) s1[x]++; else s2[x]++,c2[x]++; } for(int i=1;i<=n;i++) s1[i]+=s1[i-1],s2[i]+=s2[i-1]; f[0]=1; for(int i=1;i<=n;i++){ for(int j=0;j<=i;j++) g[j]=f[j],f[j]=0; for(int j=0;j<=i;j++){ (f[j]+=g[j]*(s1[i]-((i-1-j)-s2[i-1])))%=mod; (f[j+1]+=g[j])%=mod; } for(int j=0;j<=i;j++) g[j]=f[j],f[j]=0; for(int j=c2[i];j<=i;j++){ (f[j-c2[i]]+=g[j]*C[j][c2[i]]%mod*fac[c2[i]]%mod)%=mod; } } cout<