#include <bits/stdc++.h>
using namespace std;
const int mod = (int)1e9 + 9;
const int inf = (int)1e9 + 7;
int n, k, a, b;
vector<int> base;
int bin_find_r(int &cur) {
  int l = 0;
  int r = k;
  while (r - l > 1) {
    int mid = (l + r) / 2;
    if (base[mid] <= cur) {
      l = mid;
    } else {
      r = mid;
    }
  }
  return l;
}
int bin_find_l(int &cur) {
  int l = 0;
  int r = k;
  while (r - l > 1) {
    int mid = (l + r) / 2;
    if (base[mid] < cur) {
      l = mid;
    } else {
      r = mid;
    }
  }
  return l;
}
long long update(int l, int r) {
  int num = bin_find_r(r) - bin_find_l(l);
  if (num == 0) {
    return a;
  }
  long long val = 1ll * b * num * (r - l + 1);
  if (l == r) {
    return val;
  }
  int mid = (l + r) / 2;
  return min(val, update(l, mid) + update(mid + 1, r));
}
int main() {
  scanf("%d%d%d%d", &n, &k, &a, &b);
  n = (1 << n);
  base.assign(k, 0);
  for (auto &x : base) {
    scanf("%d", &x);
  }
  base.push_back(0);
  k = (int)base.size();
  sort(base.begin(), base.end());
  printf("%I64d", update(1, n));
  return 0;
}
