2413: 垒高游戏

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:25 解决:7

题目描述

积木游戏能锻炼孩子的精细动作能力,提高他们分辨大小和形状的能力。
在初学乐高编程的小星同学,每天对于积木爱不释手,校区决定针对于学龄前的同学,进行一次积木垒高比赛。
游戏规则是给每位小朋友 n 块矩形积木,其中每块积木的长为 a,宽为 b,要求在进行垒积木中,将大的积木放在下边,每次要垒的这一块积木的长要不超过最上边这块矩形积木的长,并且宽也不超过最上边这一块积木的宽。注意:积木的长宽已经规定好,不可以随意互换。

例如:一共4块积木
    2 4
    1 2
    2 3
    4 2

最下边可以放(2,4),接着放(2,3),最上边放(1,2)
但是不允许(2,4)放在(4,2)上,也不允许(4,2)放在(2,4)上;
这样一共可以垒3块积木,高度就为3。

现在给出 n 块积木,求能垒成的最大高度。

输入

第一行一个整数 n,表示积木的个数
接下来的 n 行,每行两个数a和b,分别表示 每块积木的长和宽。

输出

一个整数,表示能垒成的最大高度

样例输入 复制

8
6 9
2 7
3 5
8 4
1 4
5 8
2 6
4 9

样例输出 复制

5

提示

样例解释:
从下到上依次放(6,9)(4,9)(2,7)(2,6)(1,4)
最大高度为5

数据范围:
30%的数据满足 1 ≤ n ≤ 15
60%的数据满足 1 ≤ n ≤ 2000
100%的数据满足 1 ≤ n ≤ 20000,1 ≤ a,b ≤ 109