#include <iostream>
#include <map>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
struct node{
int v;
struct node *l, *r;
};
node * create(node *root,int v){
if(root == NULL){
root = new node();
root->v = v;
root->r = root->l = NULL;
}
else if(abs(v) < abs(root->v)) root->l= create(root->l,v);
else root->r = create(root->r,v);
return root;
}
bool test1(node * root){
if(root==NULL) return true;
if(root->v < 0){
if(root->r != NULL && root->r->v < 0) return false;
if(root->l != NULL && root->l->v < 0) return false;
}
return (test1(root->r)&&test1(root->l));
}
int num(node * root){
if(root == NULL) return 0;
int l = num(root->l);
int r = num(root->r);
return root -> v > 0? max(l,r)+1:max(l,r);
}
bool test2(node *root){
if(root == NULL) return true;
int l = num(root->l);
int r = num(root->r);
if(l != r) return false;
return (test2(root->r)&&test2(root->l));
}
int main()
{
int k,n;
scanf("%d",&k);
for(int i = 0; i < k; i++){
scanf("%d",&n);
int pre[n];
node * root = NULL;
for(int j = 0; j < n; j++){
scanf("%d",&pre[j]);
root = create(root,pre[j]);
}
if(pre[0] < 0 || !test1(root)||!test2(root)) printf("No\n");
else printf("Yes\n");
}
system("pause");
return 0;
}