#include using namespace std; #ifdef LOCAL #define debug(x) cerr << #x << " = " << (x) << "\n" #else #define debug(x) void(0) #endif typedef long long ll; typedef long double ld; typedef pair Pii; typedef pair Pll; template ostream &operator<<(ostream &os, const vector &v) { for (int i = 0; i < (int)v.size(); i++) os << v[i] << (i + 1 == (int)v.size() ? "" : " "); return os; } template istream &operator>>(istream &is, vector &v) { for (int i = 0; i < (int)v.size(); i++) is >> v[i]; return is; } //////////////////////////////////////////////////////////// int main() { int N; cin >> N; vector L(N), R(N); for (int i = 0; i < N; i++) cin >> L[i] >> R[i]; vector idx(N); iota(idx.begin(), idx.end(), 0); int ans = 0; do { bool ok = true; int cur = 0; for (int i = 0; i < N; i++) { if (cur > R[idx[i]]) { ok = false; break; } cur = max(cur, L[idx[i]]); } ans += ok; } while (next_permutation(idx.begin(), idx.end())); cout << ans << "\n"; return 0; }