#include <bits/stdc++.h>
using namespace ::std;
const unsigned long long maxn = 1e7 + 500;
const unsigned long long mod = 1e9 + 7;
const unsigned long long inf = 1e18 + 10;
unsigned long long p[20];
unsigned long long q[20];
unsigned long long r = 0;
int n;
char nn;
unsigned long long vec[maxn];
unsigned long long cn = 0;
unsigned long long vecc[maxn];
unsigned long long cnn = 0;
void finds(char a, unsigned long long s) {
  if (a == nn) {
    vec[cn++] = s;
    return;
  }
  finds(a + 1, s);
  while (s < q[a]) {
    s *= p[a];
    finds(a + 1, s);
  }
}
void findss(char a, unsigned long long s) {
  if (a == nn) {
    vecc[cnn++] = s;
    return;
  }
  findss(a + 1, s);
  while (s < q[a]) {
    s *= p[a];
    findss(a + 1, s);
  }
}
unsigned long long tedad(unsigned long long m) {
  unsigned long long ans = 0;
  for (unsigned long long i = 0; i < cnn; i++) {
    ans += lower_bound(vec, vec + cn, m / vecc[i] + 1) - vec;
  }
  return ans;
}
int main() {
  cin >> n;
  for (char i = 0; i < n; i++) {
    cin >> p[i];
  }
  sort(p, p + n);
  for (char i = 0; i < n; i++) {
    q[i] = inf / p[i];
  }
  unsigned long long k;
  cin >> k;
  if (n <= 8) {
    nn = n;
    finds(0, 1);
    sort(vec, vec + cn);
    cout << vec[k - 1];
    return 0;
  }
  nn = 8;
  finds(0, 1);
  nn = n;
  findss(8, 1);
  sort(vec, vec + cn);
  sort(vecc, vecc + cnn);
  unsigned long long b = 0;
  unsigned long long e = 1e18 + 1;
  while (e - b > 1) {
    unsigned long long m = (e + b) / 2;
    unsigned long long v = tedad(m);
    if (v < k) {
      b = m;
    } else {
      e = m;
    }
  }
  cout << e;
}
