// title:Height of BST
#include<bits/stdc++.h>
using namespace std;
struct BSTNode
{
int data;
struct BSTNode *left,*right;
BSTNode(int val)
{
this->data=val;
this->left=this->right=NULL;
}
};
struct BSTNode * insert(struct BSTNode *root,int n)
{
if(root==NULL)
return new BSTNode(n);
else if(n<root->data)
root->left=insert(root->left,n);
else if(n>=root->data)
root->right=insert(root->right,n);
return root;
}
int height(struct BSTNode * root)
{
if(root==NULL)
return 0;
int lh=height(root->left);
int rh=height(root->right);
return max(lh,rh)+1;
}
int main(){
// write your code here
int tq;
cin>>tq;
while(tq--)
{
int n;
cin>>n;
struct BSTNode * root=NULL;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
root=insert(root,x);
}
int h=0;
cout<<height(root)-1;
cout<<"\n";
}
return 0;
}
Ly8gdGl0bGU6SGVpZ2h0IG9mIEJTVAojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3QgQlNUTm9kZQp7CiAgICBpbnQgZGF0YTsKICAgIHN0cnVjdCBCU1ROb2RlICpsZWZ0LCpyaWdodDsKICAgIEJTVE5vZGUoaW50IHZhbCkKICAgIHsKICAgICAgICB0aGlzLT5kYXRhPXZhbDsKICAgICAgICB0aGlzLT5sZWZ0PXRoaXMtPnJpZ2h0PU5VTEw7CiAgICB9Cn07CnN0cnVjdCBCU1ROb2RlICogaW5zZXJ0KHN0cnVjdCBCU1ROb2RlICpyb290LGludCBuKQp7CiAgICBpZihyb290PT1OVUxMKQogICAgcmV0dXJuIG5ldyBCU1ROb2RlKG4pOwogICAgZWxzZSBpZihuPHJvb3QtPmRhdGEpCiAgICByb290LT5sZWZ0PWluc2VydChyb290LT5sZWZ0LG4pOwogICAgZWxzZSBpZihuPj1yb290LT5kYXRhKQogICAgcm9vdC0+cmlnaHQ9aW5zZXJ0KHJvb3QtPnJpZ2h0LG4pOwogICAgcmV0dXJuIHJvb3Q7Cn0KaW50IGhlaWdodChzdHJ1Y3QgQlNUTm9kZSAqIHJvb3QpCnsKICAgIGlmKHJvb3Q9PU5VTEwpCiAgICByZXR1cm4gMDsKICAgIGludCBsaD1oZWlnaHQocm9vdC0+bGVmdCk7CiAgICBpbnQgcmg9aGVpZ2h0KHJvb3QtPnJpZ2h0KTsKICAgIHJldHVybiBtYXgobGgscmgpKzE7Cn0KaW50IG1haW4oKXsKICAgLy8gd3JpdGUgeW91ciBjb2RlIGhlcmUKICAgaW50IHRxOwogICBjaW4+PnRxOwogICB3aGlsZSh0cS0tKQogICB7CiAgICAgICBpbnQgbjsKICAgICAgIGNpbj4+bjsKICAgICAgIHN0cnVjdCBCU1ROb2RlICogcm9vdD1OVUxMOwogICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgIHsKICAgICAgICAgICBpbnQgeDsKICAgICAgICAgICBjaW4+Png7CiAgICAgICAgICAgcm9vdD1pbnNlcnQocm9vdCx4KTsKICAgICAgIH0KICAgICAgIGludCBoPTA7CiAgICAgICBjb3V0PDxoZWlnaHQocm9vdCktMTsKICAgICAgIGNvdXQ8PCJcbiI7CiAgIH0KICAgIHJldHVybiAwOwp9