#include <bits/stdc++.h>
int max(int a, int b) { return (a > b) ? a : b; }
bool knapSack(int W, int wt[], int val[], int n) {
  int i, w;
  int K[n + 1][W + 1];
  for (i = 0; i <= n; i++) {
    for (w = 0; w <= W; w++) {
      if (i == 0 || w == 0)
        K[i][w] = 0;
      else if (wt[i - 1] <= w)
        K[i][w] = max(val[i - 1] + K[i - 1][w - wt[i - 1]], K[i - 1][w]);
      else
        K[i][w] = K[i - 1][w];
    }
  }
  if (K[n][W] == W) {
    return true;
  }
  return false;
}
int main() {
  int t, n, i, count, k, mem;
  scanf("%d", &t);
  while (t--) {
    scanf("%d", &n);
    int* input = (int*)malloc(2 * n * sizeof(int));
    int* dp = (int*)malloc(2 * n * sizeof(int));
    for (i = 0; i < 2 * n; i++) {
      scanf("%d", &input[i]);
    }
    count = 1;
    dp[0] = 1;
    mem = input[0];
    for (i = 1; i < 2 * n; i++) {
      if (input[i] < mem) {
        dp[i] = 1 + dp[i - 1];
      } else {
        dp[i] = 1;
        count++;
        mem = input[i];
      }
    }
    for (i = 0; i < 2 * n; i++) {
    }
    int* weight = (int*)calloc(count, sizeof(int));
    i = 0;
    k = 0;
    for (i = 0; i < 2 * n - 1; i++) {
      if (dp[i + 1] == 1) {
        weight[k] = dp[i];
        k++;
      }
    }
    if (dp[2 * n - 1] > 1) {
      weight[count - 1] = dp[2 * n - 1];
    } else {
      weight[count - 2] = dp[2 * n - 2];
      weight[count - 1] = 1;
    }
    for (i = 0; i < count; i++) {
    }
    if (knapSack(n, weight, weight, count)) {
      printf("Yes\n");
    } else {
      printf("No\n");
    }
  }
  return 0;
}
