import std.stdio;
import std.ascii;
import std.range;
import std.array;
import std.functional;
import std.algorithm;
import std.conv;
import std.container;
import std.math;
import std.numeric;
import std.string;
import std.c.string;
import std.random;
import std.regex;
import std.typecons;

int popcnt(int x) {
    int r = 0;
    foreach (i; 0 .. 22) if (x & (1 << i)) r++;
    return r;
}

void main() {
    int N, Hx, Hy, Dx, Dy;
    int[] Y, X;
    bool input() {
        scanf("%d %d %d %d %d\n", &N, &Hx, &Hy, &Dx, &Dy);
        if (N == 0) return false;
        Y = new int[N + 2];
        X = new int[N + 2];
        Y[0] = Hy;
        X[0] = Hx;
        foreach (i; 1 .. N + 1) {
            scanf("%d %d\n", &X[i], &Y[i]);
        }
        Y[N + 1] = Dy;
        X[N + 1] = Dx;
        return true;
    }
    double Distance(int a, int b) {
        double dy = Y[a] - Y[b],
               dx = X[a] - X[b];
        return sqrt(dy * dy + dx * dx);
    }
    void solve() {
        bool dfs(int v, int used, double t) {
            //writefln("%d %0" ~ (N + 2).to!string ~ "b %f", v, used, t);
            if (used == (1 << (N + 1)) - 1) return true;
            foreach (i; 1 .. N + 1) {
                if (used & (1 << i)) continue;
                if (Distance(v, i) + t >= Distance(N + 1, i)) return false;
            }
            foreach (i; 1 .. N + 1) {
                if (used & (1 << i)) continue;
                if (dfs(i, used | 1 << i, t + Distance(v, i))) return true;
            }
            return false;
        }
        writeln(dfs(0, 1, 0) ? "YES" : "NO");
    }
    while (input) solve;
}