#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using Pll = pair; using Pii = pair; constexpr int INF = 1 << 30; constexpr ll LINF = 1LL << 60; constexpr ll MOD = 1000000007; constexpr long double EPS = 1e-10; constexpr int dyx[4][2] = { { 0, 1}, {-1, 0}, {0,-1}, {1, 0} }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector p(n); int min_cnt = 0; for(int i=0;i> p[i].second >> p[i].first; if(p[i].second == 1) { --p[i].first; } else { ++min_cnt; } } sort(p.begin(), p.end()); vector> dp(n+1, vector(n+1, 0)); dp[0][0] = 1; for(int i=0;i