#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define F first
#define S second
#define pb push_back
#define pii pair<int,int>
const int N = 2e5 + 5;
struct BIT {
int n;
vector<int> bit;
BIT() {}
BIT(int n) : n(n) {
bit.assign(n + 3, 0);
}
void update(int id, int val) {
for (int i = id; i <= n; i += (i & -i)) {
bit[i] = max(bit[i], val);
}
}
int get(int id) {
int ret = 0;
for (int i = id; i > 0; i -= (i & -i)) {
ret = max(ret, bit[i]);
}
return ret;
}
} lis;
struct BIT2 {
int n;
vector<int> bit;
BIT2() {}
BIT2(int n) : n(n) {
bit.assign(n + 3, 0);
}
void update(int id, int val) {
for (int i = id; i <= n; i += (i & -i)) {
bit[i] = max(bit[i], val);
}
}
int get(int id) {
id = max(1, id);
int ret = 0;
for (int i = id; i <= n; i += (i & -i)) {
ret = max(ret, bit[i]);
}
return ret;
}
} lds;
int n, a[N], pre[N], suf[N], f[N], cost[N];
void solve() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
set<int> s;
s.insert(0);
s.insert(n + 1);
f[0] = f[n + 1] = 0;
for (int i = 1; i <= n; i++) {
auto it = --s.upper_bound(a[i]);
pre[i] = *it;
suf[i] = *(++it);
s.insert(a[i]);
f[pre[i]]++;
f[a[i]] = f[pre[i]];
cost[i] = f[a[i]];
}
int res = 0;
lis = BIT(n);
lds = BIT2(n);
for (int i = n; i >= 1; i--) {
res = max(res, cost[i] + lis.get(pre[i]) + lds.get(pre[i]));
res = max(res, cost[i] + lis.get(suf[i]) + lds.get(suf[i]));
lis.update(a[i], lis.get(a[i]) + 1);
lds.update(a[i], lds.get(a[i]) + 1);
}
cout << res << '\n';
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int T;
cin >> T;
while (T--) {
solve();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHBpaSBwYWlyPGludCxpbnQ+Cgpjb25zdCBpbnQgTiA9IDJlNSArIDU7CgpzdHJ1Y3QgQklUIHsKICAgIGludCBuOwogICAgdmVjdG9yPGludD4gYml0OwoKICAgIEJJVCgpIHt9CiAgICBCSVQoaW50IG4pIDogbihuKSB7CiAgICAgICAgYml0LmFzc2lnbihuICsgMywgMCk7CiAgICB9CgogICAgdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgdmFsKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IGlkOyBpIDw9IG47IGkgKz0gKGkgJiAtaSkpIHsKICAgICAgICAgICAgYml0W2ldID0gbWF4KGJpdFtpXSwgdmFsKTsKICAgICAgICB9CiAgICB9CgogICAgaW50IGdldChpbnQgaWQpIHsKICAgICAgICBpbnQgcmV0ID0gMDsKICAgICAgICBmb3IgKGludCBpID0gaWQ7IGkgPiAwOyBpIC09IChpICYgLWkpKSB7CiAgICAgICAgICAgIHJldCA9IG1heChyZXQsIGJpdFtpXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXQ7CiAgICB9Cn0gbGlzOwoKc3RydWN0IEJJVDIgewogICAgaW50IG47CiAgICB2ZWN0b3I8aW50PiBiaXQ7CgogICAgQklUMigpIHt9CiAgICBCSVQyKGludCBuKSA6IG4obikgewogICAgICAgIGJpdC5hc3NpZ24obiArIDMsIDApOwogICAgfQoKICAgIHZvaWQgdXBkYXRlKGludCBpZCwgaW50IHZhbCkgewogICAgICAgIGZvciAoaW50IGkgPSBpZDsgaSA8PSBuOyBpICs9IChpICYgLWkpKSB7CiAgICAgICAgICAgIGJpdFtpXSA9IG1heChiaXRbaV0sIHZhbCk7CiAgICAgICAgfQogICAgfQoKICAgIGludCBnZXQoaW50IGlkKSB7CiAgICAgICAgaWQgPSBtYXgoMSwgaWQpOwogICAgICAgIGludCByZXQgPSAwOwogICAgICAgIGZvciAoaW50IGkgPSBpZDsgaSA8PSBuOyBpICs9IChpICYgLWkpKSB7CiAgICAgICAgICAgIHJldCA9IG1heChyZXQsIGJpdFtpXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXQ7CiAgICB9Cn0gbGRzOwoKaW50IG4sIGFbTl0sIHByZVtOXSwgc3VmW05dLCBmW05dLCBjb3N0W05dOwoKdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICB9CiAgICBzZXQ8aW50PiBzOwogICAgcy5pbnNlcnQoMCk7CiAgICBzLmluc2VydChuICsgMSk7CiAgICBmWzBdID0gZltuICsgMV0gPSAwOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgYXV0byBpdCA9IC0tcy51cHBlcl9ib3VuZChhW2ldKTsKICAgICAgICBwcmVbaV0gPSAqaXQ7CiAgICAgICAgc3VmW2ldID0gKigrK2l0KTsKICAgICAgICBzLmluc2VydChhW2ldKTsKICAgICAgICBmW3ByZVtpXV0rKzsKICAgICAgICBmW2FbaV1dID0gZltwcmVbaV1dOwogICAgICAgIGNvc3RbaV0gPSBmW2FbaV1dOwogICAgfQogICAgaW50IHJlcyA9IDA7CiAgICBsaXMgPSBCSVQobik7CiAgICBsZHMgPSBCSVQyKG4pOwogICAgZm9yIChpbnQgaSA9IG47IGkgPj0gMTsgaS0tKSB7CiAgICAgICAgcmVzID0gbWF4KHJlcywgY29zdFtpXSArIGxpcy5nZXQocHJlW2ldKSArIGxkcy5nZXQocHJlW2ldKSk7CiAgICAgICAgcmVzID0gbWF4KHJlcywgY29zdFtpXSArIGxpcy5nZXQoc3VmW2ldKSArIGxkcy5nZXQoc3VmW2ldKSk7CiAgICAgICAgbGlzLnVwZGF0ZShhW2ldLCBsaXMuZ2V0KGFbaV0pICsgMSk7CiAgICAgICAgbGRzLnVwZGF0ZShhW2ldLCBsZHMuZ2V0KGFbaV0pICsgMSk7CiAgICB9CiAgICBjb3V0IDw8IHJlcyA8PCAnXG4nOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgaW50IFQ7CiAgICBjaW4gPj4gVDsKICAgIHdoaWxlIChULS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQp9