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 C++ (GCC 9.2.1) (judge verdict: Wrong Answer)

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

map<ll,ll>mpp;

int main()

{
     ll i,j,k,l,m,n,A;

     cin >> n >> A >> m;

     ll prv = A;


     ll ans = A;
     n--;

     while(n>0)
     {


         prv = prv*prv;


         if(prv>=m)break;

         ans += prv;

         n--;

         if(n<=0)break;
     }
     prv %= m;
     ll ct = 0,kota=0;
     vector<ll>bki;
     while(1)
     {
         if(n<=0)break;


         mpp[prv]++;
         if(mpp[prv]>=2)break;
         n--;
         ct += prv;

         bki.push_back(prv);
         ans += prv;
         kota++;
         prv = (prv*prv)%m;
     }

     if(kota){
     ans += (n/kota)*ct;

     for(i=0;i<n%kota;i++)ans += bki[i];
     }

     cout << ans << endl;
}