#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
//闰年:%4...1
//1.预处理出月份表,减去时间
//2.预处理出公元1年1月1日时间,从这个地方开始算
using namespace std;
int month[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
long long n;
int T;
int main(){
cin>>T;
while(T--){
cin>>n;
bool flag=false;
if(n<=1721423){
n+=1;
for(int i=4713;i>=1;i--){
int year,mon,day;
if(i%4==1)year=366;
else year=365;
if(n>year)n-=year;
else if(n==year){
printf("31 12 %d BC\n",i);
flag=true;
}else{//n<year
if(i%4==1)month[2]=29;
else month[2]=28;
for(int j=1;j<=12;j++){
if(n>month[j])n-=month[j];
else if(n==month[j]){
printf("%d %d %d BC\n",month[j],j,i);
flag=true;
}else{
printf("%d %d %d BC\n",n,j,i);
flag=true;
}
if(flag)break;
}
}
if(flag)break;
}
}else if(n<2299161){
n-=1721423;
for(int i=1;i<=1582;i++){
int year,day,mon;
if(i%4==0)year=366;
else year=365;
if(n>year)n-=year;
else if(n==year){
printf("31 12 %d\n",i);
flag=true;
}else{
if(i%4==0)month[2]=29;
else month[2]=28;
for(int j=1;j<=12;j++){
if(n>month[j]){
n-=month[j];
}else if(n==month[j]){
printf("%d %d %d\n",month[j],j,i);
flag=true;
}else{
printf("%d %d %d\n",n,j,i);
flag=true;
}
if(flag)break;
}
}
if(flag)break;
}
}else if(n>=2299161&&n<=2299238){
//2299238是1582年12月31日
//2299161是1582年10月15日
//2299160是1582年10月4日
n-=2299161;
if(n<=16){
printf("%d 10 1582\n",n+15);
continue;
}else if(n>16&&n<=30+16){
printf("%d 11 1582\n",n-16);
continue;
}else if(n>46&&n<=46+31){
printf("%d 12 1582\n",n-46);
continue;
}
}else if(n<=40000300){
n-=2299238;
for(int i=1583;i<=104809;i++){
int year,day,mon;
if(i%400==0||(i%4==0&&i%100!=0))year=366;
else year=365;
if(n>year)n-=year;
else if(n==year){
printf("31 12 %d\n",i);
flag=true;
}else{
if(i%400==0||(i%4==0&&i%100!=0))month[2]=29;
else month[2]=28;
for(int j=1;j<=12;j++){
if(n>month[j]){
n-=month[j];
}else if(n==month[j]){
printf("%d %d %d\n",month[j],j,i);
flag=true;
}else{
printf("%d %d %d\n",n,j,i);
flag=true;
}
if(flag)break;
}
}
if(flag)break;
}
}else if(n<100000147){
n-=40000300;
for(int i=104805;i<=300000;i++){
int year,day,mon;
if(i%400==0||(i%4==0&&i%100!=0))year=366;
else year=365;
if(n>year)n-=year;
else if(n==year){
printf("31 12 %d\n",i);
flag=true;
}else{
if(i%400==0||(i%4==0&&i%100!=0))month[2]=29;
else month[2]=28;
for(int j=1;j<=12;j++){
if(n>month[j]){
n-=month[j];
}else if(n==month[j]){
printf("%d %d %d\n",month[j],j,i);
flag=true;
}else{
printf("%d %d %d\n",n,j,i);
flag=true;
}
if(flag)break;
}
}
if(flag)break;
}
}else if(n<=599999962){
n-=100000147;
n++;
for(int i=269079;i<=1638032;i++){
int year,day,mon;
if(i%400==0||(i%4==0&&i%100!=0))year=366;
else year=365;
if(n>year)n-=year;
else if(n==year){
printf("31 12 %d\n",i);
flag=true;
}else{
if(i%400==0||(i%4==0&&i%100!=0))month[2]=29;
else month[2]=28;
for(int j=1;j<=12;j++){
if(n>month[j]){
n-=month[j];
}else if(n==month[j]){
printf("%d %d %d\n",month[j],j,i);
flag=true;
}else{
printf("%d %d %d\n",n,j,i);
flag=true;
}
if(flag)break;
}
}
if(flag)break;
}
}else{
n-=599999963;
n++;
for(int i=1638032;i<=2739720;i++){
int year,day,mon;
if(i%400==0||(i%4==0&&i%100!=0))year=366;
else year=365;
if(n>year)n-=year;
else if(n==year){
printf("31 12 %d\n",i);
flag=true;
}else{
if(i%400==0||(i%4==0&&i%100!=0))month[2]=29;
else month[2]=28;
for(int j=1;j<=12;j++){
if(n>month[j]){
n-=month[j];
}else if(n==month[j]){
printf("%d %d %d\n",month[j],j,i);
flag=true;
}else{
printf("%d %d %d\n",n,j,i);
flag=true;
}
if(flag)break;
}
}
if(flag)break;
}
}
}
return 0;
}