#include <bits/stdc++.h>

using namespace std;

const int N=5e5+5;

typedef long long ll;

int f[N],n,T;
stack<pair<int,int>> st;

void up(int i,int v){
  for(;i<N;i+=i&-i)f[i]=max(f[i],v);
}

int query(int i){
  int res=0;
  for(;i;i-=i&-i)res=max(res,f[i]);
  return res;
}

int main() {
  cin >> T;
  while(T--){
    while(!st.empty())st.pop();
    memset(f,0,sizeof f);
    cin >> n;
    st.push(make_pair(1,1));
    up(1,1);
    for(int i=0;i<n;++i){
      int a;
      cin>>a;
      int t=query(a)+1;
      while(!st.empty()&&st.top().first<=a){
        up(st.top().first,st.top().second+1);
        st.pop();
      }
      st.push(make_pair(a,t));
      up(a,t);
    }
    cout << query(N-1) - 1 <<'\n';
  }
}
