#include <bits/stdc++.h>
using namespace std;
const int N = 16;
const long long INF = (long long)1e18;
int n;
int prm[N + 3];
long long m;
vector<long long> lhaf, rhaf;
int BinarySearch(long long val) {
  int lef = 0, rig = rhaf.size();
  while (lef + 1 < rig) {
    int mid = (lef + rig) >> 1;
    if (rhaf[mid] <= val)
      lef = mid;
    else
      rig = mid;
  }
  return lef + 1;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &prm[i]);
  scanf("%lld", &m);
  lhaf.push_back(1);
  rhaf.push_back(1);
  for (int x = 1; x <= n; x += 2) {
    for (int i = 0; i < lhaf.size(); i++)
      if (lhaf[i] <= INF / prm[x]) lhaf.push_back(lhaf[i] * prm[x]);
  }
  for (int x = 2; x <= n; x += 2) {
    for (int i = 0; i < rhaf.size(); i++)
      if (rhaf[i] <= INF / prm[x]) rhaf.push_back(rhaf[i] * prm[x]);
  }
  sort(rhaf.begin(), rhaf.end());
  sort(lhaf.begin(), lhaf.end());
  long long lef = 0, rig = INF + 1;
  while (lef + 1 < rig) {
    long long mid = (lef + rig) >> 1, rnk = 0;
    for (int i = 0; i < lhaf.size(); i++)
      if (mid / lhaf[i])
        rnk += BinarySearch(mid / lhaf[i]);
      else
        break;
    if (rnk < m)
      lef = mid;
    else
      rig = mid;
  }
  printf("%lld\n", rig);
  return 0;
}
