#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int v1,v2,v3;
int ex,ey,ez;
int book[101][101][101];
struct node{
int a,b,c,step;
};
void bfs()
{
queue<node>q;
book[v1][0][0]=1;
q.push(node{v1,0,0,0});
while(!q.empty())
{
node tt=q.front();q.pop();
int x=tt.a,y=tt.b,z=tt.c;
if(x==ex&&y==ey&&z==ez){cout<<tt.step<<endl;return;}
int nx=x,ny=y,nz=z;
if(x&&y<v2) //1-->2
{
if(x>v2-y)nx=x-(v2-y),ny=v2;
else nx=0,ny=y+x;
nz=z;
if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
}
if(x&&z<v3) //1-->3
{
if(x>v3-z)nx=x-(v3-z),nz=v3;
else nx=0,nz=z+x;
ny=y;
if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
}
if(y&&x<v1) //2-->1
{
if(y>v1-x)ny=y-(v1-x),nx=v1;
else ny=0,nx=x+y;
nz=z;
if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
}
if(y&&z<v3) //2-->3
{
if(y>v3-z)ny=y-(v3-z),nz=v3;
else ny=0,nz=z+y;
nx=x;
if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
}
if(z&&x<v1) //3-->1
{
if(z>v1-x)nz=z-(v1-x),nx=v1;
else nz=0,nx=x+z;
ny=y;
if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
}
if(z&&y<v2) //3-->2
{
if(z>v2-y)nz=z-(v2-y),ny=v2;
else nz=0,ny=y+z;
nx=x;
if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
}
}
cout<<-1<<endl;
}
int main()
{
int t;cin>>t;
while(t--)
{
memset(book,0,sizeof(book));
cin>>v1>>v2>>v3>>ex>>ey>>ez;
bfs();
}
return 0;
}