RT
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MAXN=5e5+5,MOD=998244353;
ll _,n;
ll a[MAXN];
ll mul2[MAXN];
struct sgm_t{
ll pre[MAXN<<2],suf[MAXN<<2],now_pre,now_suf,now_len;
void clear(){
memset(pre,0,sizeof(pre));
memset(suf,0,sizeof(suf));
return;
}
void push_up(ll id,ll L,ll R){
ll mid=(L+R>>1);
pre[id]=(pre[id<<1]+pre[id<<1|1]*mul2[mid-L+1]%MOD)%MOD;
suf[id]=(suf[id<<1|1]+suf[id<<1]*mul2[R-mid]%MOD)%MOD;
return;
}
void update(ll id,ll L,ll R,ll pos){
if(pos<L||pos>R)return;
if(L==R){
pre[id]=1;
suf[id]=1;
return;
}
ll mid=(L+R)>>1;
if(pos<=mid)update(id<<1,L,mid,pos);
else update(id<<1|1,mid+1,R,pos);
push_up(id,L,R);
return;
}
void query_pre(ll id,ll L,ll R,ll QL,ll QR){
if(L>R||QR<L||R<QL)return;
if(QL<=L&&R<=QR){
now_pre+=pre[id]*mul2[now_len]%MOD;
now_pre%=MOD;
now_len+=(R-L+1);
return;
}
ll mid=(L+R)>>1;
if(QL<=mid)query_pre(id<<1,L,mid,QL,QR);
if(QR>mid)query_pre(id<<1|1,mid+1,R,QL,QR);
return;
}
void query_suf(ll id,ll L,ll R,ll QL,ll QR){
if(L>R||QR<L||R<QL)return;
if(QL<=L&&R<=QR){
now_suf+=suf[id]*mul2[now_len]%MOD;
now_suf%=MOD;
now_len+=(R-L+1);
return;
}
ll mid=(L+R)>>1;
if(QR>mid)query_pre(id<<1|1,mid+1,R,QL,QR);
if(QL<=mid)query_pre(id<<1,L,mid,QL,QR);
return;
}
}S;
ll _l,_r;
string ans;
int main(){
mul2[0]=1;
for(int i=1;i<=5e5;i++)mul2[i]=mul2[i-1]*2%MOD;
cin>>_;
while(_--){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
S.clear();
ans="N";
for(int i=1;i<=n;i++){
S.update(1,1,n,a[i]);
if(a[i]<n-a[i]+1)_l=1,_r=a[i]*2-1;
else _r=n,_l=a[i]*2-n;
S.now_pre=S.now_suf=0;
S.now_len=0;S.query_pre(1,1,n,_l,a[i]);
S.now_len=0;S.query_suf(1,1,n,a[i],_r);
if(S.now_pre!=S.now_suf)ans="Y";
}
cout<<ans<<'\n';
}
return 0;
}