#define _CRT_SECURE_NO_WARNINGS
#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 50;
int a[N], t[N];
#define hlf(x) (((x) + 1) >> 1)
int main()
{
    int n, w, k;
    scanf("%d%d%d", &n, &w, &k);
    for (int i = 0; i < n; i++) scanf("%d", a + i);
    for (int i = 0; i < n; i++) scanf("%d", t + i);
    multiset<int> s1, s2;
    int tsum = 0, hsum = 0, ans = 0;
    for (int l = 0, r = 0; r < n; r++)
    {
        s1.insert(t[r]);
        tsum += hlf(t[r]);
        hsum += a[r];
        if (s1.size() > w)
        {
            int x = *s1.begin();
            s2.insert(x);
            tsum += x - hlf(x);
            s1.erase(s1.begin());
        }
        for (; l <= r && tsum > k; hsum -= a[l++])
            if (t[l] < *s1.begin())
                s2.erase(s2.find(t[l])), tsum -= t[l];
            else
            {
                s1.erase(s1.find(t[l]));
                tsum -= hlf(t[l]);
                if (!s2.empty())
                {
                    auto x = s2.end();
                    --x;
                    tsum += hlf(*x) - *x;
                    s1.insert(*x);
                    s2.erase(x);
                }
            }
        ans = max(ans, hsum);
    }
    printf("%d", ans);
    return 0;
}
