#include #include #include #include #include using namespace std; #define ll long long #define in(a) a=read() #define out(a) printf("%d\n",a) #define FOR(i,a,b) for(int i=a;i<=b;i++) #define FORD(i,a,b) for(int i=a;i>=b;i--) #define FORL(i,x) for(int i=head[x];i;i=nxt[i]) #define clr(a,x) memset(a,x,sizeof(a)) inline ll read(){ char c=getchar();ll f=1,x=0; while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9')x=x*10+(c-'0'),c=getchar(); return x*f; } #define mod 1000000007 void MOD(int &x){x-=x>=mod?mod:0;} #define maxn 500010 #define inf (1<<30) int main(){ #ifndef ONLINE_JUDGE freopen("1.in","r",stdin); #endif int t; in(t); while(t--){ int a,b; in(a);in(b); if(a1){ printf("%d %d\n",2,a); continue; } int pos=x; for(int i=2;i*i<=x;i++) if(x%i==0){ pos=i; break; } if(pos>1)printf("%d %d\n",pos,x); else printf("%d %d\n",-1,-1); } }