#define _USE_MATH_DEFINES

#include <cstdio>
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
#include <map>
#include <set>
#include <queue>
#include <cassert>
#include <stack>
#include <cstdlib>
#include <bitset>
#include <cmath>

#define forn(i,n) for (int i = 0; i < int(n); ++i)
#define pb push_back
#define all(a) a.begin(),a.end()
#define sz(a) int(a.size())
#define mp make_pair

using namespace std;

typedef long long li;
typedef long double ld;

typedef pair<int,int> pt;
#define ft first
#define sc second

const int INF = int(1e9);
const li INF64 = li(1e18);
const ld EPS = 1e-9;

//#define TASK_NAME ""

int n;
const int N = 2000;
li a[N];
li s;

bool read() {
	if (!(cin >> n))
		return false;
	forn (i, n)
		cin >> a[i];
	cin >> s;
	return true;
}

void solve() {
	sort(a, a + n);
	
	li ans = 0;
	li r = 0;

	int l = 0;
	while(l < n - 1)
	{
		while(l + 1 < n && a[l + 1] <= r + 1)
			l++;
		
		int need = 1;
		if (need > 0)
			ans += need, r += need * a[l];
		if (r >= s)
			break;
	}
	if (s > r)
	{
		li need = (s - r + a[l] - 1) / a[l];
		ans += need;
	}
	cout << ans << endl;
}

int main() {
#ifdef TASK_NAME
	freopen(TASK_NAME ".in", "r", stdin);
	freopen(TASK_NAME ".out", "w", stdout);
#endif

#ifdef _DEBUG
	freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
#endif

	while (read())
		solve();

	return 0;
}