#include <bits/stdc++.h>
using namespace std;
long long v[200005];
long long b[100];
long long x;
long long Valor() {
  long long ans = 0;
  long long d = 1;
  for (int j = 0; j < 60; j++) {
    if (b[j]) ans += d;
    d = d * 2;
  }
  return ans;
}
long long M(int id) {
  long long valor = v[id];
  long long ans;
  long long d = 1;
  for (int j = 0; j < 60; j++) {
    if (v[id] & (1LL << j)) b[j]--;
  }
  valor = valor * x;
  for (int j = 0; j < 60; j++) {
    if (valor & (1LL << j)) b[j]++;
  }
  ans = Valor();
  for (int j = 0; j < 60; j++) {
    if (valor & (1LL << j)) b[j]--;
  }
  for (int j = 0; j < 60; j++) {
    if (v[id] & (1LL << j)) b[j]++;
  }
  return ans;
}
long long A(int id) {
  for (int j = 0; j < 60; j++) {
    if (v[id] & (1LL << j)) b[j]--;
  }
  v[id] = v[id] * x;
  for (int j = 0; j < 60; j++) {
    if (v[id] & (1LL << j)) b[j]++;
  }
  return 0;
}
int main() {
  long long n, k;
  long long ans, atual;
  long long maior = -1;
  cin >> n >> k >> x;
  memset(b, 0, sizeof b);
  atual = 0;
  for (int i = 0; i < n; i++) {
    cin >> v[i];
    for (int j = 0; j < 60; j++)
      if (v[i] & (1LL << j)) b[j]++;
    atual = (atual | v[i]);
  }
  maior = x;
  for (int i = 1; i < k; i++) maior = maior * x;
  x = maior;
  for (long long i = 0; i < 1; i++) {
    long long id = -1, valor = -1, mudar;
    maior = atual;
    for (long long j = 0; j < n; j++) {
      mudar = M(j);
      if (maior < mudar) {
        maior = mudar;
        id = j;
        valor = v[j];
      } else {
        if (maior == mudar && v[j] < valor) {
          maior = mudar;
          id = j;
          valor = v[j];
        }
      }
    }
    A(id);
    atual = maior;
  }
  cout << atual << endl;
}
