#include int ri() { int n; scanf("%d", &n); return n; } void solve() { int64_t t; std::cin >> t; std::vector dd; while (t) dd.push_back(t & 1), t >>= 1; std::pair dp[3][2][2]; memset(dp, 0, sizeof(dp)); dp[1][0][0] = {1, 0}; for (auto d : dd) { std::pair next[3][2][2]; memset(next, 0, sizeof(next)); for (int j = 0; j < 3; j++) for (int k = 0; k < 2; k++) for (int l = 0; l < 2; l++) if (dp[j][k][l].first) { for (int m = 0; m < 2; m++) { int next_j = j; if (m < d) next_j = 0; if (m > d) next_j = 2; int next_k = m; int next_l = l; if (!k && !m) next_l = 0; if (k && m) next_l = 1; int cost = m && (!k || !l); next[next_j][next_k][next_l].first += dp[j][k][l].first; next[next_j][next_k][next_l].second += dp[j][k][l].first * cost; next[next_j][next_k][next_l].second += dp[j][k][l].second; } } memcpy(dp, next, sizeof(dp)); /* for (int j = 0; j < 3; j++) for (int k = 0; k < 2; k++) for (int l = 0; l < 2; l++) if (dp[j][k][l].first) { std::cerr << j << " " << k << " " << l << " : " << dp[j][k][l].first << " " << dp[j][k][l].second << std::endl; }*/ } int64_t res = 0; for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) res += dp[0][i][j].second + dp[1][i][j].second; printf("%" PRId64 "\n", res); } int main() { int t = ri(); for (int i = 0; i < t; i++) solve(); return 0; }