#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
long long n, m, k, A, B;
long long a[maxn];
map<int, int> cnt;
int query(int l, int r) {
  int x = lower_bound(a + 1, a + k + 1, l) - a,
      y = upper_bound(a + 1, a + k + 1, r) - a - 1;
  return y - x + 1;
}
long long solve(int l, int r) {
  long long cnt = query(l, r), res = 1ll << 60;
  if (cnt)
    res = B * (r - l + 1) * cnt;
  else
    return A;
  if (l < r)
    return min(res, solve(l, (l + r) >> 1) + solve(((l + r) >> 1) + 1, r));
  else
    return res;
}
int main() {
  scanf("%d%d%d%d", &n, &k, &A, &B);
  for (int i = 1; i <= k; ++i) scanf("%d", &a[i]), ++cnt[a[i]];
  a[++k] = -2e9;
  a[++k] = 2e9;
  sort(a + 1, a + k + 1);
  cout << solve(1, 1 << n) << endl;
  return 0;
}
