#include #ifndef ONLINE_JUDGE #define DEBUG #include #else #define zqy1018zqy1018zqy1018zqy1018zqy1018 123 #endif #define INF 2000000000 #define MOD 1000000007 #define MAXN 200005 #define REP(temp, init_val, end_val) for (int temp = init_val; temp <= end_val; ++temp) #define REPR(temp, init_val, end_val) for (int temp = init_val; temp >= end_val; --temp) using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair intpair; int read(){ int f = 1, x = 0; char c = getchar(); while (c < '0' || c > '9'){if(c == '-') f = -f; c = getchar();} while (c >= '0' && c <= '9')x = x * 10 + c - '0', c = getchar(); return f * x; } inline int lowbit(int x){ return x & (-x); } inline int modadd(int x, int y){ return (x + y >= MOD ? x + y - MOD: x + y); } inline int sgn(int x){ return (x < 0 ? -1: (x > 0 ? 1: 0)); } template T gcd(T a, T b){ return (!b) ? a: gcd(b, a % b); } int poww(int a, int b){ int res = 1; while (b > 0){ if (b & 1) res = 1ll * res * a % MOD; a = 1ll * a * a % MOD, b >>= 1; } return res; } const int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1}; const int ddx[] = {-1, -1, -1, 0, 0, 1, 1, 1}, ddy[] = {-1, 0, 1, -1, 1, -1, 0, 1}; /*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/ int a, b; void init(){ a = read(), b = read(); } void solve(){ if (a > b) swap(a, b); if (b == 1){ puts("-1 -1"); return ; } if (a == 1){ if (b == 2) puts("-1 -1"); else { if (b & 1) printf("%d %d\n", 2, b - 1); else { // printf("%d %d\n", 3, b - 1); } } return ; } if (a == b){ printf("%d %d\n", 2, b); return ; } int mini = INF, maxi = 0; int df = b - a; for (int l = 1, r; l <= b; l = r + 1){ int t1 = a / l; int t2 = b / l; r = min(t1 > 0 ? a / t1: INF, t2 > 0 ? b / t2: INF); int dd = t2 - t1; if (dd > 0 && df % dd == 0){ int pp = df / dd; if (pp >= l && pp <= r && pp >= 2) mini = min(mini, pp), maxi = max(maxi, pp); } } if (mini == INF) puts("-1 -1"); else printf("%d %d\n", mini, maxi); } int main(){ int T = read(); while (T--){ init(); solve(); } return 0; }