#include <bits/stdc++.h>
using namespace std;
const int MAXK = 1e5;
long long n, k, a, b, pos[MAXK + 10];
long long burn(long long l, long long r) {
  long long t = upper_bound(pos, pos + k, r) - lower_bound(pos, pos + k, l);
  if (t == 0)
    return a;
  else
    return t * (r - l + 1) * b;
}
long long solve(long long l, long long r) {
  long long x = burn(l, r);
  if (l == r) return x;
  long long mid = l + r >> 1;
  if (upper_bound(pos, pos + k, r) - lower_bound(pos, pos + k, l) == 0)
    return a;
  return min(solve(l, mid) + solve(mid + 1, r), x);
}
int main() {
  cin.tie(0);
  cout.tie(0);
  ios_base::sync_with_stdio(false);
  int i, j;
  cin >> n >> k >> a >> b;
  for (i = 0; i < k; i++) cin >> pos[i];
  sort(pos, pos + k);
  cout << solve(1, 1ll << n);
  return 0;
}
