#include <iostream>
#include <string.h>
using namespace std;
int q,ri;
string ans[10005];
int month[13]{0,1,0,1,0,1,0,1,1,0,1,0,1};
bool judge_rui(int year){
if(year < 1582){
if(year < 0){
if((year*(-1) - 1) % 4 == 0){
return true;
}
else return false;
}
else{
if(year % 4 == 0){
return true;
}
else return false;
}
}
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return true;
else return false;
}
string _exchange(int r){
int y = -4713,m = 1,d = 1;
while(true){
if(y == 1582 && r < 355) break;
if(judge_rui(y) && r < 366){
break;
}
else{
if(r < 365) break;
}
if(y == 1582){
r -= 355;
y++;
}
else{
if(judge_rui(y)){
r -= 366;
y++;
}
else{
r -= 365;
y++;
}
}
if(y == 0) y++;
}
if(y == 0) y++;
while(true){
if(judge_rui(y) && m == 2 && r < 29){
break;
}
if(y == 1582){
if(m == 10 && r < 21) break;
}
else{
if(month[m] == 1 && r < 31) break;
if(month[m] == 0 && r < 30) break;
}
if(m == 2){
if(judge_rui(y)){
r-=29;
m++;
}
else{
r-=28;
m++;
}
}
else{
if(m == 10){
if(y == 1582){
r -= 21;
m++;
}
else{
r-=31;
m++;
}
}
else{
if(month[m] == 1){
r-=31;
m++;
}
else{
r-=30;
m++;
}
}
}
if(m > 12){
m = 1;
y++;
if(y == 0) y++;
}
}
while(r > 0){
d+=r;
r=0;
if(m == 10 && y == 1582){
if(d <= 21) break;
else{
d -= 21;
if(d == 0) d = 1;
m++;
}
}
else{
if(month[m] == 1){
if(d <= 31) break;
else{
d -= 31;
if(d == 0) d = 1;
m++;
}
}
else{
if(d <= 30) break;
else{
d -= 30;
if(d == 0) d = 1;
m++;
}
}
}
if(m > 12){
y++;
m = 1;
}
}
string ans;
if(y < 0){
y *= -1;
ans = to_string(d)+" "+to_string(m)+" "+to_string(y)+" BC";
}
else{
ans = to_string(d)+" "+to_string(m)+" "+to_string(y);
}
return ans;
}
int main(){
cin>>q;
for(int i = 1;i <= q;i++){
cin>>ri;
ans[i] = _exchange(ri);
}
for(int i = 1;i <= q;i++){
cout<<ans[i];
if(i < q) cout<<endl;
}
return 0;
}