#include using namespace std; using ll=long long; #include using mint=atcoder::modint; #include int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int ttt; cin>>ttt; while(ttt--){ ll n,m,l,b; cin>>n>>m>>l>>b; ll x=m%b,y=l%b; vector> a(4,vector(4)); a[0][1]=(2*y)%b; a[0][2]=(x-y+b)%b; a[1][0]=2%b; a[1][3]=(x-y+b)%b; a[2][0]=1%b; a[3][1]=1%b; vector> res(4,vector(4)); for(int i=0;i<4;i++)res[i][i]=1%b; ll N=n; while(N>0){ if(N&1){ vector> nres(4,vector(4)); for(int i=0;i<4;i++)for(int j=0;j<4;j++)for(int k=0;k<4;k++){ nres[i][j]=(nres[i][j]+a[i][k]*res[k][j])%b; } res=move(nres); } vector> na(4,vector(4)); for(int i=0;i<4;i++)for(int j=0;j<4;j++)for(int k=0;k<4;k++){ na[i][j]=(na[i][j]+a[i][k]*a[k][j])%b; } a=move(na); N>>=1; } ll p=(2*res[2][1]+2*res[2][2])%b,q=(2*res[3][1]+2*res[3][2])%b; //cout<