A, B, C = gets.split(" ").map{|s| s.to_i} def mod_exp(b, e, m) result = 1 while e > 0 do result = (result * b) % m if (e & 1) == 1 e >>= 1 b = (b * b) % m end result end r = [0] max = C < A ? C : A 1.upto(max) {|i| r << r[-1] + mod_exp(i, B, C) } n, m = A / C, A % C puts (n * r[-1] + r[m]) % C