1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
typedef long long ll;
using namespace __gnu_pbds;
using namespace std;

template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int n; cin >> n;
	vector<int> a(n);
	for(int i=0; i<n; ++i) cin >> a[i];
	stack<int> stos;
	auto dozuc = [&](int x) {
		while(stos.size() && stos.top() <= x) stos.pop();
		stos.push(x);
	};
	for(int i=n-1; i>=0; --i) {
		dozuc(a[i]);
	}
	int ans = stos.size();
	for(int i=n-1; i>0; --i) {
		dozuc(a[i]);
		ans = max(ans, (int)stos.size());
	}
	cout << ans << "\n";

	return 0;
}