#include using namespace std; using ll=long long; #include using mint=atcoder::modint; 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; mint::set_mod(b); mint x=m,y=l; vector> a(4,vector(4)); a[0][1]=2*y; a[0][2]=x-y; a[1][0]=2; a[1][3]=x-y; a[2][0]=1; a[3][1]=1; vector> res(4,vector(4)); for(int i=0;i<4;i++)res[i][i]=1; 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]+=a[i][k]*res[k][j]; } 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]+=a[i][k]*a[k][j]; } a=move(na); N>>=1; } mint p=2*res[2][1]+2*res[2][2],q=2*res[3][1]+2*res[3][2]; //cout<