//In C<>de We Trust :D
#include <iostream>
#include <sstream>
#include <fstream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <set>
#include <vector>
#include <map>
#include <stack>
#include <queue>
#include <utility>
#include <bitset>
#include <iomanip>

using namespace std;

#define MohammadAmin main()
#define INF 1e9
#define ll long long
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pcc pair<char, char>
#define mpair make_pair
#define endl "\n"
#define c_false ios_base::sync_with_stdio(false)
#define pushb push_back
#define pushf push_front
#define popb pop_back
#define popf pop_front
#define X first
#define Y second
#define ashar(a) cout << fixed << setprecision((a))
#define reset(a,b) memset(a, b, sizeof(a))

ll gcd (ll a, ll b) {return ( a ? gcd(b%a, a) : b );}
ll power(ll a, ll n) {ll p = 1;while (n > 0) {if(n%2) {p = p * a;} n >>= 1; a *= a;} return p;}

int MohammadAmin {
	c_false;
	long double cur, dp[105][105][105], ans1 = 0, ans2 = 0, ans3 = 0;
	int r, s, p, x, y, z, t;
	cin >> r >> s >> p;
	dp[r][s][p] = 1;
	for (int sum = r + s + p; sum >= 0; sum--) {
		for (int i = r; i >= 0; i--) {
			for (int j = s; j >= 0; j--) {
				int k = sum - i - j;
				if (k < 0 || k > p) continue;
				if (i == 0 && j == 0) continue;
                if (i == 0 && k == 0) continue;
                if (j == 0 && k == 0) continue;
                cur = dp[i][j][k];
                x = i * j;
                y = j * k;
                z = i * k;
                t = z + y + x;
                if (i > 0) dp[i-1][j][k] += cur * x/t;
                if (j > 0) dp[i][j-1][k] += cur * y/t;
                if (k > 0) dp[i][j][k-1] += cur * z/t;
			}
		}
	}
	for (int i = 1; i <= r; i++) ans1 += dp[i][0][0];
	for (int i = 1; i <= r; i++) ans2 += dp[0][i][0];
	for (int i = 1; i <= r; i++) ans3 += dp[0][0][i];
	ashar(12);
	cout << ans1 << " " << ans2 << " " << ans3;
	return 0;
}


//In C<>de We Trust :D
#include <bits/stdc++.h>

using namespace std;

#define MohammadAmin main()
#define mpair make_pair
#define endl "\n"
#define c_false ios_base::sync_with_stdio(false)
#define pushb push_back
#define pushf push_front
#define popb pop_back
#define popf pop_front
#define sz size()
#define X first
#define Y second
#define ashar(a) cout << fixed << setprecision((a))
#define reset(a,b) memset(a, b, sizeof(a))
#define min(x, y) ((x) < (y) ? (x) : (y))
#define max(x, y) ((x) > (y) ? (x) : (y))
#define for0(a, n) for (int (a) = 0; (a) < (n); (a)++)
#define for1(a, n) for (int (a) = 1; (a) <= (n); (a)++)
#define rof0(a, n) for (int (a) = (n); (a) >= 0; (a)--)
#define For(i, a, n) for (int (i) = (a); (i) <= (n); (i)++)
#define rof(i, n, a) for (int (i) = (n); (i) >= (a); (i)--)

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<char, char> pcc;

const ll INF = 1e9, n_ = 110;
ll gcd (ll a, ll b) {return ( a ? gcd(b%a, a) : b );}
ll power(ll a, ll n) {ll p = 1;while (n > 0) {if(n%2) {p = p * a;} n >>= 1; a *= a;} return p;}
ld dp[n_][n_][n_], ansR, ansS, ansP, cur;
int R, S, P, p, x, y, z, t;

