//trapped rainwater problem with Stack
import java.io.*;
import java.util.*;
class Main {
int n
=Integer.
parseInt(br.
readLine()); int[] arr=new int[n];
for(int i=0;i<n;i++){
arr
[i
]=Integer.
parseInt(br.
readLine()); }
int total=0;
Stack<Integer> st=new Stack<>();
for(int i=0;i<n;i++){
while(!st.isEmpty()&&arr[st.peek()]<arr[i]){
int pop_height=arr[st.pop()];
if(st.isEmpty()) break;
int distance=i-st.peek()-1;
int height
=Math.
min(arr
[st.
peek()],arr
[i
]); int water=(height-pop_height)*distance;
total+=water;
}
st.push(i);
}
}
}
Ly90cmFwcGVkIHJhaW53YXRlciBwcm9ibGVtIHdpdGggU3RhY2sKCmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuKjsKCmNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGJyPW5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CiAgICAgICAgaW50IG49SW50ZWdlci5wYXJzZUludChici5yZWFkTGluZSgpKTsKICAgICAgICBpbnRbXSBhcnI9bmV3IGludFtuXTsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICAgICAgYXJyW2ldPUludGVnZXIucGFyc2VJbnQoYnIucmVhZExpbmUoKSk7CiAgICAgICAgfQogICAgICAgIGludCB0b3RhbD0wOwogICAgICAgIFN0YWNrPEludGVnZXI+IHN0PW5ldyBTdGFjazw+KCk7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgICAgIAogICAgICAgICAgICB3aGlsZSghc3QuaXNFbXB0eSgpJiZhcnJbc3QucGVlaygpXTxhcnJbaV0pewogICAgICAgICAgICAgICAgaW50IHBvcF9oZWlnaHQ9YXJyW3N0LnBvcCgpXTsKICAgICAgICAgICAgICAgIGlmKHN0LmlzRW1wdHkoKSkgYnJlYWs7CiAgICAgICAgICAgICAgICBpbnQgZGlzdGFuY2U9aS1zdC5wZWVrKCktMTsKICAgICAgICAgICAgICAgIGludCBoZWlnaHQ9TWF0aC5taW4oYXJyW3N0LnBlZWsoKV0sYXJyW2ldKTsKICAgICAgICAgICAgICAgIGludCB3YXRlcj0oaGVpZ2h0LXBvcF9oZWlnaHQpKmRpc3RhbmNlOwogICAgICAgICAgICAgICAgdG90YWwrPXdhdGVyOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3QucHVzaChpKTsKICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRvdGFsKTsKICAgIH0KfQ==