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 PHP (7.4.4) (judge verdict: Wrong Answer)

<?php

$input_array = explode(" ", fgets(STDIN));

$n = $input_array[0];
$x = $input_array[1];
$m = $input_array[2];

$ans = $x;
$a_i = $x;
$mod_array = array();
$pattern_start = 0;
$pattern_end = 0;
for($i=1;$i<=$n;$i++){
    $a_i = ($a_i**2) % $m;   
    if(in_array($a_i,$mod_array)){
        $pattern_end = $i;
        $pattern_start = array_search($a_i,$mod_array);
        break;
    }
    $ans += $a_i;
    if($a_i==0){
        break;
    }
    $mod_array[$i+1] = $a_i;
}

$pattern_sum = 0;
for($i=$pattern_start;$i<=$pattern_end;$i++){
   $pattern_sum += $mod_array[$i];
}

$pattern_count = $pattern_end - $pattern_start + 1;

$count = $pattern_end;
if($pattern_start){
    while($count <= $n-$pattern_end){
        $ans += $pattern_sum;
        $count += $pattern_count;
    }

    for($i=$pattern_start;$i<=$pattern_start+$n-$count-1;$i++){
        $ans += $mod_array[$i];
    }

    
}


echo $ans;


?>