#include<iostream>
#include <random>
using namespace std;
class Solution{
public:
static unsigned long long int func1(unsigned long long int n){
int cnt=0;
while(n){
++cnt;
n&=n-1;
}
return cnt;
}
static unsigned long long int func2(unsigned long long int n){
n=(n&0x5555555555555555ull)+((n>>1ull)&0x5555555555555555ull);
n=(n&0x3333333333333333ull)+((n>>2ull)&0x3333333333333333ull);
n=(n&0x0f0f0f0f0f0f0f0full)+((n>>4ull)&0x0f0f0f0f0f0f0f0full);
n=(n&0x00ff00ff00ff00ffull)+((n>>8ull)&0x00ff00ff00ff00ffull);
n=(n&0x0000ffff0000ffffull)+((n>>16ull)&0x0000ffff0000ffffull);
n=(n&0x00000000ffffffffull)+((n>>32ull)&0x00000000ffffffffull);
return n;
}
};
int main(){
independent_bits_engine<default_random_engine,64,unsigned long long int> engine;
for(int i=0;i<1000000000;++i){
unsigned long long n=engine();
if(Solution::func1(n)!=Solution::func2(n)){
cout<<n<<' '<<Solution::func1(n)<<' '<<Solution::func2(n)<<endl;
}
}
return 0;
}