#include <bits/stdc++.h>

using namespace std;

bool P[1001];

void eratosten(int n)
{
    for(int i=2; i < sqrt(n); i++)
    {
        if(P[i])
        {
            for(int j=i; j < n/i; j++)
            {
                P[i*j]=false;
            }
        }
    }
}


int main()
{
    unsigned long long t, a, b, k;

    cin >> t;

    for(int i=0; i < t; i++)
    {
        vector<int> cinioci_a;
        bool nasao=false;
        int brojac_elemenata = 0;

        cin >> a >> b;

        k = a;

        for(int i = 1; i < a;i++)
        {
            P[i]=true;
        }

        eratosten(a);

        for(int i = 3; i <= a; i++)
        {
            if(P[i])
            {
                while(k % i == 0)
                {
                    k = k/i;
                    cinioci_a.push_back(i);
                    cout <<" ->" << i << endl;
                    brojac_elemenata++;
                }
            }

        }


        for (int m = 0; m < (1<<brojac_elemenata); m++)
        {
            unsigned long long x=1;
            unsigned long long y=1;

            for (int i = 0; i < brojac_elemenata; i++)
            {
                if (m & (1<<i))
                {
                    x = x * cinioci_a[i];
                }
                else
                {
                    y = y * cinioci_a[i];
                }
            }

            if((x ^ y) == b)
            {
                cout << x << " " << y << endl;
                nasao = true;
                break;
            }
        }

        if(!nasao)
        {
            cout << -1 << endl;
        }
    }
    return 0;
}