local bor, band = bit.bor, bit.band local ffi = require("ffi") local C = ffi.C ffi.cdef[[ long long atoll(const char*); ]] local function lltonumber(str) return C.atoll(str) end local n, m, t = io.read():match("(%d+) (%d+) (%d+)") n = tonumber(n) m = tonumber(m) t = lltonumber(t) local mat = {} for i = 1, n do mat[i] = {} for j = 1, n do mat[i][j] = 0 end end for i = 1, m do local a, b = io.read("*n", "*n") mat[b + 1][a + 1] = 1 end local vec = {} for i = 1, n do vec[i] = 0 end vec[1] = 1 local tmpmat = {} for i = 1, n do tmpmat[i] = {} end local tmpvec = {} local function matmat() for i = 1, n do for j = 1, n do local v = 0 for k = 1, n do v = bor(v, band(mat[i][k], mat[k][j])) end tmpmat[i][j] = v end end for i = 1, n do for j = 1, n do mat[i][j] = tmpmat[i][j] end end end local function matvec() for i = 1, n do local v = 0 for k = 1, n do v = bor(v, band(mat[i][k], vec[k])) end tmpvec[i] = v end for i = 1, n do vec[i] = tmpvec[i] end end while 0LL < t do if t % 2LL == 1LL then matvec() end matmat() t = t / 2LL end local z = 0 for i = 1, n do z = z + vec[i] end print(z)