rt
#include <bits/stdc++.h>
#pragma GCC optimize(3)
#define int long long
#define rep(i,x,y,z) for(int i=(x);i<=(y);i+=(z))
#define per(i,x,y,z) for(int i=(x);i>=(y);i-=(z))
#define pb push_back
#define pii pair<int,int>
#define _1 first
#define gcd __gcd
#define _2 second
#define ld long double
#define cint const int
#define vint vector<int>
#define vpii vector<pair<int,int>>
using namespace std;
const int inf=0x3f3f3f3f;
const int mod=998244353;
const long double EPS=1e-7;
const int maxn=1.209e7;
int read() {
int ch = getchar(), t = 1, n = 0;
while (ch < '0' || ch > '9') {
if (ch == '-') t = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
n = n * 10 + ch - '0', ch = getchar();
}
return n * t;
}
void chkmin(int &x,int y) {
x=min(x,y);
}
void chkmax(int &x,int y) {
x=max(x,y);
}
int fpow(int a,int b) {
if(b==0)return 1;
if(b==1)return a;
int ans=fpow(a,b/2);
ans*=ans;
ans%=mod;
if(b%2) ans*=a;
return ans%mod;
}
int inv(int x) {
return fpow(x,mod-2);
}
int p[50],c1[maxn],c2[maxn],cc1=0,cc2=0,n;
void ddo1(int cur,__int128 now) {
if(now>1e18)return ;
if(now<=1e18)c1[++cc1]=now;
rep(i,cur,n/2,1)ddo1(i,now*p[i]);
}
void ddo2(int cur,__int128 now) {
if(now>1e18)return ;
if(now<=1e18)c2[++cc2]=now;
rep(i,cur,n,1)ddo2(i,now*p[i]);
}
int judge(int x) {
int l=1;
__int128 ans=0;
rep(i,1,cc1,1) {
while(l<=cc2 && (__int128)c2[l]*c1[i]>x)l++;
ans+=cc2-l+1;
}
return ans;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
rep(i,1,n,1) cin>>p[i];
int k;
cin>>k;
ddo1(1,1);
ddo2(n/2+1,1);
sort(c1+1,c1+1+cc1);
sort(c2+1,c2+1+cc2);
reverse(c2+1,c2+1+cc2);
int l=1,r=1e18-1,ans=0;
while(l<=r) {
int mid=(__int128)(l+r)/2;
if(judge(mid)<k)ans=mid,l=mid+1;
else r=mid-1;
}
cout<<min(1000000000000000000,ans+1)<<endl;
return 0;
}