RT,60分
#include<bits/stdc++.h>
#define HCL_AK_IOI 114514
#define fs(i,x,y,z) for(register int i=x;i<=y;i+=z)
#define ft(i,x,y,z) for(register int i=x;i>=y;i+=z)
#define ll long long
#define ull unsigned long long
#define db double
#define ms(a,b) memset(a,b,sizeof(a))
#define sz(a) sizeof(a)
using namespace std;
const ll N=100001,inf=0x3f3f3f3f;
const ll rw[]={-1,0,1,0,-1,1,-1,1},cl[]={0,1,0,-1,-1,1,1,-1};
inline ll read(){
ll date=0,w=1;char c=0;
while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();}
while(c>='0'&&c<='9'){date=date*10+c-'0';c=getchar();}
return date*w;
}
ll t,a[4];
inline ll gcd(ll aa,ll b){return b?gcd(b,aa%b):aa;}
int mian(){
a[0]=a[1]=a[2]=0;
scanf("%lld%lld%lld",a,a+1,a+2);
// sort(a,a+2);
// printf("!%lld %lld %lld\n",a[0],a[1],a[2]);
if((a[0]==0&&a[1]==0)||(a[0]==0&&a[2]==0)||(a[1]==0&&a[2]==0)){
puts("0");
return 0;
}
if(a[0]==0||a[1]==0||a[2]==0){
if(a[0]==a[1]||a[1]==a[2]||a[0]==a[2]){
puts("1");
return 0;
}
puts("2");
return 0;
}else{
ll r=gcd(a[0],gcd(a[1],a[2]));
a[0]/=r,a[1]/=r,a[2]/=r;
ll x=(a[1]+a[2]-a[0])/2,y=a[0]+a[1]+a[2];
if(a[0]*2==y||a[1]*2==y||a[2]*2==y||x==a[2]||x==a[1]||a[0]==a[1]||a[0]==a[2]) puts("2");
else puts("3");
return 0;
}
}
int main(){
#ifndef HCL_AK_IOI
freopen("cake.in","r",stdin);
freopen("cake.out","w",stdout);
#endif
scanf("%lld",&t);
while(t--) mian();
return 0;
}