#include <bits/stdc++.h>
using namespace std;
const int MAXN = 20;
const long long int inf = 1e18 + 2e17;
int n;
long long int trazim;
int prosti[MAXN];
vector<int> prvi, drugi;
vector<long long int> lijevi, desni;
void generiraj_prvi(int x, long long int sad) {
  long long int ovaj = 1;
  if (x != (int)prvi.size() - 1) {
    for (int i = (0); i < (100); i++) {
      if (inf / sad < ovaj) break;
      generiraj_prvi(x + 1, sad * ovaj);
      if (prvi[x] > inf / ovaj) break;
      ovaj *= prvi[x];
    }
  } else {
    for (int i = (0); i < (100); i++) {
      if (inf / sad < ovaj) break;
      long long int novi = sad * ovaj;
      lijevi.push_back(novi);
      if (prvi[x] > inf / ovaj) break;
      ovaj *= prvi[x];
    }
  }
}
void generiraj_drugi(int x, long long int sad) {
  long long int ovaj = 1;
  if (x != (int)drugi.size() - 1) {
    for (int i = (0); i < (100); i++) {
      if (inf / sad < ovaj) break;
      generiraj_drugi(x + 1, sad * ovaj);
      if (drugi[x] > inf / ovaj) break;
      ovaj *= drugi[x];
    }
  } else {
    for (int i = (0); i < (100); i++) {
      if (inf / sad < ovaj) break;
      long long int novi = sad * ovaj;
      desni.push_back(novi);
      if (drugi[x] > inf / ovaj) break;
      ovaj *= drugi[x];
    }
  }
}
long long int f(long long int x) {
  long long int ret = 0;
  int it = (int)desni.size() - 1;
  for (int i = (0); i < ((int)lijevi.size()); i++) {
    while (it > 0 && (inf / desni[it] < lijevi[i] || lijevi[i] * desni[it] > x))
      it--;
    if (lijevi[i] * desni[it] <= x) ret += it + 1;
  }
  return ret;
}
int main() {
  scanf("%d", &n);
  for (int i = (0); i < (n); i++) scanf("%d", &prosti[i]);
  scanf("%lld", &trazim);
  if (n == 1) {
    long long int rez = 1;
    for (int i = (0); i < (trazim - 1); i++) rez *= prosti[0];
    cout << rez << endl;
    return 0;
  }
  sort(prosti, prosti + n);
  int sredina = n / 2 - 2;
  if (sredina < 1) sredina = 1;
  for (int i = (0); i < (sredina); i++) prvi.push_back(prosti[i]);
  for (int i = (sredina); i < (n); i++) drugi.push_back(prosti[i]);
  generiraj_prvi(0, 1);
  generiraj_drugi(0, 1);
  long long int lo = 1, hi = 1e18 + 10;
  sort(lijevi.begin(), lijevi.end());
  sort(desni.begin(), desni.end());
  while (lo < hi) {
    long long int mid = (lo + hi) / 2;
    long long int t = f(mid);
    if (t < trazim)
      lo = mid + 1;
    else
      hi = mid;
  }
  cout << lo << endl;
  return 0;
}
