#include <bits/stdc++.h>
using namespace std;
int n, k, A, B;
vector<int> a;
long long dp(int l, int r) {
  int pos_l = lower_bound(a.begin(), a.end(), l) - a.begin(),
      pos_r = upper_bound(a.begin(), a.end(), r) - a.begin(),
      cnt = pos_r - pos_l;
  if (cnt == 0) return 1LL * A;
  long long val = 1LL * B * cnt * (r - l + 1), split = 1e18;
  if (l == r) return val;
  int m = (l + r) >> 1;
  split = dp(l, m) + dp(m + 1, r);
  return min(val, split);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n >> k >> A >> B;
  a.resize(k);
  for (int i = 0; i < k; i++) cin >> a[i];
  sort(a.begin(), a.end());
  cout << dp(1, 1 << n);
  return 0;
}
