魔法商店
题号:NC285802
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

魔法商店里面有 n 种打包小鱼干出售,第 i 种打包共有 a_i 条小鱼干,售价为 2^{i-1} 个猫猫币。

由于魔法商店的老板很吝啬,所以每天魔法商店只会开启一次,且每次每种打包小鱼干只能被购买一次。

由于魔法商店的老板很慷慨,所以他保证如果有 i < j 成立,那么一定有 a_i \le a_j 成立(更贵的包里面的鱼干不会更少)。

小蓝养了一只小猫,这只猫在剩下的 q 天中,第 i 天需要吃 b_i 条小鱼干。

小灰灰打算包下接下来每天中小猫的鱼干,所以他想知道每一天他最少需要花费多少钱才能凑够不少于 b_i 的鱼干。

注意,由于计算出来的花费可能非常大,所以你只需要输出最小花费模 998244353 的结果即可。

输入描述:

第一行两个空格分隔的整数,分别代表 nq

接下来一行 n 个空格分隔的整数,第 i 个整数代表 a_i

接下来一行 q 个空格分隔的整数,第 i 个整数代表 b_i

保证:
1\le n, q \le 10^5
1\le a_i, b_i \le 10^{18}
对于每个 b_i 至少存在一种方式使得能够购买足够的小鱼干。

输出描述:

输出共 q 行,第 i 行一个整数代表第 i 天的最少花费余 998244353 的结果。
示例1

输入

复制
8 4
1 1 2 4 5 6 9 9
10 14 8 5

输出

复制
25
47
15
9