You are given a set consisting of points , each point represented by two integers (x_i , y_i); two of them are base points. You have to process queries of two types.
+ \hspace{2mm} (x,y) , add a point () to the set; it is guaranteed that the added point does not exist in the set.
- \hspace{2mm} (x,y) , remove a point () from the set; it is guaranteed that the removed point exists in the set , and it's not a base point important!Dynamic multiset of exact rational circumcenters of triangle.
For the original set and after each query, print "YES" if you can draw a circle which passes through all points in the set , "NO" otherwise.
The first line contains a single integer (1 \le t \le 10^4) — the number of test cases.
The first line of each test case contains four integers n,q,a,b (2 \le n \le 2\cdot 10^5 ; 0 \le q \le 2\cdot 10^5) (1 \le a,b \le n , a \neq b)— the number of points , the number of queries , the index of the first base point , the index of the second base point, respectively.
Then lines follow; each line contains two integers x_i , y_i (-10^6 \le x_i , y_i \le 10^6) — the coordinates of the i_{th} point.
Then lines follow of the form c_i , x_i , y_i (c_i \in \{+ , -\} , -10^6 \le x_i,y_i \le 10^6).
It is guaranteed that the sum of and the sum of over all test cases does not exceed 2 \cdot 10^5.
For each test case, print q+1 lines: the answer for the original set , then the answer after each query.
Example 1
In the first test case , after the second query , you can draw like the following.
Subtask ( points) n = 2 \hspace{1mm}, \hspace{1mm}q = 0 for all testcases.
Subtask ( points) n = 3 \hspace{1mm} , \hspace{1mm} q = 0 for all testcases.
Subtask ( points) q = 0 for all testcases.
Subtask ( points) No additional constraints.