#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
mt19937 rng(
    (unsigned int)chrono::steady_clock::now().time_since_epoch().count());
long long power(long long a, long long b) {
  long long result = 1;
  while (b > 0) {
    if (b % 2 == 1) {
      result *= a;
    }
    a *= a;
    b /= 2;
  }
  return result;
}
long long gcd(long long x, long long y) {
  long long r;
  while (y != 0 && (r = x % y) != 0) {
    x = y;
    y = r;
  }
  return y == 0 ? x : y;
}
long long countSetBits(long long x) {
  long long Count = 0;
  while (x > 0) {
    if (x & 1) Count++;
    x = x >> 1;
  }
  return Count;
}
long long mod(long long x, long long M) { return ((x % M + M) % M); }
long long add(long long a, long long b, long long M) {
  return mod(mod(a, M) + mod(b, M), M);
}
long long mul(long long a, long long b, long long M) {
  return mod(mod(a, M) * mod(b, M), M);
}
long long powerM(long long a, long long b, long long M) {
  long long res = 1ll;
  while (b) {
    if (b % 2ll == 1ll) {
      res = mul(a, res, M);
    }
    a = mul(a, a, M);
    b /= 2ll;
  }
  return res;
}
long long mod_inv(long long a, long long m) {
  long long g = m, r = a, x = 0, y = 1;
  while (r != 0) {
    long long q = g / r;
    g %= r;
    swap(g, r);
    x -= q * y;
    swap(x, y);
  }
  return mod(x, m);
}
long long nCr(long long n, long long k) {
  if (n < k) return 0;
  if (k == 0) return 1;
  long long res = 1;
  if (k > n - k) k = n - k;
  for (long long i = 0; i < k; ++i) {
    res *= (n - i);
    res /= (i + 1);
  }
  return res;
}
vector<long long> FA, INV;
void fcalc(long long n, long long M) {
  FA.resize(n + 1);
  FA[0] = 1;
  for (long long i = 1; i <= n; i++) {
    FA[i] = (FA[i - 1] * i) % M;
  }
}
void icalc(long long n, long long M) {
  INV.resize(n + 1);
  INV[n] = mod_inv(FA[n], M);
  for (long long i = n - 1; i >= 0; i--) {
    INV[i] = (INV[i + 1] * (i + 1)) % M;
  }
}
long long nCrM(long long n, long long r, long long M) {
  if (n < r) return 0;
  if (r == 0) return 1;
  long long a = FA[n];
  a *= INV[r];
  a %= M;
  a *= INV[n - r];
  a %= M;
  return a;
}
long long rand_int(long long l, long long r) {
  return uniform_int_distribution<long long>(l, r)(rng);
}
void solve() {
  long long n;
  cin >> n;
  vector<long long> v(n);
  for (auto &w : v) cin >> w;
  function<long long(vector<long long> &, long long, long long, long long,
                     vector<long long> &)>
      merge = [&](vector<long long> &b, long long l, long long mid, long long r,
                  vector<long long> &vv) -> long long {
    long long ind = l;
    long long i = l;
    long long j = mid + 1;
    long long cc = 0;
    while (i <= mid && j <= r) {
      if (b[i] <= b[j]) {
        vv[ind] = b[i];
        ind++;
        i++;
      } else {
        vv[ind] = b[j];
        ind++;
        j++;
        cc += (mid + 1 - i);
      }
    }
    while (i <= mid) {
      vv[ind] = b[i];
      ind++;
      i++;
    }
    while (j <= r) {
      vv[ind] = b[j];
      ind++;
      j++;
    }
    for (long long k = l; k <= r; k++) {
      b[k] = vv[k];
    }
    return cc;
  };
  function<long long(vector<long long> &, long long, long long,
                     vector<long long> &)>
      inv_cnt = [&](vector<long long> &a, long long low, long long high,
                    vector<long long> &vv) -> long long {
    long long ans = 0;
    if (low < high) {
      long long mid = (low + high) / 2;
      ans += (inv_cnt(a, low, mid, vv));
      ans += (inv_cnt(a, mid + 1, high, vv));
      ans += merge(a, low, mid, high, vv);
    }
    return ans;
  };
  long long x1 = 0;
  for (long long i = 29; i >= 0; i--) {
    vector<long long> v1(n);
    vector<long long> v2 = v;
    long long a1 = inv_cnt(v2, 0, n - 1, v1);
    v2 = v;
    for (long long j = 0; j < n; j++) {
      v2[j] ^= (1 << i);
      v1[j] = 0;
    }
    vector<long long> vz = v2;
    long long a2 = inv_cnt(v2, 0, n - 1, v1);
    if (a2 < a1) {
      v = vz;
      x1 ^= (1 << i);
    }
  }
  vector<long long> v1(n);
  vector<long long> v2 = v;
  long long p = inv_cnt(v2, 0, n - 1, v1);
  cout << p << " " << x1 << '\n';
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cout << fixed << setprecision(20);
  solve();
  return 0;
}
