#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void prn(Arg1&& arg1) {
  cout << arg1 << "\n";
}
template <typename Arg1, typename... Args>
void prn(Arg1&& arg1, Args&&... args) {
  cout << arg1 << " ";
  prn(args...);
}
template <typename Arg1>
void prs(Arg1&& arg1) {
  cout << arg1 << " ";
}
template <typename Arg1, typename... Args>
void prs(Arg1&& arg1, Args&&... args) {
  cout << arg1 << " ";
  prs(args...);
}
template <typename Arg1>
void read(Arg1&& arg1) {
  cin >> arg1;
}
template <typename Arg1, typename... Args>
void read(Arg1&& arg1, Args&&... args) {
  cin >> arg1;
  read(args...);
}
int n, len;
vector<int> vec, nxt;
vector<vector<int> > dp;
bool ispos(int st, int dif) {
  if (st == len) return (dif == len);
  int& ans = dp[st][dif];
  if (ans != -1) return ans;
  ans = ispos(nxt[st], dif + nxt[st] - st);
  if (!ans) ans = ispos(nxt[st], dif - nxt[st] + st);
  return ans;
}
void solve() {
  read(n);
  len = 2 * n;
  vec.resize(len);
  for (int i = 0; i < len; ++i) {
    read(vec[i]);
  }
  vec.push_back(len + 10);
  nxt.resize(len);
  for (int st = 0; st < len; ++st) {
    for (int en = st + 1; en <= len; ++en) {
      if (vec[en] > vec[st]) {
        nxt[st] = en;
        break;
      }
    }
  }
  dp.assign(len, vector<int>(2 * len + 1, -1));
  if (ispos(0, len))
    prn("YES");
  else
    prn("NO");
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1;
  read(t);
  for (int tc = 1; tc <= t; ++tc) {
    solve();
  }
  return 0;
}
