#include <bits/stdc++.h>
using namespace std;
const int MAX = 2e6 + 10;
const int MAXN = 5e4 + 10;
long long mul(long long x, long long y) { return (x * 1ll * y) % 1000000007; }
long long add(long long x, long long y) {
  x += y;
  while (x >= 1000000007) x -= 1000000007;
  while (x < 0) x += 1000000007;
  return x;
}
bool isPrime(long long n) {
  if (n == 2) return true;
  for (long long i = 2; i * i <= n; i++) {
    if (n % i == 0) return false;
  }
  return true;
}
vector<int> ranges, v;
int n;
int dp[1010][2010];
void go(int end) {
  if (end < 0) return;
  int mx = 0, ix = -1;
  for (int i = 0; i <= end; i++) {
    if (v[i] > mx) {
      mx = v[i];
      ix = i;
    }
  }
  ranges.push_back(end - ix + 1);
  go(ix - 1);
}
bool sos(int i, int sm) {
  if (sm == 0) return 1;
  if (sm < 0) return 0;
  if (sm > n) return 0;
  if (i == (int)((ranges).size())) return 0;
  if (dp[i][sm] != -1) return dp[i][sm];
  bool best = sos(i + 1, sm);
  best |= sos(i + 1, sm - ranges[i]);
  return dp[i][sm] = best;
}
void solve() {
  cin >> n;
  n *= 2;
  ranges.clear();
  v = vector<int>(n);
  for (int i = 0; i < 1010; i++) {
    for (int j = 0; j < 2010; j++) dp[i][j] = -1;
  }
  for (int i = 0; i < n; i++) cin >> v[i];
  go(n - 1);
  cout << (sos(0, n / 2) ? "YES" : "NO") << endl;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int tc = 1;
  cin >> tc;
  while (tc--) solve();
}
