import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(2*10**5+10) write = lambda x: sys.stdout.write(x+"\n") _print = lambda *x: print(*x, file=sys.stderr) ### 行列積 matrix multiplication ### 繰り返し2乗法 kurikae M = 10**9+7 def mul(a,b): """行列a,bの積 aかbがNone のとき、単位行列として扱う """ if a is None: return b elif b is None: return a n,m = len(a), len(a[0]) k,l = len(b), len(b[0]) # k==m out = [[0]*l for _ in range(n)] for i in range(n): for j in range(l): for p in range(m): out[i][j] |= (a[i][p]&b[p][j]) return out def mulk(m, k): """a^kを求める """ ans = None tmp = m while k>0: if k&1: ans = mul(ans, tmp) tmp = mul(tmp, tmp) k = k>>1 return ans def mul2(m,a): """行列と配列の積 """ k,l = len(m), len(m[0]) # ll = len(a) ans = [0]*k for i in range(k): for j in range(l): ans[i] |= (m[i][j] & a[j]) return ans n,m,t = list(map(int, input().split())) val = [[0]*n for _ in range(n)] for i in range(m): a,b = map(int, input().split()) val[a][b] = 1 if t==0: print(1) else: valt = mulk(val,t) b = [0]*n b[0] = 1 valtt = [[0]*n for _ in range(n)] for i in range(n): for j in range(n): valtt[i][j] = valt[j][i] ans = mul2(valtt,b) print(sum(ans))