#codefestival2015okinawab. [code_festival_2015_okinawa_b]Beware of the Sogginess!

[code_festival_2015_okinawa_b]Beware of the Sogginess!

问题

因为Wolf Sothe喜欢吃冲绳拉面(一种冲绳著名的食物,由面条和汤组成),所以他今天来到了一家冲绳拉面餐厅。这里有 NN 种不同口味的冲绳拉面。一开始,第 ithi_{th} 种冲绳拉面由 aia_i 克面条和 bib_i 克汤组成。

购买之后,面条会吸收汤。具体来说,对于第 ithi_{th} 种冲绳拉面,如果我们在购买后等待了 tt 秒(tt 是一个满足 t0t≧0 的实数),面条的重量将是 min(ai+t,ai+bi)min( a_i + t , a_i + b_i ) 克,汤的重量将是 max(bit,0)max( b_i − t , 0 ) 克。每种冲绳拉面的等待时间是独立的。

Wolf Sothe要从这 NN 种冲绳拉面中选择几种来购买。对于每种冲绳拉面,只有1份可用。

Wolf Sothe希望总共吃掉 XX 克或更多的面条和 YY 克或更多的汤。找到只需最少数量的冲绳拉面的最佳解决方案。

请注意,Wolf Sothe吃冲绳拉面不需要时间,所以当Wolf Sothe在吃拉面时没有吸收作用。换句话说,当Wolf Sothe在吃的时候,面条不会吸收汤。


输入

输入通过标准输入给出,格式如下。

NN XX YY a1a_1 b1b_1 : aNa_N bNb_N

  • 第一行为整数 N(1N50)N(1≦N≦50), X(1X10,000)X(1≦X≦10,000), Y(1Y10,000)Y(1≦Y≦10,000) ,以空格分隔。
  • 从第二行开始的后续 NN 行,每行输入 ai(1ai10,000)a_i (1≦ a_i ≦10,000), bi(1bi10,000)b_i (1≦ b_i ≦10,000) ,以空格分隔。

输出

请输出购买冲绳拉面的最少数量,以满足Wolf Sothe吃掉 XX 克或更多的面条和 YY 克或更多的汤。

如果没有满足Wolf Sothe需求的解决方案,请输出 -1

输出结束时请换行。


输入示例 1


3 9 7
3 4
8 1
4 5

输出示例 1


2

购买第1种和第3种冲绳拉面。对于第1种冲绳拉面,在吃之前等待 22 秒。对于第3种冲绳拉面,购买即吃掉。因此,可以吃到 (3+2)+(4+0)=9(3 + 2) + (4 + 0) = 9 克面条和 (42)+(50)=7(4 − 2) + (5 − 0) = 7 克汤。


输入示例 2


5 20 24
8 1
4 6
10 3
10 2
5 10

输出示例 2


-1

因为总共的汤不到 2424 克,即使购买了所有种类的冲绳拉面也无法满足Wolf Sothe的需求。因此,输出 -1


输入示例 3


5 6 8
1 3
6 2
2 3
3 5
1 4

输出示例 3


3