#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define ve vector
#define pb push_back
ll const inf = 1e9 + 3;
ll const INF = 1e18;
//#pragma GCC ("O2")

struct Node {
    ll val = 0;
    ll added = 0;
    bool is_added = false;
};

ve<Node> tree;

void build(ll v, ll tl, ll tr) {
    if (tr - tl == 1) {

        return;
    }
    ll m = (tl + tr) / 2;
    build(2 * v, tl, m);
    build(2 * v + 1, m, tr);
}

void add_to_Node(ll v, ll tl, ll tr, ll val) {
    tree[v].val += (tr - tl) * val;
    tree[v].added += val;
    tree[v].is_added = true;
}

void push(ll v, ll tl, ll tr) {
    if (tree[v].is_added) {
        ll m = (tl + tr) / 2;
        add_to_Node(2 * v, tl, m, tree[v].added);
        add_to_Node(2 * v + 1, m, tr, tree[v].added);
        tree[v].added = 0;
        tree[v].is_added = false;
    }
}

void Add(ll v, ll tl, ll tr, ll ql, ll qr, ll val) {
    if (tl >= qr || tr <= ql)
        return;
    if (tr == qr && tl == ql) {
        add_to_Node(v, tl, tr, val);
        return;
    }
    ll m = (tl + tr) / 2;
    push(v, tl, tr);
    Add(2 * v, tl, m, ql, min(m, qr), val);
    Add(2 * v + 1, m, tr, max(m, ql), qr, val);
    tree[v].is_added = 0;
    tree[v].val = tree[2 * v].val + tree[2 * v + 1].val;
}

ll get_sum(ll v, ll tl, ll tr, ll ql, ll qr) {
    if (tr == qr && tl == ql) {
        return tree[v].val;
    }
    push(v, tl, tr);
    ll m = (tl + tr) / 2;
    ll s1 = get_sum(2 * v, tl, m, ql, min(qr, m));
    ll s2 = get_sum(2 * v + 1, m, tr, max(m, qr), ql);
    return s1 + s2;
}

ve<ve<ll>> edges;
ve<ll> depth;
ve<bool> used;

void dfs(ll v) {
    used[v] = true;
    for (auto it: edges[v]) {
        if (!used[it]) {
            depth[it] = depth[v] + 1;
            dfs(it);
        }
    }
}

int main() {
#ifdef DEBUG_Q
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    ll n, i, j, m, T;
    cin >> n >> m >> T;
    ll a[n];
    ll b[m];
    for (i = 0; i < n; i++) {
        cin >> a[i];
    }
    for(i = 0; i < m; i++){
        cin >> b[i];
        b[i]--;
    }
    ll mn = inf;
    for(i = 0; i < n; i++){
        mn = min(mn, a[i]);
    }
    cout << T / mn;
}
