#include <bits/stdc++.h>
using namespace std;
const long long maxn = 9e5 + 100;
const long long mod = 1e9 + 7;
const long double PI = 4 * atan((long double)1);
long long pw(long long a, long long b) {
  return (!b ? 1
             : (b & 1 ? a * pw(a * a % mod, b / 2) % mod
                      : pw(a * a % mod, b / 2) % mod));
}
long long n, k, a, b;
vector<long long> pos;
long long solve(long long l, long long r) {
  long long high = (upper_bound(pos.begin(), pos.end(), r) - pos.begin());
  long long low = (lower_bound(pos.begin(), pos.end(), l) - pos.begin());
  if (high == low) {
    return (a);
  }
  if (l == r) {
    return ((b * (high - low) * (r - l + 1)));
  }
  long long mid = (r + l) / 2;
  return (
      min(solve(l, mid) + solve(mid + 1, r), (b * (high - low) * (r - l + 1))));
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k >> a >> b;
  for (int i = 0; i < k; i++) {
    long long inp;
    cin >> inp;
    pos.push_back(inp);
    ;
  }
  sort(pos.begin(), pos.end());
  cout << solve((long long)1, (long long)1 << n);
  return (0);
}
