#include<bits/stdc++.h>
using namespace std;
struct julian{
long long day,month,year,r,qh;
};
julian b[1000001];
int n;
long long a[1000001];
int hua1(int,int);//算有多少年
int hua2(int,int);//具体每月剩多少天
int pd1(int);//公元前还是公元后
int pd2(int);//判断闰年
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
{
b[i].day=hua1(a[i],i);
b[i].qh=pd1(b[i].year);
b[i].r=pd2(b[i].year);
b[i].day=hua2(b[i].day,i);
}
for(int i=1;i<=n;i++)
{
if(b[i].qh==1) printf("%d %d %d\n",b[i].day,b[i].month,b[i].year-4712);
else printf("%d %d %d BC\n",b[i].day,b[i].month,4713-b[i].year);
}
return 0;
}
int hua1(int x,int y)
{
while(x>=365)
{
b[y].year++;
if(pd2(b[y].year)==1) x-=366;
else x-=365;
if(b[y].year==6294&&x>308)
{
x+=10;
}
}
return x;
}
int pd1(int f)
{
if(f>=4713) return 1;
else return 0;
}
int pd2(int g)
{
if(g>=6294)
{
if(g%400==0&&g!=0) return 1;
else
{
if(g%4==0&&g%100!=0&&g!=0) return 1;
else return 0;
}
}
else
{
if(g>=4713)
{
int m=g-4712;
if(m%4==0&&g!=0) return 1;
else return 0;
}
else
{
if(g%4==0&&g!=0) return 1;
else return 0;
}
}
}
int hua2(int p,int q)
{
b[q].month++;
if(p>=31)
{
b[q].month++;
p-=31;
if(b[q].r==1)
{
if(p>=28)
{
b[q].month++; p-=28;
if(p>=31)
{
b[q].month++; p-=31;
if(p>=30)
{
b[q].month++; p-=30;
if(p>=31)
{
b[q].month++; p-=31;
if(p>=30)
{
b[q].month++; p-=30;
if(p>=31)
{
b[q].month++; p-=31;
if(p>=31)
{
b[q].month++; p-=31;
if(p>=30)
{
b[q].month++; p-=30;
if(p>=31)
{
b[q].month++; p-=31;
if(p>=30)
{
b[q].month++; p-=30;
if(p>=31) b[q].month++; p-=31;
cout<<q<<" "<<p<<endl;
}
}
}
}
}
}
}
}
}
}
}
else
{
if(p>=29)
{
b[q].month++; p-=29;
if(p>=31)
{
b[q].month++; p-=31;
if(p>=30)
{
b[q].month++; p-=30;
if(p>=31)
{
b[q].month++; p-=31;
if(p>=30)
{
b[q].month++; p-=30;
if(p>=31)
{
b[q].month++; p-=31;
if(p>=31)
{
b[q].month++; p-=31;
if(p>=30)
{
b[q].month++; p-=30;
if(p>=31)
{
b[q].month++; p-=31;
if(p>=30)
{
b[q].month++; p-=30;
}
}
}
}
}
}
}
}
}
}
}
}
return p+1;
}