#include <bits/stdc++.h>
using namespace std;
vector<int> avengers;
long long int recurse(int l, int r, int n, int k, int a, int b) {
  long long int count = upper_bound(avengers.begin(), avengers.end(), r) -
                        lower_bound(avengers.begin(), avengers.end(), l);
  long long int salman;
  if (count == 0)
    salman = a;
  else
    salman = b * count * (r - l + 1);
  if (l == r || count == 0) return salman;
  int mid = (l + r) / 2;
  long long int x = recurse(l, mid, n, k, a, b);
  long long int y = recurse(mid + 1, r, n, k, a, b);
  return min(salman, x + y);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n, k, a, b;
  cin >> n >> k >> a >> b;
  for (int i = 0; i < k; i++) {
    int y;
    cin >> y;
    avengers.push_back(y);
  }
  sort(avengers.begin(), avengers.end());
  cout << recurse(1, (1 << n), n, k, a, b);
  return 0;
}
