건강한 식단
시간 제한4초메모리 제한1024 MB
n x n 격자의 각 자판기에 대해 왼쪽 위에서 오른쪽 아래로 가는 최단 경로 중 그 자판기와 같은 상품을 파는 자판기를 가장 많이 포함하는 경로를 구하고, 그 개수별 자판기 수를 센다.
문제
어떤 대학의 캠퍼스는 크기의 정사각형 격자이고, 각 칸에 건물이 하나씩 있다. 두 건물은 칸이 변을 공유하면 통로로 연결된다. 왼쪽 위 칸에는 학생 기숙사가, 오른쪽 아래 칸에는 강의동이 있다.
기숙사와 강의동을 포함한 모든 건물에는 정확히 한 종류의 상품만 파는 자판기가 하나씩 있다. 예를 들어 커피만 팔거나 고기 파이만 판다. 학생들은 매일 기숙사에서 강의동까지 통로를 따라 이동하며, 최단 경로 중 하나를 고른다.
대학 측은 학생들이 이동 중에 자판기에서 사는 음식의 다양성에 관심을 가졌다. 각 자판기 에 대해, 이 자판기를 지나면서 와 같은 상품을 파는 자판기를 최대한 많이 포함하는, 기숙사에서 강의동까지의 최단 경로를 찾으려 한다. 이 경로에 있는 그러한 자판기의 수를 의 중복도라고 한다. 여기서 은 기숙사에, 은 강의동에 있다.
자판기가 파는 상품 정보가 주어졌을 때, 부터 까지의 각 값에 대해 그 중복도를 가지는 자판기의 수를 구하는 프로그램을 작성하라.
입력
첫째 줄에는 정수 ()이 주어진다. 다음 개의 줄에는 각각 개의 수가 있다. 이 중 번째 줄의 번째 수는 자판기 가 파는 상품의 번호이다. 상품 번호는 부터 까지의 범위에 있다.
출력
출력에는 개의 정수를, 중복도 을 가지는 자판기의 수를 각각 이 순서대로 출력한다.