#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long powmod(long long x, long long y) {
  long long t;
  for (t = 1; y; y >>= 1, x = x * x % mod)
    if (y & 1) t = t * x % mod;
  return t;
}
long long gcd(long long x, long long y) { return y ? gcd(y, x % y) : x; }
long long lcm(long long x, long long y) { return x * (y / gcd(x, y)); }
long long modd(long long a) { return (a % mod + mod) % mod; }
long long add(long long a, long long b) { return modd(modd(a) + modd(b)); }
long long mul(long long a, long long b) { return modd(modd(a) * modd(b)); }
int smask(int i, int pos) { return (i | (1 << pos)); }
int clmask(int i, int pos) { return (i & (~(1 << pos))); }
bool chmask(int i, int pos) { return (i & (1 << pos)) != 0; }
double cordist(pair<double, double> a, pair<double, double> b) {
  return sqrt(((a.first - b.first) * (a.first - b.first)) +
              ((a.second - b.second) * (a.second - b.second)));
}
long long n, m, q, r, i, j;
vector<long long> arr;
vector<long long> sbs;
bool dp() {
  int sz = sbs.size();
  bool dp[sz + 1][n + 1];
  for (i = 0; i < sz + 1; i++) dp[i][0] = true;
  for (i = 1; i < n + 1; i++) dp[0][i] = false;
  sbs.insert(sbs.begin(), 0);
  for (i = 1; i < sz + 1; i++) {
    for (j = 1; j < n + 1; j++) {
      if (j < sbs[i]) {
        dp[i][j] = dp[i - 1][j];
      } else {
        dp[i][j] = dp[i - 1][j] || dp[i - 1][j - sbs[i]];
      }
    }
  }
  return dp[sz][n];
}
void solve() {
  cin >> n;
  arr.resize(n + n);
  for (auto &j : arr) cin >> j;
  vector<long long> temp;
  sbs.clear();
  int maxsum = 0;
  for (i = 0; i < 2 * n; i++) {
    if (arr[i] > maxsum) {
      maxsum = arr[i];
      temp.push_back(i + 1);
    }
  }
  temp.push_back(2 * n + 1);
  for (i = 1; i < temp.size(); i++) {
    sbs.push_back(temp[i] - temp[i - 1]);
  }
  if (dp()) {
    cout << "YES\n";
  } else {
    cout << "NO\n";
  }
}
int main() {
  int k = 1;
  cin >> k;
  while (k--) {
    solve();
  }
  return 0;
}
