#include <bits/stdc++.h>
using namespace std;
int t, n, tot = 0;
long long a[200005], k, ans[200005];
struct ljh {
  long long x, y;
  int id;
  bool operator<(const ljh& a) const { return a.y < y; }
} e[200005];
bool cmp(ljh u, ljh v) { return u.y < v.y; }
priority_queue<ljh> q;
int main() {
  cin >> n >> t >> k;
  for (int i = 1; i <= n; i++) {
    cin >> e[i].x;
    e[i].y = abs(e[i].x);
    e[i].id = i;
    if (e[i].x < 0) tot++;
  }
  if (tot % 2 == 0) {
    sort(e + 1, e + n + 1, cmp);
    if (e[1].x < 0) {
      while (t && e[1].x <= 0) {
        t--;
        e[1].x += k;
        e[1].y = abs(e[1].x);
      }
    } else {
      while (t && e[1].x >= 0) {
        t--;
        e[1].x -= k;
        e[1].y = abs(e[1].x);
      }
    }
  }
  for (int i = 1; i <= n; i++) q.push(e[i]);
  while (t) {
    ljh now = q.top();
    q.pop();
    if (now.x >= 0)
      now.x += k;
    else
      now.x -= k;
    now.y = abs(now.x);
    q.push(now);
    t--;
  }
  while (!q.empty()) {
    ans[q.top().id] = q.top().x;
    q.pop();
  }
  for (int i = 1; i <= n; i++) cout << ans[i] << " ";
  return 0;
}
