class Solution {
public:
static bool cmp(pair<int,int> &a ,pair<int,int> &b)
{
if(a.second < b.second) return true;
else if(a.second == b.second && a.first < b.first) return true;
else return false;
}
int cheak_1_number(int a)
{
int num = 0;
for(int i=0 ; i<32;i++)
{
int b = a&(1);
if(b == 1) num++ ;
a = a>>1;
}
return num;
}
vector<int> sortByBits(vector<int>& arr) {
vector<int> result;
vector<pair<int,int>> v1;
for(int i=0 ; i<arr.size();i++)
{
v1.push_back({arr[i],cheak_1_number(arr[i])});
}
sort(v1.begin(),v1.end(),cmp);
for(int i=0 ; i<v1.size();i++)
result.push_back(v1[i].first);
return result;
}
};