你有一个配有多种可更换刀片的食物处理器,以及一些你想要加工成更小块的食物。
食物处理器在任何时候都只能安装一个刀片。每个刀片通过以特定的指数速率减小食物的平均块大小来加工食物,但它同时也有一个最大平均块大小的要求;如果食物的平均块大小对于该刀片来说太大,食物处理器就会卡住。给定起始的平均食物块大小、目标平均块大小以及一组可用的刀片,请确定将食物加工到目标平均块大小所需的最少加工时间。
注意,我们只关心主动加工食物所花费的时间;我们不计算更换刀片或装载/卸载食物处理器所花费的时间。
输入格式
输入的第一行包含三个整数 $s$、$t$ 和 $n$ ($1 \le t < s \le 10^6$, $1 \le n \le 10^5$),其中 $s$ 是起始平均块大小,$t$ 是目标平均块大小,$n$ 是刀片的数量。
接下来的 $n$ 行,每行包含两个整数 $m$ 和 $h$ ($1 \le m, h \le 10^6$)。这些是刀片的参数,其中 $m$ 是该刀片允许的最大平均块大小,$h$ 是该刀片将平均块大小减半所需的秒数。
输出格式
输出一个数字,表示将食物加工到目标平均块大小所需的最少秒数。如果无法达到目标,输出 $-1$。你的答案的相对误差应不超过 $10^{-5}$。
样例
样例输入 1
10 1 2 10 10 4 5
样例输出 1
23.219281
样例输入 2
10000 9999 1 10000 1
样例输出 2
1.4427671804501932E-4