n, m, t = map(int, input().split()) edges = [[] for _ in range(n)] for _ in range(m): a, b = map(int, input().split()) edges[a].append(b) if t == 0: print(1) else: # Construct the transition matrix masks mask = [] for i in range(n): if not edges[i]: mask.append(0) else: m_val = 0 for j in edges[i]: m_val |= 1 << j mask.append(m_val) def multiply(a, b): n_mat = len(a) result = [0] * n_mat for i in range(n_mat): row = a[i] res = 0 k = 0 while row > 0 and k < n_mat: if row & 1: res |= b[k] row >>= 1 k += 1 result[i] = res return result def matrix_power(mat, power): n_mat = len(mat) # Initialize result as identity matrix result = [0] * n_mat for i in range(n_mat): result[i] = 1 << i while power > 0: if power % 2 == 1: result = multiply(result, mat) mat = multiply(mat, mat) power //= 2 return result mt = matrix_power(mask, t) res_mask = mt[0] print(bin(res_mask).count('1'))