#include #include using namespace std; using i32 = int; using u32 = unsigned int; using i64 = long long; using u64 = unsigned long long; #define FAST_IO \ ios::sync_with_stdio(false); \ cin.tie(0); const i64 INF = 1001001001001001001; using Modint = atcoder::static_modint<998244353>; int main() { FAST_IO int N; cin >> N; vector L(N), R(N); for (int i = 0; i < N; i++) { cin >> L[i] >> R[i]; } int ans = 0; vector idx(N); iota(idx.begin(), idx.end(), 0); do { bool valid = true; int cur = 0; for (int i = 0; i < N; i++) { cur = max(cur, L[idx[i]]); if (cur > R[idx[i]]) { valid = false; break; } } if (valid) { ans ++; } } while (next_permutation(idx.begin(), idx.end())); cout << ans << endl; }