/*8785404 MDK 3439 Accepted 9544K 4297MS G++ 2604B 2011-06-24 17:41:22 */
//博客园不给力啊,这么破的编辑器,就是花瓶,动一点就碎!我足足打了三遍注释!!!!
/*题目大意就是求出计算机从开始到destination走的最少点数,化成最短路,我一开始用的邻接表,果断TLE了,因为1000个点边的个数m可能很大,所以用邻接阵存,4000MS,多余计算还是很多,用BFS应该2000MS左右就能过了*/
#define MAXN 1500
#define inf 1000000000
typedef int elem_t;
int minl[MAXN];int mat[MAXN][MAXN];
void dijkstra(int n,int s){
int i,j,k;
int v[MAXN]={0};
for(i=0;i<n;i++) minl[i]=inf;
for(minl[s]=0,i=0;i<n;i++)
{
for(k=-1,j=0;j<n;j++)
if(!v[j]&&((k==-1)||minl[j]<minl[k]))
k=j;
for(v[k]=1,j=0;j<n;j++)
if(!v[j]&&mat[k][j])
minl[j]=min(minl[k]+1,minl[j]);
}
}
typedef pair<double,double> pa;
pa p[MAXN];
inline double dis(pa a,pa b)
{
return (a.first-b.first)*(a.first-b.first)+(a.second-b.second)*(a.second-b.second);
}
int main()
{
//freopen("d:\\2.txt","r",stdin);
int N;SCF(N);
while(N--)
{
SET(mat,0);
int n,a,b,tm1,tm2;double s1,s2;
scanf("%d %d %d %lf %lf",&n,&a,&b,&s1,&s2);
double s=pow(s1+s2,2);
F(i,n)
{
SCFD(tm1,tm2);
p[i].first=tm1;
p[i].second=tm2;
}
for(int i=0;i<n;i++)
{
for(int j=i;j<n;j++)
{
if(dis(p[i],p[j])<=s)
{
mat[i][j]=mat[j][i]=1;
}
}
}
dijkstra(n,a-1);
int si=minl[b-1];
if(si<inf)
PCFLN(si);
else
printf("Impossible\n");
}
}
//而且这里的距离函数可以小小的优化下。