#include <bits/stdc++.h>
using namespace std;
const long long int mx = (long long int)1e18;
void generateall(long long int now, const vector<long long>& a, int ind,
                 set<long long>& sa) {
  if (now > (long long int)mx) return;
  if (ind == a.size()) {
    sa.insert(now);
    return;
  }
  long long int step = now;
  generateall(step, a, ind + 1, sa);
  for (; a[ind] <= mx / step; step *= a[ind])
    generateall(step * a[ind], a, ind + 1, sa);
}
int main() {
  int n;
  cin >> n;
  vector<long long int> p(n);
  for (int i = 0; i < n; i++) cin >> p[i];
  sort(p.begin(), p.end());
  vector<long long int> a, b;
  for (int i = 0; i < n; i++)
    if (i % 2)
      a.push_back(p[i]);
    else
      b.push_back(p[i]);
  set<long long int> sa, sb;
  generateall(1, a, 0, sa);
  generateall(1, b, 0, sb);
  vector<long long int> da, db;
  for (long long int t : sa) da.push_back(t);
  for (long long int t : sb) db.push_back(t);
  reverse(db.begin(), db.end());
  int k;
  cin >> k;
  long long int l = -1, r = (long long int)1e18;
  while (l < r) {
    long long int m = (l + r + 1) / 2;
    long long int cnt = 0;
    int i = 0, j = 0;
    for (; i < da.size(); i++) {
      while (j < db.size() && da[i] > m / db[j]) j++;
      cnt += db.size() - j;
    }
    if (cnt < k)
      l = m;
    else
      r = m - 1;
  }
  cout << l + 1;
}
