#include <bits/stdc++.h>
using namespace std ;
#define MAXN 5
#define LL long long
#define sc(x) scanf("%d",&x)
#define pr(x) printf("%d\n",x)
#define MOD 1000000007
int res[MAXN][MAXN],Temp[MAXN][MAXN],A[MAXN][MAXN],F[MAXN] , T , N ;
void init(){
memset(res,0,sizeof res) ;
memset(A,0,sizeof A) ;
for(int i=0;i<MAXN;i++)
res[i][i] = 1 ;
A[0][1] = A[1][2] = A[2][3] = A[4][4] = 1 ;
}
void mult(int A[MAXN][MAXN],int B[MAXN][MAXN]){
for(int i=0;i<MAXN;i++){
for(int j=0;j<MAXN;j++){
Temp[i][j] = 0 ;
for(int k=0;k<MAXN;k++){
Temp[i][j] += (1LL * A[i][k] * B[k][j]) % MOD ;
Temp[i][j] %= MOD ;
}
}
}
for(int i=0;i<MAXN;i++){
for(int j=0;j<MAXN;j++){
A[i][j] = Temp[i][j] ;
}
}
}
void power(int N){
while(N){
if(N&1){
mult(res,A) ;
}
N /= 2 ;
mult(A,A) ;
}
}
int main(){
sc(T) ;
while(T--){
sc(N) ;
init() ;
for(int i=0;i<MAXN;i++){
sc(A[3][i]) ;
A[3][i] += MOD ;
A[3][i] %= MOD ;
}
for(int i=0;i<MAXN-1;i++){
sc(F[i]) ;
F[i] += MOD ;
F[i] %= MOD ;
}
F[4] = 1 ;
power(N-1) ;
int ans = 0 ;
for(int i=0;i<MAXN;i++){
ans += (1LL * F[i] * res[0][i]) % MOD ;
ans %= MOD ;
}
pr(ans) ;
}
return 0 ;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQgOwoKI2RlZmluZSBNQVhOIDUgCiNkZWZpbmUgTEwgbG9uZyBsb25nIAojZGVmaW5lIHNjKHgpIHNjYW5mKCIlZCIsJngpIAojZGVmaW5lIHByKHgpIHByaW50ZigiJWRcbiIseCkgCiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKCgppbnQgcmVzW01BWE5dW01BWE5dLFRlbXBbTUFYTl1bTUFYTl0sQVtNQVhOXVtNQVhOXSxGW01BWE5dICwgVCAsIE4gOwoKCgp2b2lkIGluaXQoKXsKCW1lbXNldChyZXMsMCxzaXplb2YgcmVzKSA7CgltZW1zZXQoQSwwLHNpemVvZiBBKSA7Cglmb3IoaW50IGk9MDtpPE1BWE47aSsrKQoJCXJlc1tpXVtpXSA9IDEgOwoJQVswXVsxXSA9IEFbMV1bMl0gPSBBWzJdWzNdID0gQVs0XVs0XSA9IDEgOwp9CgoKdm9pZCBtdWx0KGludCBBW01BWE5dW01BWE5dLGludCBCW01BWE5dW01BWE5dKXsKCglmb3IoaW50IGk9MDtpPE1BWE47aSsrKXsKCQlmb3IoaW50IGo9MDtqPE1BWE47aisrKXsKCQkJVGVtcFtpXVtqXSA9IDAgOwoJCQlmb3IoaW50IGs9MDtrPE1BWE47aysrKXsKCQkJCVRlbXBbaV1bal0gKz0gKDFMTCAqIEFbaV1ba10gKiBCW2tdW2pdKSAlIE1PRCA7CgkJCQlUZW1wW2ldW2pdICU9IE1PRCA7IAoJCQl9CgkJfQoJfQoJZm9yKGludCBpPTA7aTxNQVhOO2krKyl7CgkJZm9yKGludCBqPTA7ajxNQVhOO2orKyl7CgkJCUFbaV1bal0gPSBUZW1wW2ldW2pdIDsKCQl9Cgl9Cn0KCnZvaWQgcG93ZXIoaW50IE4pewoKCXdoaWxlKE4pewoJCWlmKE4mMSl7CgkJCW11bHQocmVzLEEpIDsKCQl9CgkJTiAvPSAyIDsKCQltdWx0KEEsQSkgOwoJfQp9CmludCBtYWluKCl7CgoJc2MoVCkgOwoJd2hpbGUoVC0tKXsKCQlzYyhOKSA7CQkKCQlpbml0KCkgOwoJCWZvcihpbnQgaT0wO2k8TUFYTjtpKyspewoJCQlzYyhBWzNdW2ldKSA7CgkJCUFbM11baV0gKz0gTU9EIDsKCQkJQVszXVtpXSAlPSBNT0QgOwoJCX0KCQlmb3IoaW50IGk9MDtpPE1BWE4tMTtpKyspewoJCQlzYyhGW2ldKSA7CgkJCUZbaV0gKz0gTU9EIDsKCQkJRltpXSAlPSBNT0QgOwoJCX0KCQlGWzRdID0gMSA7CgkJcG93ZXIoTi0xKSA7CgkJaW50IGFucyA9IDAgOwoJCWZvcihpbnQgaT0wO2k8TUFYTjtpKyspewoJCQlhbnMgKz0gKDFMTCAqIEZbaV0gKiByZXNbMF1baV0pICUgTU9EIDsKCQkJYW5zICU9IE1PRCA7CgkJfQoJCXByKGFucykgOwoJfQoJcmV0dXJuIDAgOyAKfQo=