#include <bits/stdc++.h>
using namespace std;
int A, B;
long long int count(long long int a[], long long int n, long long int m,
                    long long int x) {
  long long int gg;
  gg = upper_bound(a, a + x, m) - lower_bound(a, a + x, n);
  return gg;
}
long long int res(long long int a[], long long int n, long long int m,
                  long long int x) {
  if (count(a, n, m, x) == 0)
    return A;
  else if (n == m) {
    return B * count(a, n, m, x);
  } else
    return min(
        count(a, n, m, x) * (m - n + 1) * B,
        (res(a, (m + n + 1) / 2, m, x) + res(a, n, (m + n + 1) / 2 - 1, x)));
}
int main() {
  long long int n, l;
  cin >> n >> l >> A >> B;
  long long int k[l];
  for (int i = 0; i < l; i++) cin >> k[i];
  sort(k, k + l);
  long long int gg = pow(2, n);
  cout << res(k, 1, gg, l);
  return 0;
}
