local ior = io.input() local n, m = ior:read("*n", "*n") local t = {} local parent = {} for i = 1, n do t[i], parent[i] = 0, i end local function findroot(idx) while(parent[idx] ~= idx) do idx = parent[idx] end return idx end for i = 1, m do local a, b = ior:read("*n", "*n") a, b = a + 1, b + 1 -- !! [ some inputs contain S_a = S_b ] !! if(a ~= b) then t[a], t[b] = t[a] + 1, t[b] + 1 end local ra, rb = findroot(a), findroot(b) parent[a], parent[b], parent[rb] = ra, ra, ra end local oddnum = 0 for i = 1, n do if(t[i] % 2 == 1) then oddnum = oddnum + 1 end end local groupnum = 0 local grouplist = {} for i = 1, n do local r = findroot(i) if(r ~= i) then grouplist[r] = true end end for k, v in pairs(grouplist) do groupnum = groupnum + 1 end if(oddnum ~= 2 and oddnum ~= 0) then print("NO") elseif(2 <= groupnum) then print("NO") else print("YES") end