// C #ifndef _GLIBCXX_NO_ASSERT #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if __cplusplus >= 201103L #include #include #include //#include #include #include #include #include #include #endif // C++ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if __cplusplus >= 201103L #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif #include using namespace std; using namespace atcoder; template using min_priority_queue = priority_queue, greater>; typedef long long ll; typedef pair P; using mint = modint1000000007; int main() { int t; cin >> t; vector ans(t); for (int t_i = 0; t_i < t; t_i++) { int ans_i = 0; ll n; cin >> n; string s = bitset<64>(n).to_string(); // cout << s << endl; int cum = 0; for (int i = 0; i < s.size(); i++) { if (s[i] == '1') { // ここで初めて0にするパターンを考える int rest = s.size() - i - 1; if (rest >= 1) ans_i += (1 << (rest - 1)) * rest; ans_i += cum * (1 << rest); cum++; } } // 完全一致パターン for (int i = 0; i < s.size(); i++) { if (s[i] == '1') { ans_i++; } } ans[t_i] = ans_i; } for (int i = 0; i < t; i++) { cout << ans[i] << endl; } return 0; }