#codefestivalfinali. [code_festival_final_i]Shapes

[code_festival_final_i]Shapes

问题描述

在二维平面上,有n个图形,每个图形由一组距离点集合(xi,yi)(x_i,y_i)rir_i组成。对于任意两个图形,它们的点集合之间没有交集。

现在有m个查询,每个查询给出两个坐标(x1,y1)(x1,y1)(x2,y2)(x2,y2)。已知这两个坐标不属于任何一个图形的点集合。

要求回答每个查询的最小点数,即从坐标(x1,y1)(x1,y1)移动到(x2,y2)(x2,y2)时必须经过的最小点数。

移动时可以在任意实数坐标上移动。


输入

输入通过标准输入给出,其格式如下:

nn

x1x_1 y1y_1 r1r_1

x2x_2 y2y_2 r2r_2

xnx_n yny_n rnr_n

mm

x11x1_1 y11y1_1 x21x2_1 y21y2_1

x12x1_2 y12y1_2 x22x2_2 y22y2_2

x1mx1_m y1my1_m x2mx2_m y2my2_m

  • 第1行是一个整数nn,表示图形的数量(1n105)(1≦n≦10^5)
  • 接下来的nn行,每行包含3个整数xix_iyiy_irir_i,表示每个图形的信息(108xi,yi108,1ri108)(-10^8 ≤ x_i, y_i ≤ 10^8, 1 ≤ r_i ≤ 10^8)。对于任意两个图形,它们的点集合之间没有交集。
  • n+1n+1行是一个整数mm,表示查询的数量(1m105)(1≦m≦10^5)
  • 接下来的mm行,每行包含4个整数x1ix1_iy1iy1_ix2ix2_iy2iy2_i,表示每个查询的信息(108x1i,y1i,x2i,y2i108)(-10^8 ≤ x1_i, y1_i, x2_i, y2_i ≤ 10^8)。已知这两个坐标不属于任何一个图形的点集合。

输出

从第1行到第mm行,依次输出每个查询的答案,每行后面换行。在最后一行也要换行。


示例1

输入示例1

5
0 0 1
0 0 5
0 0 9
0 0 13
20 20 1
4
0 0 13 13
0 0 0 7
0 2 0 3
0 0 20 20

输出示例1

4
2
0
5

示例1对应的图形如下所示:


示例2

输入示例2

6
0 0 10
0 5 4
5 0 4
0 -5 4
-5 0 4
8 8 2
4
0 5 0 -5
6 0 10 10
-5 0 0 0
5 0 8 8

输出示例2

2
2
1
3

示例2对应的图形如下所示: