#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e6 + 4;
struct Node {
  long long in;
  long long w;
  int s;
  bool operator<(const Node &a) const { return a.w < w; }
};
Node b[maxn];
bool cmpp(Node a, Node b) { return a.in < b.in; }
long long c[maxn];
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long n, k, x;
  cin >> n >> k >> x;
  priority_queue<Node> q;
  long long cc = 0;
  long long now = 1000000007, mii;
  for (long long i = 0; i < n; i++) {
    cin >> c[i];
    long long d = c[i];
    if (d < 0) cc++;
    if (abs(d) < now) {
      mii = i;
      now = abs(d);
    }
  }
  int f = 0;
  if (cc % 2 == 0) {
    if (c[mii] >= 0) {
      while (c[mii] >= 0 && k) {
        k--;
        c[mii] -= x;
      }
    } else {
      while (c[mii] <= 0 && k) {
        k--;
        c[mii] += x;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    Node vv;
    if (c[i] < 0) {
      vv.s = 0;
    } else {
      vv.s = 1;
    }
    vv.in = i;
    vv.w = abs(c[i]);
    q.push(vv);
  }
  if (k > 0) {
    while (k--) {
      Node vv;
      Node tmp = q.top();
      vv.w = tmp.w + x;
      vv.s = tmp.s;
      vv.in = tmp.in;
      q.pop();
      q.push(vv);
    }
  }
  int vv = 0;
  while (!q.empty()) {
    b[vv++] = q.top();
    q.pop();
  }
  sort(b, b + n, cmpp);
  for (int i = 0; i < n; i++) {
    if (b[i].s == 0) {
      b[i].w = -b[i].w;
    }
    cout << b[i].w << " ";
  }
}
