#include <bits/stdc++.h>
const int N = 1e6 + 10;
#define int long long
using namespace std;
int n, m, s, t, g, flg;
bool vis[N];
vector<int> e[N];
bool _[N], p[N];
int dfs(int k, bool viag) {
if (p[k]){
if(p[k]==2&&viag)flg=1;
return p[k];
}
if (flg)return 2;
if (k == t) {
if (viag == 1) {
flg=1;
}
return 2;
}
int l = e[k].size();
for (int i = 0; i < l; ++i) {
int v = e[k][i];
if (vis[v])continue;
vis[v] = 1;
if(dfs(v, viag || (v == g)) == 2)p[k]=2;
vis[v] = 0;
}
if(!p[k])p[k] = 1;
return p[k];
}
signed main() {
scanf("%lld %lld", &n, &m);
scanf("%lld %lld %lld", &s, &g, &t);
while (m--) {
int u, v;
scanf("%lld %lld", &u, &v);
e[u].push_back(v);
e[v].push_back(u);
}
vis[s] = 1;
dfs(s,s==g);
if (flg) puts("Yes");
else puts("No");
return 0;
}