#include <bits/stdc++.h>
int n, k, a, b, p, na;
std::vector<int> avg;
long long f(int l, int r) {
  auto it1 = std::upper_bound(avg.begin(), avg.end(), r);
  auto it2 = std::lower_bound(avg.begin(), avg.end(), l);
  if (it2 != avg.end())
    na = it1 - it2;
  else
    na = 0;
  long long ans;
  if (na)
    ans = 1LL * b * na * (r - l + 1);
  else
    ans = a;
  if (na && r != l)
    ans = std::min(ans, f(l, (l + r) / 2) + f((l + r) / 2 + 1, r));
  return ans;
}
int main() {
  scanf("%d%d%d%d", &n, &k, &a, &b);
  for (int i = 0; i < k; i++) {
    scanf("%d", &p);
    avg.push_back(p - 1);
  }
  std::sort(avg.begin(), avg.end());
  printf("%lld\n", f(0, (1 << n) - 1));
  return 0;
}
