#include <bits/stdc++.h>
using namespace std;
struct node {
  long long id, tea, ase;
  node(long long a, long long b) {
    id = a;
    tea = b;
  }
  bool operator<(const node &p) const { return p.tea < tea; }
};
vector<node> cups;
long long ans[110];
int main() {
  long long n, w, aa;
  scanf("%lld%lld", &n, &w);
  for (long long i = 1; i <= n; i++) {
    scanf("%lld", &aa);
    cups.push_back(node(i, aa));
  }
  sort(cups.begin(), cups.end());
  long long sum = 0;
  for (long long i = 0; i < cups.size(); i++) {
    if (cups[i].tea % 2 == 0) {
      sum += (long long)(cups[i].tea / 2);
      cups[i].ase = (long long)(cups[i].tea / 2);
    } else {
      sum += (long long)(cups[i].tea / 2);
      cups[i].ase = (long long)(cups[i].tea / 2);
      cups[i].ase++;
      sum++;
    }
  }
  if (sum > w) {
    cout << "-1" << endl;
    return 0;
  }
  w -= sum;
  for (long long i = 0; i < cups.size(); i++) {
    if ((cups[i].tea - cups[i].ase) <= w) {
      w -= (cups[i].tea - cups[i].ase);
      cups[i].ase = cups[i].tea;
    } else {
      cups[i].ase += w;
      w = 0;
    }
  }
  for (long long i = 0; i < cups.size(); i++) {
    ans[cups[i].id] = cups[i].ase;
  }
  for (long long i = 1; i <= n; i++) {
    printf("%lld ", ans[i]);
  }
  return 0;
}
