#include #include using namespace std; using namespace atcoder; using ll = long long; using mint = modint998244353; using vi = vector; using vvi = vector; using vvvi = vector; using vll = vector; using vvll = vector; using vvvll = vector; using vmi = vector; using vvmi = vector; using vvvmi = vector; using vb = vector; using vvb = vector; using vvvb = vector; #define all(a) (a).begin(), (a).end() #define rep2(i, m, n) for (int i = (m); i < (n); ++i) #define rep(i, n) rep2(i, 0, n) #define drep2(i, m, n) for (int i = (m)-1; i >= (n); --i) #define drep(i, n) drep2(i, n, 0) vvb mat(vvb &a, vvb &b, int n){ vvb res(n, vb(n)); rep(i, n)rep(j, n){ rep(k, n)res[i][j] = res[i][j] || (a[i][k] && b[k][j]); } return res; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; ll t; cin >> n >> m >> t; vvb B(n, vb(n, false)); rep(i, m){ int a, b; cin >> a >> b; B[b][a] = true; } vvvb bb(64); bb[0] = B; rep2(i, 1, 64){ bb[i] = mat(bb[i-1], bb[i-1], n); } bitset<64> bs(t); vvb e(n, vb(n, false)); rep(i, n)e[i][i] = true; rep(i, 64){ if(bs[i])e = mat(e, bb[i], n); } vb x0(n, false); x0[0] = true; int ans = 0; rep(i, n){ bool t = false; rep(j, n)t = t || (e[i][j] && x0[j]); ans += t; }cout << ans << endl; return 0; }