#include<iostream>
using namespace std;
const int N=1e5+8;
#define int long long
//4713 1 1 BC
//[4713 1 1 BC,1582 10 4] ,29闰年(n%4==0)即可
//无公元0年,1,5,9BC为闰年
//[1582 10 5,1582 10 14] 10天删除,即[1582 10 4]->[1582 10 15]
//[1582 10 15] 平年,29闰年(n%4==0&&n%100!=0)||(n%400==0)
int n;
int sum[N];
int bai[N];
int _1582;
long long res;
bool check(int mid){
int ans=0;
if(mid==0){
ans=sum[1];
}
if(mid<0){
ans+=sum[-mid];
}
else{
if(mid<1582){
ans=sum[1];
int mo=mid%4;
int s=mid/4;
int zuhe=365*3+366;
ans+=zuhe*s+mo*365;
}
else{
ans=_1582-10;
int day=mid-1582+2;
int mo=day%4;
int s=day/4;
int zuhe=365*3+366;
ans+=zuhe*s+mo*365;
int _100=day/100;
int _400=day/400;
ans=ans-_100+_400;
}
}
if(ans<=res){
return 1;
}
else{
return 0;
}
}
int monp[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int monr[]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int mp,mr;
signed main(){
for(int i=1;i<=12;i++){
mp+=monp[i];
mr+=monr[i];
}
for(int i=4713;i>0;i--){
if((i-1)%4==0){
sum[i]=sum[i+1]+mr;
}
else{
sum[i]=sum[i+1]+mp;
}
}
int mo=1582%4;
int s=1582/4;
int zuhe=365*3+366;
_1582=sum[1]+zuhe*s+mo*365;
cin>>n;
while(n--){
cin>>res;
int l=-4714,r=1e9;
int ans=0;
while(l<=r){
int mid=(l+r)>>1;
// cout<<l<<" "<<r<<" "<<mid<<" "<<endl;
if(check(mid)) ans=mid,l=mid+1;
else r=mid-1;
}
int totday=0;
if(ans>0){
if(ans<1582){
totday=sum[1];
int mo=ans%4;
int s=ans/4;
int zuhe=365*3+366;
totday+=zuhe*s+mo*365;
}
else if(ans>=1582){
totday=_1582-10;
int day=ans-1582+2;
int mo=day%4;
int s=day/4;
int zuhe=365*3+366;
totday+=zuhe*s+mo*365;
int _100=day/100;
int _400=day/400;
int num=-_100+_400;
totday+=num;
}
++ans;
int y=ans,m=0,d=0;
int residue=res-totday;
int prefix=0;
cout<<residue<<" ";
if(y==1582){
bool flag=1;
for(int i=1;i<=9;i++){
prefix+=monp[i];
if(prefix>=residue){
m=i;
d=(residue-prefix+monp[i]);
flag=0;
break;
}
}
if(flag){
prefix+=monp[10]-10;
if(prefix>=residue){
m=10;
d=(residue-prefix+monp[10]-10);
if(d>=5) d+=10;
flag=0;
break;
}
for(int i=11;i<=12;i++){
prefix+=monp[i];
if(prefix>=residue){
m=i;
d=(residue-prefix+monp[i]);
flag=0;
break;
}
}
}
}
else{
if(ans>1582){
for(int i=1;i<=12;i++){
if((ans%4==0&&ans%100!=0)||(ans%400==0)) prefix+=monr[i];
else prefix+=monp[i];
if((prefix>=residue)&&((ans%4==0&&ans%100!=0)||(ans%400==0))){
m=i;
d=(residue-prefix+monr[i]);
break;
}
if(prefix>=residue){
m=i;
d=(residue-prefix+monp[i]);
break;
}
}
}
else{
for(int i=1;i<=12;i++){
if(ans%4==0) prefix+=monr[i];
else prefix+=monp[i];
if((prefix>=residue)&&(ans%4==0)){
m=i;
d=(residue-prefix+monr[i]);
break;
}
if(prefix>=residue){
m=i;
d=(residue-prefix+monp[i]);
break;
}
}
}
}
cout<<d<<" "<<m<<" "<<y<<endl;
}
}
return 0;
}