//{ Driver Code Starts
#include
using namespace std;
// } Driver Code Ends
class Solution {
public:
int dp[100001][2];
vector arr;
int rec1(int at, bool count){
if(dp[at][count] != -1){
return dp[at][count];
}
int res = 0;
for(int i = at + 1; i < arr.size(); i++){
if(arr[i] < arr[at] && count == true){
res = max(res, rec1(i, false) + 1);
}
if(arr[i] > arr[at] && count == false){
res = max(res, rec1(i, true) + 1);
}
}
return dp[at][count] = res;
}
int ZigZagMaxLength(vector&nums){
memset(dp, -1, sizeof dp);
arr = nums;
int res = 0;
for(int i = 0; i < nums.size(); i++) {
res = max(res, rec1(i, 0) + 1);
res = max(res, rec1(i, 1) + 1);
}
return res;
}
};
//{ Driver Code Starts.
int main(){
int tc;
cin >> tc;
while(tc--){
int n;
cin >> n;
vectornums(n);
for(int i = 0; i < n; i++)
cin >> nums[i];
Solution obj;
int ans = obj.ZigZagMaxLength(nums);
cout << ans << "\n";
cout << "~" << "\n";
}
return 0;
}
// } Driver Code Ends