#include <bits/stdc++.h>
using namespace std;
long long int n, k, b, c, i, j, h, a[200002];
long long int ans = 1e18;
pair<long long int, long long int> t[200002];
long long int take(long long int x, long long int y) {
  while ((x % 5 + 5) % 5 != y) x++;
  return x;
}
int main() {
  scanf("%I64d%I64d%I64d%I64d", &n, &k, &b, &c);
  for (i = 1; i <= n; i++) scanf("%I64d", &a[i]);
  b = min(b, c * 5);
  sort(a + 1, a + n + 1);
  for (h = 0; h < 5; h++) {
    set<pair<long long int, long long int> > s;
    long long int sum = 0;
    for (i = 1; i <= n; i++) {
      t[i].first = take(a[i], h);
      t[i].second = (t[i].first - a[i]) * c;
    }
    for (i = 2; i <= n; i++) t[i].first = (t[i].first - t[1].first) / 5;
    t[1].first = 0;
    for (i = 1; i <= k; i++) {
      long long int x = t[i].second - t[i].first * b;
      sum += x;
      s.insert(make_pair(x, i));
    }
    for (i = k + 1; i <= n + 1; i++) {
      ans = min(ans, sum + t[i - 1].first * b * k);
      if (i == n + 1) break;
      long long int x = t[i].second - t[i].first * b;
      sum += x;
      s.insert(make_pair(x, i));
      set<pair<long long int, long long int> >::iterator it = (--s.end());
      sum -= it->first;
      s.erase(it);
    }
  }
  printf("%I64d\n", ans);
}
