package javafn;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
try {
while (true) {
int vertices
= Integer.
parseInt(nextToken
()); int edges
= Integer.
parseInt(nextToken
());
int u, v;
Deque<Integer> todo = new ArrayDeque<Integer>();
List<List<Integer>>neigh = new ArrayList<List<Integer>>(vertices + 1);
for (int i = 0; i <= vertices; i++) {
neigh.get(i).add(0);//tj counter sousedu
neigh.get(i).add(0);//tj zda uz byl zpracovan
}
for (int i = 0; i < edges; i++) {
neigh.get(u).set(0, (neigh.get(u).get(0))+1);
neigh.get(u).add(v);
neigh.get(v).set(0, (neigh.get(v).get(0))+1);
neigh.get(v).add(u);
}
int leafesCount;
boolean isYes = false;
for (int i = 1; i < neigh.size(); i++) {
isYes = false;
if (neigh.get(i).get(1) == 0) {
todo.push(i);
leafesCount = 0;
while (!todo.isEmpty()) {
int x = todo.pop();
if (neigh.get(x).get(1) != 0)
continue;
neigh.get(x).set(1, 1);
if (neigh.get(x).get(0) == 1)
leafesCount++;
if (neigh.get(x).get(0) > 0) {
for (int j = 0; j < neigh.get(x).get(0); j++) {
if (neigh.get(neigh.get(x).get(2 + j)).get(1) == 0)
todo.push(neigh.get(x).get(2 + j));
}
}
}
if (leafesCount > 3) {
isYes = true;
break;
}
}
}
if (isYes)
else
/*
neigh.get(i).set(1, ((Integer)neigh[i].get(1))+1);
if(((Integer)neigh[i].get(0)) == 1){
leafesCount ++;
}
for (int j = 2; j < neigh[i].size(); j++) {//prvni dva prvky em nezajmaji
if((Integer)(neigh[(Integer)(neigh[i].get(j))].get(1))==0){
todo.push((Integer)neigh[i].get(j));
}
}
Integer next = null;
while(!todo.isEmpty()){
next = todo.pop();
if(((Integer)neigh[next].get(1)) == 1){
leafesCount ++;
System.out.println("add");
if (leafesCount == 4) {
break;
}
for (int j = 2; j < neigh[i].size(); j++) {//prvni dva prvky em nezajmaji
todo.push((Integer)neigh[i].get(j));
}
}
if (leafesCount == 4) {
System.out.println("YES");
isYes = true;
break;
}
}
}
if(isYes != true){
System.out.println("NO");
}
}*/
}
// lol
}
}
while (!st.hasMoreTokens())
return st.nextToken();
}
}