atcoder#AGC025D. [AGC025D] Choosing Points

[AGC025D] Choosing Points

Score : 800800 points

Problem Statement

Takahashi is doing a research on sets of points in a plane. Takahashi thinks a set SS of points in a coordinate plane is a good set when SS satisfies both of the following conditions:

  • The distance between any two points in SS is not D1\sqrt{D_1}.
  • The distance between any two points in SS is not D2\sqrt{D_2}.

Here, D1D_1 and D2D_2 are positive integer constants that Takahashi specified.

Let XX be a set of points (i,j)(i,j) on a coordinate plane where ii and jj are integers and satisfy 0i,j<2N0 \leq i,j < 2N.

Takahashi has proved that, for any choice of D1D_1 and D2D_2, there exists a way to choose N2N^2 points from XX so that the chosen points form a good set. However, he does not know the specific way to choose such points to form a good set. Find a subset of XX whose size is N2N^2 that forms a good set.

Constraints

  • 1N3001 \leq N \leq 300
  • 1D12×1051 \leq D_1 \leq 2 \times 10^5
  • 1D22×1051 \leq D_2 \leq 2 \times 10^5
  • All values in the input are integers.

Input

Input is given from Standard Input in the following format:

NN D1D_1 D2D_2

Output

Print N2N^2 distinct points that satisfy the condition in the following format:

x1x_1 y1y_1

x2x_2 y2y_2

:

xN2x_{N^2} yN2y_{N^2}

Here, (xi,yi)(x_i,y_i) represents the ii-th chosen point. 0xi,yi<2N0 \leq x_i,y_i < 2N must hold, and they must be integers. The chosen points may be printed in any order. In case there are multiple possible solutions, you can output any.

2 1 2
0 0
0 2
2 0
2 2

Among these points, the distance between 22 points is either 22 or 222\sqrt{2}, thus it satisfies the condition.

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