import sys, time, random, heapq, math, itertools, copy from collections import deque, Counter, defaultdict from bisect import bisect, bisect_left, bisect_right import heapq as hq from functools import cache, cmp_to_key def debug(*x):print('debug:',*x, file=sys.stderr) sys.setrecursionlimit(300000) input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 61 - 1 mod = 998244353 dir = [(0, 1), (0, -1), (1, 0), (-1, 0)] def dfs(n, diff): global visited, ans if n == N: ans += 1 return 0 for i in range(N): if not visited[i] and R[i]>=diff: visited[i] = True temp = max(diff, L[i]) dfs(n+1, temp) visited[i] = False N = ii() L = [0] * N; R = [0] * N for i in range(N): L[i], R[i] = mi() ans=0 visited = [False] * N dfs(0,0) print(ans)