#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 2e3 + 5;
int n, m;
vector<int> adj[N];
int tin[N], low[N], timer;
int id[N];
vector<int> st;
bool in_stack[N];
void dfs(int u) {
tin[u] = low[u] = ++timer;
st.push_back(u);
in_stack[u] = true;
for (int v : adj[u]) {
if (!tin[v]) {
dfs(v);
}
if (in_stack[v]) {
low[u] = min(low[u], low[v]);
}
}
if (low[u] == tin[u]) {
while (true) {
int v = st.back(); st.pop_back();
in_stack[v] = false;
id[v] = u;
if (v == u) break;
}
}
}
int indeg[N];
int outdeg[N];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
}
timer = 0;
for (int u = 1; u <= n; u++) {
if (!tin[u]) dfs(u);
}
for (int u = 1; u <= n; u++) {
for (int v : adj[u]) {
if (id[u] == id[v]) continue;
outdeg[id[u]]++;
indeg[id[v]]++;
}
}
int cnt_s = 0, cnt_t = 0;
int s = -1, t = -1;
for (int u = 1; u <= n; u++) {
if (u != id[u]) continue;
if (indeg[u] == 0) {
cnt_s++;
s = u;
}
if (outdeg[u] == 0) {
cnt_t++;
t = u;
}
}
if (cnt_s == 1 && cnt_t == 1) {
cout << "YES" << '\n';
cout << t << ' ' << s << '\n';
}
else {
cout << "NO" << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAyZTMgKyA1OyAKCmludCBuLCBtOyAgCnZlY3RvcjxpbnQ+IGFkaltOXTsgCgppbnQgdGluW05dLCBsb3dbTl0sIHRpbWVyOyAgCmludCBpZFtOXTsKdmVjdG9yPGludD4gc3Q7ICAKYm9vbCBpbl9zdGFja1tOXTsgCgp2b2lkIGRmcyhpbnQgdSkgewoJdGluW3VdID0gbG93W3VdID0gKyt0aW1lcjsgICAKCXN0LnB1c2hfYmFjayh1KTsgICAKCWluX3N0YWNrW3VdID0gdHJ1ZTsgIAoKCWZvciAoaW50IHYgOiBhZGpbdV0pIHsKCQlpZiAoIXRpblt2XSkgewoJCQlkZnModik7ICAKCQl9CgkJaWYgKGluX3N0YWNrW3ZdKSB7CgkJCWxvd1t1XSA9IG1pbihsb3dbdV0sIGxvd1t2XSk7IAoJCX0KCX0KCglpZiAobG93W3VdID09IHRpblt1XSkgewoJCXdoaWxlICh0cnVlKSB7CgkJCWludCB2ID0gc3QuYmFjaygpOyBzdC5wb3BfYmFjaygpOyAgCgkJCWluX3N0YWNrW3ZdID0gZmFsc2U7IAoJCQlpZFt2XSA9IHU7CgkJCWlmICh2ID09IHUpIGJyZWFrOyAKCQl9Cgl9Cn0KCmludCBpbmRlZ1tOXTsKaW50IG91dGRlZ1tOXTsgIAoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gbTsgCgoJZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKCQlpbnQgdSwgdjsgCgkJY2luID4+IHUgPj4gdjsgCgkJYWRqW3VdLnB1c2hfYmFjayh2KTsgCgl9CgoJdGltZXIgPSAwOyAKCWZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgewoJCWlmICghdGluW3VdKSBkZnModSk7IAoJfQoKCWZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgewoJCWZvciAoaW50IHYgOiBhZGpbdV0pIHsKCQkJaWYgKGlkW3VdID09IGlkW3ZdKSBjb250aW51ZTsgICAKCQkJb3V0ZGVnW2lkW3VdXSsrOyAKCQkJaW5kZWdbaWRbdl1dKys7IAoJCX0KCX0KCglpbnQgY250X3MgPSAwLCBjbnRfdCA9IDA7ICAgCglpbnQgcyA9IC0xLCB0ID0gLTE7IAoKCWZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgewoJCWlmICh1ICE9IGlkW3VdKSBjb250aW51ZTsgICAgICAKCQlpZiAoaW5kZWdbdV0gPT0gMCkgewoJCQljbnRfcysrOyAgICAKCQkJcyA9IHU7ICAKCQl9CgkJaWYgKG91dGRlZ1t1XSA9PSAwKSB7CgkJCWNudF90Kys7ICAKCQkJdCA9IHU7IAoJCX0KCX0KCQoJaWYgKGNudF9zID09IDEgJiYgY250X3QgPT0gMSkgewoJCWNvdXQgPDwgIllFUyIgPDwgJ1xuJzsgCgkJY291dCA8PCB0IDw8ICcgJyA8PCBzIDw8ICdcbic7IAoJfSAKCWVsc2UgewoJCWNvdXQgPDwgIk5PIiA8PCAnXG4nOyAKCX0KfQo=