#include <bits/stdc++.h>
#pragma warning(disable : 4996)
#pragma comment(linker, "/STACK:36777216")
using namespace std;
const long long int inf = 100000000000000000LL;
struct Node {
  vector<pair<long long int, long long int> > nbr;
  int used;
  long long int v;
  Node() {
    used = 0;
    v = inf;
  }
};
vector<long long int> sum(1000000);
long long int getSum(long long int r) {
  long long int s = 0;
  for (; r >= 0; r = ((r + 1) & r) - 1) {
    s += sum[r];
  }
  return s;
}
void update(long long int r, long long int v) {
  for (; r < sum.size(); r = (r | (r + 1))) {
    sum[r] += v;
  }
}
long long int getSum(long long int l, long long int r) {
  return getSum(r) - getSum(l - 1);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout << fixed << setprecision(15);
  srand(23);
  long long int n, k, p, x, y;
  cin >> n >> k >> p >> x >> y;
  vector<int> arr(n);
  long long int s = 0;
  for (int i = 0; i < k; ++i) {
    cin >> arr[i];
    s += arr[i];
  }
  long long int canGet = x - s;
  canGet -= n - k;
  if (canGet < 0) {
    cout << "-1";
    return 0;
  }
  s = 0;
  for (int i = 0; i < n - k; ++i) {
    auto& v = arr[i + k];
    v = 1 + min(canGet, y - 1);
    canGet -= v - 1;
  }
  auto cp = arr;
  for (int i = 0; i < n; ++i) {
    s += arr[i];
  }
  sort(arr.begin(), arr.end());
  if (arr[n / 2] >= y && s <= x) {
    for (int i = 0; i < n - k; ++i) {
      auto& v = cp[i + k];
      cout << v << " ";
    }
  } else {
    cout << "-1";
  }
  return 0;
}
