#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int maxn = 1e5 + 10;
int T, n;
struct Interval {
int id, l, r;
}a[maxn], b[10];
bool cmpl(Interval &x, Interval &y) {
return x.l < y.l;
}
bool cmpr(Interval &x, Interval &y) {
return x.r > y.r;
}
vector<int> ans;
bool judge(Interval t[3]) {
for (int i = 1; i <= 3; i++) {
int x = i, y = i%3+1;
if (t[x].r < t[y].l || t[x].l > t[y].r) return false;
}
return true;
}
int main() {
scanf("%d", &T);
while (T--) {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
a[i].id = i;
scanf("%d %d", &a[i].l, &a[i].r);
}
sort(a + 1, a + 1 + n, cmpl);
ans.clear();
b[1] = a[1];
b[2] = a[2];
for (int i = 3; i <= n; i++) {
b[3] = a[i];
sort(b+1, b+4, cmpr);
if (judge(b)) {
ans.push_back(b[1].id);
swap(b[1], b[3]);
}
}
sort(ans.begin(), ans.end());
int len = ans.size(), flag = 0;
printf("%d\n", len);
for (int i = 0; i < len; i++) {
if (flag++) printf(" ");
printf("%d", ans[i]);
}
printf("\n");
}
return 0;
}