#include <bits/stdc++.h>
using namespace std;
const int maxn = 3005;
struct node {
  int l, r, id;
} a[maxn], b[maxn];
bool cmp1(node a, node b) { return a.r - a.l < b.r - b.l; }
bool cmp2(node a, node b) {
  if (a.r == b.r) return a.l < b.l;
  return a.r < b.r;
}
int dp[maxn], val[maxn], maxt[maxn];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
      cin >> a[i].l >> a[i].r;
      a[i].id = i;
      val[i] = 0;
    }
    a[0].l = 0, a[0].r = 2e5 + 5;
    a[0].id = 0, val[0] = 0;
    sort(a, a + 1 + n, cmp1);
    int ans = 0;
    for (int i = 0; i <= n; i++) {
      int l = a[i].l, r = a[i].r;
      vector<node> tmp;
      for (int j = 0; j <= n; j++) {
        if (a[j].l >= l && a[j].r <= r) tmp.push_back(a[j]);
      }
      sort(tmp.begin(), tmp.end(), cmp2);
      memset(maxt, 0, sizeof(maxt));
      memset(dp, 0, sizeof(dp));
      int res = 0;
      vector<int> z;
      for (int j = 0; j < tmp.size(); j++) {
        int index = lower_bound(z.begin(), z.end(), tmp[j].l) - z.begin() - 1;
        if (index == -1)
          dp[j] = val[tmp[j].id];
        else
          dp[j] = maxt[index] + val[tmp[j].id];
        if (j == 0)
          maxt[j] = dp[j];
        else
          maxt[j] = max(maxt[j - 1], dp[j]);
        res = max(res, dp[j]);
        z.push_back(tmp[j].r);
      }
      val[a[i].id] = res;
      if (a[i].id != 0) val[a[i].id]++;
      ans = max(ans, val[a[i].id]);
    }
    cout << ans << '\n';
  }
  return 0;
}
