#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
long long data[N];
long long tmp[N];
long long dp[N];
int n, m, k;
int main() {
  cin >> n >> m >> k;
  long long ans = 0;
  for (int i = 0; i < n; i++) {
    cin >> data[i];
  }
  for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
      tmp[j] = data[j];
      if (j % m == i) tmp[j] -= k;
    }
    long long maxx = 0;
    for (int j = 0; j < n; j++) {
      dp[j] = (j == 0 ? tmp[j] : (dp[j - 1] > 0 ? dp[j - 1] + tmp[j] : tmp[j]));
      if (j % m == i) ans = max(max(dp[j], 0ll), ans);
    }
  }
  cout << ans << endl;
  return 0;
}
