#include <bits/stdc++.h>
using namespace std;
long long n, k, A, B;
long long arr[100000];
long long solve(long long l, long long r, long long depth, long long add) {
  if (l == r) return A;
  if (depth == 0) return B * (r - l);
  long long mid =
      lower_bound(arr + l, arr + r, (1 << (depth - 1)) + add) - (arr);
  return min(B * (r - l) * (1 << depth),
             solve(l, mid, depth - 1, add) +
                 solve(mid, r, depth - 1, add + (1 << (depth - 1))));
}
int32_t main() {
  cin >> n >> k >> A >> B;
  for (long long i = 0; i < k; ++i) cin >> arr[i];
  sort(arr, arr + k);
  cout << solve(0, k, n, 1) << '\n';
}
