#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; int main() { int k, l, m, n; cin>>k>>l>>m>>n; ll s; cin>>s; ll a[606], b[606], c[606], d[606]; for(int i=0; i>a[i]; for(int i=0; i>b[i]; for(int i=0; i>c[i]; for(int i=0; i>d[i]; vector ab, cd; for(int i=0; i v1, v2, w1, w2; for(int i=0; i0) v2.push_back(ab[i]); } for(int i=0; i0) w2.push_back(cd[i]); } reverse(v1.begin(), v1.end()); reverse(w1.begin(), w1.end()); s=c1+1-s; ll le=0, r=1e18; while(r-le>1){ ll mid=(le+r)/2; ll cnt=0; for(auto z:v1){ cnt+=upper_bound(w2.begin(), w2.end(), mid/z)-w2.begin(); } for(auto z:v2){ cnt+=upper_bound(w1.begin(), w1.end(), mid/z)-w1.begin(); } if(cnt>=s) r=mid; else le=mid; } cout<<-r< v1, v2, w1, w2; for(int i=0; i0) v2.push_back(ab[i]); } for(int i=0; i0) w2.push_back(cd[i]); } reverse(v1.begin(), v1.end()); reverse(w1.begin(), w1.end()); ll le=0, r=1e18; while(r-le>1){ ll mid=(le+r)/2; ll cnt=0; for(auto z:v1){ cnt+=upper_bound(w1.begin(), w1.end(), mid/z)-w1.begin(); } for(auto z:v2){ cnt+=upper_bound(w2.begin(), w2.end(), mid/z)-w2.begin(); } if(cnt>=s) r=mid; else le=mid; } cout<