#include <bits/stdc++.h>
 
using namespace std;
 
#define MAX 1010
 
struct Point{
  double x,y;
  Point(){}
  Point(double x,double y) : x(x),y(y) {}
};
 
int N,X,Y;
vector<int> G[MAX];
 
double getDist(Point &a,Point &b){
  return sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2));
}
 
void init(){
  for(int i = 0 ; i < MAX ; i++){
    G[i].clear();
  }  
}
 
void solve(){
  int d[MAX] = {0};
  queue<int> Q; Q.push(0);
  bool can = true;
  
  while(!Q.empty()){
    int v = Q.front(); Q.pop();
    for(int i = 0 ; i < (int)G[v].size() ; i++){
      int to = G[v][i];
      if(d[to] == 0){
        d[to] = d[v] + 1;
        if(v > 0 && X > Y){ can = false; }
        Q.push(to);
      }
    }
  }
  
  if(can){
    cout << *max_element(d+1,d+N+1)*X << endl;
  }else{
    cout << "You're always welcome!" << endl;
  }
}
 
int main(){
  int Tc;
  cin >> Tc;
  while(Tc--){
    init();
    Point sp;
    vector<Point> p;
    cin >> N >> X >> Y;
    cin >> sp.x >> sp.y;
    p.resize(N);
    for(int i = 0 ; i < N ; i++){
      cin >> p[i].x >> p[i].y;
      if(getDist(sp,p[i]) <= 10){
        G[0].push_back(i+1);
      }
    }
    for(int i = 0 ; i < N ; i++){
      for(int j = 0 ; j < N ; j++){
        if(i == j){ continue; }
        if(getDist(p[i],p[j]) <= 50){
          G[i+1].push_back(j+1);
        }
      }
    }
    solve();
  }
  return 0;
}