#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fbo find_by_order
#define ook order_of_key
typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<int> vi;
typedef long double ld;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
typedef set<int>::iterator sit;
typedef map<int,int>::iterator mit;
typedef vector<int>::iterator vit;
ll a[400001];
const int LG = 60;
ii st[LG][200001];
int n;
ll getl(int l, int r)
{
if(l > r) return 0;
if(l == 0) return a[r];
return (a[r] - a[l-1]);
}
const ll INF = ll(2e18);
int dist(int l, int r)
{
if(l <= r) return r - l;
r += n;
return r - l;
}
ll x, y;
void computest()
{
for(int i = 0; i < n; i++)
{
ll cycles = x/a[n-1];
ll rem = x%a[n-1];
if(rem<getl(i,i))
{
st[0][i] = mp(cycles, i);
//cerr<<cycles<<' '<<i<<'\n';
continue;
}
int lo = i + 1; int hi = n + i - 1;
int ans = i;
while(lo<=hi)
{
int mid = (lo+hi)>>1;
if(getl(i, mid - 1) <= rem)
{
ans = mid;
lo = mid + 1;
}
else
{
hi = mid - 1;
}
}
if(ans >= n) ans -= n;
st[0][i] = mp(cycles, ans);
}
for(int i = 1; i < LG; i++)
{
for(int j = 0; j < n; j++)
{
int p2 = st[i-1][j].se;
//catch a bug here if possible
st[i][j] = mp(st[i-1][j].fi+st[i-1][p2].fi, st[i-1][p2].se);
//careful about overflow
//j -> p2 -> st[i-1][p2].se
int totd = dist(j, p2) + dist(p2, st[i-1][p2].se);
if(totd >= n)
{
st[i][j].fi++;
}
if(st[i][j].fi > INF) st[i][j].fi = INF;
}
}
}
ll test(ll mid)
{
ii res = mp(0, 0);
ll totdist = 0;
for(int i = 0; i < LG; i++)
{
if(mid&(1LL<<i))
{
ii tmp = st[i][res.se];
//res.se -> tmp.se
int l = res.se; int r = tmp.se;
if(l>r) r += n;
totdist += getl(l,r-1);
res.se = tmp.se;
res.fi += tmp.fi;
if(res.fi>INF) res.fi=INF;
if(totdist>INF) totdist = INF;
}
}
ll totd = 0;
if(res.fi>(INF/a[n-1])) return INF;
totd = res.fi*a[n-1];
totd += totdist;
return totd;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> a[i];
a[n+i] = a[i];
}
cin >> x >> y;
for(int i = 1; i < 2*n; i++)
{
a[i] += a[i-1];
}
computest();
ll lo = 1; ll hi = ll(1e18);
ll ans = -1; //covered fail case
while(lo <= hi)
{
ll mid = (lo+hi)/2;
if(test(mid) >= y)
{
ans = mid;
hi = mid - 1;
}
else
{
lo = mid + 1;
}
}
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiAKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZibyBmaW5kX2J5X29yZGVyCiNkZWZpbmUgb29rIG9yZGVyX29mX2tleQogCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8bGwsbGw+IGlpOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOyAKdHlwZWRlZiB0cmVlPGludCwgbnVsbF90eXBlLCBsZXNzPGludD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+IHBiZHM7CnR5cGVkZWYgc2V0PGludD46Oml0ZXJhdG9yIHNpdDsKdHlwZWRlZiBtYXA8aW50LGludD46Oml0ZXJhdG9yIG1pdDsKdHlwZWRlZiB2ZWN0b3I8aW50Pjo6aXRlcmF0b3Igdml0OwogCmxsIGFbNDAwMDAxXTsKY29uc3QgaW50IExHID0gNjA7CmlpIHN0W0xHXVsyMDAwMDFdOwppbnQgbjsKIApsbCBnZXRsKGludCBsLCBpbnQgcikKewoJaWYobCA+IHIpIHJldHVybiAwOwoJaWYobCA9PSAwKSByZXR1cm4gYVtyXTsKCXJldHVybiAoYVtyXSAtIGFbbC0xXSk7Cn0KIApjb25zdCBsbCBJTkYgPSBsbCgyZTE4KTsKIAppbnQgZGlzdChpbnQgbCwgaW50IHIpCnsKCWlmKGwgPD0gcikgcmV0dXJuIHIgLSBsOwoJciArPSBuOwoJcmV0dXJuIHIgLSBsOwp9CiAKbGwgeCwgeTsKIAp2b2lkIGNvbXB1dGVzdCgpCnsKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgl7CgkJbGwgY3ljbGVzID0geC9hW24tMV07CgkJbGwgcmVtID0geCVhW24tMV07CgkJaWYocmVtPGdldGwoaSxpKSkKCQl7CgkJCXN0WzBdW2ldID0gbXAoY3ljbGVzLCBpKTsKCQkJLy9jZXJyPDxjeWNsZXM8PCcgJzw8aTw8J1xuJzsKCQkJY29udGludWU7CgkJfQoJCWludCBsbyA9IGkgKyAxOyBpbnQgaGkgPSBuICsgaSAtIDE7CgkJaW50IGFucyA9IGk7CgkJd2hpbGUobG88PWhpKQoJCXsKCQkJaW50IG1pZCA9IChsbytoaSk+PjE7CgkJCWlmKGdldGwoaSwgbWlkIC0gMSkgPD0gcmVtKQoJCQl7CgkJCQlhbnMgPSBtaWQ7CgkJCQlsbyA9IG1pZCArIDE7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQloaSA9IG1pZCAtIDE7CgkJCX0KCQl9CgkJaWYoYW5zID49IG4pIGFucyAtPSBuOwoJCXN0WzBdW2ldID0gbXAoY3ljbGVzLCBhbnMpOwoJfQoJZm9yKGludCBpID0gMTsgaSA8IExHOyBpKyspCgl7CgkJZm9yKGludCBqID0gMDsgaiA8IG47IGorKykKCQl7CgkJCWludCBwMiA9IHN0W2ktMV1bal0uc2U7CgkJCS8vY2F0Y2ggYSBidWcgaGVyZSBpZiBwb3NzaWJsZQoJCQlzdFtpXVtqXSA9IG1wKHN0W2ktMV1bal0uZmkrc3RbaS0xXVtwMl0uZmksIHN0W2ktMV1bcDJdLnNlKTsKCQkJLy9jYXJlZnVsIGFib3V0IG92ZXJmbG93CgkJCS8vaiAtPiBwMiAtPiBzdFtpLTFdW3AyXS5zZQoJCQlpbnQgdG90ZCA9IGRpc3QoaiwgcDIpICsgZGlzdChwMiwgc3RbaS0xXVtwMl0uc2UpOwoJCQlpZih0b3RkID49IG4pCgkJCXsKCQkJCXN0W2ldW2pdLmZpKys7CgkJCX0KCQkJaWYoc3RbaV1bal0uZmkgPiBJTkYpIHN0W2ldW2pdLmZpID0gSU5GOwoJCX0KCX0KfQogCiAKbGwgdGVzdChsbCBtaWQpCnsKCWlpIHJlcyA9IG1wKDAsIDApOwoJbGwgdG90ZGlzdCA9IDA7Cglmb3IoaW50IGkgPSAwOyBpIDwgTEc7IGkrKykKCXsKCQlpZihtaWQmKDFMTDw8aSkpCgkJewoJCQlpaSB0bXAgPSBzdFtpXVtyZXMuc2VdOwoJCQkvL3Jlcy5zZSAtPiB0bXAuc2UKCQkJaW50IGwgPSByZXMuc2U7IGludCByID0gdG1wLnNlOwoJCQlpZihsPnIpIHIgKz0gbjsKCQkJdG90ZGlzdCArPSBnZXRsKGwsci0xKTsKCQkJcmVzLnNlID0gdG1wLnNlOwoJCQlyZXMuZmkgKz0gdG1wLmZpOwoJCQlpZihyZXMuZmk+SU5GKSByZXMuZmk9SU5GOwoJCQlpZih0b3RkaXN0PklORikgdG90ZGlzdCA9IElORjsKCQl9Cgl9CglsbCB0b3RkID0gMDsKCWlmKHJlcy5maT4oSU5GL2Fbbi0xXSkpIHJldHVybiBJTkY7Cgl0b3RkID0gcmVzLmZpKmFbbi0xXTsKCXRvdGQgKz0gdG90ZGlzdDsKCXJldHVybiB0b3RkOwp9CiAKaW50IG1haW4oKQp7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOwoJY2luID4+IG47Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJewoJCWNpbiA+PiBhW2ldOwoJCWFbbitpXSA9IGFbaV07Cgl9CgljaW4gPj4geCA+PiB5OwoJZm9yKGludCBpID0gMTsgaSA8IDIqbjsgaSsrKQoJewoJCWFbaV0gKz0gYVtpLTFdOwoJfQoJY29tcHV0ZXN0KCk7CglsbCBsbyA9IDE7IGxsIGhpID0gbGwoMWUxOCk7CglsbCBhbnMgPSAtMTsgLy9jb3ZlcmVkIGZhaWwgY2FzZQoJd2hpbGUobG8gPD0gaGkpCgl7CgkJbGwgbWlkID0gKGxvK2hpKS8yOwoJCWlmKHRlc3QobWlkKSA+PSB5KQoJCXsKCQkJYW5zID0gbWlkOwoJCQloaSA9IG1pZCAtIDE7CgkJfQoJCWVsc2UKCQl7CgkJCWxvID0gbWlkICsgMTsKCQl9Cgl9Cgljb3V0IDw8IGFucyA8PCAnXG4nOwp9CiA=