#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
using namespace std;
const long long MOD = 1e+9 + 7;
const long long INF = 0x7f7f7f7f7f7f7f7f;
const int INFi = 0x7f7f7f7f;
const long long MAXN = 5e+5 + 7;
vector<long long> adj[MAXN];
long long visit[MAXN] = {};
int dx8[] = {0, 1, 1, 1, 0, -1, -1, -1}, dy8[] = {1, 1, 0, -1, -1, -1, 0, 1};
int dx4[] = {0, 1, 0, -1}, dy4[] = {1, 0, -1, 0};
int t = 1;
long long n, len;
long long a[5000], b[5000], vis[5000];
long long v[5000];
bool isSubsetSum(long long set[], long long n, long long sum) {
  bool subset[n + 1][sum + 1];
  for (long long i = 0; i <= n; i++) subset[i][0] = true;
  for (long long i = 1; i <= sum; i++) subset[0][i] = false;
  for (long long i = 1; i <= n; i++) {
    for (long long j = 1; j <= sum; j++) {
      if (j < set[i - 1]) subset[i][j] = subset[i - 1][j];
      if (j >= set[i - 1])
        subset[i][j] = subset[i - 1][j] || subset[i - 1][j - set[i - 1]];
    }
  }
  return subset[n][sum];
}
void MAIN() {
  cin >> n;
  long long ind = 0;
  for (long long i = 0; i <= 4500; i++)
    a[i] = 0, b[i] = 0, v[i] = 0, vis[i] = 0;
  for (long long i = 1; i <= 2 * n; i++) {
    cin >> a[i];
    b[a[i]] = i;
  }
  for (long long i = 2 * n; i >= 1; i--) {
    if (vis[i]) continue;
    long long j = b[i];
    long long st = j;
    while (!vis[a[j]] && j <= 2 * n) {
      vis[a[j]] = 1;
      j++;
    }
    v[ind] = j - st;
    ind++;
  }
  if (isSubsetSum(v, ind, n) == true)
    cout << "YES" << endl;
  else
    cout << "NO" << endl;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout << fixed;
  cout << setprecision(10);
  ;
  mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
  ;
  cin >> t;
  while (t--) {
    MAIN();
  }
}
