Problem:
Score : 500 points

Problem Statement

Let us denote by f(x, m) the remainder of the Euclidean division of x by m.

Let A be the sequence that is defined by the initial value A_1=X and the recurrence relation A_{n+1} = f(A_n^2, M).
Find \displaystyle{\sum_{i=1}^N A_i}.

Constraints

1 \leq N \leq 10^{10}

0 \leq X < M \leq 10^5

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N X M

Output

Print \displaystyle{\sum_{i=1}^N A_i}.

Sample Input 1

6 2 1001

Sample Output 1

1369

The sequence A begins 2,4,16,256,471,620,\ldots Therefore, the answer is 2+4+16+256+471+620=1369.

Sample Input 2

1000 2 16

Sample Output 2

6

The sequence A begins 2,4,0,0,\ldots Therefore, the answer is 6.

Sample Input 3

10000000000 10 99959

Sample Output 3

492443256176507

Solution in Ruby (2.7.1) (judge verdict: Accepted)

N,X,M = gets.split.map &:to_i
A = [p]*M
I = [p]*M
H = {0=>0,X=>1}
S = [0,s=X]
A[0] = I[0] = 0
I[X] = n=1
A[1] = x=X
while M > n+=1
  M>x*=x or x%=M
  break  if I[x]
  I[x] = n
  A[n] = x
  S[n] = s+=x
end
exit 0&p(S[N]) if S[N]
exit 0&p(s) if x==0
i = I[x]
L = A[i...n]
T = S[i...n]
d = T[0] - L[0]
q,r = (N-i).divmod L.size
p q*(s-d) + T[r]