link
#include <bits/stdc++.h>
using namespace std;
int N, M, A, B;
vector<int> edge[510];
bool flag;
int nums[510];
void dfs(int index){
if(nums[index]) return ;
for(auto e: edge[index]){
if(nums[e] == 0) dfs(e);
nums[index] += nums[e];
}
if(nums[index] == 0) flag = 1;
}
signed main(){
cin >> N >> M;
for(int i = 1; i <= M; ++i){
cin >> A >> B;
edge[A].push_back(B);
}
cin >> A >> B;
nums[B] = 1;
dfs(A);
cout << nums[A] << " ";
//不可以如下,因为会考虑所有的,而不仅仅是从A到B
// for(int i = 1; i <= N; ++i){
// if(nums[i] == 0) flag = true;
// }
if(flag) cout << "No" << endl;
else cout << "Yes" << endl;
return 0;
}