#include <bits/stdc++.h>
using namespace std;
int N;
vector<long long> li, ri, masterone, mastertwo;
long long K, lo = 1, hi = 5000000000000000000 / 5;
void generateIt(vector<long long> &primes, vector<long long> &addTo,
                int idx = 0, long long curr = 1,
                long long maxi = 5000000000000000000 / 5) {
  if (idx == primes.size()) {
    addTo.push_back(curr);
    return;
  }
  while (maxi > 0) {
    generateIt(primes, addTo, idx + 1, curr, maxi);
    curr *= primes[idx];
    maxi /= primes[idx];
  }
}
long long checkIt(long long mid) {
  long long idx = mastertwo.size() - 1, ret = 0;
  for (int i = 0; i < masterone.size(); i++) {
    while (idx > -1 && masterone[i] > mid / mastertwo[idx]) idx--;
    ret += idx + 1;
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout << fixed << setprecision(18);
  cin >> N;
  for (int i = 0; i < N; i++) {
    long long primer;
    cin >> primer;
    if (i % 2 == 0)
      li.push_back(primer);
    else
      ri.push_back(primer);
  }
  cin >> K;
  generateIt(li, masterone);
  generateIt(ri, mastertwo);
  sort(masterone.begin(), masterone.end());
  sort(mastertwo.begin(), mastertwo.end());
  while (lo < hi) {
    long long mid = (lo + hi) / 2;
    if (checkIt(mid) >= K)
      hi = mid;
    else
      lo = mid + 1;
  }
  cout << lo << '\n';
  return 0;
}
