#include <bits/stdc++.h>
#pragma GCC target( \
    "sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("fast-math")
using namespace std;
mt19937 rnd(time(0) + 228 + 'k' + 'e' + 'k' + 'e' + 'r' + 'o' + 'f' + 'e' +
            'y');
vector<int> genvec(int sz, int minelem, int maxelem) {
  ++maxelem;
  vector<int> ans(sz);
  for (int i = 0; i < sz; ++i) {
    ans[i] = minelem + rnd() % (maxelem - minelem);
  }
  return ans;
}
const long double EPS = 1e-14;
bool checkprime(int x) {
  for (int i = 2; i * i <= x; ++i)
    if (x % i == 0) return 0;
  return 1;
}
const long double PI = acos(-1);
const int MOD7 = 1000000007;
const int MOD9 = 1000000009;
const long long INF = 2e18;
int mod = MOD7;
const int inf = 1e9;
signed main() {
  ios_base::sync_with_stdio(0);
  cout.tie(0);
  cin.tie(0);
  srand(time(NULL));
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    vector<int> p(2 * n);
    for (long long i = 0; i < p.size(); ++i) cin >> p[i];
    ;
    int mx = 0;
    vector<int> luls;
    int cnt = 0;
    for (int i : p) {
      if (i > mx) {
        mx = i;
        if (cnt) luls.push_back(cnt);
        cnt = 1;
      } else {
        ++cnt;
      }
    }
    luls.push_back(cnt);
    vector<bool> dp(n + 1);
    dp[0] = 1;
    int ps = 0;
    for (int i : luls) {
      ps += i;
      for (int sum = n; sum >= 0; --sum) {
        if (!dp[sum]) continue;
        if (ps - sum - i > n) continue;
        if (sum + i <= n) {
          dp[sum + i] = 1;
        }
      }
    }
    cout << (dp[n] ? "YES" : "NO") << endl;
  }
}
