#include #include using namespace std; using namespace atcoder; using ll=long long; using ld=long double; using pl=pair; using vpl=vector; using vl=vector; using vvl=vector; long double pi=atan2(0,-1); #define rep(i,n) for(long long i=0LL;i=b;i--) #define REP1(i,k,n) for(long long i=k;iostream&operator<<(ostream& os,pair& v){os <<'{'<ostream&operator<<(ostream& os,vector&v){for(int i = 0;i < size(v);i++)os << v[i] << (i+1==size(v)?"":" ");return os;} templateistream&operator>>(istream& is,vector&v){for(auto &in : v)is >> in;return is;} ll INF = 1152921504606846976; /* INF = 1LL << 60 */ //using mint = modint998244353;ll MOD = 998244353; using mint = modint1000000007;ll MOD = 1000000007; // using mint = modint; using vm = vector; using vvm = vector; vl dx = {1,0,-1,0}, dy = {0,-1,0,1}; //---------------------------------------------- #define Q_MAX 2000009 int main(){ ios::sync_with_stdio(false);cin.tie(nullptr);cout<>P>>Q; vm A(Q_MAX); vm B(Q_MAX); A[1] = 0; A[2] = 1; rep(i,10){ A[i+3] = P*A[i+2]+A[i+1]; } FOR(i,1,10) FOR(s,1,10) FOR(t,1,10) if(s + t == i) B[i]+=A[s]*A[t]; ll p = P; FOR(i,5,Q_MAX){ B[i] = 2*p*B[i-1] - (p*p-2)*B[i-2] -(2*p)*B[i-3]-B[i-4]; } vl ans(Q); rep(qi,Q){ ll q; cin>>q; ans[qi] = B[q].val(); } rep(i,Q) cout << ans[i] << endl; }