#include <bits/stdc++.h>
using namespace std;
const long long inf = (2000000000000000000);
const int MAXN = 16;
int n, niz[MAXN];
long long k;
bool DA = false;
vector<long long> resA, resB;
void generate(long long num, int ind, const vector<int> &baza,
              vector<long long> &res) {
  long long novi;
  for (; ind >= 0; ind--) {
    if (inf / num <= baza[ind]) continue;
    novi = baza[ind] * num;
    if (novi > inf) continue;
    res.push_back(novi);
    generate(novi, ind, baza, res);
  }
}
long long kolko(long long a) {
  long long cnt = 0;
  int ia = 0, ib = resB.size() - 1;
  for (; ia < resA.size(); ia++) {
    bool flag = false;
    for (; ib >= 0; ib--) {
      if (inf / resA[ia] <= resB[ib]) continue;
      long long novi = resA[ia] * resB[ib];
      if (novi > a) continue;
      flag = true;
      break;
    }
    if (!flag) continue;
    cnt += (ib + 1);
  }
  return cnt;
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> niz[i];
  cin >> k;
  assert(k <= 1e15);
  vector<int> A, B;
  int gran = 6;
  for (int i = 0; i < min(gran, n); i++) A.push_back(niz[i]);
  for (int i = gran; i < n; i++) B.push_back(niz[i]);
  generate(1, A.size() - 1, A, resA);
  generate(1, B.size() - 1, B, resB);
  resA.push_back(1);
  resB.push_back(1);
  sort(resA.begin(), resA.end());
  sort(resB.begin(), resB.end());
  long long lo = 0, mid, hi = inf;
  while (hi - lo > 1) {
    mid = lo + hi >> 1;
    if (kolko(mid) >= k)
      hi = mid;
    else
      lo = mid;
  }
  cout << hi << endl;
  return 0;
}
