#include<bits/stdc++.h>
#define rep(i,j,k) for(register int i(j);i<=k;++i)
using namespace std;
inline char gt()
{
static char buf[1<<21],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2) ? EOF:*p1++;
}
template <typename T>
inline void read(T &x)
{
x=0;
register char ch=gt();
int w(0);
while(!(ch>='0'&&ch<='9')) w|=ch=='-',ch=gt();
while(ch>='0'&&ch<='9') x=x*10+(ch&15),ch=gt();
w?x=~(x-1):x;
}
int T;
int yea,da,mon;
bool flag;
short int m[20]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
short int r[20]= {0,31,29,31,30,31,30,31,31,30,31,30,31};
inline void calcfuck(int x)//¼ÆËãɾ³ýÊ®ÌìºóµÄÈÕÆÚ
{
while(1)//Ò»ÄêÀïÃæµÄ¼ÆËã; 1~1582 10֮ǰ
{
if( (yea%400==0) || ( (yea%4==0)&&(yea%100!=0) ) ) //²»ÊÇÈòÄê
{
if(x+da>r[mon])
{
while(x+da>r[mon])
{
x-=r[mon];
mon++;
if(mon==12)
{
if(x+da>31)
{
yea++;
mon=1;
x-=31;
break;
}
else
{
da+=x;
return ;
}
}
}
}
else
{
da+=x;
return ;
}
}
else //ÈòÄê
{
if(x+da>r[mon])
{
while(x+da>m[mon])
{
x-=m[mon];
mon++;
if(mon==12)
{
if(x+da>31)
{
yea++;
mon=1;
x-=31;
break;
}
else
{
da+=x;
return ;
}
}
}
}
else
{
da+=x;
return ;
}
}
}
}
inline void calc(int x)
{
while(flag)
{
while(x>=365)
{
if(yea%4==1) x-=366;
else x-=365;
yea--;
if(yea==0)
{
yea=1;
flag=0;
break;
}
}
if(flag==0) break;
if(yea%4!=1) //²»ÊÇÈòÄê
{
if(x+da>m[mon])
{
while(x+da>m[mon])
{
x-=m[mon];
mon++;
if(mon==12)
{
if(x+da>31)
{
yea--;
if(yea==0)
{
yea=1;
flag=0;
}
mon=1;
x-=31;
break;
}
else
{
da+=x;
return ;
}
}
}
}
else
{
da+=x;
return ;
}
}
else if(yea%4==1)//ÈòÄê
{
if(x+da>r[mon])
{
while(x+da>r[mon])
{
x-=r[mon];
mon++;
if(mon==12)
{
if(x+da>31)
{
yea--;
if(yea==0)
{
yea=1;
flag=0;
}
mon=1;
x-=31;
break;
}
else
{
da+=x;
return ;
}
}
}
}
else
{
da+=x;
return ;
}
}
}
if(flag) return ;
while(1)//Ò»ÄêÀïÃæµÄ¼ÆËã; 1~1582 10֮ǰ
{
while(yea!=1582&&x>=365)
{
if((yea%4)) x-=365;
else x-=366;
yea++;
}
if(yea==1582)//ÈòÄê
{
if(x+da>r[mon])
{
for(; mon<10;)
{
if(x+da>r[mon]) x-=r[mon],mon++;
else
{
da=+x;
return;
}
}
if(x+da<=4)
{
da+=x;
return;
}
else
{
mon=10;
yea=1582;
x-=(4-da);
da=15;
if(x==0)
{
return ;
}
calcfuck(x);
return;
}
}
}
if((yea%4)) //²»ÊÇÈòÄê
{
if(x+da>m[mon])
{
while(x+da>m[mon])
{
x-=m[mon];
mon++;
if(mon==12)
{
if(x+da>31)
{
yea++;
mon=1;
x-=31;
break;
}
else
{
da+=x;
return ;
}
}
}
}
else
{
da+=x;
return ;
}
}
else //ÈòÄê
{
if(x+da>r[mon])
{
while(x+da>r[mon])
{
x-=r[mon];
mon++;
if(mon==12)
{
if(x+da>31)
{
yea++;
mon=1;
x-=31;
break;
}
else
{
da+=x;
return ;
}
}
}
}
else
{
da+=x;
return ;
}
}
}
}
int main()
{
freopen("1.in","r",stdin);
freopen("2.out","w",stdout);
int dated;
read(T);
while(T--)
{
read(dated);
flag=1;
yea=4713;
da=1;
mon=1;
calc(dated);
if(!flag) printf("%d %d %d\n",da,mon,yea);
else printf("%d %d %d BC\n",da,mon,yea);
}
return 0;
}