#include <bits/stdc++.h>
#pragma warning(disable : 4996)
using namespace std;
int n;
long long x;
long long m;
long long a[300000];
int pm[300000];
int main() {
  int i, j, k, l;
  cin >> n >> m >> x;
  int pro = 1;
  for (i = 0; i < n; i++)
    scanf("%lld", &a[i]), pm[i] = a[i] >= 0 ? 1 : -1, pro *= pm[i];
  if (pro == -1) {
    priority_queue<pair<long long, long long>,
                   vector<pair<long long, long long>>,
                   greater<pair<long long, long long>>>
        pq;
    for (i = 0; i < n; i++) pq.emplace(abs(a[i]), i);
    while (m--) {
      auto tar = pq.top().second;
      pq.pop();
      a[tar] += x * pm[tar];
      pq.emplace(abs(a[tar]), tar);
    }
    for (i = 0; i < n; i++) printf("%lld ", a[i]);
    return 0;
  }
  long long mi = 0x3f3f3f3f3f3f3f3fll, mii;
  for (i = 0; i < n; i++)
    if (mi > abs(a[i])) mi = abs(a[i]), mii = i;
  if (mi - m * x >= 0) {
    for (i = 0; i < n; i++)
      printf("%lld ", i == mii ? a[i] - m * x * pm[i] : a[i]);
    return 0;
  } else {
    a[mii] -= x * (mi / x + 1) * pm[mii];
    pm[mii] *= -1;
    m -= mi / x + 1;
    priority_queue<pair<long long, long long>,
                   vector<pair<long long, long long>>,
                   greater<pair<long long, long long>>>
        pq;
    for (i = 0; i < n; i++) pq.emplace(abs(a[i]), i);
    while (m--) {
      auto tar = pq.top().second;
      pq.pop();
      a[tar] += x * pm[tar];
      pq.emplace(abs(a[tar]), tar);
    }
    for (i = 0; i < n; i++) printf("%lld ", a[i]);
  }
  return 0;
}
