//位运算的两种基本操作
//n的二进制表示中的第k位是几
//第一步把第k位移动到最后一位
//第二步看个位是几 & 1即可
//lowbit(x);返回x最后一位1 (x&~x)=(x&~x+1)
//统计x里面的1的个数
#include <iostream>
using namespace std;
int lowbit(int x) // 返回末尾的1
{
return x & -x;
}
int main(){
//操作一
// int n=10;
// for(int k=3;k>=0;k--) cout << (n>>k&1);
//统计x里面的1的个数 (操作二)
int n;
cin >> n;
while(n--){
int x;
cin >> x;
int res=0;
while(x) x-=lowbit(x),res++;//每次减去x的最后一位1
cout << res <<' ';
}
return 0;
}