1 #include
2 #include
3 #include
4 #include
5 #include<string>
6 #include
7 #include
8 #include
9
10 using namespace std;
11
12 #define mnx 104000
13 #define ll long long
14 #define inf 0x3f3f3f3f
15 #define lson l, m, rt <<1
16 #define rson m+1, r, rt <<1 | 1
17
18 const int N = mnx;
19 struct point{
20 int x, y;
21 point( int x = 0, int y = 0 ) : x(x), y(y) {}
22 point operator - ( const point &b ) const {
23 return point( x - b.x, y - b.y );
24 }
25 int length(){
26 ll len = (ll)x * x + (ll)y * y;
27 ll pt = sqrt( len );
28 if( pt * pt ;
29 return (int)pt;
30 }
31 bool operator <( const point & b ) const{
32 return x < b.x;
33 }
34 }p[mnx], A, B;
35 struct rad{
36 int r1, r2, id;
37 bool operator <( const rad & b ) const{
38 return r1 < b.r1;
39 }
40 }query[mnx];
41 int bit[mnx];
42 int sum( int x ){
43 int ret = 0;
44 while( x > 0 ){
45 ret += bit[x]; x -= x & -x;
46 }
47 return ret;
48 }
49 void add( int i, int x ){
50 while( i <= N ){
51 bit[i] += x;
52 i += i & -i;
53 }
54 }
55 int ans[mnx];
56 int main(){
57 int cas;
58 scanf( "%d", &cas );
59 while( cas-- ){
60 memset( bit, 0, sizeof(bit) );
61 int n, m;
62 scanf( "%d %d", &n, &m );
63 for( int i = 0; i ){
64 scanf( "%d %d", &p[i].x, &p[i].y );
65 }
66 scanf( "%d %d %d %d", &A.x, &A.y, &B.x, &B.y );
67 for( int i = 0; i ){
68 int dis1 = ( p[i] - A ).length();
69 int dis2 = ( p[i] - B ).length();
70 p[i] = point( dis1, dis2 );
71 }
72 sort( p, p + n );
73 for( int i = 0; i ){
74 scanf( "%d %d", &query[i].r1, &query[i].r2 );
75 query[i].id = i;
76 }
77 sort( query, query + m );
78 int j = 0;
79 for( int i = 0; i ){
80 while( j query[i].r1 ){
81 add( p[j].y, 1 );
82 j++;
83 }
84 ans[query[i].id] = sum( query[i].r2 );
85 }
86 for( int i = 0; i ){
87 printf( "%d\n", ans[i] );
88 }
89 }
90 return 0;
91 }