1 #include <stdio.h>
2 #define MAX_N 100000
3
4 int n;
5 int h[MAX_N];
6 int L[MAX_N], R[MAX_N];
7 int stack[MAX_N];
8
9 long long max(long long a, long long b)
10 {
11 return (a > b) ? a : b;
12 }
13
14 void solve()
15 {
16 //计算L
17 long long ans = 0;
18 int t = 0;
19 int i;
20 for (i = 0; i < n; ++i)
21 {
22 while (t > 0 && h[stack[t-1]] >= h[i])
23 t--;
24 L[i] = (t == 0) ? 0 : (stack[t-1] + 1);
25 stack[t++] = i;
26 }
27
28 //计算R
29 t = 0;
30 for (i = n - 1; i >= 0; --i)
31 {
32 while (t > 0 && h[stack[t-1]] >= h[i])
33 t--;
34 R[i] = (t == 0) ? n : stack[t-1];
35 stack[t++] = i;
36 }
37
38 for (i = 0; i < n; ++i)
39 {
40 ans=max ( ans, ( long long)h[i]*( R[i]- L[i]));
41 }
42 printf("%lld\n", ans);
43 }
44
45 int main(void){
46 // freopen("a.txt","r",stdin);
47 int i;
48 while (scanf("%d", &n) != EOF && n != 0)
49 {
50 for (i = 0; i < n; ++i)
51 scanf("%d", &h[i]);
52 solve();
53 }
54
55 return 0;
56 }