#include<iostream>
#include<deque>
#include<stack>
using namespace std;
const int max_n = 1e5 + 5;
struct num {
long long no;
long long value;
};
long long arr[max_n], num_ct, max_size = 0, flag = 0, res[max_n];
deque <long long> que, que1;
stack<num> s;
void next_greater(long long res[])
{
for (int i = num_ct - 1; i >= 0; i--) {
while (!s.empty() && s.top().value <= arr[i])s.pop();
num temp;
temp.no = i;
temp.value = arr[i];
res[i] = s.empty() ? -1 : s.top().no;
s.push(temp);
}
}
int main()
{
#define int long long
cin >> num_ct;
for (int i = 0; i < num_ct; i++)cin >> arr[i];
next_greater(res);
for (int i = 0; i < num_ct; i++) {
if (!que.empty() && (que.front() >= arr[i] || res[i - 1] == -1)) {
que.clear();
que1.clear();
flag = 0;
}
while (!que1.empty() && que1.back() < arr[i])que1.pop_back();
while (!que1.empty() && que1.back() == arr[i]) {
que1.pop_back();
flag = 1;
}
que.push_back(arr[i]);
que1.push_back(arr[i]);
if (arr[i] > que1.front())flag = 0;
if (que.size() > max_size && flag == 0 && que.back() == que1.front())max_size = que.size();
}
max_size = max_size == 1 ? 0 : max_size;
cout << max_size;
return 0;
}