#include <bits/stdc++.h>
using namespace std;
struct node {
  int val, ind, col;
} t[120];
bool cmp1(node x, node y) { return x.col > y.col; }
bool cmp2(node x, node y) { return x.ind < y.ind; }
int main() {
  int n, w, a;
  while (~scanf("%d%d", &n, &w)) {
    for (int i = 0; i < n; i++) {
      scanf("%d", &a);
      int tt = a / 2;
      if (a & 1) tt++;
      w -= tt;
      t[i].col = a;
      t[i].val = tt;
      t[i].ind = i;
    }
    if (w < 0) {
      printf("-1\n");
      continue;
    }
    sort(t, t + n, cmp1);
    bool flag = true;
    while (w > 0) {
      int i;
      for (i = 0; i < n; i++) {
        int yu = t[i].col - t[i].val;
        if (w <= yu) {
          t[i].val += w;
          w = 0;
          break;
        } else {
          t[i].val = t[i].col;
          w -= yu;
        }
      }
      if (i == n && w > 0) {
        flag = false;
        break;
      }
    }
    if (flag == false) {
      printf("-1\n");
      continue;
    }
    sort(t, t + n, cmp2);
    for (int i = 0; i < n; i++)
      printf("%d%c", t[i].val, i == n - 1 ? '\n' : ' ');
  }
  return 0;
}
