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

void Delioci(int A, int B, int *x, int *y, int *j)
    {
        int k=0, l=0, i;
        *j=0;
        for (i=1; i<=A; i++)
            {
                if ((A%i)==0)
                    {
                        k=i;
                        l=A/k;
                        if ((k^l)==B) {*j+=1; break;}
                    }
            }
        *x=k;
        *y=l;
    }

int main(void)
    {
    	int mat[10000][4];
        int T, i;
        int A, B, X, Y, J;
        scanf("%d", &T);
        for (i=0; i<T; i++)
            {
                scanf("%d %d", &mat[i][0], &mat[i][1]);
                A=mat[i][0];
                B=mat[i][1];
                Delioci(A, B, &X, &Y, &J);
                if (J==0) mat[i][2]=-1;
                if (J) {
                            mat[i][2]=X;
                            mat[i][3]=Y;
                        }
            }
    	for (i=0; i<T; i++)
    		{
    		    printf("%d ", mat[i][2]);
    		    if (mat[i][2]!=-1) printf("%d \n", mat[i][3]); else printf("\n");
    		}
        getchar();
        return 0;
    }