#P15968. [Roi2014 Team]池塘里的乌龟

[Roi2014 Team]池塘里的乌龟

题目描述

乌龟 Tortilla 的池塘是一个 ww 列、hh 行的矩形网格,其中一些格子有睡莲。睡莲集合始终是连通的:任意两片睡莲之间都能通过边相邻的睡莲互相到达。

乌龟访问朋友时,会在出发前选择四个方向(上、下、左、右)中的两个方向,之后只能沿这两个方向移动。

例如,下图中,从 A 到 B 可以选择“上”和“左”;但从 C 到 A 无法只用两个方向到达,因为任何路径都至少需要三个方向。若添加星号处的睡莲,则整个集合会变得方便。

如果从任意睡莲都能用某两个方向到达任意另一片睡莲,则称该睡莲集合对乌龟“方便”。

现在 Tortilla 决定依次加入 qq 片新睡莲。保证初始以及每次添加后,睡莲集合均连通。请在初始时以及每次添加后,判断集合是否方便。

输入格式

第一行两个整数 h,wh,w,表示池塘行数和列数。

1h,w100000.1\le h,w\le 100000.

下一行一个整数 nn,表示初始睡莲数。

1n100000.1\le n\le 100000.

接下来 nn 行,每行两个整数 ri,cir_i,c_i,表示一片睡莲所在的行和列。

然后一行一个整数 qq,表示将添加的睡莲数。

0q100000.0\le q\le 100000.

接下来 qq 行,每行两个整数 nri,ncinr_i,nc_i,表示新加入睡莲的位置。

保证所有睡莲位置互不相同,且每次加入后集合仍连通。

输出格式

输出 q+1q+1 行。第一行表示初始集合是否方便,之后每行表示对应添加后的结果。方便输出 YES,否则输出 NO

样例 1

样例输入

5 10
8
1 4
2 4
2 5
2 6
1 6
3 5
3 4
4 4
4
1 5
2 7
3 7
3 6

样例输出

NO
YES
YES
NO
YES

样例 2

样例输入

3 3
5
1 1
1 2
1 3
2 3
3 3
4
2 1
3 2
3 1
2 2

样例输出

YES
NO
NO
NO
YES