#include <bits/stdc++.h>
using namespace std;
int ans = -1;
int binSearch(long long a[], int l, int r, int k) {
  if (l <= r) {
    int mid = (l + r) / 2;
    if (l == r) {
      if (a[mid] >= k) ans = mid;
      return ans;
    }
    if (a[mid] >= k) {
      ans = mid;
      return binSearch(a, l, mid - 1, k);
    } else {
      return binSearch(a, mid + 1, r, k);
    }
  }
  return ans;
}
int upper(long long a[], int l, int r, int k) {
  if (l <= r) {
    int mid = (l + r) / 2;
    if (l == r) {
      if (a[mid] <= k) ans = mid;
      return ans;
    }
    if (a[mid] <= k) {
      ans = mid;
      return upper(a, mid + 1, r, k);
    } else {
      return upper(a, l, mid - 1, k);
    }
  }
  return ans;
}
int cal(long long a[], int l, int r, int k) {
  binSearch(a, 0, k - 1, l);
  int left = ans;
  ans = -1;
  upper(a, 0, k - 1, r);
  int right = ans;
  ans = -1;
  if (left == -1 || right == -1) return 0;
  if (left > right) return 0;
  return right - left + 1;
}
long long f(long long a[], int k, long long A, long long b, int l, int r) {
  if (l > r) return 0;
  int av = cal(a, l, r, k);
  int mid = (l + r) / 2;
  if (av > 0) {
    if (l == r) return b * av;
    return min((b * (r - l + 1) * av),
               f(a, k, A, b, l, mid) + f(a, k, A, b, mid + 1, r));
  } else {
    return A;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n, k;
  long long A, b;
  cin >> n >> k >> A >> b;
  long long a[k];
  for (int i = 0; i < k; i++) {
    cin >> a[i];
    a[i]--;
  }
  sort(a, a + k);
  n = (int)pow(2, n);
  cout << f(a, k, A, b, 0, n - 1);
  return 0;
}
