#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10, mod = 1e9 + 7;
int n, m, k, t, a[17];
void dfs(int l, int r, long long x, vector<long long>& p) {
  if (l > r) {
    p.push_back(x);
    return;
  }
  if (x <= (long long)1e18 / a[l]) {
    dfs(l, r, x * a[l], p);
  }
  dfs(l + 1, r, x, p);
}
int main() {
  int i, j;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%d", &a[i]);
  vector<long long> pl, pr;
  dfs(1, min(6, n / 2), 1, pl);
  dfs(min(6, n / 2) + 1, n, 1, pr);
  long long k;
  scanf("%lld", &k);
  sort(pl.begin(), pl.end());
  sort(pr.begin(), pr.end());
  long long l = 1, r = 1e18, ret;
  while (l <= r) {
    long long mid = l + r >> 1;
    long long now = 0;
    int pos = 0;
    for (i = pl.size() - 1; i >= 0; i--) {
      while (pos < pr.size() && pl[i] <= mid / pr[pos]) {
        pos++;
      }
      now += pos;
    }
    if (now >= k)
      ret = mid, r = mid - 1;
    else
      l = mid + 1;
  }
  printf("%lld\n", ret);
  return 0;
}
