#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N = 1e5 + 5;
const ll m0[N] = {31,28,31,30,31,30,31,31,30,31,30,31};
const ll m1[N] = {31,29,31,30,31,30,31,31,30,31,30,31};
ll Q, r, jc, gs, dj, dg;
bool t[N];
ll sum[N];
struct node{
bool bc;
ll day;
};
struct date{
ll year, month, day;
};
ll lower_boundx(ll x){
ll l = 1, r = 400, mid;
while(l <= r){
mid = (l + r) / 2;
if(sum[mid] >= x) r = mid - 1;
else l = mid + 1;
}
return l;
}
date ru(ll r){
date ans;
ll day_left;
node time;
time.bc = 0;
time.day = 4713 * 365 + 1178 - r;
day_left = time.day % dj;
ans.year = time.day / dj * 4 + day_left / 365 + 1;
ll a = 0;
if(ans.year % 4 == 0){
for(ll i = 0; i < 12; i++){
a += m1[i];
if(a >= day_left){
ans.month = i+1;
ans.day = day_left - (a - m1[i]);
break;
}
}
}else{
for(ll i = 0; i < 12; i++){
a += m0[i];
if(a >= day_left){
ans.month = i+1;
ans.day = day_left - (a - m0[i]);
break;
}
}
}
return ans;
}
int main(){
for(ll i = 1; i <= 1582; i++){
jc += 365;
if(i % 4 == 0) jc++;
}
jc += 308;
gs = jc + 10;
dj = 4 * 365 + 1;
for(ll i = 1; i <= 400; i++){
t[i*400] = 1;
if((i*4%100) != 0) t[i*4] = 1;
}
for(ll i = 1; i <= 400; i++){
sum[i] = sum[i-1] + t[i] + 365;
}
dg = sum[400];
scanf("%lld", &Q);
while(Q--){
scanf("%lld", &r);
node time;
if(r <= 4713 * 365 + 1178){
date ans = ru(r);
printf("%lld %lld %lld BC\n", ans.day, ans.month, ans.year);
}else{
date ans;
ll day_left;
time.bc = 1;
time.day = r - 4713 * 365 - 1178;
if(time.day < jc){
ans = ru(r);
printf("%lld %lld %lld\n", ans.day, ans.month, ans.year);
}else{
r += 10;
day_left = time.day % dg;
ans.year = time.day / dg * 400;
ans.year += lower_boundx(day_left);
ll a = 0;
if(ans.year % 400 == 0 || (ans.year % 4 == 0 && ans.year % 100 != 0)){
for(ll i = 0; i < 12; i++){
a += m1[i];
if(a >= day_left){
ans.month = i+1;
ans.day = day_left - (a - m1[i]);
break;
}
}
}else{
for(ll i = 0; i < 12; i++){
a += m0[i];
if(a >= day_left){
ans.month = i+1;
ans.day = day_left - (a - m0[i]);
break;
}
}
}
printf("%lld %lld %lld\n", ans.day, ans.month, ans.year);
}
}
}
return 0;
}