#include <bits/stdc++.h>
using namespace std;
const long long maxn = 1e5 + 60;
const long long mod = 998244353;
long long n, m, A, B;
long long a[200100];
long long dfs(long long l, long long r) {
  long long ans1 = 0;
  long long len =
      (upper_bound(a, a + m, r) - a) - (lower_bound(a, a + m, l) - a);
  if (len == 0)
    return A;
  else if (l == r)
    return len * B;
  long long M = len * B * (r - l + 1);
  long long mid = (l + r) / 2;
  ans1 += dfs(l, mid);
  ans1 += dfs(mid + 1, r);
  return min(ans1, M);
}
long long mull(long long x, long long y) {
  long long res = 1;
  for (long long i = 1; i <= y; i++) res *= x;
  return res;
}
double ans = 0;
signed main() {
  while (cin >> n >> m >> A >> B) {
    for (long long i = 0; i < m; i++) cin >> a[i];
    sort(a, a + m);
    cout << dfs(1, mull(2, n)) << endl;
  }
  return 0;
}
