import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt(); // N*N格
		int i = scanner.nextInt(); // 第i行,格子(i,j)
		int j = scanner.nextInt(); // 第j列,格子(i,j)

		// (i,j)同一行上格子的位置
		for (int a = 1; a <= N; a++) {
			System.out.print("(" + i + "," + a + ")");
		}
		System.out.println();

		// (i,j)同一列上格子的位置
		for (int a = 1; a <= N; a++) {
			System.out.print("(" + a + "," + j + ")");
		}
		System.out.println();

		// 左上到右下对角线上的格子的位置
		// 从上往下,所以小到大,++
		for (int a = 1; a <= N; a++) {
			for (int b = 1; b <= N; b++) {
				if ((a - b) == (i - j)) {
					System.out.print("(" + a + "," + b + ")");
				}
			}
		}
		System.out.println();

		// 左下到右上对角线上的格子的位置
		// 从下往上,所以大到小,--
		for (int a = N; a >= 1; a--) {
			for (int b = N; b >= 1; b--) {
				if ((a + b) == (i + j)) {
					System.out.print("(" + a + "," + b + ")");
				}
			}
		}
	}
}
/**************************************************************
	Problem: 1994
	User: admin
	Language: Java
	Result: Accepted
	Time:2616 ms
	Memory:42864 kb
****************************************************************/