#include <bits/stdc++.h>
using
namespace
std;
int
prime[100001];
void
SieveOfEratosthenes()
{
memset
(prime, 0,
sizeof
(prime));
prime[0] = 0;
prime[1] = 0;
for
(
int
p = 2; p * p <= 100001; p++) {
if
(prime[p] == 0) {
prime[p]++;
for
(
int
i = p * p; i <= 100001; i += p)
prime[i]++;
}
}
}
bool
Compare(pair<
int
,
int
> p1, pair<
int
,
int
> p2)
{
return
(p1.second < p2.second);
}
void
sortArr(
int
arr[],
int
n)
{
vector<pair<
int
,
int
> > v;
for
(
int
i = 0; i < n; i++) {
v.push_back(make_pair(arr[i], prime[arr[i]]));
}
sort(v.begin(), v.end(), Compare);
for
(
int
i = 0; i < n; i++)
cout << v[i].first <<
" "
;
cout << endl;
}
int
main()
{
SieveOfEratosthenes();
int
arr[] = { 30, 2, 1024, 210, 3, 6 };
int
n =
sizeof
(arr) /
sizeof
(
int
);
sortArr(arr, n);
return
0;
}