#include #include #include #include using namespace std; int read() { char c=getchar(); int f=1,x=0; while(c<'0'||c>'9') { if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9') { x=(x<<1)+(x<<3)+(c^'0'); c=getchar(); } return x*f; } void print(int x) { if(x<0) { putchar('-'); x=-x; } if(x>9) print(x/10); putchar(x%10+'0'); } const int N=3e3+5,mod=1e9+7; int n,a[N],b[N],f[N][N]; int main() { // freopen(".in","r",stdin); // freopen(".out","w",stdout); n=read(); for(int i=1;i<=n;i++) { int o=read(); if(o) b[read()]++; else a[read()]++; } for(int i=n;i>=1;i--) a[i]+=a[i+1]; for(int i=1;i<=n;i++) b[i]+=b[i-1]; int x=a[1]; f[0][0]=1; for(int i=1;i<=n;i++) { for(int j=0;j