#include <bits/stdc++.h>
using namespace std;
long long n, k, A, B;
long long a[100005];
long long fun(long long start, long long end) {
  long long right = upper_bound(a, a + k, end) - a;
  long long left = lower_bound(a, a + k, start) - a;
  long long cur;
  if ((right - left) == 0) {
    cur = A;
    return cur;
  } else {
    cur = (end - start + 1) * (right - left) * B;
  }
  if (start == end) {
    return cur;
  }
  long long mid = (start + end) / 2;
  return min({cur, fun(start, mid) + fun(mid + 1, end)});
}
int main() {
  cin >> n >> k >> A >> B;
  long long n1 = (1LL << n);
  for (long long i = 0; i < k; i++) {
    cin >> a[i];
  }
  sort(a, a + k);
  cout << fun(1, n1);
  return 0;
}
