#include <bits/stdc++.h>
using namespace std;

//4 3 2
//-2 4 4 -5

long long maskimalna_vrednost_aure(const vector<int>& k, int x) {
    
    int duzina = k.size();
    //cout << "DUZINA K = " << duzina << '\n';
    //sufiksni niz
    vector<long long> suf(duzina);
    suf[0] = 0;
    
    for(int i = 1; i < duzina; i++) {
        suf[i] = suf[i-1] + k[duzina - i];
        //cout << "dodajemo suf[" << i << "] = " << suf[i] << '\n';
    }
    
    /*cout << "sufiksi niz:" << '\n';
    for(int i = 0; i < duzina; i++) {
        cout << suf[i] << " ";
    }*/
    
    //cout << '\n';
    
    //parovi: indeks - prefiks
    vector<pair<int, long long>> parovi(duzina);
    for(int i = 0; i < duzina; i++) {
        parovi[i].first = duzina - i - 1;
        parovi[i].second = suf[i];
    }
    
    //cout << "parovi: " << '\n';
    /*for(int i = 0; i < duzina; i++) {
        cout << "{" << parovi[i].first << ", " << parovi[i].second << "} ";
    }*/

    
    //sortiranje po prioritetu
    sort(parovi.begin(), parovi.end(), [](pair<int, long long> &a, pair<int, long long> &b) {
        return a.second > b.second;
    });
    
    //cout << '\n';
    //cout << "sortirani parovi: " << '\n';
    /*for(int i = 0; i < duzina; i++) {
        cout << "{" << parovi[i].first << ", " << parovi[i].second << "} ";
    }*/
    
    //prvih x indexa za c++
    set<int> indeksi;
    for(int i = 0; i < x - 1; i++) {
        indeksi.insert(parovi[i].first);
    }
    
    //cout << '\n';
    //cout << "uzimamo indekse: ";
    /*for(int i : indeksi) {
        cout << i << " ";
    }*/
    
    //racunamo a
    long long a = 0;
    int c = 1;
        
    for(int i = 0; i < duzina; i++) {
        a += k[i]*c;
            
        if (indeksi.find(i) != indeksi.end()) {
            c++;
        }
        //cout << "prolaz " << j << " a = " << a << "   c = " << c << '\n';
    }
        
    //cout << "***podniz: " << i << "->" << i+k << "  a =" << a << '\n';
    //cout << '\n';
    //cout << "RESENJE: " << a << '\n';
    
        
    return a;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n;  //duzina niza p
    int k;  //duzine podnizova
    int x;  //kranja vrednost c
    
    cin >> n >> k >> x;
    
    vector<int> p(n);
    
    for(int i = 0; i < n; i++) {
        cin >> p[i];
    }
    
    //pravimo prvi podniz
    vector<int> podniz(k);
    for(int i = 0; i < k; i++) {
        podniz[i] = p[i];
    }
    
    for(int i = 0; i < (n-k+1); i++) {
        //cout << "***NAREDNI PODNIZ: ";
        /*for(int i = 0; i < k; i++) {
            cout << podniz[i] << " ";
        }*/
        cout << maskimalna_vrednost_aure(podniz, x) << " ";
        podniz.erase(podniz.begin());
        podniz.push_back(p[k+i]);
    }
    
    return 0;
}