#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define sqr(x) ((x)*(x)) #define fz1(i,n) for ((i)=1;(i)<=(n);(i)++) #define fd1(i,n) for ((i)=(n);(i)>=1;(i)--) #define fz0g(i,n) for ((i)=0;(i)<=(n);(i)++) #define fd0g(i,n) for ((i)=(n);(i)>=0;(i)--) #define fz0k(i,n) for ((i)=0;(i)<(n);(i)++) #define fd0k(i,n) for ((i)=(long long)((n)-1);(i)>=0;(i)--) #define fz(i,x,y) for ((i)=(x);(i)<=(y);(i)++) #define fd(i,y,x) for ((i)=(y);(i)>=(x);(i)--) #define fzin fz1(i,n) #define fzim fz1(i,m) #define fzjn fz1(j,n) #define fzjm fz1(j,m) #define ff(c,itr) for (__typeof((c).begin()) itr=(c).begin();itr!=(c).end();++itr) #define rdst(st,len){static char ss[len];scanf(" %s",ss);(st)=ss;} #define inc(x,y) {x+=(y);if(x>=mod)x-=mod;} #define dec(x,y) {x-=(y);if(x<0)x+=mod;} #define spln(i,n) (i==n?'\n':' ') #define fac_init(n){fac[0]=fac[1]=inv[1]=fi[0]=fi[1]=1;fz(i,2,n){fac[i]=1ll*fac[i-1]*i%mod;inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;fi[i]=1ll*fi[i-1]*inv[i]%mod;}} using namespace std; inline void read(int &x) { char c;int f=1; while(!isdigit(c=getchar()))if(c=='-')f=-1; x=(c&15);while(isdigit(c=getchar()))x=(x<<1)+(x<<3)+(c&15); x*=f; } const int mod=1e9+7; int n,m,i,j,a[15],t,ans; int qp(int x,int y) { int z=1; while(y){ if(y&1){ z=1ll*z*x%mod; } y/=2; x=1ll*x*x%mod; } return z; } int main() { read(t); while(t--){ read(n); fz1(i,n){ read(a[i]); } reverse(a+1,a+n+1); ans=a[n]/2; fz(i,2,n){ int t=a[i-1]/a[i]/2; int r=a[i],l=a[i]*(t+t)-a[i-1]; int len=max(0,r-l),all=a[i]*2; int pro=1ll*len*qp(all,mod-2)%mod; ans=(ans+1ll*pro*(a[i-1]/2-(t+1)*a[i]/2)+1ll*(mod+1-pro)*(a[i-1]/2-t*a[i]/2))%mod; } printf("%d\n",ans); } return 0; }