#include <bits/stdc++.h>
using namespace std;
vector<long long int> d0, d1;
int n, k;
long long int p[16], ans;
void createSpace0(int index, long long int product) {
  int div = p[index];
  while (1) {
    if (1e18 / product < p[index]) return;
    if (index + 2 < n) createSpace0(index + 2, product);
    product *= p[index];
    d0.push_back(product);
  }
}
void createSpace1(int index, long long int product) {
  int div = p[index];
  while (1) {
    if (1e18 / product < p[index]) return;
    if (index + 2 < n) createSpace1(index + 2, product);
    product *= p[index];
    d1.push_back(product);
  }
}
long long int cal(long long int limit) {
  int ptr0, ptr1;
  long long int rank, product;
  ptr0 = 0;
  ptr1 = d1.size() - 1;
  rank = 0;
  while (ptr0 < d0.size() && ptr1 >= 0) {
    if (d1[ptr1] <= limit / d0[ptr0]) {
      product = d0[ptr0] * d1[ptr1];
      rank += (ptr1 + 1);
      ans = max(ans, product);
      ptr0++;
    } else {
      ptr1--;
    }
  }
  return rank;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &p[i]);
  scanf("%d", &k);
  if (n == 1) {
    ans = 1;
    for (int i = 1; i < k; i++) ans = ans * p[0];
  } else {
    d0.push_back(1);
    d1.push_back(1);
    createSpace0(0, 1);
    createSpace1(1, 1);
    sort(d0.begin(), d0.end());
    sort(d1.begin(), d1.end());
    int siz0 = d0.size();
    int siz1 = d1.size();
    long long int l, r, mid;
    long long int rank;
    l = 1;
    r = 1e18;
    while (l <= r) {
      mid = (l + r) / 2;
      ans = 1;
      rank = cal(mid);
      if (rank == k) {
        break;
      }
      if (rank < k) {
        l = mid + 1;
      }
      if (rank > k) {
        r = mid - 1;
      }
    }
  }
  cout << ans << "\n";
  return 0;
}
