피더 로봇
시간 제한1초메모리 제한1024 MB
N개의 우리가 일렬로 놓여 있고 A번 우리에서 출발한 로봇이 M개의 펠릿을 나눠 줄 때, 가능한 분배 결과의 수를 998244353으로 나눈 나머지를 구합니다.
문제
Vincent는 은퇴 계획을 말과 염소 사육에서 닭 사육으로 바꿉니다. 그는 닭 마리를 구입하고, 각 닭을 별도의 닭장에 넣습니다. 닭장은 왼쪽 끝 1번부터 오른쪽 끝 번까지 한 줄로 번호가 매겨져 있습니다. Vincent는 은퇴 생활을 행복하게 만들려고(적어도 그렇게 생각하고) 피더 로봇을 구입합니다. 이 로봇에는 펠릿 개를 싣고, 닭들이 먹을 수 있도록 펠릿을 나눠 줍니다. 로봇은 인접한 닭장으로 이동하며, 방문한 닭장마다 펠릿을 1개씩 줍니다. 로봇의 초기 위치를 포함해 어떤 닭장을 번 방문하면, 그 닭장은 펠릿을 개 받습니다. 그런데 Vincent는 방금 로봇의 이동을 자신이 제어할 수 없다는 것을 알아챘습니다. 로봇이 닭장 앞에 있고 아직 나눠 줄 펠릿이 남아 있으면, 인접한 닭장( 또는 ) 중 한 곳으로 무작위로 이동해 그 닭장에 펠릿을 1개 줍니다. 나눠 줄 펠릿이 없어질 때까지 이 과정을 반복합니다. 이면 로봇은 2번 닭장으로 이동하고, 같은 방식으로 이면 번 닭장으로 이동합니다. Vincent는 당신이 그의 유일한 친구인데도 당신을 싫어하기 때문에, 당신에게 문제를 냅니다. 과제는 로봇이 닭장 에서 출발할 때 펠릿을 나눠 주는 방법이 몇 가지인지 세는 것입니다. 펠릿 분배는 튜플 로 정의하며, 여기서 은 로봇의 최종 위치, 는 닭장 가 받은 펠릿 수입니다. 두 분배는 로봇의 최종 위치가 다르거나, 펠릿 수가 다른 닭장이 하나라도 있을 때에만 서로 다릅니다. 로봇의 이동 경로나 닭장이 펠릿을 받는 순서는 고려하지 않습니다. 출력값이 매우 클 수 있으므로, 답을 998 244 353으로 나눈 나머지(0 이상)를 구하세요. Vincent는 당신이 이 문제를 풀지 못할 거라고 생각하지만, 풀어내면 후한 보상을 주겠다고 약속했습니다. 예를 들어 , , 라고 합시다. 이 경우 서로 다른 펠릿 분배는 3가지입니다. : 로봇은 2번 닭장에서 끝나고, 각 닭장이 받는 펠릿 수는 입니다. 이 분배를 만드는 이동은 다음과 같습니다. 로봇은 2번 닭장에서 출발해 2번 닭장에 펠릿을 1개 주고, 1번 닭장으로 이동해 1개를 주고, 다시 2번 닭장으로 이동해 1개를 줍니다. 간단히 쓰면 이동은 2 → 1 → 2입니다. : 로봇은 2번 닭장에서 끝나고, 각 닭장이 받는 펠릿 수는 입니다. 이동은 2 → 3 → 2입니다. : 로봇은 4번 닭장에서 끝나고, 각 닭장이 받는 펠릿 수는 입니다. 이동은 2 → 3 → 4입니다.
입력
입력은 세 정수 , , 로 주어집니다(2 ≤ ≤ 100 000; 1 ≤ ≤ 200 000; 1 ≤ ≤ ). 각각 닭장의 개수, 펠릿의 개수, 피더 로봇의 시작 위치입니다.
출력
서로 다른 펠릿 분배의 개수를 998 244 353으로 나눈 나머지(0 이상)를 한 줄에 정수로 출력합니다.