#include <stdio.h>
#include <stdlib.h>

int main() {
    int duzinaNiza, duzinaPodniza, krajnjiKoeficijent;
    scanf("%d %d %d", &duzinaNiza, &duzinaPodniza, &krajnjiKoeficijent);

    int glavniNiz[200000];
    for (int i = 0; i < duzinaNiza; i++) {
        scanf("%d", &glavniNiz[i]);
    }

    long nizRezultata[200000];

    for (int start = 0; start <= duzinaNiza - duzinaPodniza; start++) {
        long najvecaAura = -10000000000000;

        // brute force: probaj sve raspodele povecanja
        int brojPovecanja = krajnjiKoeficijent - 1;

        // jednostavna varijanta: probaj svaku poziciju kao mesto povecanja
        for (int indeksPovecanja = 0; indeksPovecanja < duzinaPodniza; indeksPovecanja++) {
            long long aura = 0;
            int koeficijent = 1;
            int povecanja = 0;

            for (int j = 0; j < duzinaPodniza; j++) {
                aura += (long long)koeficijent * glavniNiz[start + j];
                // ako još imamo povecanja na raspolaganju, probaj da povecaš
                if (j >= indeksPovecanja && povecanja < brojPovecanja) {
                    koeficijent++;
                    povecanja++;
                }
            }
            if (aura > najvecaAura) najvecaAura = aura;
        }

        nizRezultata[start] = najvecaAura;
    }

    for (int i = 0; i <= duzinaNiza - duzinaPodniza; i++) {
        printf("%ld", nizRezultata[i]);
        if (i < duzinaNiza - duzinaPodniza) printf(" ");
    }
    printf("\n");

    return 0;
}