#include using namespace std; #define int long long #define pi pair #define ull unsigned long long #define add(a,b) (a+=b,a=a>=mod?a-mod:a) const int mod=1e9+7; const int N=3010; int cnt0[N],cnt1[N]; int dp[N][N]; int fct[N],inv[N]; int fp(int a,int b){ int ans=1; while(b){ if(1&b)ans=ans*a%mod; a=a*a%mod; b>>=1; } return ans; } int C(int a,int b){return (a=1;i--)inv[i-1]=inv[i]*i%mod; inv[0]=1; int n;cin>>n;int s0=0,s1=0; for(int i=1;i<=n;i++){ int t,x;cin>>t>>x; if(t)cnt1[x]++,s1++; else cnt0[x]++,s0++; } for(int i=1;i<=n;i++)cnt1[i]+=cnt1[i-1]; for(int i=1;i<=n;i++)cnt0[i]+=cnt0[i-1]; dp[0][0]=1; for(int i=0;i0) add(dp[i+1][c1+1],dp[i][c1]*(cnt1[i+1]-c1)%mod*C(c0-cnt0[i],cnt0[i+1]-cnt0[i])%mod); add(dp[i+1][c1],dp[i][c1]*C(c0-cnt0[i]+1,cnt0[i+1]-cnt0[i])%mod); } } cout<