#include <bits/stdc++.h>
using namespace std;
template <typename C>
void MA(C& a, C b) {
  if (a < b) a = b;
}
template <typename C>
void MI(C& a, C b) {
  if (a > b) a = b;
}
int n;
struct pom {
  int a, b;
  int nr;
};
vector<pom> t[30010];
vector<int> bil;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < 4 * n; i++) {
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    a--;
    b--;
    c--;
    t[a].push_back({b, c, i + 1});
  }
  for (int i = 0; i < n; i++) bil.push_back(i);
  vector<int> wyn;
  while (!bil.empty()) {
    int ak = bil.back();
    bil.pop_back();
    if (t[ak].empty()) continue;
    pom x = t[ak].back();
    t[ak].pop_back();
    bil.push_back(x.a);
    bil.push_back(x.b);
    wyn.push_back(x.nr);
  }
  puts("YES");
  for (int i = ((int)(wyn).size()) - 1; i >= 0; i--) {
    printf("%d ", wyn[i]);
  }
  puts("");
}
