test link
code:
#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 day[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
inline void dty(int ds, int ys, ll &r, int &y, int s) {
int x = r / ds;
y += s * x * ys;
r -= x * ds;
if (r == 0) {
r += ds;
y -= s * ys;
}
}
inline void solve() {
ll r;
cin >> r;
r++;
if (r <= 1721424) {
int m = 1, y = 4713;
dty(1461, 4, r, y, -1);
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 <= 2299161) {
r -= 1721424;
int m = 1, y = 1;
dty(1461, 4, r, y, 1);
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 -= 2298874;
int m = 1, y = 1582;
for (; y <= 1600;) {
int ds = 365;
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) ds++;
if (r > ds) {
r -= ds;
y++;
} else break;
}
dty(146097, 400, r, y, 1);
while (1) {
int ds = 365;
if ((y % 4 == 0 && y % 100 != 0) || (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;
}