#include using namespace std; #define fi first #define se second #define SZ(x) ((int)x.size()) #define lowbit(x) x&-x #define pb push_back #define ls (u<<1) #define rs (u<<1|1) #define ALL(x) (x).begin(),(x).end() #define UNI(x) sort(ALL(x)),x.resize(unique(ALL(x))-x.begin()) #define GETPOS(c,x) (lower_bound(ALL(c),x)-c.begin()) #define LEN(x) strlen(x) #define MS0(x) memset((x),0,sizeof((x))) #define Rint register int typedef unsigned int unit; typedef long long ll; typedef unsigned long long ull; typedef double db; typedef pair pii; typedef pair pll; typedef vector Vi; typedef vector Vll; typedef vector Vpii; template void _R(T &x) { cin >> x; } void _R(int &x) { scanf("%d", &x); } void _R(ll &x) { scanf("%lld", &x); } void _R(ull &x) { scanf("%llu", &x); } void _R(double &x) { scanf("%lf", &x); } void _R(char &x) { scanf(" %c", &x); } void _R(char *x) { scanf("%s", x); } void R() {} template void R(T &head, U &... tail) { _R(head); R(tail...); } template void _W(const T &x) { cout << x; } void _W(const int &x) { printf("%d", x); } void _W(const ll &x) { printf("%lld", x); } void _W(const double &x) { printf("%.16f", x); } void _W(const char &x) { putchar(x); } void _W(const char *x) { printf("%s", x); } template void _W(const pair &x) {_W(x.fi); putchar(' '); _W(x.se);} template void _W(const vector &x) { for (auto i = x.begin(); i != x.end(); _W(*i++)) if (i != x.cbegin()) putchar(' '); } void W() {} template void W(const T &head, const U &... tail) { _W(head); putchar(sizeof...(tail) ? ' ' : '\n'); W(tail...); } const int MOD=1e9+7,mod=998244353; ll qpow(ll a,ll b) {ll res=1;a%=MOD; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%MOD;a=a*a%MOD;}return res;} const int MAXN=2e6+10,MAXM=2e6+10; const int INF=INT_MAX,SINF=0x3f3f3f3f; const ll llINF=LLONG_MAX; const int inv2=(MOD+1)/2; const int Lim=1<<20; int a[4]; int dp[1005][1005]; void mymin(int &x,int y) { x=min(x,y); } queue q; int chk(int x,int y,int dep) { x=max(x,0);y=max(y,0); if(x==0&&y==0)return dep; if(dp[x][y])return 0; dp[x][y]=dep; q.push({x,y}); return 0; } int dfs(int x,int y,int z) { while(!q.empty())q.pop(); q.push({1000,1000}); while(!q.empty()) { auto u=q.front();q.pop();int p; p=chk(u.fi-z,u.se,dp[u.fi][u.se]+1);if(p)return p; p=chk(u.fi,u.se-z,dp[u.fi][u.se]+1);if(p)return p; if(u.fi&&u.se)p=chk(u.fi-y,u.se-x,dp[u.fi][u.se]+1);if(p)return p; } return -1; } void solve() { int ans=INF; for(int i=0;i<3;i++)R(a[i]); for(int i=0;i<3;i++) for(int j=i+1;j<3;j++) { memset(dp,0,sizeof(dp));dp[1000][1000]=0; mymin(ans,dfs(a[i],a[j],a[3-i-j])); } W(ans); } int main() { //freopen("input.txt","r",stdin); //freopen("test_output.txt","w",stdout); int T=1; R(T); //assert(T<=20&&T>=1); while(T--)solve(); return 0; }