N, X, M = $stdin.gets.split.map {|i| i.to_i }
case X
when 0
  puts "0"
  exit
when 1
  puts N
  exit
end
A = { 0 => X }
R = { X => 0 }
last = 0
sum0 = X
offset = nil
1.upto(N - 1) do |i|
  f = (A[i - 1] ** 2) % M
  if f == 0
    puts sum0
    exit
  elsif offset = R[f]
    break
  end
  A[i] = f
  R[f] = i
  last = i
  sum0 += f
end
offset ||= 0
length = last + 1 - offset
sum = 0
0.upto(offset - 1) do |i|
  sum += A[i]
end
0.upto(last - offset) do |i|
  a = A[offset + i]
  c = (N - offset - i + length - 1) / length
  sum += a * c
end
puts sum
