#include <bits/stdc++.h>
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("unroll-loops")
using namespace std;
string tostr(int n) {
  stringstream rr;
  rr << n;
  return rr.str();
}
const int mod = 1e9 + 7;
const int mxn = 1e5 + 9;
const long double eps = 1e-9;
long long qpow(long long n, long long k) {
  long long ans = 1;
  while (k) {
    if (k & 1) ans = (ans * n) % mod;
    n = (n * n) % mod;
    k >>= 1;
  }
  return ans;
}
const long long mx = (long long)1e18;
void pre(vector<long long>& p, long long i, long long x,
         vector<long long>& ans) {
  if (i == p.size()) {
    ans.push_back(x);
    return;
  }
  pre(p, i + 1, x, ans);
  while (x <= mx / p[i]) pre(p, i + 1, x *= p[i], ans);
}
long long cnt(long long n, vector<long long>& u, vector<long long>& v) {
  long long i, j, ans = 0;
  for (i = 0; i < u.size(); i++) {
    ans += upper_bound(v.begin(), v.end(), n / u[i]) - v.begin();
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(NULL);
  vector<long long> u, v, a, b;
  long long i, j, k, m, s, e, n, t;
  cin >> n;
  for (i = 0; i < n; i++) {
    cin >> t;
    i % 2 == 0 ? a.push_back(t) : b.push_back(t);
  }
  cin >> k;
  pre(a, 0LL, 1LL, u);
  pre(b, 0LL, 1LL, v);
  sort(u.begin(), u.end());
  sort(v.begin(), v.end());
  s = 1LL, e = mx;
  while (s < e) {
    m = s + (e - s) / 2;
    t = cnt(m, u, v);
    if (t < k)
      s = m + 1;
    else
      e = m;
  }
  cout << e << "\n";
  return 0;
}
