For this Question: You are given an array A of size N. In one move, you can choose two indices i, j (1 <= i, j <= N) such that A<sub>i</sub>+A<sub>j</sub> is odd and swap A<sub>i</sub> and A<sub>j</sub>. Find the lexicographically smallest array you can obtain after any number of operations.The first line of the input contains a single integer N.
The second line of the input contains N space seperated integers.

Constraints:
1 <= N <= 10<sup>5</sup>
1 <= A<sub>i</sub> <= 10<sup>9</sup>Print N space seperated integers, the lexicographically smallest array you can obtain after any number of operations.Sample Input:
3
5 2 8

Sample Output:
2 5 8

Explaination:
We can swap 5 and 2 as their sum is odd., I have written this Solution Code: #include <bits/stdc++.h>
using namespace std;
#define int long long

signed main(){
    int n;
    cin >> n;
    vector<int> a(n);
    for(auto &i : a) cin >> i;
    int odd = 0;
    for(auto i : a){
        if(i % 2) odd++;
    }
    if(odd != 0 and odd != n){
        sort(a.begin(), a.end());
    }
    for(auto i : a) cout << i << ' ';
}, In this Programming Language: C++, Now tell me if this Code is compilable or not?