#include long long bit[61]; long long solve(long long N) { int i, j, jj, jjj, k, kk, kkk, cur, prev; long long dp[2][15][3][3] = {}, ans = 0; for (i = 60; (N & bit[i]) == 0; i--); dp[0][0][2][0] = 1; for (i--, k = 0, kk = 0, kkk = 1, cur = 1, prev = 0; i >= 0; i--, cur ^= 1, prev ^= 1) { for (j = 0; j <= 12; j++) for (jj = 0; jj <= 2; jj++) for (jjj = 0; jjj <= 2; jjj++) dp[cur][j][jj][jjj] = 0; for (j = 0; j <= 12; j++) { dp[cur][j+1][2][0] += dp[prev][j][0][1]; dp[cur][j][0][2] += dp[prev][j][0][1]; dp[cur][j][1][0] += dp[prev][j][0][2]; dp[cur][j][0][2] += dp[prev][j][0][2]; dp[cur][j+2][2][0] += dp[prev][j][1][0]; dp[cur][j+1][0][2] += dp[prev][j][1][0]; dp[cur][j][2][0] += dp[prev][j][2][0]; dp[cur][j][0][1] += dp[prev][j][2][0]; } if ((N & bit[i]) == 0) { if (kk == 0) { if (kkk == 1) { k++; kk = 2; kkk = 0; } else { kk = 1; kkk = 0; } } else if (kk == 1) { k += 2; kk = 2; } } else { if (kk == 0) { if (kkk == 1) dp[cur][k+1][2][0]++; else dp[cur][k][1][0]++; } else if (kk == 1) dp[cur][k+2][2][0]++; if (kk == 0) { if (kkk == 1) kkk = 2; } else if (kk == 1) { k++; kk = 0; kkk = 2; } } } if (kk == 0) { if (kkk == 1) ans += k + 1; else ans += k + 2; } else if (kk == 1) ans += k + 2; else ans += k; for (j = 0; j <= 12; j++) { ans += dp[prev][j][0][1] * (j + 1); ans += dp[prev][j][0][2] * (j + 2); ans += dp[prev][j][1][0] * (j + 2); ans += dp[prev][j][2][0] * j; } return ans; } int main() { int T; long long N; scanf("%d", &T); int i; for (i = 1, bit[0] = 1; i <= 60; i++) bit[i] = bit[i-1] << 1; while (T--) { scanf("%lld", &N); printf("%lld\n", solve(N)); } fflush(stdout); return 0; }