// https://szkopul.edu.pl/problemset/problem/nYCgpBEkq_hw9S-QaoEOOKCI/site/?key=statement
// Najmniejsza wspólna wielokrotność
#include <ext/pb_ds/assoc_container.hpp>
#include <iostream>
#include <map>
#include <math.h>
#include <unordered_map>
std::unordered_map<long long, std::pair<int, int>> m;
// __gnu_pbds::gp_hash_table<long long, std::pair<int, int>> m;
constexpr long long bound = 1000ll * 1000 * 1000 * 1000ll * 1000 * 1000;
long long gcd(long long a, long long b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
long long lcm(long long a, long long b) {
return (a / gcd(a, b)) * b;
}
void generate() {
for (int j = 1; j < 1500000; j++) {
long long prev = (long long)j * (j + 1);
for (int i = j + 2; lcm(prev, i) <= bound; i++) {
long long n = lcm(prev, i);
prev = n;
if (m[n].first == 0) {
m[n].first = j;
m[n].second = i;
}
}
}
}
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
generate();
int t;
std::cin >> t;
for (; t > 0; t--) {
long long n;
std::cin >> n;
if (m[n].first != 0) {
std::cout << m[n].first << " " << m[n].second << '\n';
} else {
long double temp = (long double)n + 0.25L;
auto res = sqrtl(temp);
res = floorl(res);
if (res * (res + 1) == n) {
long long x1 = floorl(res);
std::cout << x1 << " " << x1 + 1 << '\n';
} else {
std::cout << "NIE\n";
}
}
}
return 0;
}