#include<bits/stdc++.h>
#define N 12
#define int1 int
using namespace std;
int1 q,t,day,month,year,i,LeaF;
int1 pn[N + 5] = {0,31,28,31,30,31,30,31,31,30,31,30,31},p = 365,rn[N + 5] = {0,31,29,31,30,31,30,31,31,30,31,30,31},r = 366,sumg = 97 * 366 + 303 * 365,sumr = 100 * 366 + 300 * 365;
int1 read(){
int1 x = 0,f = 1;
char ch = getchar();
while(!isdigit(ch)){
if(ch == '-'){
f = -1;
}
ch = getchar();
}
while(isdigit(ch)){
x = (x << 3) + (x << 1) + (ch ^ 48);
ch = getchar();
}
return x * f;
}
void print(int1 x){
if(x < 0){
putchar('-');
print(-x);
return ;
}
if(x >= 10){
print(x / 10);
}
putchar(x % 10 ^ 48);
return ;
}
void ps(int1 x){
print(x),putchar(' ');
return ;
}
void pe(int1 x){
print(x),putchar('\n');
return ;
}
void solve(){
t = read();
if(t > LeaF){
t -= LeaF;
day = 15,month = 10,year = 1582;
year += t / sumg * 400;
t %= sumg;
while(1){
if((!((year + 1) & 3) && (year + 1) % 100) || !((year + 1) % 400)){
if(t < r){
break;
}
t -= r,year++;
}else{
if(t < p){
break;
}
t -= p,year++;
}
}
while(t--){
day++;
if((!(year & 3) && year % 100) || !(year % 400)){
if(day > rn[month]){
month++,day = 1;
if(month > 12){
year++,month = 1;
}
}
}else{
if(day > pn[month]){
month++,day = 1;
if(month > 12){
year++,month = 1;
}
}
}
}
}else if(t == LeaF){
printf("4 10 1582\n");
return ;
}else{
day = 1,month = 1,year = -4713;
for(i = 1; i <= 11; i++){
if(t > sumr){
t -= sumr;
year += 400;
}else{
break;
}
}
int1 sum = 79 * 366 + 234 * 365;
if(t > sum && year == -313){
t -= sum;
year = 1;
while(1){
if(!(year & 3)){
if(t < r){
break;
}
t -= r,year++;
}else{
if(t > p){
break;
}
t -= p,year++;
}
}
while(t--){
day++;
if(!(year & 3)){
if(day > rn[month]){
month++,day = 1;
if(month > 12){
year++,month = 1;
}
}
}else{
if(day > pn[month]){
month++,day = 1;
if(month > 12){
year++,month = 1;
}
}
}
}
}else{
while(t--){
day++;
if(!((year + 10001) & 3)){
if(day > rn[month]){
month++,day = 1;
if(month > 12){
year++,month = 1;
}
}
}else{
if(day > pn[month]){
month++,day = 1;
if(month > 12){
year++,month = 1;
}
}
}
}
}
}
if(year < 0){
ps(day),ps(month),ps(-year);
printf("BC\n");
}else{
ps(day),ps(month),pe(year);
}
return ;
}
int main(){
day = 1,month = 1,year = -4713;
for(LeaF = 1; !(year == 1582 && month == 10 && day == 4); LeaF++){
day++;
if(year < 0){
if(!((year + 10001) & 3)){
if(day > rn[month]){
month++,day = 1;
if(month > 12){
year++,month = 1;
}
}
}else{
if(day > pn[month]){
month++,day = 1;
if(month > 12){
year++,month = 1;
}
}
}
}else if(year > 0){
if(!(year & 3)){
if(day > rn[month]){
month++,day = 1;
if(month > 12){
year++,month = 1;
}
}
}else{
if(day > pn[month]){
month++,day = 1;
if(month > 12){
year++,month = 1;
}
}
}
}
if(!year){
year++,month = 1,day = 1;
}
}
q = read();
while(q--){
solve();
}
return 0;
}