#include <bits/stdc++.h>
using namespace std;
long long n, k, a, b;
vector<long long> x;
long long cnt1(long long pos) {
  if (x[0] >= pos) {
    return 0;
  }
  if (x[k - 1] < pos) {
    return k;
  }
  long long l = 0;
  long long r = k - 1;
  while (r - l > 1) {
    long long m = (r + l) / 2;
    if (x[m] >= pos) {
      r = m;
    } else {
      l = m;
    }
  }
  return l + 1;
}
long long cnt(long long l, long long r) { return cnt1(r) - cnt1(l); }
long long solve(long long l, long long r) {
  long long m = (l + r) / 2;
  long long w = cnt(l, r);
  if (w == 0) {
    return a;
  }
  if (r == l + 1) {
    return b * w;
  }
  long long res1 = solve(l, m);
  long long res2 = solve(m, r);
  long long ans1 = res1 + res2;
  long long ans2 = (r - l) * b * w;
  return min(ans1, ans2);
}
signed main() {
  cin >> n >> k >> a >> b;
  x.resize(k);
  for (long long i = 0; i < k; i++) {
    cin >> x[i];
    x[i]--;
  }
  sort(x.begin(), x.end());
  cout << solve(0, 1 << n) << endl;
  return 0;
}
