#include <bits/stdc++.h>
using namespace std;
int a[1010];
int main() {
  int n, k, p, x, y;
  cin >> n >> k >> p >> x >> y;
  for (int i = 0; i < 1010; i++) a[i] = p;
  int sum = 0;
  int smallcount = 0;
  for (int i = 0; i < k; i++) {
    cin >> a[i];
    sum += a[i];
    if (a[i] < y) smallcount++;
  }
  if (sum + n - k > x) {
    printf("-1\n");
    return 0;
  }
  if (smallcount > n / 2) {
    printf("-1\n");
    return 0;
  }
  sum += (n - k) * p;
  while (1) {
    int flag1 = 0;
    for (int i = k; i < n; i++) {
      while (a[i] > y) {
        sum--;
        a[i]--;
      }
      if (sum <= x) {
        flag1 = 1;
        break;
      }
    }
    vector<int> v;
    for (int i = 0; i < n; i++) v.push_back(a[i]);
    sort(v.begin(), v.end());
    if (v[n / 2] >= y && flag1 == 1) {
      for (int i = k; i < n; i++) cout << a[i] << " ";
      return 0;
    }
    int flag = 1;
    for (int i = k; i < n; i++) {
      if (a[i] != y) flag = 0;
    }
    if (flag == 1 && sum > x) break;
  }
  while (1) {
    int flag1 = 0;
    for (int i = k; i < n; i++) {
      while (a[i] > 1) {
        if (a[i] == y) smallcount++;
        if (smallcount > n / 2) {
          printf("-1\n");
          return 0;
        }
        a[i]--;
        sum--;
      }
      if (sum <= x) {
        flag1 = 1;
        break;
      }
    }
    vector<int> v;
    for (int i = 0; i < n; i++) v.push_back(a[i]);
    sort(v.begin(), v.end());
    if (v[n / 2] >= y && flag1 == 1) break;
  }
  for (int i = k; i < n; i++) cout << a[i] << " ";
  return 0;
}
