#agc025d. [agc025_d]Choosing Points

[agc025_d]Choosing Points

题目描述

高桥在平面上进行了一项关于点集的研究。高桥认为,当一个点集 SS 满足以下条件时,SS 是一个“好的集合”:

  • SS 中任意两点之间的距离不是 sqrtD1\\sqrt{D_1}
  • SS 中任意两点之间的距离不是 sqrtD2\\sqrt{D_2}

这里,D1D_1D2D_2 是高桥指定的正整数常数。

XX 是平面上满足 0i,j<2N0 ≤ i,j < 2N 的整数坐标点 (i,j)(i,j) 的集合。

高桥证明了,对于任何选择的 D1D_1D2D_2,都存在一种选择 XXN2N^2 个点的方式,使得选定的点构成一个好的集合。然而,他不知道具体如何选择这些点来形成一个好的集合。请找到一个大小为 N2N^2XX 的子集,使其构成一个好的集合。

约束条件

  • 1N3001 ≤ N ≤ 300
  • 1D12×1051 ≤ D_1 ≤ 2×10^5
  • 1D22×1051 ≤ D_2 ≤ 2×10^5
  • 输入中的所有值都是整数。

输入格式

从标准输入读入数据,格式如下:

NN D1D_1 D2D_2

输出格式

按照以下格式输出满足条件的 N2N^2 个不同点:

x1x_1 y1y_1 x2x_2 y2y_2 : xN2x_{N^2} yN2y_{N^2}

这里,(xi,yi)(x_i,y_i) 表示第 ii 个选择的点。必须满足 0xi,yi<2N0 ≤ x_i,y_i < 2N,且它们必须是整数。选定的点可以按任意顺序打印。如果有多个可能的解决方案,则可以输出任意一种。


示例输入 1

2 1 2

示例输出 1

0 0
0 2
2 0
2 2

在这些点中,任意两点之间的距离要么是 22,要么是 2sqrt22\\sqrt{2},因此满足条件。


示例输入 2

3 1 5

示例输出 2

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