#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int convertBinaryToDecimal(long long n);

int main(){

    long long number;

    int i,j,k;
    int t;

    scanf("%d",&t);
    int n1[t],n2[t];

    for(int j=0; j<t; j++)
    {
        scanf("%d %d", &n1[j], &n2[j]);
    }
    int n;
    int bin[t][100];
    int x[t][100];
    int y[t][100];
    int q[t],r[t];
    int l[t];
    for(int j=0; j<t; j++)
    {
        n = n2[j];
        for(i=0;n>0;i++)
        {
            bin[j][i]=n%2;
            n=n/2;
        }
        l[j] = i;


    }
    printf("\n");

    for(int j=0; j<t; j++)
    {
        r[j] = 1; q[j]= 0;
        for(int i=0; i<l[j]; i++)
        {
            if(bin[j][i] == 1)
            {
                x[j][i] = 1;
                r[j] += pow(10,i);
                y[j][i] = 0;
                //q[j] += 0 * pow(10,i);
            }
            else
            {
                x[j][i] = 1;
                r[j] += pow(10,i);
                y[j][i] = 1;
                q[j] += 1 * pow(10,i);
            }
        }

    }
    for(int j=0; j<t; j++)
    {
        if(n2[j] == 0)
        {
            printf("\n3 3");
        }
        else if(convertBinaryToDecimal(r[j]) * convertBinaryToDecimal(q[j]) != n1[j])
        {
            printf("\n-1");
        }
        else
        {
            printf("\n%d %d",convertBinaryToDecimal(r[j]),convertBinaryToDecimal(q[j]));
        }

    }






return 0;
}
int convertBinaryToDecimal(long long n)
{
    int decimalNumber = 0, i = 0, remainder;
    while (n!=0)
    {
        remainder = n%10;
        n /= 10;
        decimalNumber += remainder*pow(2,i);
        ++i;
    }
    return decimalNumber;
}