#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000 + 100, INF = 1e8;
int n, k, x, num[2][MAXN], a, mi, ma;
int main() {
  cin >> n >> k >> x;
  mi = INF;
  ma = -INF;
  for (int i = 0; i < n; ++i) {
    scanf("%d", &a);
    ++num[0][a];
    mi = min(mi, a);
    ma = max(ma, a);
  }
  for (int i = 0; i < k; ++i) {
    memset(num[(i + 1) & 1], 0, sizeof(num[(i + 1) & 1]));
    int now = 1;
    for (int j = mi; j <= ma; ++j) {
      if (num[i & 1][j]) {
        a = j ^ x;
        if ((num[i & 1][j] & 1) == 0) {
          num[(i + 1) & 1][a] += num[i & 1][j] / 2;
          num[(i + 1) & 1][j] += num[i & 1][j] / 2;
        } else if (now & 1) {
          num[(i + 1) & 1][a] += num[i & 1][j] / 2 + 1;
          num[(i + 1) & 1][j] += num[i & 1][j] / 2;
        } else {
          num[(i + 1) & 1][a] += num[i & 1][j] / 2;
          num[(i + 1) & 1][j] += num[i & 1][j] / 2 + 1;
        }
        now += num[i & 1][j];
      }
    }
    mi = INF;
    ma = -INF;
    for (int j = 0; j <= 1090; j++) {
      if (num[(i + 1) & 1][j]) {
        mi = min(mi, j);
        ma = max(ma, j);
      }
    }
  }
  cout << ma << " " << mi << endl;
  return 0;
}
