#include <bits/stdc++.h>
using namespace std;
vector<long long> a;
long long n, k, av, bv;
long long minval(long long beg, long long end) {
  long long i = lower_bound(a.begin(), a.end(), beg) - a.begin();
  long long j = upper_bound(a.begin(), a.end(), end) - a.begin();
  j--;
  long long val = j - i + 1;
  long count = val;
  if (val == 0)
    val = av;
  else
    val = bv * val * (end - beg + 1);
  if (end == beg || count == 0) return val;
  long long mid = (end + beg) / 2;
  long long t = min(val, (minval(beg, mid) + minval(mid + 1, end)));
  return t;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> k >> av >> bv;
  for (long i = 0; i < k; i++) {
    int value;
    cin >> value;
    a.push_back(value);
  }
  long long x = (long long)(1 << n);
  sort(a.begin(), a.end());
  cout << minval(1, x);
  return 0;
}
