只AC#3和#10
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll q,r,month[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int main(){
cin>>q;
while(q--){
cin>>r,++r;
if(r<2299161){
ll a=r/1461,b=r%1461,y=a*4-4713,run=1;
if(b>366)b-=366,++y,run=0;
if(y>=0)++y;
y+=b/365,b%=365;
ll m=1;
for(;b>month[run][m];++m)b-=month[run][m];
cout<<b<<' '<<m<<' '<<abs(y)<<(y>0?"\n":" BC\n");
}else{
r-=2299161;
if(r>78){
r-=78;
if(r>6209){
r-=6209;
ll a=r/146097,b=r%146097,ru=0;
while(b>(ru%4==0&&ru%100!=0||ru%400==0?366:365))b-=(ru%4==0&&ru%100!=0||ru%400==0?366:365),++ru;
ll run=bool(ru%4==0&&ru%100!=0||ru%400==0),m=1;
for(;b>month[run][m];++m)b-=month[run][m];
cout<<b<<' '<<m<<' '<<ru+1600+a*400<<'\n';
}else{
ll ru=0;
while(r>(ru%4==1?366:365))r-=(ru++%4==1?366:365);
ll run=bool(ru%4==1),m=1;
for(;r>month[run][m];++m)r-=month[run][m];
cout<<r<<' '<<m<<' '<<ru+1583<<'\n';
}
}else{
if(r>17){
r-=17;
if(r>30){
r-=30;
cout<<r<<" 12 1582\n";
}else cout<<r<<" 11 1582\n";
}else cout<<15+r<<" 10 1582\n";
}
}
}return 0;
}