#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
struct erz {
  long long a;
  int b;
};
struct cmp {
  bool operator()(erz &p, erz &q) { return (p.a > q.a); }
};
priority_queue<erz, vector<erz>, cmp> Q;
erz mp(long long a, int b) {
  erz c;
  c.a = a, c.b = b;
  return (c);
}
long long wabs(long long x) {
  if (x < 0) x = -x;
  return (x);
}
int fh(long long x) {
  if (x >= 0)
    return 1;
  else
    return -1;
}
long long a[200005];
int main() {
  int i, n, m, f = 1;
  long long x;
  scanf("%d%d%I64d", &n, &m, &x);
  for (i = 1; i <= n; i++) {
    scanf("%I64d", &a[i]);
    if (a[i] < 0) f *= -1;
    Q.push(mp(wabs(a[i]), i));
  }
  for (i = 1; i <= m; i++) {
    int c = Q.top().b;
    Q.pop();
    long long ac = a[c];
    if (f == 1) {
      if (a[c] >= 0)
        a[c] -= x;
      else
        a[c] += x;
    } else {
      if (a[c] < 0)
        a[c] -= x;
      else
        a[c] += x;
    }
    if (fh(ac) != fh(a[c])) f *= -1;
    Q.push(mp(wabs(a[c]), c));
  }
  printf("%I64d", a[1]);
  for (i = 2; i <= n; i++) printf(" %I64d", a[i]);
  printf("\n");
  return 0;
}
