#CF2118D2. 红灯绿灯(困难版)

红灯绿灯(困难版)

D2. 红灯绿灯(困难版)

每个测试的时间限制:4 秒
内存限制:512 兆字节

这是本题的困难版本。唯一的区别在于 kk 的约束以及所有测试用例中 nnqq 的总和不同。
只有同时解出本题的简单版本和困难版本,你才能进行hack。


题目描述

有一条长度为 101510^{15} 的条形道路,以及一个常数 kk
道路上恰好有 nn 个单元格装有交通信号灯;每个信号灯有一个位置 pip_i 和一个初始延迟 did_i,其中 di<kd_i < k

ii 个信号灯的工作方式如下:

  • lk+dil \cdot k + d_i 秒时(其中 ll 是任意整数),该信号灯显示红灯
  • 其他时间显示绿灯。

在第 00 秒时,你初始位于道路上的某个单元格,面向正方向。
在每一秒,你按如下顺序执行操作:

  1. 如果当前单元格装有红灯,则转身(反向);
  2. 朝着你当前面向的方向移动一个单元格

你有 qq 个不同的起始位置。对于每个起始位置,判断你是否会在 1010010^{100} 秒内最终离开这条道路。


输入格式

每个测试包含多个测试用例。
第一行输入一个整数 tt1t21051 \le t \le 2 \cdot 10^5),表示测试用例的数量。

每个测试用例的格式如下:

  • 第一行输入两个整数 n,kn, k1n21051 \le n \le 2 \cdot 10^51k10151 \le k \le 10^{15})——信号灯的数量和周期长度。
  • 第二行输入 nn 个整数 p1,p2,,pnp_1, p_2, \dots, p_n1p1<p2<<pn10151 \le p_1 < p_2 < \dots < p_n \le 10^{15})——信号灯的位置。
  • 第三行输入 nn 个整数 d1,d2,,dnd_1, d_2, \dots, d_n0di<k0 \le d_i < k)——信号灯的延迟。
  • 第四行输入一个整数 qq1q21051 \le q \le 2 \cdot 10^5)——查询的数量。
  • 第五行输入 qq 个整数 a1,a2,,aqa_1, a_2, \dots, a_q1ai10151 \le a_i \le 10^{15})——起始位置。

保证所有测试用例的 nnqq 的总和均不超过 21052 \cdot 10^5


输出格式

对于每个测试用例,输出 qq 行。
每行应包含 "YES""NO",表示你是否会在 1010010^{100} 秒内最终离开道路。
你可以以任意大小写输出答案(例如 "yEs""yes""Yes""YES" 均可)。


示例

输入

4
2 2
1 4
1 0
3
1 2 3
9 4
1 2 3 4 5 6 7 8 9
3 2 1 0 1 3 3 1 1
5
2 5 6 7 8
4 2
1 2 3 4
0 0 0 0
4
1 2 3 4
3 4
1 2 3
3 1 1
3
1 2 3

输出

YES
NO
YES
YES
YES
YES
NO
NO
YES
YES
NO
NO
YES
NO
YES

示例说明

第一个测试用例的起始位置 112233 的过程如下所示(示意图原题有图,此处略)。

第二个测试用例的起始位置 22 的过程如下所示(示意图原题有图,此处略)。