#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include #include using namespace std; typedef long long ll; ll mod; ll inve(ll x){return x;} ll det(vector> a){ int i,j,k,n = a.size(); ll ret = 1; // for(i=0;i=mod) (a[i][j]) %= mod; // } // } for(i=0;i &v,ll N){ //given v[0] = f(z),v[1] = f(z + 1),...v[d - 1] = f(z + d - 1) // output f(N) const int z = 0; //可変 int d = v.size(); // vector pref_sum(d + 1),suff_sum(d + 1); //分子 // pref_sum[0] = suff_sum[d] = 1; // for(int i=1;i<=d;i++) pref_sum[i] = (N + 2*mod - z - i + 1)%mod*pref_sum[i - 1]%mod; // for(int i=d - 1;i>=0;i--) suff_sum[i] = (N + 2*mod - z - i)%mod*suff_sum[i + 1]%mod; ll ans = 0; ll s = 1; for(int i=d - 1;i>=0;i--){ // ll x = v[i]*pref_sum[i]%mod*suff_sum[i + 1]%mod*fi[i]%mod*fi[d - 1 - i]%mod; // ll x = v[i]*fi[i]%mod*fi[d - 1 - i]%mod; // ll x = (v[i]*fi[i]*fi[d - 1 - i])&1; // cout << v[i] << " " << fi[i] << " " << fi[d - 1 - i] << endl; // if(s>0) (ans += x) %= mod; // else (ans += mod - x) %= mod; // s *= -1; (ans += v[i]) &= 1; } return ans; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int t; cin >> t; while(t){ t--; int i,j,n; cin >> n >> mod; vector> a(n),b(n); for(i=0;i> a[i][j]; } if(mod!=2){ cout << 0 << "\n"; }else{ solve(); vector f(n); for(int k=0;k