#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> iPair;
typedef vector<int> iVector;
typedef vector<iVector> iMatrix;
#define MOD 1000000007
#define INF 1e18
#define long long long
#define endl ('\n')
#define fill(ar,val) memset(ar,val,sizeof(ar))
#define fastIO ios::sync_with_stdio(false); cin.tie(0)
class SegmentTree
{
int n;
vector<long> vec, tree;
void build(int s, int e, int node)
{
if(s==e)
tree[node] = vec[s];
else
{
int m = s + (e-s>>1);
int l = node<<1, r = l|1;
build(s,m,l);
build(m+1,e,r);
tree[node] = min(tree[l],tree[r]);
}
}
long RMQ(int s, int e, int l, int r, int node)
{
if(s>e || s>r || e<l)
return INF;
if(s>=l && e<=r)
return tree[node];
else
{
int m = s + (e-s>>1);
long lQuery = RMQ(s,m,l,r,node<<1);
long rQuery = RMQ(m+1,e,l,r,node<<1|1);
return min(lQuery,rQuery);
}
}
long query(int s, int e)
{
if(s>e)
return -INF;
if(s==e)
return vec[s];
int m = s + (e-s>>1);
long lQuery = query(s,m);
long rQuery = query(m+1,e);
long minimum = RMQ(0,n-1,s,e,1);
return max({lQuery, rQuery, (e-s+1) * minimum});
}
public:
SegmentTree(const vector<long> &v)
{
this->vec = v;
this->n = v.size();
tree.resize(n<<2);
build(0,n-1,1);
}
long query()
{
return query(0,n-1);
}
};
int main()
{
fastIO;
while(true)
{
int n; cin >> n;
if(n==0)
break;
vector<long> h(n);
for(int i=0;i<n;i++)
cin >> h[i];
SegmentTree st(h);
cout << st.query() << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHBhaXI8aW50LGludD4gaVBhaXI7CnR5cGVkZWYgdmVjdG9yPGludD4gaVZlY3RvcjsKdHlwZWRlZiB2ZWN0b3I8aVZlY3Rvcj4gaU1hdHJpeDsKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIElORiAxZTE4CiNkZWZpbmUgbG9uZyBsb25nIGxvbmcKI2RlZmluZSBlbmRsICgnXG4nKQojZGVmaW5lIGZpbGwoYXIsdmFsKSBtZW1zZXQoYXIsdmFsLHNpemVvZihhcikpCiNkZWZpbmUgZmFzdElPIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKQoKY2xhc3MgU2VnbWVudFRyZWUKewoJaW50IG47Cgl2ZWN0b3I8bG9uZz4gdmVjLCB0cmVlOwoKCXZvaWQgYnVpbGQoaW50IHMsIGludCBlLCBpbnQgbm9kZSkKCXsKCQlpZihzPT1lKQoJCQl0cmVlW25vZGVdID0gdmVjW3NdOwoJCWVsc2UKCQl7CgkJCWludCBtID0gcyArIChlLXM+PjEpOwoJCQlpbnQgbCA9IG5vZGU8PDEsIHIgPSBsfDE7CgkJCWJ1aWxkKHMsbSxsKTsKCQkJYnVpbGQobSsxLGUscik7CgkJCXRyZWVbbm9kZV0gPSBtaW4odHJlZVtsXSx0cmVlW3JdKTsKCQl9Cgl9CgoJbG9uZyBSTVEoaW50IHMsIGludCBlLCBpbnQgbCwgaW50IHIsIGludCBub2RlKQoJewoJCWlmKHM+ZSB8fCBzPnIgfHwgZTxsKQoJCQlyZXR1cm4gSU5GOwoJCWlmKHM+PWwgJiYgZTw9cikKCQkJcmV0dXJuIHRyZWVbbm9kZV07CgkJZWxzZQoJCXsKCQkJaW50IG0gPSBzICsgKGUtcz4+MSk7CgkJCWxvbmcgbFF1ZXJ5ID0gUk1RKHMsbSxsLHIsbm9kZTw8MSk7CgkJCWxvbmcgclF1ZXJ5ID0gUk1RKG0rMSxlLGwscixub2RlPDwxfDEpOwoJCQlyZXR1cm4gbWluKGxRdWVyeSxyUXVlcnkpOwoJCX0KCX0KCglsb25nIHF1ZXJ5KGludCBzLCBpbnQgZSkKCXsKCQlpZihzPmUpCgkJCXJldHVybiAtSU5GOwoJCWlmKHM9PWUpCgkJCXJldHVybiB2ZWNbc107CgoJCWludCBtID0gcyArIChlLXM+PjEpOwoJCWxvbmcgbFF1ZXJ5ID0gcXVlcnkocyxtKTsKCQlsb25nIHJRdWVyeSA9IHF1ZXJ5KG0rMSxlKTsKCQlsb25nIG1pbmltdW0gPSBSTVEoMCxuLTEscyxlLDEpOwoJCXJldHVybiBtYXgoe2xRdWVyeSwgclF1ZXJ5LCAoZS1zKzEpICogbWluaW11bX0pOwoJfQoKCnB1YmxpYzoKCVNlZ21lbnRUcmVlKGNvbnN0IHZlY3Rvcjxsb25nPiAmdikKCXsKCQl0aGlzLT52ZWMgPSB2OwoJCXRoaXMtPm4gPSB2LnNpemUoKTsKCQl0cmVlLnJlc2l6ZShuPDwyKTsKCQlidWlsZCgwLG4tMSwxKTsKCX0KCglsb25nIHF1ZXJ5KCkKCXsKCQlyZXR1cm4gcXVlcnkoMCxuLTEpOwoJfQp9OwoKaW50IG1haW4oKQp7CglmYXN0SU87Cgl3aGlsZSh0cnVlKQoJewoJCWludCBuOyBjaW4gPj4gbjsKCQlpZihuPT0wKQoJCQlicmVhazsKCQl2ZWN0b3I8bG9uZz4gaChuKTsKCQlmb3IoaW50IGk9MDtpPG47aSsrKQoJCQljaW4gPj4gaFtpXTsKCQlTZWdtZW50VHJlZSBzdChoKTsKCQljb3V0IDw8IHN0LnF1ZXJ5KCkgPDwgZW5kbDsKCX0KCXJldHVybiAwOwp9Cg==