메시지 전달

메시지를 전달받은 직원이 d개의 시간 단위 동안 매 시간 새로운 직원 한 명씩에게 전화할 때, 시각 t에 발생하는 통화 수를 31991로 나눈 값을 구한다.

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

문제

국제 컴퓨터 제품 회사(ICPC)에서는 사장이 전 직원에게 중요한 메시지를 전해야 하는 일이 자주 생긴다. 메시지는 조직의 보고 체계를 따라 이어지는 전화 통화로 퍼진다. ICPC의 김 사장은 한 직원이 다른 직원에게 거는 전화가 dd번을 넘지 않도록 메시지 전달 방식을 새로 짜려고 한다. 김 사장은 메시지 전달을 시작한 뒤 시각 tt에 걸리는 전화가 몇 통인지 알고 싶다. 규칙은 다음과 같다.

  1. 한 통화에는 직원 두 명만 참여한다.
  2. 한 통화에는 단위 시간이 하나 걸린다.
  3. 한 직원은 단위 시간마다 통화를 최대 한 번만 한다.
  4. 각 직원은 메시지를 받은 직후 연속한 dd단위 시간 동안 단위 시간마다 아직 메시지를 모르는 직원 한 명에게 전화를 걸어, 모두 dd명에게 전화를 건다.

김 사장은 메시지 전달을 시작하는 순간 직원 한 명에게만 전화를 걸고, 그 뒤로는 전화를 걸지 않는다. d=2d = 2인 경우는 아래 표와 같다.

시각 tt전화 통화시각 tt의 통화 수
0김 사장이 A에게 전화를 걸어 메시지 전달을 시작한다.1
1A가 B에게 전화를 건다.1
2A가 C에게, B가 D에게 전화를 건다.2
3B, C, D가 각각 E, F, G에게 전화를 건다.3

김 사장은 시각 0에 A에게 전화를 걸고, 그 통화에 단위 시간이 하나 걸린다. 시각 1에는 메시지를 아는 직원이 A뿐이므로 A가 아직 모르는 직원 B에게 전화를 건다. 시각 2에는 A와 B가 메시지를 알고 있어 각각 C와 D에게 전화를 건다. 이 경우 한 직원이 거는 전화는 두 번을 넘지 않으므로 A는 시각 2 이후로 전화를 걸지 않는다. 표에서 보듯 시각 3에는 전화 세 통이 걸린다.

ddtt가 주어질 때, 김 사장이 메시지 전달을 시작한 뒤 시각 tt에 걸리는 전화의 수를 구하는 프로그램을 작성하시오. 아직 메시지를 모르는 직원은 언제나 충분히 남아 있다고 가정한다.

입력

첫째 줄에 정수 ddtt가 공백으로 구분되어 주어진다 (2d502 \le d \le 50, 1t2×1091 \le t \le 2 \times 10^9). dd는 한 직원이 전화를 거는 직원 수이고, tt는 메시지 전달을 시작한 뒤 흐른 시간이다.

출력

시각 tt에 걸리는 전화의 수를 mm이라고 할 때, mm을 31991로 나눈 나머지를 한 줄에 출력한다. 예를 들어 m=32000m = 32000이면 9를 출력한다.