RT,必关
test link
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef pair<int, int> PII;
typedef pair<ll, ll> PLL;
typedef pair<int, ll> PIL;
#define mkp make_pair
#define F first
#define S second
#define psbk push_back
int Q;
const ll p1 = 1721424, p2 = 577737, day[] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
inline void solve() {
ll r;
cin >> r;
r++;
if (r <= p1) {
int m = 1, y = 4713;
int x = r / 1461;
y -= x * 4;
r -= x * 1461;
while (1) {
int ds = 365;
if (y % 4 == 1) ds++;
if (r > ds) {
r -= ds;
y--;
} else break;
}
for (; m <= 12;) {
int dm = day[m];
if (m == 2 && y % 4 == 1) dm++;
if (r > dm) {
r -= dm;
m++;
} else break;
}
cout << r << " " << m << " " << y << " BC\n";
} else if (r <= p1 + p2) {
r -= p1;
int m = 1, y = 1;
int x = r / 1461;
y += x * 4;
r -= x * 1461;
while (1) {
int ds = 365;
if (y % 4 == 0) ds++;
if (r > ds) {
r -= ds;
y++;
} else break;
}
for (; m <= 12;) {
ll dm = day[m];
if (m == 2 && y % 4 == 0) dm++;
if (r > dm) {
r -= dm;
m++;
} else break;
}
cout << r << " " << m << " " << y << "\n";
} else {
r -= p1 + p2 - 15 - 273 + 1;
int m = 1, y = 1582, z, x;
//400
z = 365 * 400 + 97;
x = r / z;
r -= x * z;
y += 400 * x;
//100
z = 365 * 100 + 24;
x = r / z;
r -= x * z;
y += 100 * x;
//4
z = 365 * 4 + 1;
x = r / z;
r -= x * z;
y += 4 * x;
while (1) {
int ds = 365;
if ((y % 4 == 0 && y % 100) || (y % 400 == 0)) ds++;
if (r > ds) {
r -= ds;
y++;
} else break;
}
for (; m <= 12;) {
int dm = day[m];
if (m == 2 && ((y % 4 == 0 && y % 100) || (y % 400 == 0))) dm++;
if (r > dm) {
r -= dm;
m++;
} else break;
}
cout << r << " " << m << " " << y << "\n";
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
// freopen("julian3.in", "r", stdin);
// freopen("ans.out", "w", stdout);
cin >> Q;
while (Q--) solve();
return 0;
}