메뉴 건너뛰기

문제


시간메모리제출 회통과 회비율
1초128MB
0
0
0.0%
나의 횟수나의 판정시도 명성공 명비율
00
0.0%
문제

어떤 프로그래밍 콘테스트에서는 경기 뒤 친목 모임에서 빙고 게임을 하는 관습이 있다. 다만 이 게임에서 쓰는 빙고 카드는 조금 특별해서, 아래 조건을 따라 만든다.

  • 빙고 카드는 \(N\)행 \(N\)열 칸으로 나뉘고, 각 칸에는 양의 정수가 하나씩 적혀 있다. 그 정수들은 모두 서로 다르다.
  • 칸에 적힌 정수는 \(1\) 이상 \(M\) 이하이다.
  • 카드에 적힌 \(N \times N\)개 정수의 합은 \(S\)이다.
  • 어느 열을 보아도, 위에서 아래로 정수는 오름차순이다.
  • 어느 칸의 정수든, 그 칸보다 왼쪽 열의 어떤 정수보다도 크다.

위 조건을 만족하는 빙고 카드를 되도록 많이 만들고 싶다. 같은 카드는 두 장 이상 만들지 않는다. 만들 수 있는 빙고 카드 장수의 최댓값을 \(100000\)으로 나눈 나머지를 출력하는 프로그램을 작성하라.

입력

입력은 다음 형식으로 주어진다.

\(N\) \(M\) \(S\)

  • 첫째 줄에 빙고 카드의 크기 \(N\), 칸에 적히는 정수의 상한 \(M\), 카드에 적힌 정수의 합 \(S\)가 공백 하나로 구분되어 주어진다.
  • \(1 \le N \le 7\)
  • \(1 \le M \le 2000\)
  • \(1 \le S \le 3000\)
  • 주어지는 어느 입력에서도 조건을 만족하는 빙고 카드를 한 장 이상 만들 수 있다.
  • 입력되는 값은 모두 정수이다.
출력

다음 형식으로 출력한다.

첫째 줄에, 만들 수 있는 빙고 카드 장수의 최댓값을 \(100000\)으로 나눈 나머지를 출력한다.

예시 1
입력
3 9 45
출력
1
예시 2
입력
3 100 50
출력
7
예시 3
입력
5 50 685
출력
74501
위로