#include<bits/stdc++.h>
using namespace std ;
const int M=47 ;
typedef long long ll;
int k,T,m,p[3 ];
int f[20 ][3 ][8 ][150 ];
ll a[5 ],l[5 ],r[5 ],n;
int A[3 ][20 ],B[20 ];
int w[20 ],cnt,Ans;
int mx[3 ][20 ];
int c[M][M];
inline void Add(int & x,int y){
x=(x+y)%M;
}
inline int Calc(ll x,ll y,ll z){
int aa[20 ];
memset (mx,0 ,sizeof (mx));
for (int i=0 ;i<3 ;i++){
ll t;
if (!i)t=x;else t=i==1 ?y:z;
memset (aa,0 ,sizeof (aa));
int L=0 ;
while (t)aa[++L]=t%M,t/=M;
for (int j=1 ;j<=cnt;j++)mx[i][j]=aa[cnt-j+1 ];
}
memset (f,0 ,sizeof (f));
f[0 ][2 ][7 ][0 ]=1 ;
for (int i=0 ;i<=cnt;i++)
for (int j=0 ;j<(i==cnt?2 :3 );j++)
for (int P=0 ;P<8 ;P++)
for (int r=0 ;r<=M*3 ;r++)
if (f[i][j][P][r]){
int t=f[i][j][P][r];
p[0 ]=(P&1 ),p[1 ]=((P>>1 )&1 ),p[2 ]=((P>>2 )&1 );
if (j==2 ){
int nxi=i+1 ,nxj=0 ;
if (p[nxj])m=mx[nxj][nxi];else m=M-1 ;
for (int k=0 ;k<=m;k++){
int T=r*47 +w[nxi]-k;
if (T<0 )break ;
Add(f[nxi][nxj][P-(p[nxj]&&k<m?(1 <<nxj):0 )][min(M*3 ,T)],t*c[A[nxj][nxi]][k]);
}
}else {
int nxi=i,nxj=j+1 ;
if (p[nxj])m=mx[nxj][nxi];else m=M-1 ;
for (int k=0 ;k<=m;k++){
int T=r-k;
if (T<0 )break ;
Add(f[nxi][nxj][P-(p[nxj]&&k<m?(1 <<nxj):0 )][T],t*c[A[nxj][nxi]][k]);
}
}
}
int Ans=0 ;
for (int P=0 ;P<8 ;P++)
for (int r=0 ;r<=M*3 ;r++){
Add(Ans,f[cnt][2 ][P][r]);
}
return Ans;
}
inline void Init(){
for (int i=0 ;i<M;i++)c[i][0 ]=1 ;
for (int i=1 ;i<M;i++)
for (int j=1 ;j<M;j++)
c[i][j]=(c[i-1 ][j]+c[i-1 ][j-1 ])%M;
}
int main(){
scanf ("%d" ,&T);
Init();
while (T--){
for (int i=0 ;i<3 ;i++)scanf ("%lld%lld%lld" ,&a[i],&l[i],&r[i]);
scanf ("%lld" ,&n);
Ans=cnt=0 ;
while (n)w[++cnt]=n%M,n/=M;
for (int i=1 ;i<=(cnt-1 >>1 );i++)swap(w[i],w[cnt-i+1 ]);
for (int i=0 ;i<3 ;i++){
memset (B,0 ,sizeof (B));
int t=0 ;
while (a[i])B[++t]=a[i]%M,a[i]/=M;
for (int j=1 ;j<=cnt;j++)A[i][j]=B[cnt-j+1 ];
}
Add(Ans,Calc(r[0 ],r[1 ],r[2 ]));
Add(Ans,-Calc(l[0 ]-1 ,r[1 ],r[2 ]));
Add(Ans,-Calc(r[0 ],l[1 ]-1 ,r[2 ]));
Add(Ans,-Calc(r[0 ],r[1 ],l[2 ]-1 ));
Add(Ans,Calc(l[0 ]-1 ,l[1 ]-1 ,r[2 ]));
Add(Ans,Calc(r[0 ],l[1 ]-1 ,l[2 ]-1 ));
Add(Ans,Calc(l[0 ]-1 ,r[1 ],l[2 ]-1 ));
Add(Ans,-Calc(l[0 ]-1 ,l[1 ]-1 ,l[2 ]-1 ));
printf ("%d\n" ,(Ans+M)%M);
}
return 0 ;
}