""" https://yukicoder.me/problems/no/801 推移先が区間なので、推移を簡略化できる """ mod = 10**9+7 N,M,K = map(int,input().split()) LR = [] for i in range(M): L,R = map(int,input().split()) LR.append( (L-1,R-1) ) dp = [0] * N dp[0] = 1 for _ in range(K): # 推移元累積輪 S = [i for i in dp] for i in range(len(S)-1): S[i+1] += S[i] S[i+1] %= mod S.append(0) # 推移先 ndp = [0] * N for l,r in LR: now = (S[r] - S[l-1]) % mod ndp[l] += now ndp[l] %= mod if r+1 < len(ndp): ndp[r+1] -= now ndp[r+1] %= mod for i in range(len(ndp)-1): ndp[i+1] += ndp[i] ndp[i+1] %= mod dp = ndp print (dp[N-1] % mod)