import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(2*10**5+10) write = lambda x: sys.stdout.write(x+"\n") debug = lambda x: sys.stderr.write(x+"\n") writef = lambda x: print("{:.12f}".format(x)) n,q = list(map(int, input().split())) a = list(map(int, input().split())) b = list(map(int, input().split())) M = 998244353 a = [v%M for v in a] # NTT def factor(n, m=None): # mを与えると、高々その素因数まで見て、残りは分解せずにそのまま出力する f = {} tmp = n M = int(-(-n**0.5//1))+1 if m is not None: M = min(m+1, M) for i in range(2, M+1): if tmp> i,M) for i in range(24)] inv_roots = [pow(r,M-2,M) for r in roots] # roots[i] = 1 の 2**i 乗根、inv_roots[i] = 1 の 2**i 乗根の逆元 h = [[v-1,1] for v in a] while len(h)>=2: nh = [] if len(h)%2==0: pass else: nh.append(h.pop()) for i in range(0, len(h), 2): nh.append(conv(h[i], h[i+1])) h = nh c = h[0] ans = [c[i]%M for i in b] write("\n".join(map(str, ans)))