def matmul(A,B): # A,B: 行列 n = len(A) res = [[0]*n for _ in range(n)] for i in range(n): for k in range(n): for j in range(n): res[i][j] |= A[i][k]&B[k][j] return res def matpow(A,p): #A^p mod M if p%2: return matmul(A, matpow(A,p-1)) elif p > 0: b = matpow(A,p//2) return matmul(b,b) else: return [[1 if i == j else 0 for j in range(len(A))] for i in range(len(A))] n,m,t,*ab = map(int,open(0).read().split()) g = [[0]*n for _ in range(n)] for i in range(m): g[ab[i*2]][ab[i*2+1]]=1 A = matpow(g,t) print(sum(A[0]))