#include #define debug(x) cerr<<#x<<" = "<=mod)?(x+y-mod):(x+y);} inline int mns(int x,int y){return (x-y<0)?(x-y+mod):(x-y);} inline int mul(LL x,LL y){return x*y%mod;} inline void upd(int &x,int y){x=(x+y>=mod)?(x+y-mod):(x+y);} inline void dec(int &x,int y){x=(x-y<0)?(x-y+mod):(x-y);} inline int qpow(int x,int sq){LL res=1;for(;sq;sq>>=1,x=mul(x,x))if(sq&1)res=mul(res,x);return res;} }using namespace CALC; #define M 100020 int pri[M],tot; bool isp[M]; inline void solve(){ LL a=read(),b=read(),num=abs(a-b),cur=-1; if(num==0){ if(a==1) puts("-1 -1"); else printf("2 %lld\n",a); return; } if(num==1){puts("-1 -1");return;} for(int i=1;i<=tot;i++){ if(num%pri[i]==0){cur=pri[i];break;} if(num/pri[i]=M) break; isp[i*pri[j]]=false; if(i%pri[j]==0) break; } } for(int Cas=read();Cas;--Cas) solve(); return 0; }