#include <bits/stdc++.h>
using namespace std;
inline int intin() {
  int x;
  scanf("%d", &x);
  return x;
}
inline long long llin() {
  long long x;
  scanf("%lld", &x);
  return x;
}
inline long double ldin() {
  long double x;
  scanf("%Lf", &x);
  return x;
}
const int N = 2e5 + 21;
long long a[N];
set<pair<long long, long long> > s;
int main() {
  long long n, k, x;
  cin >> n >> k >> x;
  int f = 0;
  for (int i = 0; i < n; i++) {
    scanf("%lld", a + i);
    f += a[i] < 0;
    s.insert(make_pair(abs(a[i]), i));
  }
  if (f % 2 == 0) {
    int pos = s.begin()->second;
    s.erase(s.begin());
    int sign = a[pos] >= 0;
    while ((a[pos] >= 0) == sign and k) {
      a[pos] += (sign ? -x : x);
      k--;
    }
    s.insert(make_pair(abs(a[pos]), pos));
  }
  while (k--) {
    int pos = s.begin()->second;
    if (a[pos] >= 0) {
      a[pos] += x;
    } else {
      a[pos] -= x;
    }
    s.erase(s.begin());
    s.insert(make_pair(abs(a[pos]), pos));
  }
  for (int i = 0; i < n; i++) {
    cout << a[i] << " ";
  }
  return 0;
}
