#include <bits/stdc++.h>
namespace iio
{
template<typename T=int>
inline T read()
{
T s=1,i=0;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
s=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
i=(i<<3)+(i<<1)+(c^48);
c=getchar();
}
return s*i;
}
template<typename T=int>
inline void write(T x)
{
if(x<0)
x=-x,putchar('-');
if(x>9)
write(x/10);
putchar(char(x%10)+'0');
}
}
using namespace iio;
using namespace std;
typedef long long ll;
map<pair<ll,int>,ll> l, r, m;
ll fl(ll _n)
{
if (l.count({_n,_n & 1}))
return l[{_n,_n & 1}];
if (_n == 1) return 1LL;
ll middle = (1 + _n) >> 1;
ll left = middle;
ll right = _n - middle;
return l[{_n,_n & 1}] = fl(left) + fl(right) + right - 1;
}
ll fr(ll _n)
{
if (r.count({_n,_n & 1}))
return r[{_n,_n & 1}];
if (_n == 1) return 1LL;
ll middle = (1 + _n) >> 1;
ll left = middle;
ll right = _n - middle;
return r[{_n,_n & 1}] = fr(right) + fr(left) + left - 1;
}
ll f(ll _n)
{
if (m.count({_n,_n & 1}))
return m[{_n,_n & 1}];
if (_n == 1) return 1LL;
ll middle = (1 + _n) >> 1;
ll left = middle;
ll right = _n - middle;
return m[{_n,_n & 1}] = f(left) + f(right) + fr(left) * (right) + fl(right) * left - 1;
}
signed main()
{
int T;
T = read();
for (int i = 1; i <= T; ++i)
{
l.clear();
r.clear();
m.clear();
ll n = read();
write<ll>(f(n));
putchar('\n');
}
return 0;
}