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}.

Examples

Input

6 2 1001


Output

1369


Input

1000 2 16


Output

6


Input

10000000000 10 99959


Output

492443256176507
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define debug(x) cerr << "[(" << __LINE__ << ") " << #x << "]: " << (x) << endl;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    ll n, x, MOD;
    cin >> n >> x >> MOD;

    vector<pair<ll, int>> m(MOD+1);

    ll ans = 0;
    ll i=1;
    while (!m[x].second && i <= n) {
        m[x] = {ans, i++};
        ans += x;
        x = x*x % MOD;
    }

    n -= i;
    if (n < 0) { 
        cout << ans << "\n";
        return 0;
    }
    ll duh = n / (i-m[x].second);
    ans += duh * (ans-m[x].first);
    n %= i-m[x].second;
    n++;

    while (n-- > 0) {
        ans += x;
        x = x*x % MOD;
    }
    cout << ans << "\n";
}
