#include <bits/stdc++.h>
using namespace std;
int n, k, A1, B, x, A[100004];
long long int Snap(int, int);
int pow1(int, int);
int CalcAv(int, int);
int main() {
  int i;
  cin >> n >> k >> A1 >> B;
  for (i = 0; i < k; ++i) {
    cin >> A[i];
  }
  sort(A, A + k);
  n = pow1(2, n);
  long long int ans;
  ans = Snap(1, n);
  cout << ans << '\n';
  return 0;
}
int CalcAv(int a, int b) {
  int z1, z2;
  z1 = (int)(upper_bound(A, A + k, b) - A);
  z2 = (int)(lower_bound(A, A + k, a) - A);
  return z1 - z2;
}
long long int Snap(int a, int b) {
  long long int z = CalcAv(a, b);
  long long int maxim;
  if (z == 0) return A1;
  if (a == b) {
    return B * z;
  }
  maxim = z * B * (b - a + 1);
  z = Snap(a, (a + (b - a) / 2)) + Snap((a + (b - a) / 2) + 1, b);
  if (maxim > z) maxim = z;
  ;
  return maxim;
}
int pow1(int x, int n) {
  int p = 1;
  while (n > 0) {
    if (n % 2) {
      p *= x;
      n--;
    }
    x = x * x;
    n /= 2;
  }
  return p;
}
