func_code_string: #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;   }   