#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<iostream>using namespace std;#define mp(x,y) make_pair(x,y)typedef pair<int,int> per;typedef long long ll;ll a[5];per get(int x){if(x==1)return mp(0,0);ll i;for(i=1;(2*i-1)*(2*i-1)<x;i++);if(i>1)x-=(2*i-3)*(2*i-3);x--;int d=((2*i-1)*(2*i-1)-(2*i-3)*(2*i-3))/4,p1=x/d,p2=x%d;int r1,r2;if(!p1){r1=i-1;r2=-(i-1)+1+p2;}else if(p1==1){r2=i-1;r1=i-1-1-p2;}else if(p1==2){r1=-(i-1);r2=i-1-1-p2;}else{r2=-(i-1);r1=-(i-1)+1+p2;}return mp(r1,r2);}int abs(int x){return x>0?x:-x;}ll work(int x,int y){ll r=0;ll d=abs(x)>abs(y)?abs(x):abs(y);ll s=(2*d-1)*(2*d-1),dd=((2*d+1)*(2*d+1)-s)/4;if(x==d){if(y==-d)return (d+d+1)*(d+d+1);r=y+d;}else if(y==d){r=dd+d-x;}else if(x==-d){r=dd+dd+(d-y);}else{r=dd+dd+dd+x+d;}return r+s;}int main(){int T,n,i;scanf("%d",&T);while(T--){scanf("%d",&n);per zb=get(n);a[0]=work(zb.first-1,zb.second);a[1]=work(zb.first+1,zb.second);a[2]=work(zb.first,zb.second+1);a[3]=work(zb.first,zb.second-1);sort(a,a+4);for(i=0;i<3;i++)printf("%lld ",a[i]);printf("%lldn",a[i]);}return 0;}


