/*
2024.9.25
2024ICPC网络赛L
by Trspnt
*/
#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> PII;
typedef tuple<int,int,int> tp;
const int N = 110,INF = 0x3f3f3f3f3f3f3f3f,mod = 998244353;
/*
假定一个阈值c,如果没有超出阈值就一直刷新,直到刷新不如不刷,过程如果刷到小于c就直接到结束,刷到1-t的概率为c/t,那么有E=Σ(i*P[i]+1/c*(c*c-1)/2)=Σ(i*P[i])+(c-1)/2
根据E(x+y)=E(x)+E(y)可知,Σ(i*P[i])=Σ(1-p[i])=lim(n->无限)(1-(c/t)^n)/(1-(1-c/t))=1/(c/t)=t/c
所以有E=(c-1)/2+t/c=c/2+t/c+1/2,根据对勾函数性质,最小值在c1=ceil(sqrt(2*t)) and c2=floor(sqrt(2*t))时取到,然后比较二者哪个小即为答案
*/
void solve()
{
int n;
cin>>n;
int l=ceil(sqrt(2*n)),r=floor(sqrt(2*n));
int up1=l*l-l+2*n,down1=2*l;
int g1=__gcd(up1,down1);
up1/=g1,down1/=g1;
int up2=r*r-r+2*n,down2=2*r;
int g2=__gcd(up2,down2);
up2/=g2,down2/=g2;
if(1.0*up1/down1>1.0*up2/down2)cout<<up2<<" "<<down2<<"\n";
else cout<<up1<<" "<<down1<<"\n";
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T=1;
cin>>T;
//init();
while(T--)solve();
return 0;
}