#pragma GCC optimize("O3") #include using namespace std; #define rep(i, a, n) for (int i = a; i < (int)(n); i++) using ll = long long; int main() { int n; cin >> n; vector l(n), r(n); rep(i, 0, n) cin >> l[i] >> r[i]; vector p(n); iota(p.begin(), p.end(), 0); int ans = 0; do { int pre_diff = l[p[0]]; bool ok = true; rep(i, 1, n) { if (r[p[i]] < pre_diff) { ok = false; break; } else if (i != n - 1) { pre_diff = max(pre_diff, l[p[i]]); } } ans += ok; } while (next_permutation(p.begin(), p.end())); cout << ans << endl; }