#include <bits/stdc++.h>
using namespace std;
int64_t N, K;
vector<int64_t> A, B, sA, sB;
void all_A(int64_t ind, int64_t lim, int64_t num) {
  if (ind == A.size()) {
    sA.push_back(num);
    return;
  }
  all_A(ind + 1, lim, num);
  while (num <= ((double)lim) / ((double)A[ind])) {
    num *= A[ind];
    all_A(ind + 1, lim, num);
  }
}
void all_B(int64_t ind, int64_t lim, int64_t num) {
  if (ind == B.size()) {
    sB.push_back(num);
    return;
  }
  all_B(ind + 1, lim, num);
  while (num <= ((double)lim) / ((double)B[ind])) {
    num *= B[ind];
    all_B(ind + 1, lim, num);
  }
}
int64_t cmp(int64_t lim) {
  int64_t total = 0;
  int64_t ap = 0, bp = sB.size() - 1;
  while (ap < sA.size() && bp >= 0) {
    while (bp >= 0 && (((double)lim) / ((double)sA[ap])) < sB[bp]) {
      bp--;
    }
    total += (bp + 1);
    ap++;
    if (total > K) {
      return total;
    }
  }
  return total;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin >> N;
  for (int64_t i = 0; i < N; i++) {
    int64_t p;
    cin >> p;
    if (i % 2 == 0)
      A.push_back(p);
    else
      B.push_back(p);
  }
  cin >> K;
  all_A(0, 1e18, 1);
  all_B(0, 1e18, 1);
  sort(sA.begin(), sA.end());
  sort(sB.begin(), sB.end());
  int64_t lo = 1, hi = 1e18;
  while (lo < hi) {
    int64_t mid = (lo + hi) / 2;
    if (cmp(mid) >= K) {
      hi = mid;
    } else {
      lo = mid + 1;
    }
  }
  cout << lo << "\n";
  return 0;
}
