OI XXVII - nww

// 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;
}