#include <bits/stdc++.h>
int n, w, k, a[200010], t[200010], sz[2], heap[2][200010], ind[200010],
    pos[200010];
void push(int k, int opt);
int pop(int opt);
void del(int u, int opt);
void up(int u, int opt);
void down(int u, int opt);
int cmp(int u, int v, int opt);
void swap(int u, int v, int opt);
int main(void) {
  scanf("%d%d%d", &n, &w, &k);
  int i;
  for (i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (i = 1; i <= n; i++) scanf("%d", &t[i]);
  sz[0] = sz[1] = 0;
  memset(pos, -1, sizeof(pos));
  int l = 1, s = 0, st = 0, ans = 0, p;
  for (sz[0] = sz[1] = 0, i = 1; i <= n; i++) {
    push(i, 0);
    s += a[i];
    st += (t[i] + 1) / 2;
    if (sz[0] > w) {
      p = pop(0);
      st -= (t[p] + 1) / 2;
      push(p, 1);
      st += t[p];
    }
    while (st > k) {
      if (pos[l]) {
        del(ind[l], 1);
        s -= a[l];
        st -= t[l];
      } else {
        del(ind[l], 0);
        s -= a[l];
        st -= (t[l] + 1) / 2;
        if (sz[1]) {
          p = pop(1);
          st -= t[p];
          push(p, 0);
          st += (t[p] + 1) / 2;
        }
      }
      l++;
    }
    ans = ((ans) > (s) ? (ans) : (s));
  }
  printf("%d\n", ans);
  return 0;
}
void push(int k, int opt) {
  heap[opt][++sz[opt]] = k;
  pos[k] = opt;
  ind[k] = sz[opt];
  up(sz[opt], opt);
}
int pop(int opt) {
  int ans = heap[opt][1];
  swap(1, sz[opt], opt);
  sz[opt]--;
  down(1, opt);
  return ans;
}
void del(int u, int opt) {
  swap(u, sz[opt], opt);
  sz[opt]--;
  if (u > 1 && cmp(u, u / 2, opt) < 0)
    up(u, opt);
  else
    down(u, opt);
}
void up(int u, int opt) {
  if (u > 1 && cmp(u, u / 2, opt) < 0) {
    swap(u, u / 2, opt);
    up(u / 2, opt);
  }
}
void down(int u, int opt) {
  if (u * 2 > sz[opt]) return;
  int v = u * 2;
  if (v + 1 <= sz[opt] && cmp(v + 1, v, opt) < 0) v++;
  if (cmp(v, u, opt) < 0) {
    swap(u, v, opt);
    down(v, opt);
  }
}
int cmp(int u, int v, int opt) {
  int ans;
  if (t[heap[opt][u]] < t[heap[opt][v]])
    ans = -1;
  else if (t[heap[opt][u]] > t[heap[opt][v]])
    ans = 1;
  else
    ans = 0;
  if (opt) ans *= -1;
  return ans;
}
void swap(int u, int v, int opt) {
  int t1, t2;
  t1 = heap[opt][u];
  t2 = heap[opt][v];
  heap[opt][u] = t2;
  heap[opt][v] = t1;
  ind[t2] = u;
  ind[t1] = v;
}
