import sys import math input = sys.stdin.readline def read_values(): return map(int, input().split()) def read_index(): return map(lambda x: int(x) - 1, input().split()) def read_list(): return list(read_values()) from fractions import Fraction def main(): # オーバーフロー上等の問題で遅延セグもどきを作っては普通につらいなり…… n,b,q=read_values() a=[[0]*b for v in range(n+1)] ab=[0]*(n+1) m=[1]*(n+1) for v in range(n,0,-1): a[v][v%b]+=1 ab[v]=v%b if v>1: for i in range(b): a[v//2][i]+=a[v][i] for _ in range(q): ii,dd=read_values() m[ii]*=dd v=ii rev=-1 mul=1 while v: mul*=m[v] if rev!=-1: if rev==v*2: m[v*2+1]*=m[v] else: m[v*2]*=m[v] m[v]=1 rev=v v//=2 na=[0]*b for bb in range(b): na[(pow(bb,mul,b)+1)%b]+=a[v][bb] a[ii]=na v=ii//2 while v: na=[0]*b for bb in range(b): na[bb]=a[v*2][bb]+a[v*2+1][bb] a[v]=na v//=2 ans=0 for bb in range(b): ans+=bb*a[1][bb] print(ans%b) if __name__ == "__main__": main()