//#define _GLIBCXX_DEBUG #include using namespace std; #define endl '\n' #define lfs cout<= (ll)(n); i--) using ll = long long; using ld = long double; const ll MOD1 = 1e9+7; const ll MOD9 = 998244353; const ll INF = 1e18; using P = pair; templatebool chmin(T1 &a,T2 b){if(a>b){a=b;return true;}else return false;} templatebool chmax(T1 &a,T2 b){if(avoid ans(bool x,T1 y,T2 z){if(x)cout<void debug(vector>&v,ll h,ll w){for(ll i=0;i&v,ll h,ll w){for(ll i=0;ivoid debug(vector&v,ll n){if(n!=0)cout<vector>vec(ll x, ll y, T w){vector>v(x,vector(y,w));return v;} ll gcd(ll x,ll y){ll r;while(y!=0&&(r=x%y)!=0){x=y;y=r;}return y==0?x:y;} vectordx={1,-1,0,0,1,1,-1,-1};vectordy={0,0,1,-1,1,-1,1,-1}; templatevector make_v(size_t a,T b){return vector(a,b);} templateauto make_v(size_t a,Ts... ts){return vector(a,make_v(ts...));} templateostream &operator<<(ostream &os, const pair&p){return os << p.first << " " << p.second;} templateostream &operator<<(ostream &os, const vector &v){for(auto &z:v)os << z << " ";cout<<"|"; return os;} templatevoid rearrange(vector&ord, vector&v){ auto tmp = v; for(int i=0;ivoid rearrange(vector&ord,Head&& head, Tail&&... tail){ rearrange(ord, head); rearrange(ord, tail...); } //mt19937 mt(chrono::steady_clock::now().time_since_epoch().count()); int popcount(ll x){return __builtin_popcountll(x);}; int poplow(ll x){return __builtin_ctzll(x);}; int pophigh(ll x){return 63 - __builtin_clzll(x);}; const ll MAX_W=100; struct BitMatrix { ll h,w; vector>A; BitMatrix() {}; BitMatrix(ll n, ll m) :h(n),w(m){ A.assign(h,bitset(0)); }; BitMatrix(vector>v):h(v.size()),w(v[0].size()){ A.assign(h,bitset(0)); for(ll i=0;i &operator[](ll k) { return A[k]; } inline bitset operator[](ll k) const{ return A[k]; } friend ostream &operator<<(ostream &os, BitMatrix &p) { ll n = p.height(), m = p.width(); for(ll i = 0; i < n; i++) { os << "["; for(ll j = 0; j < m; j++) { os << p[i][j] << (j + 1 == m ? "]\n" : ","); } } return (os); } BitMatrix &operator*=(const BitMatrix &B){ BitMatrix C(h,B.w); for(int i = 0; i < h; i++){ for(int j = 0; j < w; j++){ if(this->A[i][j])C[i] |= B[j]; } } A.swap(C.A); return (*this); } BitMatrix operator*(BitMatrix &B) const { return (BitMatrix(*this) *= B); } BitMatrix &operator^=(long long k) { BitMatrix B = BitMatrix::I(height()); while(k > 0) { if(k & 1) B *= *this; *this *= *this; k >>= 1LL; } A.swap(B.A); return (*this); } BitMatrix operator^(const long long k) const { return (BitMatrix(*this) ^= k); } }; int main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); ll res=0,buf=0; bool judge = true; ll n,m,t;cin>>n>>m>>t; BitMatrix mat(n,n); rep(i,0,m){ ll a,b;cin>>a>>b; mat[a][b]=true; } mat^=t; rep(i,0,n)if(mat[0][i])res++; cout<