#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i,n) for (int i = 0; i < (n); ++i) using namespace atcoder; using namespace std; typedef long long int ll; typedef modint998244353 mint; ll gcd(ll a, ll b) { if (a < b)swap(a, b); if (b == 0)return a; return gcd(b, a % b); } int lcm(int a, int b) { return a * b / gcd(a, b); } /* 解説動画参考 解説ブログ参考 */ int main() { int Q; Q = 1; cin >> Q; while (Q--) { int n; cin >> n; vectorp(2*n+1); vectora(n+1), b(n+1); for (int i = 1; i <= n*2; i++)cin >> p[i]; for (int i = 1; i <= n*2; i++) { if (!a[p[i]])a[p[i]] = i; else b[p[i]] = i; //cout << a[p[i]] << b[p[i]] << " "; } //cout << "#"; bool f = 1; for (int i = 1; i <= n; i++) { if (p[i] == p[i + n])continue; f = 0; break; } if (f) { cout << "Yes" << endl; continue; } f = 0; for (int i = 1; i < 2*n; i++) { if (b[p[i]] == i)continue; vectort(2 * n + 1); t = p; int d = b[p[i]]; int I = i; while(d>I) { swap(t[I], t[d]); d--; I++; } f = 1; //for (int j = 1; j <= 2 * n; j++)cout << t[j]; //cout << endl; for (int j = 1; j <= n; j++) { if (t[j] == t[j + n])continue; f = 0; } if (f)break; } if (f)cout << "Yes" << endl; else cout << "No" << endl; } return 0; }