#include #include #include #include #include #include #include #include #include #include #define mkp make_pair #define mkt make_tuple #define rep(i,n) for(int i = 0; i < (n); ++i) #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; const ll MOD=1e9+7; template void chmin(T &a,const T &b){if(a>b) a=b;} template void chmax(T &a,const T &b){if(a>N; vector A(N); rep(i,N) cin>>A[i]; rep(i,N) A[i]--; for(int t=0;t<2;t++){ vector idxs; for(int i=0;i+1=A[i+1]){ idxs.push_back(i); idxs.push_back(i+1); } } } for(int i=0;i+2=11){ rep(i,N) A[i]=-A[i]; continue; } for(int j=0;j=A[i+1]) ok=false; } } for(int i=0;i+2 se; rep(i,V) se.insert(idxs[i]); auto check = [&](int now)->bool{ for(int i=now-2;i<=now+2;i++){ if(i>=0&&i+2=0&&i+1=A[i+1]) return false; } } } return true; }; for(auto id:idxs){ for(int d=id-2;d<=id+2;d++){ if(se.count(d)) se.erase(d); } for(int i=0;i mp; for(int d=i-2;d<=i+2;d++){ if(se.count(d)){ se.erase(d); mp[d]=1; } } swap(A[i],A[id]); if(se.empty()&&check(i)&&check(id)){ cout<<"Yes"<<"\n"; return; } swap(A[i],A[id]); for(auto m:mp) se.insert(m.first); } rep(i,V) if(se.count(idxs[i])==false) se.insert(idxs[i]); } rep(i,N) A[i]=-A[i]; } cout<<"No"<<"\n"; } int main(){ cin.tie(0); ios::sync_with_stdio(false); int T; cin>>T; rep(i,T) solve(); return 0; }