#include using namespace std; #define rep(i,n) for(int i=0; i<(n); i++) #define rep1(i,n) for(int i=1; i<=(n); i++) #define sz(x) int(x.size()) #define all(x) (x).begin(),(x).end() #define lINF ll(2e18)//LONG_LONG_MAX //ll #define iINF int(2e9+100)//INT_MAX //int #define yes "Yes" #define no "No" #define kotae cout<; using Pil=pair; using Pli=pair; using Pll=pair; using Pci=pair; using Pcl=pair; template using pqg = priority_queue,greater>; using vi=vector; using vi2=vector>; using vi3=vector>>; using vl=vector; using vl2=vector>; using vl3=vector>>; using vs=vector; using vpii=vector; using vpil=vector; using vpci=vector; using vpcl=vector; using Ti=tuple; using vti=vector; void coutdouble(double x) { printf("%.10f\n", x); } void coutvi(vi vec) { for (int k : vec)cout << k << ' '; cout << endl; return; } void coutvl(vl vec) { for (ll k : vec)cout << k << ' '; cout << endl; return; } void coutseti(set st) { for (int k : st)cout << k << ' '; cout << endl; return; } void coutsetl(set st) { for (ll k : st)cout << k << ' '; cout << endl; return; } void chmax(int &a, int b){ a = max(a, b); return;} void chmin(int &a, int b){ a = min(a, b); return;} void chmaxl(ll &a, ll b){ a = max(a, b); return;} void chminl(ll &a, ll b){ a = min(a, b); return;} void rev(vi &a){ reverse(all(a)); return;} template void srt(T &a){ sort(all(a)); return;} template void srtr(T &a){ sort(a.rbegin(),a.rend()); return;} void solve(); int main() { int t = 1; //cin >> t; rep(i,t) solve(); return 0; } void solve() { int n; cin >> n; vpii p(n); rep(i,n) cin >> p[i].first >> p[i].second; sort(all(p)); int ans = 0; vi a(n); rep(i,n) a[i] = i; do{ int now = 0; bool ok = true; rep(i,n){ if(now > p[a[i]].second) ok = false; now = max(now, p[a[i]].first); } if(ok) ans++; }while(next_permutation(all(a))); kotae return; }