#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
int n;
int m, k;
long long ans;
set<pair<int, int> > an, anp;
int x[100000];
int go() {
  an.clear();
  anp.clear();
  long long cur = 0;
  for (int i = 0; i < n; i++) {
    if (x[i] >= 0)
      cur += x[i];
    else {
      cur -= x[i];
      anp.insert(make_pair(-x[i], i));
      if (((int)(anp).size()) > k) {
        pair<int, int> tmp = *anp.begin();
        anp.erase(anp.begin());
        cur -= tmp.first * 2;
        tmp.first = -tmp.first;
        an.insert(tmp);
      }
    }
    if (i >= m - 1) {
      ans = max(ans, cur);
      int j = i - m + 1;
      if (x[j] >= 0)
        cur -= x[j];
      else {
        if (anp.find(make_pair(-x[j], j)) != anp.end()) {
          cur += x[j];
          anp.erase(make_pair(-x[j], j));
          if (((int)(an).size()) > 0) {
            pair<int, int> tmp = *an.begin();
            an.erase(an.begin());
            cur -= tmp.first * 2;
            tmp.first = -tmp.first;
            anp.insert(tmp);
          }
        } else {
          cur -= x[j];
          an.erase(make_pair(x[j], j));
        }
      }
    }
  }
  return 0;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) scanf("%d", &x[i]);
  scanf("%d", &k);
  ans = 0;
  go();
  for (int i = 0; i < n; i++) x[i] = -x[i];
  go();
  cout << ans << endl;
  return 0;
}
