#include <bits/stdc++.h>
using namespace std;
const int64_t inf = (int64_t)1e18;
vector<int64_t> a[2], g[2];
void dfs(int obj, int idx, int64_t cur) {
  if (idx == a[obj].size()) {
    g[obj].push_back(cur);
    return;
  }
  dfs(obj, idx + 1, cur);
  while (a[obj][idx] <= inf / cur) cur *= a[obj][idx], dfs(obj, idx + 1, cur);
}
int order(int64_t x) {
  int res = 0;
  int i = g[0].size() - 1, j = 0;
  for (; i >= 0; i--) {
    for (; j < g[1].size() && g[1][j] <= x / g[0][i]; j++)
      ;
    res += j;
  }
  return res;
}
int main(void) {
  int n, k;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    int p;
    scanf("%d", &p);
    a[i & 1].push_back(p);
  }
  scanf("%d", &k);
  dfs(0, 0, 1LL);
  sort(g[0].begin(), g[0].end());
  dfs(1, 0, 1LL);
  sort(g[1].begin(), g[1].end());
  int64_t low = 0LL;
  int64_t high = inf;
  while (low <= high) {
    int64_t mid = (low + high) / 2;
    int ord = order(mid);
    if (ord < k)
      low = mid + 1;
    else
      high = mid - 1;
  }
  printf("%I64d\n", low);
  return 0;
}
