n,k=map(int,input().split()) m=int(input()) p=[-1]*k for _ in range(m): l,r=map(int,input().split()) l-=1 r-=1 p[r]=max(p[r],l) for i in range(k): for j in range(i+1,k): if i!=j and p[i]!=-1 and p[j]!=-1 and p[i]>=p[j]: p[j]=-1 M=998244353 q1=[[[0]*(k+1) for i in range(k+2)] for _ in range(2)] q2=[[[0]*(k+1) for i in range(k+2)] for _ in range(2)] for r in range(k): nq=[[0]*(k+1),[0]*(k+1)] if p[r]!=-1: l=p[r] nq[1][r-l+1]+=1 for i in range(k+1): if i-(r-l+1)>=0: nq[0][i]+=q1[1][i-(r-l+1)][l-1] nq[1][i]+=q1[0][i-(r-l+1)][l-1] for i in range(k+1): nq[0][i]+=q2[1][i-1][r-1]-q2[1][i-min(r-l,r,i)-1][r-min(r-l,r,i)-1] nq[1][i]+=q2[0][i-1][r-1]-q2[0][i-min(r-l,r,i)-1][r-min(r-l,r,i)-1] for i in range(k+1): q1[0][i][r]=nq[0][i]+q1[0][i][r-1] q1[0][i][r]%=M q1[1][i][r]=nq[1][i]+q1[1][i][r-1] q1[1][i][r]%=M q2[0][i][r]=nq[0][i]+q2[0][i-1][r-1] q2[0][i][r]%=M q2[1][i][r]=nq[1][i]+q2[1][i-1][r-1] q2[1][i][r]%=M a=pow(k,n,M) for i in range(k+1): a-=pow(k-i,n,M)*q1[1][i][k-1] a+=pow(k-i,n,M)*q1[0][i][k-1] a%=M print(a)