세 팔 크레인

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

세 팔 크레인이 컨테이너를 철도 화차에 싣는다. 화차에는 열차 앞쪽부터 1,2,1, 2, \dots번이 붙어 있고, 화차 한 대에는 컨테이너를 최대 한 개만 올릴 수 있다.

크레인은 두 상수 p1p \ge 1, q1q \ge 1로 정해진다. 크레인은 한 번 움직일 때마다 창고에서 컨테이너 세 개를 가져와 ii번, i+pi+p번, i+p+qi+p+q번 화차에 올리거나, ii번, i+qi+q번, i+p+qi+p+q번 화차에 올린다.

열차의 화차는 모두 n+p+qn+p+q대이고, 크레인은 앞쪽 nn대를 채워야 한다. 크레인 프로그램은 명령을 나열한 것이고, 명령 하나가 크레인의 움직임 한 번을 뜻한다. 명령은 1x<y<zn+p+q1 \le x < y < z \le n+p+q를 만족하는 세 수 (x,y,z)(x, y, z)이며, xnx \le n이고 yyx+px+p 또는 x+qx+q, z=x+p+qz = x+p+q이다. 프로그램을 실행한 뒤 앞쪽 nn대에 컨테이너가 정확히 하나씩 놓여 있으면 그 프로그램은 올바르다. nn번보다 뒤에 있는 화차는 비어 있어도 되고 컨테이너가 한 개 놓여 있어도 된다.

입력

첫째 줄에 크레인의 매개변수 pp, qq와 채워야 하는 앞쪽 화차의 대수 nn이 공백 한 칸으로 구분되어 주어진다. 세 수는 모두 양의 정수이고, 1n3000001 \le n \le 300\,000, 2p+q600002 \le p + q \le 60\,000을 만족한다.

출력

올바른 프로그램 하나의 명령을 xx가 커지는 순서로 출력한다. 화차 한 대에는 컨테이너를 한 개만 올리므로 한 프로그램 안에서 두 명령의 xx는 서로 다르고, 이 순서는 유일하다.

올바른 프로그램은 여러 개일 수 있다. 이 순서로 적은 수열 x1,y1,z1,x2,y2,z2,x_1, y_1, z_1, x_2, y_2, z_2, \dots을 사전순으로 비교해서 가장 앞서는 프로그램을 출력한다.

첫째 줄에 명령의 개수 mm을 출력한다. 다음 mm개 줄에는 명령마다 세 정수 xx, yy, zz를 공백 한 칸으로 구분해 출력한다. 주어진 범위에서 올바른 프로그램은 항상 존재한다.