#include <bits/stdc++.h>
using namespace std;
const int N = 3e5, inf = 1e9, mod = 1e9 + 7;
const long long linf = 1e18;
long long a[N], best_plus, best_minus, worst_plus, worst_minus, ans;
int n, k, len;
multiset<long long> p, pa, m, ma;
void add(long long x) {
  if (x >= 0) {
    if (p.size() < k) {
      p.insert(x);
      best_plus += x;
    } else {
      if (!p.empty() && *p.begin() < x) {
        long long y = *p.begin();
        p.erase(p.find(y));
        pa.insert(y);
        worst_plus += y;
        best_plus -= y;
        best_plus += x;
        p.insert(x);
      } else {
        pa.insert(x);
        worst_plus += x;
      }
    }
  } else {
    if (m.size() < k) {
      m.insert(x);
      best_minus += x;
    } else {
      if (!m.empty() && *m.rbegin() > x) {
        long long y = *m.rbegin();
        best_minus -= y;
        worst_minus += y;
        ma.insert(y);
        m.erase(m.find(y));
        m.insert(x);
        best_minus += x;
      } else {
        ma.insert(x);
        worst_minus += x;
      }
    }
  }
}
void dlt(long long x) {
  if (x >= 0) {
    if (p.find(x) != p.end()) {
      p.erase(p.find(x));
      best_plus -= x;
      if (!pa.empty()) {
        x = *pa.rbegin();
        worst_plus -= x;
        pa.erase(pa.find(x));
        p.insert(x);
        best_plus += x;
      }
    } else {
      pa.erase(pa.find(x));
      worst_plus -= x;
    }
  } else {
    if (m.find(x) != m.end()) {
      m.erase(m.find(x));
      best_minus -= x;
      if (!ma.empty()) {
        x = *ma.begin();
        worst_minus -= x;
        ma.erase(ma.find(x));
        m.insert(x);
        best_minus += x;
      }
    } else {
      ma.erase(ma.find(x));
      worst_minus -= x;
    }
  }
}
void update_ans() {
  ans = max(ans, max(abs(best_plus + worst_plus + worst_minus - best_minus),
                     abs(worst_minus + best_minus - best_plus + worst_plus)));
}
int main() {
  scanf("%d%d", &n, &len);
  for (int i = 1; i <= n; i++) scanf("%I64d", &a[i]);
  scanf("%d", &k);
  for (int i = 1; i <= len; i++) add(a[i]);
  update_ans();
  for (int i = len + 1; i <= n; i++) {
    dlt(a[i - len]);
    add(a[i]);
    update_ans();
  }
  printf("%I64d", ans);
  return 0;
}
