#include <iostream>
#include <bits/stdc++.h>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#define You_ss_ef ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define pi 3.141592654
#define tc int T; cin >> T; while (T--)
#define FP(_) fixed << std::setprecision(_)
#define Gaza main
#define ll long long
#define ld long double
#define ss << ' '
#define el << '\n'
#define all(_) _.begin(), _.end()
#define rall(_) _.rbegin(), _.rend()
#define uni(_) _.erase(unique(all(_)), _.end())
using namespace std;
void IO() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
}
int n;
vector <int> v;
int dp[2][2001][2001];
int solve(int t, int i, int w)
{
if(i == n) return 0;
int &ret = dp[t][i][w];
if(~ret) return ret;
int x = 0, y = 0, z = 0, o = 0, p = 0;
if(w == 0) {
o = solve(0,v[i],v[i]) + 1;
p = solve(1,v[i],v[i]) + 1;
}
else {
if(!t and v[i] > w) x = solve(t,i+1,v[i]) + 1;
if(t and v[i] < w) y = solve(t,i+1,v[i]) + 1;
}
z = solve(t,i+1,w);
return ret = max({x,y,z,o,p});
}
void answer()
{
cin >> n;
v.resize(n);
for(auto &i : v) cin >> i;
memset(dp,-1,sizeof(dp));
cout << solve(0,0,0);
}
int Gaza()
{ You_ss_ef
IO();
int TC = 1;
cin >> TC;
do {
answer();
TC--;
// if (TC)
cout el;
} while (TC != 0);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8c3RyaW5nPgojZGVmaW5lIFlvdV9zc19lZiBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiNkZWZpbmUgcGkgMy4xNDE1OTI2NTQKI2RlZmluZSB0YyBpbnQgVDsgY2luID4+IFQ7IHdoaWxlIChULS0pCiNkZWZpbmUgRlAoXykgZml4ZWQgPDwgc3RkOjpzZXRwcmVjaXNpb24oXykKI2RlZmluZSBHYXphIG1haW4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBsZCBsb25nIGRvdWJsZQojZGVmaW5lIHNzIDw8ICcgJwojZGVmaW5lIGVsIDw8ICdcbicKI2RlZmluZSBhbGwoXykgXy5iZWdpbigpLCBfLmVuZCgpCiNkZWZpbmUgcmFsbChfKSBfLnJiZWdpbigpLCBfLnJlbmQoKQojZGVmaW5lIHVuaShfKSBfLmVyYXNlKHVuaXF1ZShhbGwoXykpLCBfLmVuZCgpKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIElPKCkgewojaWZuZGVmIE9OTElORV9KVURHRQpmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2VuZGlmCn0gCmludCBuOyAgIAp2ZWN0b3IgPGludD4gdjsKaW50IGRwWzJdWzIwMDFdWzIwMDFdOwppbnQgc29sdmUoaW50IHQsIGludCBpLCBpbnQgdykKewogICAgaWYoaSA9PSBuKSByZXR1cm4gMDsKICAgIGludCAmcmV0ID0gZHBbdF1baV1bd107CiAgICBpZih+cmV0KSByZXR1cm4gcmV0OyAKICAgIGludCB4ID0gMCwgeSA9IDAsIHogPSAwLCBvID0gMCwgcCA9IDA7IAogICAgaWYodyA9PSAwKSB7CiAgICAgICAgbyA9IHNvbHZlKDAsdltpXSx2W2ldKSArIDE7IAogICAgICAgIHAgPSBzb2x2ZSgxLHZbaV0sdltpXSkgKyAxOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaWYoIXQgYW5kIHZbaV0gPiB3KSB4ID0gc29sdmUodCxpKzEsdltpXSkgKyAxOyAKICAgICAgICBpZih0IGFuZCB2W2ldIDwgdykgeSA9IHNvbHZlKHQsaSsxLHZbaV0pICsgMTsKICAgIH0KICAgIHogPSBzb2x2ZSh0LGkrMSx3KTsKICAgIHJldHVybiByZXQgPSBtYXgoe3gseSx6LG8scH0pOwp9CnZvaWQgYW5zd2VyKCkgCnsgICAKICAgIGNpbiA+PiBuOwogICAgdi5yZXNpemUobik7CiAgICBmb3IoYXV0byAmaSA6IHYpIGNpbiA+PiBpOyAKICAgIG1lbXNldChkcCwtMSxzaXplb2YoZHApKTsKICAgIGNvdXQgPDwgc29sdmUoMCwwLDApOwp9CmludCBHYXphKCkKeyAgIFlvdV9zc19lZiAgIAogICAgSU8oKTsKICAgIGludCBUQyA9IDE7CiAgICBjaW4gPj4gVEM7CiAgICBkbyB7CiAgICAgICAgYW5zd2VyKCk7CiAgICAgICAgVEMtLTsKICAgICAgICAvLyBpZiAoVEMpCiAgICAgICAgICAgIGNvdXQgZWw7CiAgICB9IHdoaWxlIChUQyAhPSAwKTsKICAgIHJldHVybiAwOwp9