#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; const ll MOD=1e9+7; int main() { int n; cin>>n; vector x0, x1; for(int i=0; i>t>>x; x--; if(t==0) x0.push_back(x); else x1.push_back(x); } sort(x0.begin(), x0.end()); sort(x1.begin(), x1.end()); int c0[3030], c1[3030]; for(int i=0; i0) (dp[i+1][j+1]+=dp[i][j]*(c1[i]-j))%=MOD; if(c0[i]-(int)x0.size()+1+i-j>0) (dp[i+1][j]+=dp[i][j]*(c0[i]-(int)x0.size()+1+i-j))%=MOD; } } cout<