using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Luxor
{
    class Program
    {
        static ulong[] Komponente(ulong brojA, ulong brojB)
        {
            ulong[] povratak = { 0, 0};
            double koren = Math.Pow(brojA, 0.5);
            ulong Koren = (ulong)koren + 2;
            ulong kolicnik;
            for (ulong i = 2; i < Koren; i++)
            {
                kolicnik = brojA / i;
                if ((kolicnik*i == brojA) && ((kolicnik ^ i) == brojB))
                {
                    povratak[0] = i;
                    povratak[1] = kolicnik;
                    break;
                }
            }
            return povratak;
        }
        
        
        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());
            for (int i = 0; i < N; i++)
            {
                ulong A = ulong.Parse(Console.ReadLine());
                ulong B = ulong.Parse(Console.ReadLine());
                ulong X, Y;
                if (A % 2 == 0)
                {
                    Console.WriteLine(-1);
                }
                else
                {
                    ulong[] niz = Komponente(A, B);
                    if (niz[0]==0)
                    {
                        Console.WriteLine(-1);
                    }
                    else
                    {
                        Console.WriteLine("{0} {1}",niz[0],niz[1]);
                    }
                }
                
            }
            Console.ReadLine();
        }
    }
}