对于某个数量的星星来说,它的连同的最小代价应该是将其折半后拼接,那么折半后折半下来的其余部分也按照这样折半的思路去,之后全部相加就是最小的代价。
//以星星为第一维,那么每加入一个星星能够得到的代价作为二维。
#include <bits/stdc++.h>

using namespace std;
#define int long long
int dfs(int depth) {
    if (depth==0) return 0;
    if (depth==1) return 0;
    if (depth==2) return 0;
    if (depth==3) return 1;
    if (depth&1) {
        return dfs(depth/2)+dfs(depth/2+1)+1;
    }
    return dfs(depth/2)*2;
}

signed main() {
    int T;
    cin>>T;
    while (T--) {
        int n;
        cin>>n;
        cout<<dfs(n)<<endl;
    }
    
    return 0;
}