#include<bits/stdc++.h>
using namespace std;
long long n, k, x, brojac, stepeni[31];
long long niz[200050], gran;
long long maks[200050], rez, br, c;
bool skip;
long long minimum = -1000000000000000000;
vector<long long> vektor;
int main()
{
    cin >> n >> k >> x;
    for(int i=1; i<=n; i++)
        cin >> niz[i];

    stepeni[0] = 1;
    for(int i=1; i<=30; i++)
        stepeni[i] = stepeni[i-1] * 2;


    for(int i=0; i<stepeni[k]; i++) /// PRAVLJENJE BROJEVA ZA POVECAVANJE C NA TOM INDEKSU
    {
        brojac = 0;
        for(int j=0; j<k; j++)
        {
            if((i&stepeni[j]) >= 1)
                brojac++;
        }

        if(brojac == x-1)
            vektor.push_back(i);
    }

    for(int i=0; i<=n; i++)
        maks[i] = minimum;

    for(int j=0; j<vektor.size(); j++)
    {
        //for(int i=0; i<=4; i++)
        //    cout << (vektor[j] & stepeni[i]) << " ";
        //cout << "\n";


        for(int i=1; i<=n-k+1; i++) /// PROLAZI KROZ SVE POCETNE
        {
            c = 1;
            br = 0;
            rez = 0;
            for(int q=i; q<=i+k-1; q++) /// PROLAZI KROZ CEO NIZ
            {
                //cout << q << " ";
                rez += c * niz[q];
                if((vektor[j] & stepeni[br])) /// AKO JE VECI OD TOGA
                    c++;
                br++;
            }
            //cout << "\n";
            maks[i] = max(maks[i], rez);
        }
        //cout << "\n";
    }


    for(int i=1; i<=n-k+1; i++)
        cout << maks[i] << "\n";

    return 0;
}