#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 计算当前数组中最长的山脉长度
int longestMountain(const vector<int>& arr) {
int n = arr.size();
if (n < 3) return 0; // 山脉至少需要3个元素
int max_len = 0;
for (int peak = 1; peak < n - 1; peak++) {
// 检查是否可以成为山峰(严格递增到peak,然后严格递减)
if (arr[peak-1] < arr[peak] && arr[peak] > arr[peak+1]) {
int left = peak - 1;
int right = peak + 1;
// 向左扩展
while (left > 0 && arr[left-1] < arr[left]) {
left--;
}
// 向右扩展
while (right < n-1 && arr[right] > arr[right+1]) {
right++;
}
// 计算山脉长度
max_len = max(max_len, right - left + 1);
}
}
return max_len;
}
int main() {
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
// 初始最长山脉长度
int max_length = longestMountain(arr);
// 尝试修改每一个元素为可能的值
for (int i = 0; i < n; i++) {
int original = arr[i];
// 尝试修改为左右邻居的值(更可能形成山脉)
if (i > 0) {
arr[i] = arr[i-1];
max_length = max(max_length, longestMountain(arr));
}
if (i < n-1) {
arr[i] = arr[i+1];
max_length = max(max_length, longestMountain(arr));
}
// 特殊情况:如果是边界元素,尝试设置为中间值
if (i == 0 && n > 1) {
arr[i] = (arr[i+1] - 1);
max_length = max(max_length, longestMountain(arr));
}
if (i == n-1 && n > 1) {
arr[i] = (arr[i-1] - 1);
max_length = max(max_length, longestMountain(arr));
}
arr[i] = original; // 恢复原值
}
cout << max_length << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8g6K6h566X5b2T5YmN5pWw57uE5Lit5pyA6ZW/55qE5bGx6ISJ6ZW/5bqmCmludCBsb25nZXN0TW91bnRhaW4oY29uc3QgdmVjdG9yPGludD4mIGFycikgewogICAgaW50IG4gPSBhcnIuc2l6ZSgpOwogICAgaWYgKG4gPCAzKSByZXR1cm4gMDsgLy8g5bGx6ISJ6Iez5bCR6ZyA6KaBM+S4quWFg+e0oAogICAgCiAgICBpbnQgbWF4X2xlbiA9IDA7CiAgICAKICAgIGZvciAoaW50IHBlYWsgPSAxOyBwZWFrIDwgbiAtIDE7IHBlYWsrKykgewogICAgICAgIC8vIOajgOafpeaYr+WQpuWPr+S7peaIkOS4uuWxseWzsO+8iOS4peagvOmAkuWinuWIsHBlYWvvvIznhLblkI7kuKXmoLzpgJLlh4/vvIkKICAgICAgICBpZiAoYXJyW3BlYWstMV0gPCBhcnJbcGVha10gJiYgYXJyW3BlYWtdID4gYXJyW3BlYWsrMV0pIHsKICAgICAgICAgICAgaW50IGxlZnQgPSBwZWFrIC0gMTsKICAgICAgICAgICAgaW50IHJpZ2h0ID0gcGVhayArIDE7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyDlkJHlt6bmianlsZUKICAgICAgICAgICAgd2hpbGUgKGxlZnQgPiAwICYmIGFycltsZWZ0LTFdIDwgYXJyW2xlZnRdKSB7CiAgICAgICAgICAgICAgICBsZWZ0LS07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIOWQkeWPs+aJqeWxlQogICAgICAgICAgICB3aGlsZSAocmlnaHQgPCBuLTEgJiYgYXJyW3JpZ2h0XSA+IGFycltyaWdodCsxXSkgewogICAgICAgICAgICAgICAgcmlnaHQrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8g6K6h566X5bGx6ISJ6ZW/5bqmCiAgICAgICAgICAgIG1heF9sZW4gPSBtYXgobWF4X2xlbiwgcmlnaHQgLSBsZWZ0ICsgMSk7CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gbWF4X2xlbjsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgVDsKICAgIGNpbiA+PiBUOwogICAgCiAgICB3aGlsZSAoVC0tKSB7CiAgICAgICAgaW50IG47CiAgICAgICAgY2luID4+IG47CiAgICAgICAgdmVjdG9yPGludD4gYXJyKG4pOwogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGNpbiA+PiBhcnJbaV07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIOWIneWni+acgOmVv+WxseiEiemVv+W6pgogICAgICAgIGludCBtYXhfbGVuZ3RoID0gbG9uZ2VzdE1vdW50YWluKGFycik7CiAgICAgICAgCiAgICAgICAgLy8g5bCd6K+V5L+u5pS55q+P5LiA5Liq5YWD57Sg5Li65Y+v6IO955qE5YC8CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgaW50IG9yaWdpbmFsID0gYXJyW2ldOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8g5bCd6K+V5L+u5pS55Li65bem5Y+z6YK75bGF55qE5YC877yI5pu05Y+v6IO95b2i5oiQ5bGx6ISJ77yJCiAgICAgICAgICAgIGlmIChpID4gMCkgewogICAgICAgICAgICAgICAgYXJyW2ldID0gYXJyW2ktMV07CiAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoID0gbWF4KG1heF9sZW5ndGgsIGxvbmdlc3RNb3VudGFpbihhcnIpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaSA8IG4tMSkgewogICAgICAgICAgICAgICAgYXJyW2ldID0gYXJyW2krMV07CiAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoID0gbWF4KG1heF9sZW5ndGgsIGxvbmdlc3RNb3VudGFpbihhcnIpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8g54m55q6K5oOF5Ya177ya5aaC5p6c5piv6L6555WM5YWD57Sg77yM5bCd6K+V6K6+572u5Li65Lit6Ze05YC8CiAgICAgICAgICAgIGlmIChpID09IDAgJiYgbiA+IDEpIHsKICAgICAgICAgICAgICAgIGFycltpXSA9IChhcnJbaSsxXSAtIDEpOwogICAgICAgICAgICAgICAgbWF4X2xlbmd0aCA9IG1heChtYXhfbGVuZ3RoLCBsb25nZXN0TW91bnRhaW4oYXJyKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGkgPT0gbi0xICYmIG4gPiAxKSB7CiAgICAgICAgICAgICAgICBhcnJbaV0gPSAoYXJyW2ktMV0gLSAxKTsKICAgICAgICAgICAgICAgIG1heF9sZW5ndGggPSBtYXgobWF4X2xlbmd0aCwgbG9uZ2VzdE1vdW50YWluKGFycikpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBhcnJbaV0gPSBvcmlnaW5hbDsgLy8g5oGi5aSN5Y6f5YC8CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGNvdXQgPDwgbWF4X2xlbmd0aCA8PCBlbmRsOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQo=