#include using namespace std; #define ll long long #define mem(x) memset(x,0,sizeof(x)) #define printYes puts("Yes") #define printYES puts("YES") #define printNo puts("No") #define printNO puts("NO") const ll inf=1000000000000000000; const ll mod=998244353; int n,m,T; inline int read() { int F=1,ANS=0; char C=getchar(); while (C<'0'||C>'9') { if (C=='-') F=-1; C=getchar(); } while (C>='0'&&C<='9') { ANS=ANS*10+C-'0'; C=getchar(); } return F*ANS; } inline char readchar() { char C=getchar(); while (C<33||C>126) C=getchar(); return C; } inline int raed(){return read();} void work() { ll x,y,ansx,ansy; cin >> x >> y; ansy=abs(x-y); if (ansy==0) { if (x==1) printf("-1 -1\n"); else printf("2 %lld\n",x); return; } if (ansy==1) printf("-1 -1\n"); else { ansx=ansy; for (ll i=2;i<=sqrt(ansy);i++) { if (ansy%i==0) { ansx=i; break; } } printf("%lld %lld\n",ansx,ansy); } return; } int main() { int tp=0; //0 : many test cases //1 : one test case if (tp==0) T=read(); else T=1; while (T--) { work(); } return 0; }