#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int MaxN = 2e5 + 10;
struct node {
  int val;
  int id;
} arr[110];
bool cmp(node a, node b) {
  if (a.val == b.val) return a.id < b.id;
  return a.val > b.val;
}
int ans[110];
int main() {
  int n, w;
  scanf("%d%d", &n, &w);
  for (int i = 0; i < n; i++) {
    scanf("%d", &arr[i].val);
    arr[i].id = i;
  }
  sort(arr, arr + n, cmp);
  int p = w;
  int flag = 0;
  for (int i = 0; i < n; i++) {
    if (p - (arr[i].val + 1) / 2 < 0) {
      flag = 1;
      break;
    }
    p = p - (arr[i].val + 1) / 2;
    ans[arr[i].id] = (arr[i].val + 1) / 2;
  }
  if (flag) {
    printf("-1\n");
    return 0;
  }
  for (int i = 0; i < n; i++) {
    if (arr[i].val - ans[arr[i].id] <= p) {
      p = p - (arr[i].val - ans[arr[i].id]);
      ans[arr[i].id] = arr[i].val;
    } else
      ans[arr[i].id] += p, p = 0;
    if (p == 0) break;
  }
  if (p == 0)
    for (int i = 0; i < n; i++) {
      if (i == 0)
        printf("%d", ans[0]);
      else
        printf(" %d", ans[i]);
    }
  else
    printf("-1");
  printf("\n");
  return 0;
}
