#include <bits/stdc++.h>
using namespace std;
long long a[20];
vector<long long> v[2];
void dfs(long long val, int d, int id, int mx) {
  if (d == mx) {
    v[id].push_back(val);
    return;
  }
  dfs(val, d + 1, id, mx);
  for (int j = 1; j <= 60; j++) {
    double x = val;
    if (x * a[d] > 1e18) break;
    val *= a[d];
    dfs(val, d + 1, id, mx);
  }
}
long long cal(long long a) {
  long long res = 0;
  int idx = 0;
  for (int i = 1; i < v[1].size(); i++) {
    if (v[1][i] > a) break;
    long long dy = a / v[1][i];
    if (i == 1) {
      while (idx < v[0].size() && dy >= v[0][idx]) idx++;
      idx--;
    } else
      while (dy < v[0][idx]) idx--;
    res += idx;
  }
  return res;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  long long k;
  scanf("%lld", &k);
  if (n == 1) {
    dfs(1, 0, 0, n);
    sort(v[0].begin(), v[0].end());
    printf("%lld\n", v[0][k - 1]);
  } else {
    dfs(1, 0, 0, n / 2);
    dfs(1, n / 2, 1, n);
    v[0].push_back(0);
    v[1].push_back(0);
    v[0].push_back(1e18 + 1);
    v[1].push_back(1e18 + 1);
    sort(v[0].begin(), v[0].end());
    sort(v[1].begin(), v[1].end());
    long long lo = 1, hi = 1e18, ans = 0;
    while (lo <= hi) {
      long long mid = (lo + hi) / 2;
      long long cnt = cal(mid);
      if (cnt >= k)
        ans = mid, hi = mid - 1;
      else
        lo = mid + 1;
    }
    printf("%lld\n", ans);
  }
}
