#include <iostream>
#include <queue>

using namespace std;


static const int NO = -2;
static const int N = 300;


int graph[N + 1][N + 1] = {{}};
int dis[N + 1] = {};
int n;

void bfs(int v){
  queue<int> Q;

  Q.push(v);

  for(int i = 1; i <= N; i++){
    dis[i] = NO;
  }

  dis[v] = 1;

  int u;
  while(!Q.empty()){
    u = Q.front();
    Q.pop();

    for(int i = 1;i <= n; i++){
      if(graph[u][i]==0) continue;
      if(dis[i]!=NO)continue;
      dis[i] = dis[u] + 1;
      Q.push(i);

    }
  }
}

int main(){

  int r[N+1] = {};
  int d[N+1] = {};
  int k[N+1] = {};
  int f[N+1] = {};
  int p,s[N+1] = {};
  int v[N+1] = {};


  //in
  cin >> n;

  for(int i = 1;i <= n; i++){

    cin >> r[i] >> k[i];

    for(int j = 1;j <= k[i];j++){

      cin >> f[j];
      graph[r[i]][f[j]] = 1;
    }
  }

  cin >> p;
  for(int i = 1;i <= p; i++){
    cin >> s[i] >> d[i] >> v[i];
    bfs(s[i]);

    if(v[i] >= dis[d[i]]) cout << dis[d[i]] << endl;
    else cout << "NA" << endl;
  }
}