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 Python (3.8.2) (judge verdict: Wrong Answer)

n, x, m = map(int,input().split())
li = [0]*(m+1)

cnt1 = 0
cnt2 = 0
ans1 = x
ans2 = 0
ans3 = 0
a = x
flag = 0
li_1 = []

for i in range(1,n):
    a = (a**2)%m
    li[a] += 1
    if li[a] == 2:
        cnt2 += 1
        ans2 += a
        flag = 1
        li_1.append(a)

    elif li[a] == 3:
        flag = 2
        break

    else:
        ans1 += a
        cnt1 += 1

# print(flag)
# # print(li)

if flag == 0:
    print(ans1)

elif flag ==1:
    print(ans1+ans2)

else:
    I = len(li_1)
    v = (n-cnt1+cnt2)%I
    for i in range(v-1):
        ans3 += li_1[i]
    print(ans1-ans2+sum(li_1)*(n-cnt1+cnt2)//cnt2+ans3)