#include <bits/stdc++.h>
using namespace std;
int n, k;
long long A, B;
const int K = 1e5 + 10;
int a[K];
long long build_tree(int l, int r) {
  int num = upper_bound(a + 1, a + 1 + k, r) - lower_bound(a + 1, a + 1 + k, l);
  if (num == 0) return A;
  if (l == r) return B * num;
  int m = l + (r - l) / 2;
  return min(build_tree(l, m) + build_tree(m + 1, r), B * num * (r - l + 1));
}
int main() {
  scanf("%d%d%lld%lld", &n, &k, &A, &B);
  for (int i = 1; i <= k; i++) {
    scanf("%d", a + i);
  }
  sort(a + 1, a + k + 1);
  cout << build_tree(1, (1 << n)) << endl;
}
