#include<iostream>
#include<stack>
using namespace std;
void largestAreaUnderHistogram(long long int arr[], int n) {
stack<long long int>s;
long long int area = 0, ans[1000000002], st;
int i;
for (i = 0; i < n; i++) {
int curElement = arr[i];
if (s.empty() || arr[s.top()] <= curElement) {
s.push(i);
}
else {
while (!s.empty() && curElement < arr[s.top()]) {
st=s.top();
s.pop();
//comping areas
if (s.empty()) {
area = arr[st] * i;
ans[st] = area;
}
else {
area = arr[st] * (i - s.top()-1);
ans[st] = area;
}
}
s.push(i);
}
}
while (s.empty() == false) {
st=s.top();
s.pop();
//comping areas
if (s.empty()) {
area = arr[st] * i;
ans[st] = area;
}
else {
area = arr[st] * (i - s.top()-1);
ans[st] = area;
}
}
long long int Max = 0;
for (int i = 0; i < n; i++) {
cout << ans[i] << " ";
Max = max(Max, ans[i]);
}
cout<<endl;
cout << "maxArea" << Max;
}
int main() {
long long int arr[1000000002];
int n;
cin>>n;
int i=0;
while(i<n){
cin>>arr[i];
i++;
}
largestAreaUnderHistogram(arr, n);
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0YWNrPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIGxhcmdlc3RBcmVhVW5kZXJIaXN0b2dyYW0obG9uZyBsb25nIGludCBhcnJbXSwgaW50IG4pIHsKICAgIHN0YWNrPGxvbmcgbG9uZyBpbnQ+czsKICAgIGxvbmcgbG9uZyBpbnQgYXJlYSA9IDAsIGFuc1sxMDAwMDAwMDAyXSwgc3Q7CiAgICBpbnQgaTsKICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpbnQgY3VyRWxlbWVudCA9IGFycltpXTsKICAgICAgICBpZiAocy5lbXB0eSgpIHx8IGFycltzLnRvcCgpXSA8PSBjdXJFbGVtZW50KSB7CiAgICAgICAgICAgIHMucHVzaChpKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHdoaWxlICghcy5lbXB0eSgpICYmIGN1ckVsZW1lbnQgPCBhcnJbcy50b3AoKV0pIHsKICAgICAgICAgICAgICAgIHN0PXMudG9wKCk7CiAgICAgICAgICAgICAgICBzLnBvcCgpOwogICAgICAgICAgICAgICAgLy9jb21waW5nIGFyZWFzCiAgICAgICAgICAgICAgICBpZiAocy5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgYXJlYSA9IGFycltzdF0gKiBpOwogICAgICAgICAgICAgICAgICAgICBhbnNbc3RdID0gYXJlYTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGFyZWEgPSBhcnJbc3RdICogKGkgLSBzLnRvcCgpLTEpOwogICAgICAgICAgICAgICAgICAgIGFuc1tzdF0gPSBhcmVhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHMucHVzaChpKTsKICAgICAgICB9CiAgICB9CgogICAgd2hpbGUgKHMuZW1wdHkoKSA9PSBmYWxzZSkgewogICAgICAgIHN0PXMudG9wKCk7CiAgICAgICAgcy5wb3AoKTsKICAgICAgICAvL2NvbXBpbmcgYXJlYXMKICAgICAgICBpZiAocy5lbXB0eSgpKSB7CiAgICAgICAgICAgIGFyZWEgPSBhcnJbc3RdICogaTsKICAgICAgICAgICAgYW5zW3N0XSA9IGFyZWE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBhcmVhID0gYXJyW3N0XSAqIChpIC0gcy50b3AoKS0xKTsKICAgICAgICAgICAgYW5zW3N0XSA9IGFyZWE7CiAgICAgICAgfQogICAgICAgIAogICAgfQogICBsb25nIGxvbmcgaW50IE1heCA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGNvdXQgPDwgYW5zW2ldIDw8ICIgIjsKICAgICAgICBNYXggPSBtYXgoTWF4LCBhbnNbaV0pOwogICAgfQogICAgY291dDw8ZW5kbDsKICAgIGNvdXQgPDwgIm1heEFyZWEiIDw8IE1heDsKfQoKaW50IG1haW4oKSB7CiAgICBsb25nIGxvbmcgaW50IGFyclsxMDAwMDAwMDAyXTsKICAgIGludCBuOwogICAgY2luPj5uOwogICAgaW50IGk9MDsKICAgIHdoaWxlKGk8bil7CiAgICAgICAgY2luPj5hcnJbaV07CiAgICAgICAgaSsrOwogICAgfQogICAgbGFyZ2VzdEFyZWFVbmRlckhpc3RvZ3JhbShhcnIsIG4pOwogICAgcmV0dXJuIDA7Cn0=