#include #define ll long long #define INF 1000000005 #define MOD 1000000007 #define EPS 1e-10 #define rep(i,n) for(int i=0;i<(int)n;++i) #define each(a, b) for(auto (a): (b)) #define all(v) (v).begin(),(v).end() #define fi first #define se second #define pb push_back #define show(x) cout <<#x<<" = "<<(x)<P; const int MAX_N = 20005; vector G[MAX_N]; vector vec[MAX_N]; void search(int u,int p,int depth) { if(depth == 2){ vec[u].pb(p); }else{ rep(i,G[u].size()){ if(G[u][i] != p){ search(G[u][i],u,depth+1); } } } } int main() { int n,m; cin >> n >> m; rep(i,m){ int a,b; cin >> a >> b; G[a-1].pb(b-1); G[b-1].pb(a-1); } rep(i,n){ sort(all(G[i])); } search(0,-1,0); rep(i,n){ sort(all(vec[i])); } rep(i,n){ rep(j,vec[i].size()){ for(int k=i+1;k= 1){ auto it1 = lower_bound(all(vec[k]),vec[i][j]); auto it2 = upper_bound(all(vec[k]),vec[i][j]); if(it1 != vec[k].begin() || it2 != vec[k].end()){ cout << "YES\n"; return 0; } } } } } cout << "NO\n"; return 0; }