#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<vector>
#define F first
#define S second
#define REP(i,s,n) for(int i=s;i<n;i++)
#define rep(i,n) REP(i,0,n)
#define EPS 1e-10
using namespace std;
struct P{
  int x,y;
  P (int x=0,int y=0):x(x),y(y){}
  P operator + (P p){return P(x+p.x,y+p.y);}
  P operator - (P p){return P(x-p.x,y-p.y);}
  P operator * (P p){return P(x*p.x,y*p.y);}
  P operator / (P p){return P(x/p.x,y/p.y);}

};

typedef pair<int,P> info;
int s,g;
double cost[1100][1100];
int n,m;
static const int INF = 1<<25;
void Init(){
  rep(i,1100){
    rep(j,1100){
      cost[j][i] = i==j?0:INF;
    }
  }
}

double norm(P p){
  return p.x*p.x+p.y*p.y;
}

double abs(P p){
  return sqrt(norm(p));
}

int prev[1100];
int d[1100];
bool used[1100];

void display(int num){
  for(int i=1;i<=num;i++){
    for(int j=1;j<=num;j++){
      printf("%4.0f ",cost[i][j]);
    }
    cout << endl;
  }
}


void dijkstra(){
  for(int i=0;i<1100;i++){
    d[i] = INF;
    used[i] = false;
    prev[i] = -1;
  }
  d[s] = 0;

  while(true){
    int v = -1;
    for(int i=1;i<=n;i++){
      if(!used[i]&&(v == -1 || d[v]>d[i]))v = i;
    }

    if(v == -1)break;
    used[v] = true;
    for(int i=1;i<=n;i++){
      if(d[i] > d[v]+cost[v][i]){
	d[i] = d[v]+cost[v][i];
	prev[i] = v;
      }
    }
  }
}

vector<int> get_path(int t){
  vector<int> path;
  for(;t!=-1;t=prev[t])path.push_back(t);
  reverse(path.begin(),path.end());
  return path;
}

int main(){

  vector<info> vec;
  vector<int> _path;
  int b,x,y;
  info insert;
  while(cin >> n && n){
  Init();
    vec.clear();
    rep(i,n){
      cin >> b >> x >> y;
      insert.F = b;
      insert.S.x = x;insert.S.y = y;      
      vec.push_back(insert);
    }
    rep(i,n){
      rep(j,n){
	if(i == j)continue;
	double val = abs(vec[i].S-vec[j].S);
	if(val < 50+EPS){
	  cost[vec[i].F][vec[j].F] = cost[vec[j].F][vec[i].F] = val;
	}
      }
    }  

    cin >> m;
    rep(i,m){
      _path.clear();
      cin >> s >> g;
      dijkstra();
      _path = get_path(g);
      if(_path.size() == 1)cout << "NA" << endl;
      else{
	for(int i=0;i<_path.size();i++){
	  cout << _path[i];
	  i==_path.size()-1?cout << endl:cout << " ";
	}
      }
     
    }


  }



  return 0;
}