小橙的幸运数(hard)
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\hspace{15pt}本题为问题的困难版本,两题的唯一区别在本题询问次数为 1\leq q \leq 2\times 10^5

\hspace{15pt}给定一个长度为 m 的非负整数序列 a_0,a_1,\dots,a_{m-1},小橙的幸运数是正整数 c,因此她很喜欢这个数字。现在有 q 次询问,每次给定一个正整数 x,可以执行以下操作任意次(可以不操作):
\hspace{23pt}\bullet\,x 的值替换为 x+a_{(x \bmod m)}
\hspace{15pt}小橙想知道,能否通过若干次操作使 x 变为 c,请你帮帮她。

【名词解释】
\hspace{15pt}\bmod:代表取模运算。例如,5 除以 3 的余数为 2,因此式子 5 \bmod 3 的值为 2

输入描述:

\hspace{15pt}第一行输入三个正整数 m,c,q\left(1\leq m, q\leq 2\times 10^5;\, 1\leq c\leq 10^9\right),分别表示序列的长度,幸运数,询问的次数。
\hspace{15pt}第二行输入 m 个整数 a_0, a_1, \dots, a_{m-1}\left(0\leq a_i\leq 10^9\right),表示序列的各个元素。
\hspace{15pt}此后 q 行,第 i 行输入一个整数 x_i\left(1\leq x_i\leq 10^9\right),代表第 i 次询问的数。

输出描述:

\hspace{15pt}对于每一次询问新起一行,如果 x_i 能变成 c,请输出 \texttt{Yes},否则输出 \texttt{No}
示例1

输入

复制
5 13 5
1 2 6 1 3
1
9
5
10
14

输出

复制
Yes
No
No
Yes
No
示例2

输入

复制
2 10 3
4 0
1
2
4

输出

复制
No
Yes
No