 建造一座塔楼并最大化塔楼的高度使用的积木的计算，怎么采用C语言的代码的编写的过程来实现的呢

Problem Description
Little Min Likes playing the "block by block" very much,she always plays it day and night.There are N types of blocks,each them have own Length and width of the bottom block and its height,we should place one block on the top another to build a tower and maximum the tower's height.Now we slight change in the next game.We place the blocks on the Xaxis,every block has its begin coordinate si and end coordinate ei,which means the blocks' positions are stable on the Xaxis,at the same time, its height is 1 unit.The ith block can place on the top of jth only when si >= sj && ei <= ej,then we will build one tower by the new rule.
However,little Min thinks it is too easy for her,now she wants to better use of the number of blocks and the height of the tower she built can't be more than H.that is to say,to build the tower with H high or less,the more blocks she use,the happier she is!
Note that two or more blocks can place on the same height except the bottom of the tower!
The sample will tells the details.Input
The first line contains an integer T, the number of test cases (T <= 20). Each test case is in the following format.
The first line starts with an integer N (1 <= N <= 300) denoting the number of Blocks and an integer H (1 <= H <= 10) denoting the highest height of the tower. Then following N lines, Each line contains two integer si and ei (0 < si < ei <= 500).Output
For each test case, print one line containing one integer S meaning the maximum number of blocks she can use to build one tower.Sample Input
2
4 3
1 10
1 4
4 9
6 8
5 3
1 10
1 4
4 9
3 5
12 14Sample Output
4
3