#include<iostream>
#include<cmath>
using namespace std;
int xoro(long x,long y)
{
    return (x|y)&(~x | ~y);
}
int f(long x,long y)
{
    for(int i=1;i<=x;i++)
    {
        if(x%i==0&&xoro(i,x/i)==y)
            return i;
    }
    return -1;
}
int f1(long x, long  y)
{
    for(int i=1;i<=x;i++)
    {
        if(x%i==0&&xoro(i,x/i)==y)
            return x/i;
    }
    return -1;
}
int main()
{
    long long t,a[10000],b[10000];
    cin>>t;
    for(int i=1;i<=t;i++) cin>>a[i]>>b[i];
    for(int i=1;i<=t;i++)
    {
        if(f(a[i],b[i])==-1) cout<<-1<<endl;
        else cout<<f(a[i],b[i])<<" "<<f1(a[i],b[i])<<endl;
    }
    return 0;
}