//#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include //#include #define itn int #define nit int #define ll long long #define ms multiset #define F(i,a,b) for(register int i=a,i##end=b;i<=i##end;++i) #define UF(i,a,b) for(register int i=a,i##end=b;i>=i##end;--i) #define re register #define ri re int #define il inline #define pii pair #define cp complex //#pra gma G CC opti mize(3) using namespace std; using std::bitset; //using namespace __gnu_pbds; const double Pi=acos(-1); namespace fastIO { template inline void read(T &x) { x=0; bool fu=0; char ch=0; while(ch>'9'||ch<'0') { ch=getchar(); if(ch=='-')fu=1; } while(ch<='9'&&ch>='0') x=(x*10-48+ch),ch=getchar(); if(fu)x=-x; } inline int read() { int x=0; bool fu=0; char ch=0; while(ch>'9'||ch<'0') { ch=getchar(); if(ch=='-')fu=1; } while(ch<='9'&&ch>='0') x=(x*10-48+ch),ch=getchar(); return fu?-x:x; } template inline void read(T& t,Args&... args) { read(t); read(args...); } char _n_u_m_[40]; template inline void write(T x ) { if(x==0){ putchar('0'); return; } T tmp = x > 0 ? x : -x ; if( x < 0 ) putchar('-') ; register int cnt = 0 ; while( tmp > 0 ) { _n_u_m_[ cnt ++ ] = tmp % 10 + '0' ; tmp /= 10 ; } while( cnt > 0 ) putchar(_n_u_m_[ -- cnt ]) ; } template inline void write(T x ,char ch) { write(x); putchar(ch); } } using namespace fastIO; int a,b,c; inline int fac(int x){ F(i,2,sqrt(x))if(x%i==0)return i;return x; } int main() { F(asdfa,1,read()){ read(a);read(b); if(a==1&&b==1){ puts("-1 -1"); }else{ c=max(a,b)-min(a,b); if(!c)write(2,' '),write(a,'\n'); else if(c==1)puts("-1 -1"); else{ write(fac(c),' ');write(c,'\n'); }} } return 0; }