def main(): import sys input = sys.stdin.read().split() idx = 0 n = int(input[idx]); idx +=1 m = int(input[idx]); idx +=1 t = int(input[idx]); idx +=1 edges = [[] for _ in range(n)] out_degree = [0] * n for _ in range(m): a = int(input[idx]); idx +=1 b = int(input[idx]); idx +=1 edges[a].append(b) out_degree[a] += 1 # Construct the adjacency matrix with bitmask mask = [0] * n for u in range(n): if out_degree[u] == 0: mask[u] = 0 else: for v in edges[u]: mask[u] |= 1 << v if t == 0: print(1) return def multiply(A, B): n = len(A) # Compute transpose of B as bitmask for each column BT = [0] * n for j in range(n): bt = 0 for k in range(n): if (B[k] >> j) & 1: bt |= 1 << k BT[j] = bt # Compute product matrix C C = [0] * n for i in range(n): ci = 0 for j in range(n): if (A[i] & BT[j]) != 0: ci |= 1 << j C[i] = ci return C def matrix_power(mat, power): n = len(mat) # Initialize result as identity matrix result = [0] * n for i in range(n): result[i] = 1 << i # Each row has only the i-th bit set while power > 0: if power % 2 == 1: result = multiply(result, mat) mat = multiply(mat, mat) power = power // 2 return result mat_pow = matrix_power(mask, t) row0 = mat_pow[0] count = bin(row0).count('1') print(count) if __name__ == '__main__': main()