#include <bits/stdc++.h>
using namespace std;
long long n, k, A, B;
vector<long long> a(100000 + 5);
long long rec(int l, int r) {
  long long m = (l + r) / 2, i, j, col = 0, lng = r - l + 1;
  i = lower_bound(a.begin(), a.end(), l) - a.begin();
  j = upper_bound(a.begin(), a.end(), r) - a.begin();
  j--;
  col = j - i + 1;
  if (l == r && !col) return A;
  if (l == r && col) return B * col;
  if (!col) return A;
  return min(B * lng * col, rec(l, m) + rec(m + 1, r));
}
int main() {
  long long x;
  cin >> n >> k >> A >> B;
  for (int i = 0; i < k; i++) {
    cin >> x;
    a.push_back(x);
  }
  sort(a.begin(), a.end());
  cout << rec(1, pow(2, n));
  return 0;
}
