N,M,T = map(int,input().split()) R = [[0] * N for _ in range(N)] for _ in range(M): a,b = map(int,input().split()) R[b][a] = 1 def seki(x,y): l = [[0] * N for _ in range(N)] for i in range(N): for j in range(N): for k in range(N): if x[i][k] and y[k][j]: l[i][j] = 1 return l tmp = [[0] * N for _ in range(N)] for i in range(N): tmp[i][i] = 1 while T: if T & 1: tmp = seki(tmp,R) T >>= 1 R = seki(R,R) ans = 0 for i in range(N): ans += tmp[i][0] print(ans)