#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = 5e5 + 10;
ll c, n, k, f[N], g[N], s[N], ans[N];
struct node{
ll v, id;
}a[N];
bool cmp(node x, node y){
return x.v < y.v;
}
int main(){
cin >> c >> n >> k;
for (int i = 1; i <= n; i++){
cin >> a[i].v;
a[i].id = i;
}
sort(a + 1, a + n + 1, cmp);
ll tag, cnt = 0, tmpcnt = 1;
for (int i = 1; i <= n; i++)
s[i] = s[i-1] + a[i].v;
for (int i = n; i >= 1; i--){
if (a[i].v != a[i+1].v){
cnt += tmpcnt;
tmpcnt = 1;
if (cnt == k){
tag = a[i].v;
break;
}else if (cnt > k){
tag = a[i+1].v;
break;
}
}else ++tmpcnt;
}
a[n+1].v = 2000000000;
for (int i = 1; i <= n; i++){
int pos1 = upper_bound(a+1, a+n+2, a[i], cmp)-a;
f[i] = n - pos1 + 2;
int pos2 = lower_bound(a+1, a+n+2, a[i], cmp)-a;
g[i] = n - pos2 + 1;
if (g[i] < k)
ans[a[i].id] = (k-g[i])*a[i].v - (s[i-1]-s[i-(k-g[i])-1]);
else if (f[i] > k)
ans[a[i].id] = tag - a[i].v;
}
for (int i = 1; i <= n; i++)
cout << ans[i] << endl;
return 0;
}