#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include <stdio.h>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<tuple>
#include<numeric>
#include<stack>
using namespace::std;
typedef long long ll;
int n,t;
inline __int128 read(){
__int128 x = 0, f = 1;
char ch = getchar();
while(ch < '0' || ch > '9'){
if(ch == '-')
f = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9'){
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
inline void print(__int128 x){
if(x < 0){
putchar('-');
x = -x;
}
if(x > 9)
print(x / 10);
putchar(x % 10 + '0');
}
int a[300005];
int dd[300005];
void solv(){
cin>>n;
for (int i=0; i<n; i++) {
cin>>a[i];
dd[i]=0;
}
dd[0]=1;
int ss=-1;
for (int i =1; i<n; i++) {
dd[i]=1;
for (int j = max(0, i-256); j<i; j++) {
if ((a[j]^i)<(a[i]^j)) {
dd[i]=max(dd[i], dd[j]+1);
}
}
ss=max(ss, dd[i]);
}
printf("%lld\n",ss);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(); cout.tie();
cin>>t;
while (t--) {
solv();
}
return 0;
}