1 #include<stdio.h>
2 #include<iostream>
3 using namespace std;
4
5 int f[1005];
6 int x[1005],y[1005];
7 bool v[1005];
8 int n,p,k1,k2,r,r1;
9
10 int find(int i)
11 {
12 //查找并进行路径压缩
13 if(i != f[i])
14 f[i]=find(f[i]);
15 return f[i];
16 }
17
18 bool dis(int a,int b)
19 {
20 //计算距离看符不符合题目所给的
21 int q=x[a]-x[b];
22 int w=y[a]-y[b];
23 if(q*q+w*w<=p*p)
24 return true;
25 else
26 return false;
27 }
28 //初始化
29 void init()
30 {
31 for(int i=1;i<=n;i++)
32 {
33 f[i]=i;
34 //记录计算机是否已经修复
35 v[i]=false;
36 }
37 }
38
39 int main()
40 {
41 int i;
42 char s;
43 scanf("%d %d",&n,&p);
44 init();
45 for (i=1;i<=n;i++)
46 scanf("%d%d",&x[i],&y[i]);
47 while(cin>>s)
48 {
49 if(s == 'O')
50 {
51 scanf("%d",&r);
52 v[r]=true;
53 for(i=1;i<=n;i++)
54 if(i!=r && v[i] && dis(i,r))
55 {
56 k1=find(r);
57 k2=find(i);
58 f[k1]=k2;
59 }
60 }
61
62 if(s == 'S')
63 {
64 scanf("%d %d",&r,&r1);
65 k1=find(r);
66 k2=find(r1);
67 if(k1 == k2)//两者有共同的祖先
68 printf("SUCCESS\n");
69 else
70 printf("FAIL\n");
71
72 }
73 }
74 return 0;
75 }