// 一个n*n的01矩阵,要求每个m*m的矩阵都至少要有一个0,求最大的1的数量. 现在给定1的数量,构造出一组n,m满足要求
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll inf = 0x3f3f3f3f3f3f3f3f;
#define show(a) cout<<#a<<" = "<<a<<endl
#define show2(b,c) cout<<#b<<" = "<<b<<" "<<#c<<" = "<<c<<endl
#define show3(a,b,c) cout<<#a<<" = "<<a<<" "<<#b<<" = "<<b<<" "<<#c<<" = "<<c<<endl
#define show4(a,b,c,d) cout<<#a<<" = "<<a<<" "<<#b<<" = "<<b<<" "<<#c<<" = "<<c<<" "<<#d<<" = "<<d<<endl
const int maxn = 100005;
#define LOCAL
//
ll x, t, n, m;
int main() {
// n^2 - (n/m)^2 = x 平方差公式化简
// (n + (n/ m))(n - (n / m)) = x
// x在根号时间内分解成两个数相乘的形式 并由此解出n和n/m
cin >> t;
while( t-- ) {
bool fg = false;
cin >> x;
if( x == 0 ) cout << "1 1\n";
else if( x == 1 ) cout << "-1\n";
else {
for(ll i = 1; i * i <= x; i++) {
// if( x%i == 0) show4(i, (i&1), ((x/i)&1), (i + x / i) / 2); // **
if( (x%i==0) && ( (i&1) == ((x/i)&1) ) ) {
// (i&1) == ((x/i)&1) : 同是奇数或同是偶数
n = (i + x / i) / 2;
ll tmp = n - i;
if( tmp == 0) continue; // 分母不为零
m = n / tmp;
if( n >= m && tmp == (n/m) ) {
cout << n << ' ' << m << endl;
fg = 1;
break;
}
}
}
if( !fg ) cout << "-1\n";
}
}
}
//**平方差定理展开:没有奇数乘以偶数的情况