#include <iostream>
#include <queue>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

const int MAX_N = 101;
const int INF = 1e+8;
typedef pair<int,int> P;

vector<int> G[MAX_N];

void init(){
	for(int i=0 ; i < MAX_N ; i++ ) G[i].clear();
}

void add_edge(int u, int v ){
	G[u].push_back( v );
}

int solve(int s, int g, int t){
	bool memo[MAX_N];
	for(int i=0 ; i < MAX_N ; i++ ) memo[i] = false;
	queue<P> q;
	q.push( P(0,s) );
	
	while( !q.empty() ){
		int cnt = q.front().first;
		int v = q.front().second;
		q.pop();
		memo[v] = true;
		
		if( v == g ){
			return cnt+1;
		}
		
		for(int i=0 ; i < G[v].size() ; i++ ){
			int to = G[v][i];
			if( cnt+1 < t && !memo[to] ){
				q.push( P(cnt+1,to) );
			}
		}
	}
	return INF;
}

int main(){
	int n;
	while( cin >> n ){
		init();
		
		for(int i=0 ; i < n ; i++ ){
			int u, k;
			cin >> u >> k;
			for(int j=0 ; j < k ; j++ ){
				int v;
				cin >> v;
				add_edge( u , v );
			}
		}
		int p;
		cin >> p;
		for(int j=0 ; j < p ; j++ ){
			int s, g, t;
			cin >> s >> g >> t;
			int ans = solve( s , g , t );
			if( ans == INF )
				cout << "NA" << endl;
			else
				cout << ans << endl;
		}
	}
}