#include<bits/stdc++.h>

#pragma GCC optimize("O2")
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")

#define int long long

#define pii pair<int,int>
#define ii int,int
#define fi first
#define se second
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define umap unordered_map
#define BIT(mask, i) ((mask >> i)&1)
#define ALL(c) c.begin(), c.end()

using namespace std;

mt19937 rd(chrono::high_resolution_clock::now().time_since_epoch().count());
int rand(int l, int r){
    return  l + rd()*rd()%(r-l+1);
}

const int N = 1e6+7;
const int M = 1e3+3;
const int MOD = 1e9+7;
const int inf = 3e18;

int n, q, a[N], r;
int pos[N]; // pos[i] = số camera quét qua i

void sub1(){ // Bruteforce
    for(int i = 1; i <= q; i++){
        for(int j = max(a[i] - r, 1*1ll); j <= min(a[i] + r, n); j++){
            pos[j]++; // đánh dấu camera thứ i quét qua pos[j]
        }
    }
    for(int i = 1; i <= n; i++){
        cout << pos[i] << ' ';
    }
}

void sub2(){ // Sử dụng mảng tổng tiền tố
    for(int i = 1; i <= q; i++){ // duyệt tất cả các camera
        int l = max(a[i] - r, 1*1ll);
        int R = min(a[i] + r, n);
        pos[l]++;
        pos[R+1]--;
    }
    for(int i = 1; i <= n; i++){
        pos[i] += pos[i-1];
    }
    for(int i = 1; i <= n; i++) cout << pos[i] << ' ';
}

void solve(){
    cin >> n >> q >> r;
    for(int i = 1; i <= q; i++){
        cin >> a[i];
    }
    sub2();
}

signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    solve();
}

