#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
map<pair<long long, long long>, long long> dp;
long long n, k, a, b;
vector<long long> vec;
long long solve(long long l, long long r) {
  if (dp.count({l, r})) return dp[{l, r}];
  long long it1 = lower_bound(vec.begin(), vec.end(), l) - vec.begin(),
            it2 = upper_bound(vec.begin(), vec.end(), r) - vec.begin();
  long long sum2 = (it2 - it1) * b * (r - l + 1), sum1 = a, price;
  if (it1 == it2)
    price = sum1;
  else
    price = sum2;
  if (l == r || it1 == it2) {
    dp[{l, r}] = price;
    return price;
  }
  long long mid = (l + r) >> 1;
  price = min(price, solve(l, mid) + solve(mid + 1, r));
  dp[{l, r}] = price;
  return price;
}
signed main() {
  cin.tie(0), ios::sync_with_stdio(0);
  cin >> n >> k >> a >> b;
  for (long long i = 1; i <= k; i++) {
    long long x;
    cin >> x;
    vec.push_back(x);
  }
  sort(vec.begin(), vec.end());
  cout << solve(1, (1 << n));
}
