#这道题需要同时判断信封的长和宽,显得有些麻烦,如果能只处理一个就好了

#有这个思路就可以使用咱们万能的排序,先按长排序

#之后再按照最长递增子序列的方法来解决即可,当然,要注意一下宽的判断

#动态规划五部曲:确定dp含义、写出递推公式、初始化、遍历计算、debug

#dp[i]表示以a[i][0]这个长度为结尾的最长递增子序列长度

#递推公式:

#dp[i]=dp[j]+1 if a[i][0]>a[j][0] and a[i][1]>a[j][1] and dp[j]+1>dp[i] for j in range(i)

#显然,dp应该初始化为全1


#编码
n=int(input())
a=[]
for i in range(n):
    a.append([int(i) for i in input().split()])
# print(a)
#初始化
dp=[1 for i in range(n)]

#先排序
a=sorted(a,key=lambda x:x[0],reverse=False)
# print(a)

#遍历计算
for i in range(n):
    for j in range(i):
        if a[i][0]>a[j][0] and a[i][1]>a[j][1] and dp[j]+1>dp[i]:
            dp[i]=dp[j]+1

#输出结果
print(max(dp))