output_description: Print \displaystyle{\sum_{i=1}^N A_i}.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N X M
attempt: l = input().split()
  n = int(l[0])
  x = int(l[1])
  m = int(l[2])
  hashi = dict()
  pref = 0
  count = 0
  prefix = []
  for i in range(n):
      if i == 0:
          ans = x % m
      else:
          ans = ans * ans
          ans %= m
      if ans in hashi:
          period = i - (hashi[ans][0])
          num1 = hashi[ans][0]
          k = (n - num1) // period
          rem = n - (num1 + k * period)
          count = count + prefix[num1]
          count = count + k * (pref - hashi[ans][1])
          for j in range(rem):
              if j != 0:
                  ans = ans * ans
              ans %= m
              count += ans
          break
      hashi[ans] = (i, pref)
      prefix.append(pref)
      pref += ans
  print(max(pref, count))
  
problem_description: 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}.
samples: [{"input": "6 2 1001", "output": "1369\n    \n\nThe sequence A begins 2,4,16,256,471,620,\\ldots Therefore, the answer is\n2+4+16+256+471+620=1369.\n\n* * *"}, {"input": "1000 2 16", "output": "6\n    \n\nThe sequence A begins 2,4,0,0,\\ldots Therefore, the answer is 6.\n\n* * *"}, {"input": "10000000000 10 99959", "output": "492443256176507"}]