#include <bits/stdc++.h>
using namespace std;
long long arr[100007], n, k, A, B;
long long leftmost(long long val, long long l = 0, long long r = k + 1) {
  if (l == r) return l;
  long long mid = (l + r) / 2;
  if (arr[mid] < val)
    return leftmost(val, mid + 1, r);
  else
    return leftmost(val, l, mid);
}
long long rightmost(long long val, long long l = 0, long long r = k + 1) {
  if (l == r) return l;
  long long mid = (l + r + 1) / 2;
  if (arr[mid] > val)
    return rightmost(val, l, mid - 1);
  else
    return rightmost(val, mid, r);
}
long long solve(int l, int r) {
  long long qnt = rightmost(r) - leftmost(l) + 1;
  long long ans;
  if (qnt == 0)
    ans = A;
  else
    ans = B * (r - l + 1) * qnt;
  if (qnt == 0) return ans;
  if (l == r) return ans;
  long long mid = (l + r) / 2;
  return min(ans, solve(l, mid) + solve(mid + 1, r));
}
int main() {
  scanf("%lld %lld %lld %lld", &n, &k, &A, &B);
  for (int i = 1; i <= k; i++) scanf("%lld", &arr[i]);
  arr[k + 1] = 2e9 + 7;
  sort(arr + 1, arr + k + 1);
  printf("%lld\n", solve(1, 1 << n));
  return 0;
}
