#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>

using namespace std;

const int MAX = 2000;

struct Point
{
	double x;
	double y;
} A[ MAX ];

int N, M, S, T;
double d1, d2, d;

int Q[ MAX * MAX ];
int Color[ MAX ];

double D(Point a, Point b)
{
	return sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y));
}

int BFS()
{
	int head = 0;
	int tail = 0;

	memset(Color, 0, sizeof(Color));

	Q[ tail++ ] = S;
	Color[ S ] = 1;

	while (head != tail)
	{
		Point u = A[ Q[ head ] ];

		for (int i = 0; i < N; i++)
			if ((Color[ i ] == 0) && (D(u, A[ i ]) <= d))
			{
				Color[ i ] = Color[ Q[ head ] ] + 1;
				Q[ tail++ ] = i;
			}

		head++;
	}

	return 0;
}

int Read()
{
	cin >> N >> S >> T;

	S--;
	T--;

	cin >> d1 >> d2;
	d = d1 + d2;

	for (int i = 0; i < N; i++)
		scanf("%lf %lf", &A[ i ].x, &A[ i ].y);

	return 0;
}

int main()
{
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);

	Read();
	BFS();

	if (Color[ T ] == 0)
		cout << "Impossible\n";
	else
		cout << Color[ T ] - 1 << endl;

	fclose(stdin);
	fclose(stdout);
	return 0;
/*
4 1 4 2.000 1.000
0 0
0 4
4 0
4 4

9 1 4 2.000 3.000
0 7
-6 2
-3 3
6 2
-6 -3
3 -3
6 -3
-3 -7
0 -7
*/
}
