#include <bits/stdc++.h>
using namespace std;
int cnt[121000], vst[121000];
int a[121000], b[121000], c[121000];
int qu[121000][10];
set<pair<int, int> > s;
int ans[121000];
int main() {
  int N;
  scanf("%d", &N);
  for (int i = 0; i < N * 4; i++) {
    scanf("%d%d%d", &a[i], &b[i], &c[i]);
    a[i]--, b[i]--, c[i]--;
    qu[b[i]][cnt[b[i]]++] = i;
    qu[c[i]][cnt[c[i]]++] = i;
  }
  for (int i = 0; i < N; i++) s.insert(pair<int, int>(cnt[i], i));
  for (int i = 0; i < 4 * N; i++) {
    int u = s.rbegin()->second;
    for (int j = 0; j < 8; j++) {
      int k = qu[u][j];
      if (vst[k]) continue;
      vst[k] = 1;
      ans[i] = k;
      s.erase(pair<int, int>(cnt[c[k]], c[k]));
      cnt[c[k]]--;
      s.insert(pair<int, int>(cnt[c[k]], c[k]));
      s.erase(pair<int, int>(cnt[b[k]], b[k]));
      cnt[b[k]]--;
      s.insert(pair<int, int>(cnt[b[k]], b[k]));
      s.erase(pair<int, int>(cnt[a[k]], a[k]));
      cnt[a[k]]++;
      s.insert(pair<int, int>(cnt[a[k]], a[k]));
      break;
    }
  }
  reverse(ans, ans + N * 4);
  puts("YES");
  for (int i = 0; i < 4 * N; i++) {
    if (i) printf(" ");
    printf("%d", ans[i] + 1);
  }
  puts("");
  return 0;
}
