#include <bits/stdc++.h>
#include <math.h>
using namespace std;
// Macros
#define REP(i, j, n) for(int i = j; i < n; i++)
#define trav(i, a) for(auto i: a)
#define all(x) x.begin(), x.end()
#define PB push_back
#define EB emplace_back
#define MP make_pair
#define F first
#define S second
#define GCD __gcd
// Type Names
typedef unsigned long long ull;
typedef long long ll;
typedef vector<int> vi;
typedef vector<long long> vll;
typedef pair<int, int> pii;
// custom hash
struct custom_hash {
static uint64_t splitmix64(uint64_t x) {
// http://xorshift.di.unimi.it/splitmix64.c
x += 0x9e3779b97f4a7c15;
x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
return x ^ (x >> 31);
}
size_t operator()(uint64_t x) const {
static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
return splitmix64(x + FIXED_RANDOM);
}
};
void solve(){
int a, b, c;
cin >> a >> b >> c;
vi v{a, b, c};
sort(all(v));
a = v[0];
b = v[1];
c = v[2];
int dif1 = abs(a - b);
int dif2 = abs(b - c);
if (dif1 == 0 && dif2 == 0){
cout << 0 << "\n";
}
else if (dif1 == 0 || dif2 == 0){
cout << 1 << "\n";
}
else {
cout << (dif1 + dif2) / GCD(dif1, dif2) << "\n";
}
}
int main()
{
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
int t;
cin >> t;
for(int i = 0; i < t; i++)
solve();
return 0;
}