int MohammadAmin {
	c_false;
	cin >> R >> S >> P;
	dp[R][S][P] = 1;
	rof(sum, R + S + P, 1) {
		rof(r, R, 0) {
			rof(s, S, 0) {
				p = sum - r - s;
				if (p < 0 || p > P) continue;
				if ((r == 0 && s == 0) || (r == 0 && p == 0) || (s == 0 && p == 0)) continue;
				//cerr << r << " " << s << " " << p << " " << dp[r][s][p] << "\n";
				x = r * s;
				y = r * p;
				z = s * p;
				t = x + y + z;
				cur = dp[r][s][p];
				if (r > 0) dp[r-1][s][p] += cur * y / t;
				if (s > 0) dp[r][s-1][p] += cur * x / t;
				if (p > 0) dp[r][s][p-1] += cur * z / t;
			}
		}
	}
	for1(i, R) ansR += dp[i][0][0];
	for1(i, S) ansS += dp[0][i][0];
	for1(i, P) ansP += dp[0][0][i];
	ashar(12);
	cout << ansR << " " << ansS << " " << ansP << endl;
	return 0;
}


//In C<>de We Trust :D
#include <iostream>
#include <sstream>
#include <fstream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <set>
#include <vector>
#include <map>
#include <stack>
#include <queue>
#include <utility>
#include <bitset>
#include <iomanip>

using namespace std;

#define MohammadAmin main()
#define INF 1e9
#define ll long long
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pcc pair<char, char>
#define mpair make_pair
#define endl "\n"
#define c_false ios_base::sync_with_stdio(false)
#define pushb push_back
#define pushf push_front
#define popb pop_back
#define popf pop_front
#define X first
#define Y second
#define ashar(a) cout << fixed << setprecision((a))
#define reset(a,b) memset(a, b, sizeof(a))

ll gcd (ll a, ll b) {return ( a ? gcd(b%a, a) : b );}
ll power(ll a, ll n) {ll p = 1;while (n > 0) {if(n%2) {p = p * a;} n >>= 1; a *= a;} return p;}

