package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
var N int
var A1, M int64
if _, err := fmt.Fscan(in, &N, &A1, &M); err != nil {
return
}
if N <= 0 {
fmt.Fprintln(out, 0)
return
}
if M < 0 {
M = -M
}
if M == 0 {
fmt.Fprintln(out, 0)
return
}
A := make([]int64, N+1)
B := make([]int64, N+1)
A[1] = A1
for i := 2; i <= N; i++ {
prev := A[i-1] % M
if prev < 0 {
prev += M
}
A[i] = (prev + (7*int64(i))%M) % M
}
for d := 1; d <= N; d++ {
ad := A[d]
for k := d; k <= N; k += d {
B[k] += ad
}
}
var ans int64
for i := 1; i <= N; i++ {
ans ^= B[i]
}
fmt.Fprintln(out, ans)
}