#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i,a) for(int i=(int)0;i<(int)a;++i) #define pb push_back #define eb emplace_back using ll=long long; constexpr ll mod = 1e9 + 7; constexpr ll INF = 1LL << 60; template inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } template inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; } using namespace std; template string to_string(pair p); template string to_string(tuple p); template string to_string(tuple p); string to_string(const string& s) { return '"' + s + '"'; } string to_string(const char* s) { return to_string((string) s); } string to_string(bool b) { return (b ? "true" : "false"); } string to_string(vector v) { bool first = true; string res = "{"; for (int i = 0; i < static_cast(v.size()); i++) { if (!first) { res += ", "; } first = false; res += to_string(v[i]); } res += "}"; return res; } template string to_string(bitset v) { string res = ""; for (size_t i = 0; i < N; i++) { res += static_cast('0' + v[i]); } return res; } template string to_string(A v) { bool first = true; string res = "{"; for (const auto &x : v) { if (!first) { res += ", "; } first = false; res += to_string(x); } res += "}"; return res; } template string to_string(pair p) { return "(" + to_string(p.first) + ", " + to_string(p.second) + ")"; } template string to_string(tuple p) { return "(" + to_string(get<0>(p)) + ", " + to_string(get<1>(p)) + ", " + to_string(get<2>(p)) + ")"; } template string to_string(tuple p) { return "(" + to_string(get<0>(p)) + ", " + to_string(get<1>(p)) + ", " + to_string(get<2>(p)) + ", " + to_string(get<3>(p)) + ")"; } void debug_out() { cerr << "\n"; } template void debug_out(Head H, Tail... T) { cerr << " " <>t; while(t--){ ll a,b,c; cin>>a>>b>>c; ll ans=INF; ll maxv=max({a,b,c}),minv=min({a,b,c}),mid=a+b+c-maxv-minv; if(a!=b&&b!=c&&c!=a){ if(mid==a||mid==c)chmin(ans,0LL); else { if(maxv-mid>=mid-minv){ ll bb=mid; bb-=mid-minv+1; if(bb>0)chmin(ans,mid-minv+1); } else { ll maxv2=maxv; maxv2-=maxv-mid+1; if(maxv2==minv)maxv2--; if(maxv2>0)chmin(ans,maxv-maxv2); } } } else { if(a==b&&b==c&&c==a){ a-=2;c--; if(a>0)chmin(ans,3LL); } else if(a==c){ if(b>a){ if(a>1)chmin(ans,1LL); } else { a--; if(a>0){ if(a==b){ if(a>1)chmin(ans,2LL); } else chmin(ans,1LL); } } } else { if(b==c)swap(a,c); if(c>a){ b--; if(b>0)chmin(ans,1LL); } else { a--; if(a==c){ if(a>1)chmin(ans,2LL); } else chmin(ans,1LL); } } } if(ans==INF)cout<<-1<<"\n"; else cout<