#include<bits/stdc++.h>

#define int long long
using namespace std;

vector<int> ans;

void ok(vector<int> a, int n, int t) {
    vector<int> mx(n + 1);
    int s = 0;
    for (int i = 0; i < n - 1; i++) s += a[i];
    for (int i = n - 1; i >= 0; i--) {
        if (s <= t) {
            mx[i] = max((t - s) / a[i] + i, mx[i + 1]);
        }
        if (i)
            s -= a[i - 1];
    }
    //for (int i : mx) cout << i << ' '; cout << '\n';
    s = 0;
    for (int i = 0; i < n; i++) {
        ans[i] = max(ans[i], mx[i] - i);
        ans[i] = max(ans[i], t / a[i]);
        s += a[i];
    }
}

void ok1(vector<int> a, int n, int t) {
    vector<int> mx(n + 1);
    int s = 0;
    for (int i = 0; i < n - 1; i++) s += a[i];
    for (int i = n - 1; i >= 0; i--) {
        if (s <= t) {
//            cout << i << ' ' << a[i] << ' ' << s << ' ' << (t - s) / a[i] << ' ' << s / a[i] << '\n';
            mx[i] = max((t - s) / a[i] + i, mx[i + 1]);
        }
        if (i)
            s -= a[i - 1];
    }
//    for (int i : mx) cout << i << ' '; cout << '\n';
    s = 0;
    for (int i = 0; i < n; i++) {
        ans[n - i - 1] = max(ans[n - i - 1], mx[i] - i);
        s += a[i];
    }
}

void XD_LMAO() {
    int n, m, t;
    cin >> n >> m >> t;
    ans.resize(n);
    vector<int> a(n);
    vector<int> b(m);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    for (int i = 0; i < m; i++) {
        cin >> b[i]; b[i]--;
    }
    ok(a, n, t);
    reverse(a.begin(), a.end());
    ok1(a, n, t);
    int res = 0;
    for (int i = 0; i < m; i++) {
        res = max(res, ans[b[i]]);
    }
    cout << res << '\n';
}

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int test_ = 1;
    //cin >> test_;
    while (test_--) {
        XD_LMAO();
    }
    return 0;
}
