#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
const ll INF=0x7f7f7f7f7f,inf=0x3f3f3f3f3f;
namespace Yorihime_Nao{
template<class T> T MAX(T x,T y){
return x>y?x:y;
}
template<class T> T MIN(T x,T y){
return x<y?x:y;
}
template<class T,class ... Arg> T MAX(T x,T y,Arg ... arg){
return MAX(x>y?x:y,arg...);
}
template<class T,class ... Arg> T MIN(T x,T y,Arg ... arg){
return MIN(x<y?x:y,arg...);
}
template<class T> T lowbit(T x){
return x&-x;
}
template<class T> void SWAP(T &x,T &y){
T qwq=x;
x=y;
y=qwq;
return;
}
}
using namespace Yorihime_Nao;
ll T,n;
ll d,m,y;
ll month[20]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
cin>>T;
while(T--){
cin>>n;
if(n<=1721058){
y=4713-n/(3*365+366)*4;
n%=(3*365+366);
// cout<<y<<" <<"<<endl;
m=1;
if(n>=366){
n-=366,y--;
y-=n/365,n=n%365;
}
// cout<<y<<" <<"<<endl;
while(1){
ll reg=month[m];
if(m==2&&(y-1)%4==0)reg++;
if(reg>n)break;
n-=reg;
m++;
}
d=1+n;
cout<<d<<" "<<m<<" "<<y<<" BC"<<endl;
}
else{
n-=1721058;
if(n<=577825){
y=n/(3*365+366)*4;
n%=(3*365+366);
if(n>=365*3)y+=3,n-=(3*365);
else y+=n/365+1,n%=365;
// cout<<"year: "<<y<<endl;
m=1;
while(1){
ll reg=month[m];
if(m==2&&y%4==0)reg++;
if(reg>n)break;
n-=reg;
m++;
}
d=n;
cout<<d<<" "<<m<<" "<<y<<endl;
}
else{
n-=577825;
y=1582;
if(n<=31+28+31+30+31+30+31+31+30+4){
m=1;
while(1){
ll reg=month[m];
if(reg>n)break;
n-=reg;
m++;
}
d=n;
cout<<d<<" "<<m<<" "<<y<<endl;
}
else{
n+=10;
y+=n/(365*400+97)*400;
n%=365*400+97;
y+=n/(365*100+24)*100;
n%=365*100+24;
y+=n/(365*4+1)*4;
n%=365*4+1;
if(n>=365*3)y+=3,n-=(3*365);
else y+=n/365+1,n%=365;
m=1;
while(1){
ll reg=month[m];
if(m==2&&y%4==0)reg++;
if(reg>n)break;
n-=reg;
m++;
}
d=n;
cout<<d<<" "<<m<<" "<<y<<endl;
}
}
}
}
return 0;
}