#include #include #include int main() { int N; std::cin >> N; std::vector L(N), R(N); for (int i = 0; i < N; i++) std::cin >> L[i] >> R[i]; std::vector order(N); for (int i = 0; i < N; i++) order[i] = i; int result = 0; do { bool flag = true; int diff = L[order[0]]; for (int i = 1; i < N; i++) { if (diff > R[order[i]]) { flag = false; break; } if (diff < L[order[i]]) diff = L[order[i]]; } result += flag; } while (std::next_permutation(order.begin(), order.end())); std::cout << result << std::endl; }