#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 1000000000000000001 int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N,M; cin>>N>>M; int S,T,K; cin>>S>>T>>K; S--,T--; int s = S,t = T; vector a(M),b(M); vector> E(N); rep(i,M){ cin>>a[i]>>b[i]; a[i]--,b[i]--; E[a[i]].push_back(b[i]); E[b[i]].push_back(a[i]); } vector d(N,Inf32); d[s] = 0; queue Q; Q.push(s); while(Q.size()>0){ int u = Q.front(); Q.pop(); rep(i,E[u].size()){ int v = E[u][i]; if(d[v]!=Inf32)continue; d[v] = d[u]+1; Q.push(v); } } bool f0 = false,f1 = false; { if(d[t] %2 == K%2 && d[t] <= K)f0 = true; if(s==t && K%2==0 && E[s].size()==0)f0 = false; } if(N==1)f1 = false; else{ if(s==t){ if(K%2==0)f1 = true; } else{ if(N==2){ if(K%2==1)f1 = true; } else{ if(d[t]==Inf32)f1 = true; else if(d[t]%2==K%2)f1 = true; } } } if(f0)cout<<"Yes"<