#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 2;
vector<int> a;
long long n, k, A, B;
long long anss = 0;
long long foo(long long l, long long r) {
  long long cnt = 0;
  int i = lower_bound(a.begin(), a.end(), l) - a.begin();
  int j = upper_bound(a.begin(), a.end(), r) - a.begin();
  j--;
  cnt = max(0, j - i + 1);
  if (cnt == 0) {
    return A;
  } else {
    long long ans = B * cnt * (r - l + 1);
    if (l == r) return ans;
    long long mi = (l + r) >> 1;
    return min(ans, foo(l, mi) + foo(mi + 1, r));
  }
}
int main() {
  cin >> n >> k >> A >> B;
  for (int i = 0; i < k; i++) {
    int x;
    cin >> x;
    a.push_back(x);
  }
  sort(a.begin(), a.end());
  cout << foo(1, (1ll << n));
  return 0;
}
