#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx,avx2,fma")
#pragma GCC target("sse4,popcnt,abm,mmx,tune=native")
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define eb emplace_back
#define F first
#define S second
#define all(x) (x).begin(), (x).end()
#define sz(x) int(x.size())
using ll = long long;
using ld = long double;
using ii = pair<int, int>;
using vi = vector<int>;
using vll = vector<ll>;
using vb = vector<bool>;
const int N = 1e5 + 5;
const int K = 21;
const ll mod = 998244353;
map<ll, ll> p2;
ll pw(ll x, ll y) {
if (p2.count(y) > 0) {
return p2[y];
}
if (y == 0) {
return 1;
}
ll k = pw(x, y / 2);
if (y & 1) {
return p2[y] = k * k % mod * x % mod;
}
return p2[y] = k * k % mod;
}
ll cnt_ways(ll n) {
if (n == 1) {
return 1;
}
ll l, r;
l = (n + 1) / 2;
r = n / 2;
return (pw(2, l) - 1) * (pw(2, r) - 1) % mod;
}
ll calc(vector<array<ll, 3>> vec) {
if (vec.empty()) {
return 0;
}
ll ans = 0;
vector<array<ll, 3>> tmp, new_vec;
for (auto x: vec) {
ans = (ans + cnt_ways(x[0]) * x[1] % mod) % mod;
if (x[0] == 1) {
continue;
}
if (x[0] % 2) {
tmp.pb({(x[0] + 1) / 2, x[1] * 2 % mod, x[2]});
tmp.pb({x[0] / 2, (x[1] * 2 + x[2]) % mod, x[2]});
} else {
tmp.pb({x[0] / 2, (x[1] * 4 + x[2]) % mod, x[2] * 2 % mod});
}
}
for (auto x: tmp) {
bool ok = false;
for (auto &y: new_vec) {
if (x[0] == y[0]) {
y[1] = (y[1] + x[1]) % mod;
y[2] = (y[2] + x[2]) % mod;
ok = true;
break;
}
}
if (!ok) {
new_vec.pb(x);
}
}
return (ans + calc(new_vec)) % mod;
}
int main() {
cin.tie(0)->sync_with_stdio(0);
int te;
cin >> te;
while (te--) {
ll n;
cin >> n;
ll ans = calc({{n, 1, 1}});
cout << ans << '\n';
}
return 0;
}
253A - Boys and Girls | 1327E - Count The Blocks |
984A - Game | 12B - Correct Solution |
1355B - Young Explorers | 485A - Factory |
628A - Tennis Tournament | 1436B - Prime Square |
1707B - Difference Array | 1422C - Bargain |
1611F - ATM and Students | 660A - Co-prime Array |
1692F - 3SUM | 1470A - Strange Birthday Party |
190D - Non-Secret Cypher | 1721B - Deadly Laser |
1721C - Min-Max Array Transformation | 1721A - Image |
1180C - Valeriy and Deque | 557A - Ilya and Diplomas |
1037D - Valid BFS | 1144F - Graph Without Long Directed Paths |
1228A - Distinct Digits | 355B - Vasya and Public Transport |
1230A - Dawid and Bags of Candies | 1530A - Binary Decimal |
1472D - Even-Odd Game | 441C - Valera and Tubes |
1328E - Tree Queries | 265A - Colorful Stones (Simplified Edition) |