#include <bits/stdc++.h>
using namespace std;
vector<long long> vv;
int n, k;
long long a, b;
long long solve(int l, int r) {
  if (l == r) {
    long long id = upper_bound(vv.begin(), vv.end(), r) -
                   lower_bound(vv.begin(), vv.end(), l);
    if (id != 0) {
      long long ret = b * id;
      return ret;
    } else
      return a;
  }
  long long ppp = upper_bound(vv.begin(), vv.end(), r) -
                  lower_bound(vv.begin(), vv.end(), l);
  long long ret;
  if (ppp == 0) return a;
  ret = b * (r - l + 1);
  ret *= ppp;
  long long pp = solve(l, (l + r) / 2) + solve((l + r) / 2 + 1, r);
  ret = min(ret, pp);
  return ret;
}
int main() {
  cin >> n >> k >> a >> b;
  for (int i = 0; i < k; i++) {
    long long pp;
    cin >> pp;
    vv.push_back(pp);
  }
  sort(vv.begin(), vv.end());
  n = (1 << n);
  long long ans = solve(1, n);
  cout << ans;
}
