#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast,no-stack-protector")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("unroll-loops")
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cerr << name << " : " << arg1 << "\n";
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " , ";
  __f(comma + 1, args...);
}
const int N = 1e5 + 5;
const int inf = 1e9;
const long long INF = 1e18;
std::mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
struct data {
  long long int a, o, id;
  data() : a(0), o(0), id(0) {}
  data(long long int a, long long int o, long long int id)
      : a(a), o(o), id(0) {}
} A[2 * N];
int main(int argc, char const* argv[]) {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  srand(time(0));
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    long long int x = 0, y = 0;
    for (int i = 1; i <= 2 * n - 1; i++) {
      cin >> A[i].a >> A[i].o;
      A[i].id = i;
      x += A[i].a, y += A[i].o;
    }
    bool f = false;
    for (int i = 1; i <= 700; i++) {
      shuffle(A + 1, A + 2 * n, rng);
      long long int cx = 0, cy = 0;
      vector<int> V;
      for (int j = 1; j <= n; j++) {
        cx += A[j].a, cy += A[j].o;
        V.push_back(A[j].id);
      }
      if (2 * cx >= x && 2 * cy >= y) {
        cout << "YES"
             << "\n";
        sort(V.begin(), V.end());
        for (auto it : V) cout << it << " ";
        cout << "\n";
        f = true;
        break;
      }
    }
    if (!f)
      cout << "NO"
           << "\n";
  }
  return 0;
}
