#include #define For(i,l,r) for (register int i=l; i<=r; i++) using namespace std; typedef unsigned long long LL; typedef signed long long ll; #define int ll template inline void read(T &x) { char c = getchar(); int w = 1; x = 0; while (!isdigit(c)) (c == '-') && (w = -w), c = getchar(); while (isdigit(c)) x = (x << 1) + (x << 3) + (c ^ '0'), c = getchar(); x *= w; } int T, a, b; signed main() { read(T); while (T -- > 0) { read(a); read(b); if (a == b) { if (a == 1) puts("-1 -1"); else cout << 2 << " " << a << endl; continue; } if (a < b) swap(a, b); int mi = a, mx = 1; for (register int i=1; i*i<=a-b; ++i) { if ((a-b) % i == 0) { if (a/i-b/i == (a-b)/i && i > 1) { mi = min(mi, i); mx = max(mx, i); } int x = (a-b)/i; if (a/x-b/x == (a-b)/x && x > 1) { mi = min(mi, x); mx = max(mx, x); } } } if (mi == a) { puts("-1 -1"); } else { printf("%d %d\n", mi, mx); } } getchar(); return 0; }