#include<bits/stdc++.h>
#define LL long long
#define R register int
using namespace std;
LL n,t,p=1e9+7,a,b,x,y;
struct mat
{
LL m[4][4];
void init(int fm)
{
for(R i=0;i<4;i++)
for(R j=0;j<4;j++) m[i][j]=0;
if(fm==1) m[0][0]=m[2][1]=1,m[0][1]=m[1][1]=x*x%p,m[0][2]=m[1][2]=y*y%p,m[0][3]=m[1][3]=2*x*y%p,m[3][1]=x,m[3][3]=y;
if(fm==2) m[0][0]=(a*a+b*b)%p,m[1][0]=b*b%p,m[2][0]=a*a%p,m[3][0]=a*b%p;
}
}base,ans;
mat mul(mat a,mat b)
{
mat c;c.init(0);
for(R i=0;i<4;i++)
for(R k=0;k<4;k++)
for(R j=0;j<4;j++)
if(a.m[i][j]&&b.m[j][k]) c.m[i][k]=(c.m[i][k]+a.m[i][j]*b.m[j][k]%p)%p;
return c;
}
inline LL read()
{
LL s=0;char c=getchar();
while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') s=s*10+c-'0',c=getchar();
return s;
}
int main()
{
t=read();
while(t--)
{
n=read()-2,a=read(),b=read(),x=read(),y=read();
base.init(1);ans.init(2);
while(n)
{
if(n&1) ans=mul(base,ans);
n/=2;base=mul(base,base);
}printf("%lld\n",ans.m[0][0]);
}
return 0;
}