#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

typedef struct _c {
        int x,y,r;
}circle;

const double LIT=1e-6;

circle p1[2000],p2[2000];
int dp1[2000], dp2[2000];

int cmp(const void *a, const void *b) {
        return (((const circle*)a)->r)-(((const circle*)b)->r);
}

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

int c_isin(circle a, circle b) {
        return dis(a,b)+LIT<abs(a.r-b.r);
}

int p_isin(int x, int y, circle b) {
        circle a;
        a.x=x;a.y=y;a.r=0;
        return c_isin(a,b);
}

int touch(circle a, circle b) {
        double d = dis(a,b);
        return d-LIT<abs(a.r+b.r);
}

int max(int a,int b) {
        return (a>b)?a:b;
}

void lis(int dp[], circle t[], int n) {
        int i,j,k,l;
        memset(dp, 0, sizeof(dp));
        qsort(t+1,n,sizeof(circle), cmp);
        for(i=1;i<=n;i++) {
                dp[i] = 1;
                for(j=1;j<i;j++) {
                        if(c_isin(t[i],t[j])) {
                                dp[i]=max(dp[i], dp[j]+1);
                        }
                }
        }
}

int main(void) {
        int i,j,k,l,n1,n2,n;
        int sol=0;
        int x,y,r;
        int xs,ys,xt,yt;
        circle t;
        while(1) {
                sol=0;
                scanf("%d", &n);
                if(n==0) {
                        break;
                }
                scanf("%d%d%d%d", &xs, &ys, &xt, &yt);
                n1=0;
                n2=0;
                for(i=1;i<=n;i++) {
                        k=0;l=0;
                        scanf("%d%d%d", &t.x, &t.y, &t.r);
                        k=p_isin(xs,ys, t);
                        l=p_isin(xt,yt,t);
                        if(k&&!l) {
                                p1[++n1]=t;
                        }
                        else if(!k&&l) {
                                p2[++n2]=t;
                        }
                }
                lis(dp1, p1,n1);
                lis(dp2,p2,n2);
                for(i=1;i<=n1;i++) {
                        for(j=1;j<=n2;j++) {
                                if(!touch(p1[i],p2[j])) {
                                        sol=max(sol, dp1[i]+dp2[j]);
                                }
                        }
                }
                for(i=1;i<=n1;i++) {
                        sol=max(sol, dp1[i]);
                }
                for(i=1;i<=n2;i++) {
                        sol=max(sol,dp2[i]);
                }
                printf("%d\n", sol);
        }
        return 0;
}