/*
    题意: 给出3个骰子,每次投3个,起始count=0
            若投出的三个骰子分别为a,b,c,则count=0;
            否则count+=投出的3个数之和;
            若count>n ,结束    
    对于期望值,一般定义的Ex都是表示离目标状态还需要的代价
    所以这里定义E[i]表示当前状态为i离结束还需要代价的期望值,那答案就是E[0]
    E[>n] = 0 
    E[i] = ∑Pk*E[i+k] + P0*E[0]    
    Pk是三颗骰子和为k的概率,但=a,=b,=c的情况除外
    P0是=a,=b,=c的概率,也即1.0/(k1*k2*k3)

    我们要求的是E[0],但求E[i]的同时又要用到E[0]  这样会形成一个环
    但这个环很有特点,E[0]存在于每个环上
    所以如果每个E[i+k]都表示成E[0],由于只涉及到乘法、加法,那么E[i]也可以用
    E[0]表示咯,就这样推到E[0]
    E[i] = x[i]*E[0]+y[i]

    神奇,用这种表示方法。因为E[0]存在于每个环上,那当然环上的东西就可以用E[0]表示了
    则递推后其它的也可以同样表示了

*/

#include
<cstdio>
#include
<cstring>

const int MAXN = 505;

double x[MAXN],y[MAXN];
double p[20];

inline 
int min(int a,int b){return a<b?a:b;}

int main()
{
    
int T;
    
for(scanf("%d",&T);T--;)
    
{
        
int n,k1,k2,k3,a,b,c;
        scanf(
"%d%d%d%d%d%d%d",&n,&k1,&k2,&k3,&a,&b,&c);
        
double pp = 1.0/(k1*k2*k3);
        memset(p,
0,sizeof(p));
        
for(int i=1;i<=k1;i++)
            
for(int j=1;j<=k2;j++)
                
for(int k=1;k<=k3;k++)
                    p[i
+j+k]+=pp;
        p[a
+b+c]-=pp;
        x[n
+1]=0.0,y[n+1]=0.0;
        
for(int i=n;i>=0;i--)
        
{
            x[i]
=pp;
            y[i]
=1.0;
            
for(int k=3;k<=k1+k2+k3;k++)
            
{
                
int j = min(n+1,i+k);
                x[i]
+=p[k]*x[j];
                y[i]
+=p[k]*y[j];
            }

        }

        printf(
"%.15f\n",y[0]/(1-x[0]));
    }
    
    
return 0;
}