#include <bits/stdc++.h>
using namespace std;
long long i, j, k, p, l, m, n, mx, mn, pas, x, ans, e, t = 0;
vector<long long> v;
long long fx[(long long)(4e5 + 11)];
set<pair<long long, pair<bool, long long> > > s;
set<pair<long long, pair<bool, long long> > >::iterator it;
pair<long long, pair<bool, long long> > pp;
long long a[(long long)(4e5 + 11)];
void prc() {
  for (int i = 0; i < n; i++) {
    cout << a[i] << " ";
  }
}
void inc() {
  pp = *s.begin();
  long long t = 0;
  if (pp.second.first)
    t = pp.first;
  else
    t = -pp.first;
  a[pp.second.second] += x;
  t += x;
  s.erase(s.begin());
  s.insert({abs(t), {(t > 0) ? 1 : 0, pp.second.second}});
}
void dcr() {
  pp = *s.begin();
  long long t = 0;
  if (pp.second.first)
    t = pp.first;
  else
    t = -pp.first;
  a[pp.second.second] -= x;
  t -= x;
  s.erase(s.begin());
  s.insert({abs(t), {(t > 0) ? 1 : 0, pp.second.second}});
}
int main() {
  cin >> n >> k >> x;
  long long cz = 0;
  bool make_pair, o = 1;
  for (int i = 0; i < n; i++) {
    cin >> p;
    a[i] = p;
    if (p == 0) cz++;
    make_pair = (p > 0) ? 1 : 0;
    if (p && !make_pair) o ^= 1;
    s.insert({abs(p), {make_pair, i}});
  }
  if (cz) {
    if (cz > k) {
      prc();
      return 0;
    } else {
      if (o) {
        cz--;
        k--;
        o = 0;
        dcr();
      }
      while (cz--) inc(), k--;
      if (!k) {
        prc();
        return 0;
      }
    }
  }
  if (o) {
    pp = *s.begin();
    long long t = 0;
    if (pp.second.first)
      t = pp.first;
    else
      t = -pp.first;
    j = 0;
    while (k && j < abs(t) / x + 1) {
      if (pp.second.first == 1)
        dcr();
      else
        inc();
      j++;
      k--;
    }
    if (!k) {
      prc();
      return 0;
    }
  }
  while (k) {
    pp = *s.begin();
    if (pp.second.first == 1)
      inc();
    else
      dcr();
    k--;
  }
  prc();
  return 0;
}
