import bisect def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 intervals = [] for _ in range(N): L = int(input[idx]) R = int(input[idx+1]) intervals.append((L, R)) idx += 2 INF = 1 << 60 dp = [-INF, INF] for L, R in intervals: k = bisect.bisect_left(dp, R) - 1 if k < 0: continue new_val = max(L, dp[k] + 1) if new_val > R: continue if k + 1 < len(dp): if new_val < dp[k + 1]: dp[k + 1] = new_val else: dp.append(new_val) print(len(dp) - 1) if __name__ == '__main__': main()