Circles are POINTS !#13067

Circles are POINTS !

4 seconds
1,024 megabytes

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.

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.

Input

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.

Output

For each test case, print q+1 lines: the answer for the original set , then the answer after each query.

Examples

Example 1

Loading
Loading

Note

In the first test case , after the second query , you can draw like the following.

Scoring

  • 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.