수열의 합
시간 제한1.5초메모리 제한1024 MB
N, S, L이 주어질 때 원소가 0부터 L까지이고 합이 S인 길이 N의 수열들에 대한 해시 값을 mod 998244353으로 계산하여 같은 값이 되는 최소 X를 구하고, 없으면 -1을 출력합니다.
문제
2024년 2학기는 지금까지 MatKor Cup을 주도하던 동우, 재우, 종우를 비롯한 많은 사람의 마지막 학기이다. MatKor는 특별한 사건 없이 한 학기가 지나갔지만, 국가적으로 평화롭지 않았던 연말이 지나고 2025년이 되었다. 재우는 올해 1월 1일에도 떠오르는 태양을 보며 올해는 면허를 따야지 다짐한다.
재우는 2025년이 밝자 이라는 사실에 매우 놀랐다. 심지어 도 성립하는 것을 보고 재우는 매우 놀라 동우에게 말했다. 동우는 이를 보더니 두 식이 동치가 아니냐며 일침을 날렸다.

옆에서 이 모습을 지켜보던 마음씨 착한 도훈이는 재우를 위로하며, 재우에게 동우 몰래 과 을 이용한 해시 인증 체계를 만들자고 제안했다.
먼저 수열 에 대해 함수 를 원소들의 세제곱의 합을 3의 거듭제곱 꼴로 취한 값으로 정의한다. 즉, 다음과 같다.
인증을 위해 먼저 개인키로 세 정수 , , 을 준비한다. 길이가 이고, 모든 원소가 이상 이하의 정수이며, 모든 원소의 합이 인 수열의 집합을 라 하자. 즉, 다음과 같다.
해시 함수 은 의 모든 원소에 대한 값의 합으로 정의한다. 즉, 다음과 같다. 만약 이라면 이다.
재우와 도훈이는 새로운 인증 요청이 들어오면 로 계산한 해시값을 비교해 인증할 수 있다. 그리고 C++을 좋아하는 두 사람은 큰 수 연산이 귀찮아서 해시값의 모듈로를 비교하려 한다. 즉, 올바른 키가 이고 입력된 키가 일 때, 에 대해 인지 검사해 성립하면 올바른 인증이라고 판단한다.
재우는 이 해시가 안전한지 확인하려고 해시 충돌 가능성을 알아보려 한다. 즉, 이지만 가 성립하는 경우가 있는지 알아보려 한다. 재우는 특히 키 가 주어질 때, 를 만족하는 음이 아닌 정수 를 찾고 싶다.
재우를 도와 주어진 에 대해 해시 충돌을 일으킬 수 있는 가 있다면 찾아보자.
입력
첫 번째 줄에 수열의 길이 , 수열의 합 , 원소의 최댓값 이 공백으로 구분되어 주어진다.
출력
첫 번째 줄에 주어진 조건을 만족하는 음이 아닌 정수 가 존재하면 의 최솟값을, 존재하지 않으면 -1을 출력한다.