#pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include #include using namespace std; using namespace atcoder; using ll=long long; using mint=modint; const ll inf=(1e9+7)*(1e9+7); int dx[4]={1,0,0,-1},dy[4]={0,1,-1,0}; const int mod=998244353; using P=pair; int main(){ int t,m,n; cin>>t>>m; mint::set_mod(m); int MAX_N=5e6; vectorA000142(MAX_N+1),A000085(MAX_N+1),A037223(MAX_N+1),A037224(MAX_N+1),A135401(MAX_N+1),ans(MAX_N+1); for(int i=1;i<=MAX_N;i++){ if(i==1) A000142[i]=1; else A000142[i]=A000142[i-1]*i; if(i<=2) A000085[i]=i; else A000085[i]=A000085[i-1]+A000085[i-2]*(i-1); if(i<=2) A037223[i]=i; else if(i%2==1) A037223[i]=A037223[i-1]; else A037223[i]=A037223[i-1]*i; if(i==1) A037224[i]=1; else if(i%4==2) A037224[i]=0; else if(i%2==1) A037224[i]=A037224[i-1]; else A037224[i]=A037224[i-3]*(i-2); if(i<=2) A135401[i]=i; else if(i%2==1) A135401[i]=A135401[i-1]; else A135401[i]=A135401[i-1]*2+A135401[i-3]*(i-2); if(i==1) ans[i]=1; else ans[i]=8*A000142[i]-8*A000085[i]-4*A037223[i]-2*A037224[i]+6*A135401[i]; } while(cin>>n) cout<