파스칼의 초피라미드

높이 H인 D차원 파스칼 초피라미드의 밑면에 나타나는 서로 다른 값을 오름차순으로 출력한다.

보통7동적 계획법조합론수학해시맵아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

파스칼의 삼각형은 맨 위에 1이 놓이고, 나머지 수는 바로 위에 있는 두 수의 합이다. 양 끝의 수는 항상 1이다. 이 규칙은 삼각형을 왼쪽으로 맞춰 그리면 프로그램으로 다루기 쉽다. 이렇게 그리면 맨 왼쪽 열과 맨 위 행은 모두 1이고, 나머지 수는 바로 위의 수와 바로 왼쪽의 수를 더한 값이다. 아래 그림에서 굵게 표시한 수가 높이 5인 파스칼 삼각형의 밑면이다.

왼쪽으로 맞춰 그린 높이 5의 파스칼 삼각형

파스칼의 초피라미드는 이 규칙을 더 높은 차원으로 확장한다. 3차원에서 위치 (x,y,z)(x, y, z)의 값은 최대 세 값의 합이다.

  • (x,y,z1)(x, y, z-1), 바로 아래의 값. 위치가 밑면 z=0z = 0에 있으면 빼고 센다.
  • (x,y1,z)(x, y-1, z), 바로 뒤의 값. 위치가 뒷면 y=0y = 0에 있으면 빼고 센다.
  • (x1,y,z)(x-1, y, z), 바로 왼쪽의 값. 위치가 왼쪽 면 x=0x = 0에 있으면 빼고 센다.

꼭대기 (0,0,0)(0, 0, 0)의 값은 1이다. 아래 그림은 높이 5인 3차원 피라미드를 zz 값을 하나씩 고정한 평면 단면으로 보여 준다.

높이 5의 3차원 피라미드를 다섯 개의 평면 단면으로 나타낸 그림

예를 들어 위치 x=1x = 1, y=2y = 2, z=1z = 1의 수는 (0,2,1)(0, 2, 1), (1,1,1)(1, 1, 1), (1,2,0)(1, 2, 0)의 값을 더한 3+6+3=123 + 6 + 3 = 12이다. 피라미드의 밑면은 x+y+z=4x + y + z = 4인 위치가 이루는 평면이고, 위 그림에서 굵게 표시한 부분이다.

DD차원에서도 규칙은 같다. 꼭대기 (0,0,,0)(0, 0, \dots, 0)의 값은 1이고, 다른 위치 (x1,x2,,xD)(x_1, x_2, \dots, x_D)의 값은 좌표 하나를 1 줄여서 얻는 위치들의 값을 모두 더한 값이다. 이미 0인 좌표는 줄이지 않고 넘어간다. 높이 HH인 초피라미드의 밑면은 x1+x2++xD=H1x_1 + x_2 + \dots + x_D = H - 1을 만족하는 위치의 집합이다.

한 층의 크기는 피라미드의 높이에 대해 이차로 커지지만, 대칭 때문에 같은 값이 많이 나온다. 서로 순서만 바꾼 위치는 같은 수를 가진다. 예를 들어 위 그림의 (0,1,2)(0, 1, 2), (1,2,0)(1, 2, 0), (2,1,0)(2, 1, 0)은 모두 3이다.

차원 수 DD와 높이 HH가 주어질 때, 초피라미드 밑면에 놓인 수의 집합을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 차원 수 DD와 초피라미드의 높이 HH가 양의 정수로 주어진다.

출력

초피라미드 밑면에 놓인 수를 중복 없이, 한 줄에 하나씩, 증가하는 순서로 출력한다.

제한

  • 2D<322 \le D < 32, 차원 수
  • 1H<321 \le H < 32, 높이
  • 초피라미드에 놓인 모든 수가 2632^{63}보다 작도록 DDHH가 주어진다.