#include #define D(...) fprintf(stderr,__VA_ARGS__) #define int long long #define LL long long #define MP make_pair #define PB push_back #define fi first #define se second #define ALL(x) (x).begin(),(x).end() #define SZ(x) ((int)(x).size()) #define rep(i,a,b) for(int i=(a);i<=(b);++i) #define per(i,a,b) for(int i=(a);i>=(b);--i) using namespace std; typedef pairPII;typedef vectorVI;typedef vectorVII; templatevoid rd(T&x){int f=0,c;while(!isdigit(c=getchar()))f^=!(c^45);x=(c&15);while(isdigit(c=getchar()))x=x*10+(c&15);if(f)x=-x;} templatevoid pt(T x,int c=-1){if(x<0)putchar('-'),x=-x;if(x>9)pt(x/10);putchar(x%10+48);if(c!=-1)putchar(c);} const int N=15,P=1e9+7; int T,n,a[N]; int fpow(int k1,int k2){ int k3=1;for(;k2;k2>>=1,k1=1LL*k1*k1%P)if(k2&1)k3=1LL*k3*k1%P;return k3; } signed main(){ rd(T); while(T--){ rd(n);rep(i,1,n)rd(a[i]); int ans=a[1]/2; rep(i,1,n-1){ (ans+=1LL*a[i]*a[i+1]%P*fpow(4,P-2)%P*(fpow(a[i],P-2)-fpow(a[i+1],P-2)+P)%P)%=P; } ans=(ans+P)%P; pt(ans,'\n'); } return 0; }