#include #include #include using namespace std; typedef long long ll; pair isPrime(ll num, ll a, ll b); ll zmax(ll a, ll b) { return a > b ? a : b; } ll zmin(ll a, ll b) { return a < b ? a : b; } int main() { /*FILE* stream; freopen_s(&stream, "in.txt", "r", stdin);*/ ll a, b; ll amin, amax; ll T; ios::sync_with_stdio(false); cin.tie(0); cin >> T; while (T--) { /*scanf("%d %d", &a, &b);*/ cin >> a >> b; ll dx = a > b ? a - b : b - a; if (dx >= 2) { amax = dx; auto temp = isPrime(dx, a, b); if (temp.first) amin = dx; else { amin = temp.second; } } else if (dx == 1) { amax = amin = -1; } else { amax = a; amin = 2; if (a < 2) { amin = amax = -1; } } cout << amin << " " << amax << endl; } return 0; } pair isPrime(ll num, ll a, ll b) { ll zx = zmin(zmax(a, b), (ll)sqrt(num)); for (ll i = 2; i <= zx; ++i) { if ((num % i) == 0) return make_pair(false, i); } return make_pair(true, -1); }