#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const long long inf = 1000000000ll * 1000000000ll;
vector<long long> v1(1, 1);
vector<long long> v2(1, 1);
void gen(vector<int> &p, vector<long long> &v) {
  priority_queue<pair<long long, pair<int, int>>,
                 vector<pair<long long, pair<int, int>>>,
                 greater<pair<long long, pair<int, int>>>>
      q;
  for (int i = 0; i < p.size(); i++) {
    q.push(make_pair(p[i], make_pair(i, 0)));
  }
  while (not q.empty()) {
    auto it = q.top();
    q.pop();
    if (v.back() != it.first) {
      v.push_back(it.first);
    }
    int i = it.second.first;
    int j = it.second.second;
    if (v[j + 1] <= inf / p[i]) {
      q.push(make_pair(v[j + 1] * p[i], make_pair(i, j + 1)));
    }
  }
}
long long cnt(long long mid) {
  long long res = 0;
  for (long long q : v2) {
    res += upper_bound(v1.begin(), v1.end(), mid / q) - v1.begin();
  }
  return res;
}
int main() {
  int n, q;
  long long k;
  cin >> n;
  vector<int> p[2];
  for (int i = 0; i < n; i++) {
    cin >> q;
    p[i % 2].push_back(q);
  }
  cin >> k;
  gen(p[0], v1);
  gen(p[1], v2);
  long long left = 0, right = inf + 1;
  while (right - left > 1) {
    long long mid = (left + right) / 2;
    if (cnt(mid) < k) {
      left = mid;
    } else {
      right = mid;
    }
  }
  cout << right;
  return 0;
}
