import sys sys.setrecursionlimit(10**7) mod = 10**9+7 def convolution(A, B): la = len(A) lb = len(B) res = [0]*(la+lb-1) for i, a in enumerate(A): for j, b in enumerate(B): res[i+j] += a*b res[i+j] %= mod return res def poly_mod(X, Q): a = len(X) b = len(Q) if a < b: return X for i in range(a-b, -1, -1): d = X[i+b-1] for j, q in enumerate(Q): X[i+j] -= q*d X[i+j] %= mod return X[:b-1] def poly_pow(C, Q, n): if n == 1: return C d = len(C) if n%2: res = convolution(poly_pow(C, Q, n-1), C) else: T = poly_pow(C, Q, n//2) res = convolution(T, T) res = poly_mod(res, Q) return res #a_{n} = c_{1}*a_{n-1} + ... + c_{d}*a_{n-d} の第n項を求める(0~d-1項はE_{i}とする) def rec_fomula(C, E, n): d = len(C) Q = [1]*(d+1) for i, c in enumerate(C, 1): Q[i] = -c P = convolution(Q[:-1], E)[:d] inv = pow(Q[-1], mod-2, mod) norm_Q = [q*inv%mod for q in Q] X = poly_pow(C, norm_Q, n) res = convolution(X, P) res = poly_mod(res, norm_Q) return res[0] p = int(input()) C = [2*p, 2-p**2, -2*p, -1] E = [0, 0, 0, 1] q = int(input()) for _ in range(q): n = int(input()) ans = rec_fomula(C, E, n-1) print(ans)