#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<utility>
using namespace std;

int N, ans, a[100006];
vector<pair<int, int>> s;
int main() {
	scanf("%d", &N);
	s.push_back(make_pair(0, 0));
	for (int i = 0; i < N; i++) {
		scanf("%d", &a[i]);
	}
	for (int i = 0; i <= N; i++) {
		if (a[i] > s.back().first) {
			s.push_back(make_pair(a[i], 1));
		} else if (a[i] == s.back().first) {
			s.back().second++;
		} else {
			while (s.back().first > a[i]) {
				pair<int, int> temp = s.back();
				s.pop_back();
				ans = max(ans, temp.first * temp.second);
				if (a[i] > s.back().first) {
					s.push_back(make_pair(a[i], temp.second + 1));
				} else if (a[i] == s.back().first) {
					s.back().second += temp.second + 1;
				} else {
					s.back().second += temp.second;
				}
			}
		}
	}
	printf("%d\n", ans);
	return 0;
}
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <stack>
using namespace std;
const int SIZE = 1e4 + 1;
struct range{
    int l, r;
}R[SIZE];
int a[SIZE], n;
stack<int> stk;
int main()
{
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> a[i];
    }
    for(int i = 0; i < n; i++){
        if (stk.empty() || a[i] >= a[stk.top()]){
            stk.push(i);
        }
        else{
            while (!stk.empty() && a[stk.top()] > a[i]){
                R[stk.top()].r = i - 1;
                stk.pop();
            }
            stk.push(i);
        }
    }
    while (!stk.empty()){
        R[stk.top()].r = n - 1;
        stk.pop();
    }
    //if (stk.empty()) cout << "empty" << endl;
    for(int i = n - 1; i >= 0; i--){
        if (stk.empty() || a[i] >= a[stk.top()]){
            stk.push(i);
        }else{
            while (!stk.empty() && a[stk.top()] > a[i]){
                R[stk.top()].l = i;
                stk.pop();
            }
            stk.push(i);
        }
    }
    while (!stk.empty()){
        //cout << stk.top() << endl;
        R[stk.top()].l = -1;
        stk.pop();
    }
    /*for(int i = 0; i < n; i++){
        printf("%d %d\n", R[i].l, R[i].r);
    }*/
    int ans = 0;
    for(int i =0 ; i < n; i++){
        ans = max(ans, (R[i].r - R[i].l) * a[i]);
    }
    for(int i = 0; i < n; i++){
        //printf("%d %d\n", R[i].l, R[i].r);
    }
    cout << ans << endl;
    return 0;

}