결함 팩토리얼

길이 n, 소수 p, 목표 나머지 r이 주어질 때, 한 항만 원래 값보다 작은 faulty factorial의 나머지가 r이 되는 (인덱스, 값) 쌍을 사전순으로 가장 작게 찾는다.

어려움8정수론수학구현이분 탐색아직 제출이 없습니다시간 제한3초메모리 제한512 MB

문제

자연수의 팩토리얼은 그 수 이하의 모든 양의 정수를 곱한 값이다. 예를 들어 44의 팩토리얼은 1×2×3×4=241 \times 2 \times 3 \times 4 = 24이다. 길이가 nn인 결함 팩토리얼은 nn의 팩토리얼과 같은 형태이지만, 곱해지는 정수 중 정확히 하나가 원래 값보다 작다. 작아진 자리의 값도 11 이상이다. 예를 들어 1×2×2×4=161 \times 2 \times 2 \times 4 = 16은 길이가 44인 결함 팩토리얼이다.

길이 nn, 소수인 나눗수 pp, 목표 나머지 rr가 주어진다. 길이가 nn이고 pp로 나눈 나머지가 rr인 결함 팩토리얼을 찾아라.

입력

첫째 줄에 결함 팩토리얼의 길이 nn, 소수인 나눗수 pp, 목표 나머지 rr가 공백으로 구분되어 주어진다 (2n10182 \le n \le 10^{18}, 2p<1072 \le p < 10^7, 0r<p0 \le r < p). pp는 소수이다.

출력

조건을 만족하는 결함 팩토리얼이 없으면 -1 -1을 출력한다. 있으면 결함이 있는 자리의 번호 kk와 그 자리의 값 vv를 공백으로 구분해 출력한다 (2kn2 \le k \le n, 1v<k1 \le v < k).

답이 여러 개이면 사전순으로 가장 작은 (k,v)(k, v)를 출력한다. 즉 kk가 가장 작은 답을 고르고, 그런 답이 여러 개이면 그중 vv가 가장 작은 답을 고른다.

힌트

첫 번째 예제의 답은 결함 팩토리얼 1×2×2×4=161 \times 2 \times 2 \times 4 = 16을 나타낸다. 161655로 나눈 나머지는 11이다.