#include using namespace std; using ll = long long; #ifdef LOCAL #include #else #define debug(...) #endif int main() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(20); 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 perm(N); iota(perm.begin(), perm.end(), 0); do { // この順列に対して, 条件を満たす難易度が存在するか bool ok = true; int pre = -1; for (int i = 0; i < N; i++) { if (pre > R[perm[i]]) ok = false; pre = max(pre, L[perm[i]]); } if (ok) ans++; } while (next_permutation(perm.begin(), perm.end())); cout << ans << "\n"; }