#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
vector nextsmallestno(vector arr, int n) {
stack s;
vector ans(n);
s.push(-1);
for (int i = n - 1; i >= 0; iā) {
while (s.top() != -1 and arr[s.top()] >= arr[i]) {
s.pop();
}
ans[i] = s.top();
s.push(i);
}
return ans;
}
vector<int> prevsmallestno(vector<int> arr, int n) {
stack<int> s;
vector<int> ans(n);
s.push(-1);
for (int i = 0; i < n; i++) {
while (s.top() != -1 and arr[s.top()] >= arr[i]) {
s.pop();
}
ans[i] = s.top();
s.push(i);
}
return ans;
}
int largestRectangleArea(vector<int>& heights) {
int n = heights.size();
vector<int> rs(n);
rs = nextsmallestno(heights, n);
vector<int> ls(n);
ls = prevsmallestno(heights, n);
int Maxarea = INT_MIN;
int area;
for (int i = 0; i < n; i++) {
if (rs[i] == -1) {
rs[i] = n;
}
area = (rs[i] - ls[i] - 1) * heights[i];
Maxarea = max(area, Maxarea);
}
return Maxarea;
}
};
int main() {
Solution s;
int n;
cin>>n;
vector heights(n);
for(int i=0;i<n;i++){
int no;
cin>>no;
heights[i]=no;
}
int result = s.largestRectangleArea(heights);
cout << result;
}