#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
 
long long p, maxn, maxid, res = 1;
vector<int>vec;
int primes[16] = { 1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47 };. 
void dfs(long long q, long long r) {
	long long sum = q;
	for (int i = 1; i <= 1000; i++) {
		if (sum > p) { break; }
		if (i >= 2) {
			vec.push_back(i); res *= i;
			if (res > maxn) { maxn = res; maxid = sum; }
			else if (res == maxn && maxid > sum) { maxid = sum; }
			dfs(sum, i);
		}
		sum *= primes[vec.size()];
	}
	res /= vec[vec.size() - 1];
	vec.pop_back();
	return;
}
 
int Q;
 
int main() {
	cin >> Q;
	for (int i = 0; i < Q; i++) {
		vec.clear(); maxn = 1; res = 1; maxid = 1;
		vec.push_back(1);
		cin >> p;
		dfs(1, 20);
		cout << maxn << ' ' << maxid << endl;
	}
	return 0;
}