#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <set>
#include <map>
#include <array>
using namespace std;
typedef long long ll;
const ll Inf = 1e16;
/*struct SegmentTree {
    struct Node {
        ll sm;
        Node(ll a = 0) { sm = a; }
    };
    vector<Node>tree; ll n;
    SegmentTree(vector<ll>& a) {
        n = a.size(); tree.resize(4 * n);
        build(0, 0, n, a);
    }
    void build(ll v, ll l, ll r, vector<ll>&a) {
        if (r - l == 1) {
            tree[v] = Node(a[l]); return;
        }
        ll mid = (l + r)/2;
        build(2 * v + 1, l, mid, a);
        build(2 * v + 2, mid, r, a);
        tree[v] = merge(tree[2 * v + 1], tree[2 * v + 2]);
    }
    Node merge(Node&a, Node&b) {
        return Node(a.sm + b.sm);
    }
    Node get(ll v, ll l, ll r, ll ind) {
        if (r - l == 1)return tree[v];
        ll mid = (l + r) / 2;
        if (ind < mid)return get(2*v + 1, l, mid, ind);
        return get(2 * v + 2, mid, r, ind);
    }
};*/
int main()
{
    cin.tie(0)->sync_with_stdio(0);
    ll n, m, t; cin >> n >> m >> t;
    vector<ll>a(n); vector<ll>pref(n + 1);
    for (int i = 0; i < n; i++) {
        cin >> a[i]; pref[i + 1] = pref[i] + a[i];
    }
    ll ans = 0;
    for (int i = 0; i < n; i++) {
        ans = max(ans, t / a[i]);
    }
    while (m--) {
        ll q; cin >> q; q--;
    }
    cout << ans;
}