#include <bits/stdc++.h>
#define REP(i, n) for(int i = 0; i < n; ++i)
using namespace std;
using LLONG = long long;
LLONG K, N, M;
vector<LLONG> As, Bs;

bool CanDo(const LLONG x)
{
	vector<LLONG> Ls(K), Rs(K);
	REP(i, K)
	{
		LLONG Ai = As[i];
		Ls[i] = (M * Ai - x + N - 1) / N;
		Rs[i] = (M * Ai + x) / N;
	}
	LLONG sumB = accumulate(Ls.begin(), Ls.end(), 0LL);
	REP(i, K) Bs[i] = Ls[i];
	REP(i, K)
	{
		if (sumB >= M) break;
		LLONG maxDiff = min(M - sumB, Rs[i] - Ls[i]);
		sumB += maxDiff;
		Bs[i] += maxDiff;
	}
	return accumulate(Ls.begin(), Ls.end(), 0LL) <= M && M <= accumulate(Rs.begin(), Rs.end(), 0LL);
}

int main()
{
	cin >> K >> N >> M;
	As.assign(K, 0);
	Bs.assign(K, 0);
	REP(i, K) cin >> As[i];
	LLONG ng = 1;
	LLONG ok = N * M;
	while (ok > ng + 1)
	{
		LLONG m = (ok + ng) / 2;
		if (CanDo(m)) 
		{
			ok = m;
		}    
		else
		{
			ng = m;
		}
	}
	CanDo(ok);
	for (const LLONG bi : Bs)
	{
		cout << bi << ' ';
	}
	cout << endl;
}


#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/detail/standard_policies.hpp>
using namespace __gnu_pbds;
using namespace std;


#define LETS_GET_SCHWIFTY ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);  
#define ff              first
#define ss              second
#define int             long long
#define ll              long long
#define pb              push_back
#define pii             pair<int,int>
#define vi              vector<int>
#define pqb             priority_queue<int>
#define pqs             priority_queue<int,vi,greater<int> >
#define setbits(x)      __builtin_popcountll(x)
#define zerobits(x)      __builtin_ctzll(x)
#define mod             998244353
#define inf             1e18
#define ps(x,y)         fixed<<setprecision(y)<<x
#define vpii            vector<pair<int,int> >
#define all(x)          x.begin(),x.end()
#define matrixprint(arr,a,b,c,d) for(int i=a;i<=c;i++){for(int j=b;j<=d;j++){cout<<arr[i][j]<<" ";}cout<<"\n";}
#define show(arr,x,y)   for(int i=x;i<=y;i++){cout<<arr[i]<<" ";}cout<<"\n"
#define sz(x)           (int)x.size()
#define db(x)           cout<<x<<"\n";

typedef tree<
int,
null_type,
less<int>,
rb_tree_tag,
tree_order_statistics_node_update>
ordered_set;

//insert,find_by_order,order_of_key,lower_bound,upper_bound;

#define TRACE
#ifdef TRACE
#define deb(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
    cout << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
    const char* comma = strchr(names + 1, ','); cout.write(names, comma - names) << " : " << arg1 << " | "; __f(comma + 1, args...);
}
#else
#define deb(...)
#endif

  
//////////////////////////////code//////////////////////////////

const int N = 200;


bool cmp(pii p1 , pii p2)
{
        return p1.ss < p2.ss;
}


void solve()
{
        int k , n , m;
        cin >> k >> n >> m;

        vi arr(k);

        for(int i = 0;i < k; i++)
          cin >> arr[i], arr[i]*=m;

        vi ans;

        int sum = m;

        for(int i = 0;i < k; i++)
        {
                ans.pb(arr[i]/n);
                sum -= arr[i]/n;
        }    

       set<pii>s;

       for(int i = 0;i < k ;i++)
       {
            s.insert({arr[i]-ans[i]*n,i});
       }

     //  deb(sum);

       while(sum > 0)
       {
                auto it = (--s.end());

                sum--;
                ans[it->ss]++;
                int diff = arr[it->ss] - ans[it->ss]*n;
                int j = it->ss;
                s.erase(it);
                s.insert({diff,j});
       }

       show(ans , 0 , k - 1);

}

int32_t main()
{   

    LETS_GET_SCHWIFTY;

     #ifndef ONLINE_JUDGE
     freopen("INP.txt", "r", stdin);
     freopen("out.txt", "w", stdout);
     #endif  


    int t = 1;
  // cin >> t;

    while (t--)
        solve();

}

// check out for following mistakes-
// if using pb operation on vector and then trying to access index..check if sizeof that vec could remain 0 only
// is using prime sieve make sure it fits
// when using factorial template or combinatorics make sure that you edit fillfac fun values and array values

