소수 $P$ ($2 \le P < 2^{31}$), 정수 $B$ ($2 \le B < P$), 정수 $N$ ($1 \le N < P$)가 주어졌을 때, 밑이 $B$이고 법이 $P$인 $N$의 이산 로그를 구하는 프로그램을 작성하시오.
즉, 다음 조건을 만족하는 정수 $L$을 찾으면 된다.
$$B^L \equiv N \pmod{P}$$
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄로, $P$, $B$, $N$이 공백으로 구분되어 주어진다. 입력은 파일의 끝까지 계속된다.
각 테스트 케이스마다 $N$의 이산 로그를 한 줄에 출력한다. 조건을 만족하는 $L$이 여러 개이면 그중 가장 작은 값을 출력한다. 조건을 만족하는 $L$이 존재하지 않으면 no solution을 출력한다.
ACM-ICPC 대회에서는 자주 쓰이지 않는 페르마의 소정리(Fermat's little theorem)를 활용해야 이 문제를 풀 수 있다. 자세한 내용은 페르마의 소정리를 참고하라.