#include <bits/stdc++.h>
using namespace std;
long long aabs(long long a) {
  if (a < 0)
    return -a;
  else
    return a;
}
struct node {
  long long num;
  int id;
  bool operator<(const node &a) const { return aabs(num) > aabs(a.num); }
};
long long a[200005];
long long n, k, x;
int main() {
  int i;
  scanf("%I64d%I64d%I64d", &n, &k, &x);
  int sign = 1;
  priority_queue<node> que;
  for (i = 1; i <= n; i++) {
    scanf("%I64d", &a[i]);
    if (a[i] < 0) sign = -sign;
    que.push((node){a[i], i});
  }
  while (k--) {
    node temp = que.top();
    que.pop();
    if (a[temp.id] < 0) {
      if (sign == -1)
        a[temp.id] -= x;
      else
        a[temp.id] += x;
      if (a[temp.id] >= 0) sign = -sign;
    } else {
      if (sign == -1)
        a[temp.id] += x;
      else
        a[temp.id] -= x;
      if (a[temp.id] < 0) sign = -sign;
    }
    que.push((node){a[temp.id], temp.id});
  }
  for (i = 1; i < n; i++) {
    printf("%I64d ", a[i]);
  }
  printf("%I64d\n", a[n]);
  return 0;
}
