#include <iostream>
#include <stack>
#include <cstdio>
#define REP(i,s,k) for(int i = s; i < k; i++)
using namespace std;
const int INF = 2e9;
const int MAXN = 1e6;
//tmp 保存的是当前点右侧的长度,当前点的second保存的是当前点以及当前点左边的长度
signed main(){
long long t; int n;
while(scanf("%d", &n) != EOF && n){
stack<pair<long long, long long> > S;
S.push(make_pair(0, 1));
long long ans = 0;
for(int i = 0; i < n; i++){
scanf("%lld", &t); long long tmp = 0;
while(S.top().first > t){
ans = max(S.top().first * (S.top().second + tmp), ans);
tmp += S.top().second;
S.pop();
}
S.push(make_pair(t, 1 + tmp));
}
long long tmp = 0;
while(!S.empty()){
ans = max(S.top().first * (S.top().second + tmp), ans);
tmp += S.top().second;
S.pop();
}
printf("%lld\n", ans);
}
return 0;
}