#include <bits/stdc++.h>   using namespace std;   long long t = 1;   template <class myType>   void print_arr(myType &arr, long long L, string sep) {     for (long long(i) = (0); (i) < (L); ++(i)) {       cout << arr[i];       if (i < L - 1) {         cout << sep;       }     }     cout <<   n ;     return;   }   long long merge(long long arr[], long long temp_arr[], long long left,                   long long mid, long long right) {     long long i, j, k;     i = left;     j = mid + 1;     k = left;     long long inv_count = 0;     while (i <= mid && j <= right) {       if (arr[i] <= arr[j]) {         temp_arr[k] = arr[i];         k += 1;         i += 1;       } else {         temp_arr[k] = arr[j];         inv_count += (mid - i + 1);         k += 1;         j += 1;       }     }     while (i <= mid) {       temp_arr[k] = arr[i];       k += 1;       i += 1;     }     while (j <= right) {       temp_arr[k] = arr[j];       k += 1;       j += 1;     }     for (long long loop_var = left; loop_var <= right; loop_var++) {       arr[loop_var] = temp_arr[loop_var];     }     return inv_count;   }   long long _mergeSort(long long arr[], long long temp_arr[], long long left,                        long long right) {     long long inv_count = 0;     if (left < right) {       long long mid;       mid = (left + right) / 2;       inv_count += _mergeSort(arr, temp_arr, left, mid);       inv_count += _mergeSort(arr, temp_arr, mid + 1, right);       inv_count += merge(arr, temp_arr, left, mid, right);     }     return inv_count;   }   long long mergeSort(long long arr[], long long n) {     long long temp_arr[n];     for (long long(i) = (0); (i) < (n); ++(i)) temp_arr[i] = 0;     return _mergeSort(arr, temp_arr, 0, n - 1);   }   void solve() {     long long n;     cin >> n;     long long a[n];     for (long long(i) = (0); (i) < (n); ++(i)) cin >> a[i];     long long invs, invs2;     long long b[n];     for (long long(i) = (0); (i) < (n); ++(i)) b[i] = a[i];     invs = mergeSort(b, n);     long long ans = 0;     long long p;     for (long long(i) = (0); (i) < (30); ++(i)) {       p = (1 << i);       for (long long(j) = (0); (j) < (n); ++(j)) b[j] = a[j] ^ p;       invs2 = mergeSort(b, n);       if (invs2 < invs) {         ans += p;       }     }     for (long long(j) = (0); (j) < (n); ++(j)) b[j] = a[j] ^ ans;     cout << mergeSort(b, n) <<     << ans <<   n ;     return;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     while (t--) {       solve();     }     return 0;   }   