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