int MohammadAmin {
	c_false;
	long double cur, dp[105][105][105], ans1 = 0, ans2 = 0, ans3 = 0;
	int r, s, p, x, y, z, t;
	cin >> r >> s >> p;
	dp[r][s][p] = 1;
	for (int sum = r + s + p; sum >= 0; sum--) {
		for (int i = r; i >= 0; i--) {
			for (int j = s; j >= 0; j--) {
				int k = sum - i - j;
				if (k < 0 || k > p) continue;
				if (i == 0 && j == 0) continue;
                if (i == 0 && k == 0) continue;
                if (j == 0 && k == 0) continue;
                cur = dp[i][j][k];
                x = i * j;
                y = j * k;
                z = i * k;
                t = z + y + x;
                if (i > 0) dp[i-1][j][k] += cur * x/t;
                if (j > 0) dp[i][j-1][k] += cur * y/t;
                if (k > 0) dp[i][j][k-1] += cur * z/t;
			}
		}
	}
	for (int i = 1; i <= r; i++) ans1 += dp[i][0][0];
	for (int i = 1; i <= r; i++) ans2 += dp[0][i][0];
	for (int i = 1; i <= r; i++) ans3 += dp[0][0][i];
	ashar(12);
	cout << ans3 << " " << ans2 << " " << ans1;
	return 0;
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_score = (x - sum) / (n - k);
      int [] result = new int [n-k];
      for (int j = k; j < n; j++)
      {
    	  scores[j] = new_score;
    	  result[j-k] = new_score;
      }

      Arrays.parallelSort(scores);

      if (scores[(n + 1) / 2] >= y)
      {
    	  for (int m = k; m < n; m++)
    	  {
    		  out.print(result[m-k] + " ");
    	  }
      }
      else
      {
    	  out.println(-1);
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;
        		  if (greedy == 0)
        		  {

        			  out.println(-1);
        			  meme = 1;

        		  }

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      for (int m = 0; m < n; m++)
	  {
		  out.print(scores[m] + " ");
	  }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	 out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      if (new_sum < (n - k))
      {
    	  out.println(-1);
    	  meme = 2;
      }
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;
        		  if (greedy == 0 && meme == 0)
        		  {

        			  out.println(-1);
        			  meme = 1;

        		  }

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (scores[(n + 1) / 2] >= y)
      {
    	  for (int m = k; m < n; m++)
    	  {
    		  out.print(result[m-k] + " ");
    	  }
      }
      else
      {
    	 out.println(-1);
      }

      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      if (new_sum < (n - k))
      {
    	  out.println(-1);
    	  meme = 2;
      }
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (scores[(n + 1) / 2] >= y && scores[0] > 0)
      {
    	  for (int m = k; m < n; m++)
    	  {
    		  out.print(result[m-k] + " ");
    	  }
      }
      else
      {
    	 out.println(-1);
      }

      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      while (counter < (n - k))
      {
    	  greedy = new_sum;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    		  if (greedy == 0 && counter != (n - k - 1))
    		  {
    			  out.println(-1);
    			  meme = 1;

    		  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	  out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      while (counter < (n - k))
      {
    	  greedy = y;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    		  if (greedy == 0 )
    		  {
    			  out.println(-1);
    			  meme = 1;

    		  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	    	 // out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      while (counter < (n - k))
      {
    	  greedy = y;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    		  if (greedy == 0 && counter != (n - k - 1))
    		  {
    			  out.println(-1);
    			  meme = 1;

    		  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	    	 // out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      while (counter < (n - k))
      {
    	  greedy = y;
		  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (scores[(n - 1) / 2] >= y && scores[0] > 0)
      {
    	  for (int m = k; m < n; m++)
    	  {
    		  out.print(result[m-k] + " ");
    	  }
      }
      else
      {
    	 out.println(-1);
      }

      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;
        		  if (greedy == 0)
        		  {
        			  out.println(-1);
        			  meme = 1;

        		  }

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	 out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      while (counter < (n - k))
      {
    	  greedy = y;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    		  if (greedy == 0 && counter != (n - k - 1))
    		  {
    			  out.println(-1);
    			  meme = 1;

    		  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	    	  out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (scores[(n + 1) / 2] >= y && scores[0] > 0)
      {
    	  for (int m = k; m < n; m++)
    	  {
    		  out.print(result[m-k] + " ");
    	  }
      }
      else
      {
    	 out.println(-1);
      }

      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      while (counter < (n - k))
      {
    	  greedy = new_sum;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (scores[(n + 1) / 2] >= y)
      {
    	  for (int m = k; m < n; m++)
    	  {
    		  out.print(result[m-k] + " ");
    	  }
      }
      else
      {
    	  out.println(-1);
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;
        		  if (greedy == 0)
        		  {

        			  out.println(-1);
        			  meme = 1;

        		  }

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	 out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;
        		  if (greedy == 0)
        		  {

        			  out.println(-1);
        			  meme = 1;

        		  }

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	 out.println("hello");
	    	 out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      while (counter < (n - k))
      {
    	  greedy = new_sum;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    		  if (greedy == 0)
    		  {
    			  out.println(-1);
    			  meme = 1;

    		  }
    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	  out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      if (new_sum < (n - k))
      {
    	  out.println(-1);
    	  meme = 2;
      }
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;
        		  if (greedy == 0 && meme == 0)
        		  {

        			  out.println(-1);
        			  meme = 1;

        		  }

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	 out.println(-1);
	      }
      }

      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      while (counter < (n - k))
      {
    	  greedy = y;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    		  if (greedy == 0 && counter != (n - k - 1))
    		  {
    			  out.println(-1);
    			  meme = 1;

    		  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	  out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      for (int m = 0; m < n; m++)
	  {
		  out.print(scores[m] + " ");
	  }
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;
        		  if (greedy == 0)
        		  {

        			  out.println(-1);
        			  meme = 1;

        		  }

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      for (int m = 0; m < n; m++)
	  {
		  out.print(scores[m] + " ");
	  }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	 out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      while (counter < (n - k))
      {
    	  greedy = y + 1;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    		  if (greedy == 0 && counter != (n - k - 1))
    		  {
    			  out.println(-1);
    			  meme = 1;

    		  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	  out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;
        		  if (greedy == 0)
        		  {

        			  out.println(-1);
        			  meme = 1;

        		  }

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      for (int m = 0; m < n; m++)
	  {
		  out.print(scores[m] + " ");
	  }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	 out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      while (counter < (n - k))
      {
    	  greedy = new_sum;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    		  if (greedy == 0)
    		  {
    			  out.println(-1);
    			  meme = 1;

    		  }
    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (scores[(n + 1) / 2] >= y && meme == 0)
      {
    	  for (int m = k; m < n; m++)
    	  {
    		  out.print(result[m-k] + " ");
    	  }
      }
      else
      {
    	  out.println(-1);
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      while (counter < (n - k))
      {
    	  greedy = new_sum;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    		  if (greedy == 0)
    		  {
    			  out.println(-1);
    		  }
    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (scores[(n + 1) / 2] >= y)
      {
    	  for (int m = k; m < n; m++)
    	  {
    		  out.print(result[m-k] + " ");
    	  }
      }
      else
      {
    	  out.println(-1);
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (scores[(n - 1) / 2] >= y && scores[0] > 0)
      {
    	  for (int m = k; m < n; m++)
    	  {
    		  out.print(result[m-k] + " ");
    	  }
      }
      else
      {
    	 out.println(-1);
      }

      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      while (counter < (n - k))
      {
    	  greedy = y;
    	  if ((n - k - (counter + 1)) == 0)
    	  {
    		  greedy = new_sum;
    	  }
    	  else
    	  {
    		  while (new_sum - greedy < (n - k - (counter + 1)))
        	  {
        		  greedy--;
        		  if (greedy == 0)
        		  {

        			  out.println(-1);
        			  meme = 1;

        		  }

        	  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	    	 out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      int meme = 0;
      Arrays.parallelSort(scores);
      while (counter < (n - k))
      {
    	  greedy = y;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  greedy--;
    		  if (greedy == 0)
    		  {
    			  out.println(-1);
    			  meme = 1;

    		  }

    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (meme == 0)
      {
	      if (scores[(n + 1) / 2] >= y)
	      {
	    	  for (int m = k; m < n; m++)
	    	  {
	    		  out.print(result[m-k] + " ");
	    	  }
	      }
	      else
	      {
	    	 out.println(-1);
	      }
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Arrays;
import java.util.Collections;
import java.util.*;

public class SchoolMarks{
   public static void main(String[] args) throws IOException {
      MyScanner sc = new MyScanner();
      out = new PrintWriter(new BufferedOutputStream(System.out));

      int n = sc.nextInt();
      int k = sc.nextInt();
      int p = sc.nextInt();
      int x = sc.nextInt();
      int y = sc.nextInt();
      int [] scores = new int [n];
      int sum = 0;
      for (int i = 0; i < k; i++)
      {
    	  scores[i] = sc.nextInt();
    	  sum += scores[i];
      }
      int new_sum = (x - sum);
      int [] result = new int [n-k];
      int counter = 0;
      int greedy = 0;
      while (counter < (n - k))
      {
    	  greedy = new_sum;
    	  while (new_sum - greedy < (n - k - (counter + 1)))
    	  {
    		  if (greedy == 0)
    		  {
    			  out.println(-1);
    		  }
    		  greedy--;
    	  }

    	  result[counter] = greedy;
    	  scores[k + counter] = greedy;
    	  new_sum = new_sum - greedy;
    	  counter++;

      }

      Arrays.parallelSort(scores);

      if (scores[(n + 1) / 2] >= y)
      {
    	  for (int m = k; m < n; m++)
    	  {
    		  out.print(result[m-k] + " ");
    	  }
      }
      else
      {
    	  out.println(-1);
      }

      out.println();
      out.close();

   }

   //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;

   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;

      public MyScanner() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }

      String next() {
          while (st == null || !st.hasMoreElements()) {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }

      int nextInt() {
          return Integer.parseInt(next());
      }

      long nextLong() {
          return Long.parseLong(next());
      }

      double nextDouble() {
          return Double.parseDouble(next());
      }

      String nextLine(){
          String str = "";
	  try {
	     str = br.readLine();
	  } catch (IOException e) {
	     e.printStackTrace();
	  }
	  return str;
      }

   }
}


import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.util.InputMismatchException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.io.BufferedOutputStream;
import java.util.StringTokenizer;
import java.io.Closeable;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.Flushable;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
	static class TaskAdapter implements Runnable {
		@Override
		public void run() {
			InputStream inputStream = System.in;
			OutputStream outputStream = System.out;
			Input in = new Input(inputStream);
			Output out = new Output(outputStream);
			BSchoolMarks solver = new BSchoolMarks();
			solver.solve(1, in, out);
			out.close();
		}
	}

	public static void main(String[] args) throws Exception {
		Thread thread = new Thread(null, new TaskAdapter(), "", 1<<29);
		thread.start();
		thread.join();
	}
	static class BSchoolMarks {
		public BSchoolMarks() {
		}

		public void solve(int kase, Input in, Output pw) {
			int n = in.nextInt(), k = in.nextInt(), p = in.nextInt(), x = in.nextInt(), y = in.nextInt(), cnt = 0, sum = 0;
			int[] arr = new int[k];
			for(int i = 0; i<k; i++) {
				sum += arr[i] = in.nextInt();
				if(arr[i]>=y) {
					cnt++;
				}
			}
			ArrayList<Integer> ans = new ArrayList<>();
			while(cnt<n+1 >> 1) {
				ans.add(y);
				sum += y;
				cnt++;
			}
			while(ans.size()+k<n) {
				ans.add(1);
				sum++;
			}
			if(ans.size()+k>n||sum>x) {
				pw.println("-1");
			}else {
				pw.println(ans);
			}
		}

	}

	static class Input {
		BufferedReader br;
		StringTokenizer st;

		public Input(InputStream is) {
			this(is, 1<<20);
		}

		public Input(InputStream is, int bs) {
			br = new BufferedReader(new InputStreamReader(is), bs);
			st = null;
		}

		public boolean hasNext() {
			try {
				while(st==null||!st.hasMoreTokens()) {
					String s = br.readLine();
					if(s==null) {
						return false;
					}
					st = new StringTokenizer(s);
				}
				return true;
			}catch(Exception e) {
				return false;
			}
		}

		public String next() {
			if(!hasNext()) {
				throw new InputMismatchException();
			}
			return st.nextToken();
		}

		public int nextInt() {
			return Integer.parseInt(next());
		}

	}

	static class Output implements Closeable, Flushable {
		public StringBuilder sb;
		public OutputStream os;
		public int BUFFER_SIZE;
		public boolean autoFlush;
		public String LineSeparator;

		public Output(OutputStream os) {
			this(os, 1<<16);
		}

		public Output(OutputStream os, int bs) {
			BUFFER_SIZE = bs;
			sb = new StringBuilder(BUFFER_SIZE);
			this.os = new BufferedOutputStream(os, 1<<17);
			autoFlush = false;
			LineSeparator = System.lineSeparator();
		}

		public void print(Object... o) {
			for(int i = 0; i<o.length; i++) {
				if(i!=0) {
					print(" ");
				}
				print(String.valueOf(o[i]));
			}
		}

		public void print(String s) {
			sb.append(s);
			if(autoFlush) {
				flush();
			}else if(sb.length()>BUFFER_SIZE >> 1) {
				flushToBuffer();
			}
		}

		public void println(String s) {
			sb.append(s);
			println();
			if(autoFlush) {
				flush();
			}else if(sb.length()>BUFFER_SIZE >> 1) {
				flushToBuffer();
			}
		}

		public void println() {
			sb.append(LineSeparator);
		}

		public <T> void println(Iterable<T> iter) {
			boolean first = true;
			for(T t: iter) {
				if(!first) {
					print(" ");
				}
				first = false;
				print(t);
			}
			println();
		}

		private void flushToBuffer() {
			try {
				os.write(sb.toString().getBytes());
			}catch(IOException e) {
				e.printStackTrace();
			}
			sb = new StringBuilder(BUFFER_SIZE);
		}

		public void flush() {
			try {
				flushToBuffer();
				os.flush();
			}catch(IOException e) {
				e.printStackTrace();
			}
		}

		public void close() {
			flush();
			try {
				os.close();
			}catch(IOException e) {
				e.printStackTrace();
			}
		}

	}
}


import java.util.Arrays;
import java.util.StringTokenizer;
import java.io.*;

public class Main {
    public static class FastReader
    {
        BufferedReader br;
        StringTokenizer st;
        public  FastReader()
        {
            br = new BufferedReader(new InputStreamReader(System.in));
        }
        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
        int nextInt()
        {
            return Integer.parseInt(next());
        }

        long nextLong()
        {
            return Long.parseLong(next());
        }

        double nextDouble()
        {
            return Double.parseDouble(next());
        }
        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

    }
    public static void main(String[] args) {
        FastReader s = new FastReader();
        Main obj = new Main();
        int n = s.nextInt();
        int k = s.nextInt();
        int p = s.nextInt();
        int x = s.nextInt();
        int y = s.nextInt();

        int[] arr = new int[n];
        int sum=0;
        for(int i=0;i<k;i++)
        {
            arr[i] = s.nextInt();
            sum+=arr[i];
        }
        for(int i=k;i<n;i++)
        {
            arr[i]=1;
            sum+=arr[i];
        }
        int count=0;
        int temp;
        if(n%2==0)
            temp=n/2;
        else
            temp=n/2 +1;
        if(sum>x)
            System.out.println(-1);
        else
        {
            for(int i=0;i<k;i++)
            {
                if(arr[i]>=y)
                    count++;

            }
            //System.out.println("count is"+count);
            if(count<temp)
            {
                temp=temp - count;
                for(int i=k;i<k+temp;i++)
                {
                    arr[i] = y;
                }
            }
            sum=0;
            for(int i=0;i<n;i++)
                sum+=arr[i];
            if(sum>x)
                System.out.println(-1);
            else {
                for (int i = k; i < n; i++)
                    System.out.print(arr[i] + " ");
            }
        }

    }

}


import java.util.Arrays;
import java.util.StringTokenizer;
import java.io.*;

public class Main {
    public static class FastReader
    {
        BufferedReader br;
        StringTokenizer st;
        public  FastReader()
        {
            br = new BufferedReader(new InputStreamReader(System.in));
        }
        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
        int nextInt()
        {
            return Integer.parseInt(next());
        }

        long nextLong()
        {
            return Long.parseLong(next());
        }

        double nextDouble()
        {
            return Double.parseDouble(next());
        }
        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

    }
    public static void main(String[] args) {
        FastReader s = new FastReader();
        Main obj = new Main();
        int n = s.nextInt();
        int k = s.nextInt();
        int p = s.nextInt();
        int x = s.nextInt();
        int y = s.nextInt();

        int[] arr = new int[n];
        int sum=0;
        for(int i=0;i<k;i++)
        {
            arr[i] = s.nextInt();
            sum+=arr[i];
        }
        for(int i=k;i<n;i++)
        {
            arr[i]=1;
            sum+=arr[i];
        }
        int count=0;
        int temp;
        if(n%2==0)
            temp=n/2;
        else
            temp=n/2 +1;
        if(sum>x)
            System.out.println(-1);
        else
        {
            for(int i=0;i<k;i++)
            {
                if(arr[i]>=y)
                    count++;

            }
            //System.out.println("count is"+count);
            if(count<temp)
            {
                temp=temp - count;
                for(int i=k;i<k+temp;i++)
                {
                    arr[i] = y;
                }
            }

            for(int i=k;i<n;i++)
                System.out.print(arr[i]+" ");

        }

    }

}


import java.util.Arrays;
import java.util.StringTokenizer;
import java.io.*;

public class Main {
    public static class FastReader
    {
        BufferedReader br;
        StringTokenizer st;
        public  FastReader()
        {
            br = new BufferedReader(new InputStreamReader(System.in));
        }
        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
        int nextInt()
        {
            return Integer.parseInt(next());
        }

        long nextLong()
        {
            return Long.parseLong(next());
        }

        double nextDouble()
        {
            return Double.parseDouble(next());
        }
        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

    }
    public static void main(String[] args) {
        FastReader s = new FastReader();
        Main obj = new Main();
        int n = s.nextInt();
        int k = s.nextInt();
        int p = s.nextInt();
        int x = s.nextInt();
        int y = s.nextInt();

        int[] arr = new int[n];
        int[] arr2  = new int[n];
        int sum=0;
        for(int i=0;i<k;i++)
        {
            arr[i] = s.nextInt();
            sum+=arr[i];
        }
        for(int i=k;i<n;i++)
        {
            arr[i]=1;
            sum+=arr[i];
        }
        int count=0;
        int temp;
        if(n%2==0)
            temp=n/2;
        else
            temp=n/2 +1;
        if(sum>x)
            System.out.println(-1);
        else
        {
            for(int i=0;i<k;i++)
            {
                if(arr[i]>=y)
                    count++;

            }
            //System.out.println("count is"+count);
            if(count<temp)
            {
                temp=temp - count;
                for(int i=k;i<k+temp && i<n;i++)
                {
                    arr[i] = y;
                }
            }
            sum=0;
            for(int i=0;i<n;i++)
                sum+=arr[i];
            if(sum>x)
                System.out.println(-1);
            else {
                for(int i=0;i<n;i++)
                    arr2[i] = arr[i];
                Arrays.sort(arr2);
                if (n % 2 == 0)
                    temp = n / 2;
                else
                    temp = n / 2 + 1;
                if (arr2[temp - 1] < y)
                    System.out.println(-1);
                else {
                    for (int i = k; i < n; i++)
                        System.out.print(arr[i] + " ");
                }
            }

        }

    }

}


import java.util.Arrays;
import java.util.StringTokenizer;
import java.io.*;

public class Main {
    public static class FastReader
    {
        BufferedReader br;
        StringTokenizer st;
        public  FastReader()
        {
            br = new BufferedReader(new InputStreamReader(System.in));
        }
        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
        int nextInt()
        {
            return Integer.parseInt(next());
        }

        long nextLong()
        {
            return Long.parseLong(next());
        }

        double nextDouble()
        {
            return Double.parseDouble(next());
        }
        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

    }
    public static void main(String[] args) {
        FastReader s = new FastReader();
        Main obj = new Main();
        int n = s.nextInt();
        int k = s.nextInt();
        int p = s.nextInt();
        int x = s.nextInt();
        int y = s.nextInt();

        int[] arr = new int[n];
        int sum=0;
        for(int i=0;i<k;i++)
        {
            arr[i] = s.nextInt();
            sum+=arr[i];
        }
        for(int i=k;i<n;i++)
        {
            arr[i]=1;
            sum+=arr[i];
        }
        int count=0;
        int temp;
        if(n%2==0)
            temp=n/2;
        else
            temp=n/2 +1;
        if(sum>x)
            System.out.println(-1);
        else
        {
            for(int i=0;i<k;i++)
            {
                if(arr[i]>=y)
                    count++;

            }
            //System.out.println("count is"+count);
            if(count<temp)
            {
                temp=temp - count;
                for(int i=k;i<k+temp && i<n;i++)
                {
                    arr[i] = y;
                }
            }
            sum=0;
            for(int i=0;i<n;i++)
                sum+=arr[i];
            if(sum>x)
                System.out.println(-1);
            else {
                Arrays.sort(arr);
                if (n % 2 == 0)
                    temp = n / 2;
                else
                    temp = n / 2 + 1;
                if (arr[temp - 1] < y)
                    System.out.println(-1);
                else {
                    for (int i = k; i < n; i++)
                        System.out.print(arr[i] + " ");
                }
            }

        }

    }

}


#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<ll> vi;
typedef pair<int,int> ii;
int main(){
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int n, k, p, x, y;
	cin>>n>>k>>p>>x>>y;
	vi a;
	vi ans;
	int sum = 0;
	for(int tmp, i=0;i<k;i++){
		cin>>tmp; a.push_back(tmp);
		sum+=tmp;
	}
	int mx = x  - sum;
	bool can=true;
	int cnt = 1;
	for(int i=k;i<n && can;i++){
	   // cout<<mx<<" "<<n-k-cnt<<endl;
		int cur = mx-y>n-cnt-k?y:1;
		ans.push_back(cur);
		a.push_back(cur);
		mx-=cur;
		cnt++;
		if(cur<1)can=false;
	//	cout<<cur<<endl;
	}
	sort(a.begin(), a.end());
	if(!can || a[n/2]<y){
		cout<<"-1";
	}
	else {
		for(int x:ans)cout<<x<<" ";
	}

	return 0;
}


#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<ll> vi;
typedef pair<int,int> ii;
int main(){
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int n, k, p, x, y;
	cin>>n>>k>>p>>x>>y;
	vi a;
	vi ans;
	int sum = 0;
	for(int tmp, i=0;i<k;i++){
		cin>>tmp; a.push_back(tmp);
		sum+=tmp;
	}
	int mx = x  - sum;
	bool can=true;
	int cnt = 1;
	for(int i=k;i<n && can;i++){
	   // cout<<mx<<" "<<n-k-cnt<<endl;
		int cur = mx-y>n-cnt-k?y:1;
		ans.push_back(cur);
		a.push_back(cur);
		mx-=cur;
		cnt++;
		if(cur<1)can=false;
	//	cout<<cur<<endl;
	}
	sort(a.begin(), a.end());
	if(mx<0 || !can || a[n/2]<y){
		cout<<"-1";
	}
	else {
		for(int x:ans)cout<<x<<" ";
	}

	return 0;
}


#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<ll> vi;
typedef pair<int,int> ii;
int main(){
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int n, k, p, x, y;
	cin>>n>>k>>p>>x>>y;
	vi a;
	vi ans;
	int sum = 0;
	for(int tmp, i=0;i<k;i++){
		cin>>tmp; a.push_back(tmp);
		sum+=tmp;
	}
	int mx = x  - sum;
	bool can=true;
	int cnt = 1;
	for(int i=k;i<n && can;i++){
	   // cout<<mx-y<<" "<<n-k-cnt<<endl;
		int cur = mx-y>=(n-cnt-k)?y:1;
		ans.push_back(cur);
		a.push_back(cur);
		mx-=cur;
		cnt++;
		if(cur<1)can=false;
	//	cout<<cur<<endl;
	}
	//for(int x:a)cout<<x<<" ";
	sort(a.begin(), a.end());
	if(mx<0 || !can || a[n/2]<y){
		cout<<"-1";
	}
	else {
		for(int x:ans)cout<<x<<" ";
	}

	return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main()
{
   int n,k,p,x,y;
   cin>>n>>k>>p>>x>>y;
   vector<int>v(k);
   int sum=0;
   for(int i=0;i<k;i++){
      cin>>v[i];
      sum+=v[i];
   }
   for(int med=y;med<=p;med++){
     int les=0;
     for(int i=0;i<k;i++){
        if(v[i]<med)++les;
     }
     int mor=k-les;
     int rgap=n-n/2-mor;
     int lgap=n/2-les;
     int sr=0,sl=0;
     if(les<=(n/2)){
        sr+=(med*rgap);
        sl+=lgap;
        if(sum+sr+sl<=x){
            for(int i=0;i<min(lgap,n-k);i++){
                cout<<"1"<<' ';
            }
            for(int i=0;i<min(rgap,n-k);i++){
                cout<<med<<' ';
            }
            cout<<endl;
            return 0;
        }
     }
   }
   cout<<"-1"<<endl;
   return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main()
{
   int n,k,p,x,y;
   cin>>n>>k>>p>>x>>y;
   vector<int>v(1005);
   int med=y,les=0;
   for(int i=0;i<k;i++){
    cin>>v[i];
    if(v[i]<y)++les;
   }
   if(les>n/2){cout<<"-1"<<endl;return 0;}
   int rem=n/2-les;
   int sum=0;
   for(int i=k;i<n;i++){
     if(rem){
        v[i]=1;
        --rem;
     }
     else{
        v[i]=med;
     }
   }
   for(int i=0;i<n;i++){
     sum+=v[i];
   }
   if(sum>x)cout<<"-1"<<endl;
   else
   {
       for(int i=k;i<n;i++){
        cout<<v[i]<<' ';
       }
       cout<<endl;
       return 0;
   }
}