Johnny 即将举办生日派对。这次他不想用糖果,而是想用巧克力招待同学们。他收藏巧克力棒已经很久了,尽管要克制住自己不把它们全部吃掉非常困难!他还是忍不住从每一块巧克力棒上咬了一口——根据特定巧克力棒的美味程度、他的意志力、月相以及其他因素,他吃掉了一块或多块巧克力……最终,他拥有了许多不同形状的巧克力棒。但他的班里也有许多孩子,他需要公平地分享这些巧克力。
他决定为了公平分享巧克力,将执行一种称为“双切”(bisplitting)的操作:Johnny 取出最大的巧克力棒(按巧克力块的数量计算),将其横向和纵向各切成两半。Johnny 不想把巧克力块切成两半,所以有时他不得不进行不均匀的切割,但他总是会尽可能地接近一半——如果一块巧克力棒的尺寸为 $w \times h$,那么在双切之后,他将得到尺寸分别为 $\lfloor \frac{w}{2} \rfloor \times \lfloor \frac{h}{2} \rfloor$、$\lfloor \frac{w}{2} \rfloor \times \lceil \frac{h}{2} \rceil$、$\lceil \frac{w}{2} \rceil \times \lfloor \frac{h}{2} \rfloor$ 和 $\lceil \frac{w}{2} \rceil \times \lceil \frac{h}{2} \rceil$ 的巧克力棒。
通过这种方式得到的某些巧克力棒可能有一个或两个维度长度为 0,也就是说该巧克力棒是空的。如果有不止一块巧克力棒拥有最大数量的巧克力块,Johnny 将从中挑选长边长度最大的一块。
Johnny 认为,如果最终得到的巧克力棒不会太大,对他来说是最好的,这样他就能为自己保留更多的巧克力。因此,他想知道(你需要帮助他)在执行了 $k_i$ 次双切操作后,最大的巧克力棒中会有多少块巧克力,对于 $i = 1, 2, \dots, q$ ——根据这些信息,他将决定应该继续切分巧克力棒多久。
输入格式
第一行包含两个整数 $n$ 和 $q$ ($1 \le n \le 50\,000, 1 \le q \le 100$),由单个空格分隔。它们分别表示 Johnny 拥有的巧克力棒数量和 Johnny 将进行的查询次数。
接下来的 $n$ 行,每行包含两个整数,由单个空格分隔。第 $i$ 行包含 $w_i$ 和 $h_i$ ($1 \le w_i, h_i \le 10^9$),表示一块尺寸为 $w_i \times h_i$ 块巧克力块的巧克力棒。
接下来的 $q$ 行,每行包含一个非负整数。第 $i$ 行包含 $k_i$ ($0 \le k_i \le 10^{18}$)。这是关于从初始巧克力棒集合开始,执行 $k_i$ 次双切操作后,最大的巧克力棒所包含的巧克力块数量的查询。
输出格式
输出应包含恰好 $q$ 行。每行应包含一个整数,即按输入顺序对应的查询答案。
样例
输入 1
2 4 5 10 7 7 2 3 10 1
输出 1
16 15 6 49
说明
在执行前 $i = 0, 1, 2, 3$ 次双切后,按从大到小排序的巧克力棒集合(尺寸为 $a \times b$ 和 $b \times a$ 的巧克力棒被视为相同,记为 $\min(a, b) \times \max(a, b)$):
- 初始集合:一块 $5 \times 10$ 和一块 $7 \times 7$;
- 第一次双切后:一块 $7 \times 7$,两块 $3 \times 5$,以及两块 $2 \times 5$;
- 第二次双切后:一块 $4 \times 4$,两块 $3 \times 5$,两块 $3 \times 4$,两块 $2 \times 5$,以及一块 $3 \times 3$;
- 第三次双切后:两块 $3 \times 5$,两块 $3 \times 4$,两块 $2 \times 5$,一块 $3 \times 3$,以及四块 $2 \times 2$。