n,m = gets.split.map(&:to_i)

cnt = Array.new(n, 0)
g = n.times.map{[]}
m.times{
  a,b = gets.split.map(&:to_i)
  cnt[a-1]+=1
  cnt[b-1]+=1
  g[a-1]<<b-1
  g[b-1]<<a-1
}



ov6 = 0
ov4 = 0
cnt.each{|x|
  if x%2==1
    puts "No"
    exit
  elsif x>=6
    ov6 += 1
  elsif x>=4
    ov4 += 1
  end
}

if ov6>0 || ov4>2
  puts "Yes"
elsif ov4==2
  index = cnt.index(4)
  
  used = Array.new(n,false)
  q = [index]
  f = true
  while q.size!=0
    now = q.pop
    used[now] = true
    if cnt[now]==4 && now!=index
      f = false
      break
    end
    g[now].each{|nex|
      if !used[nex]
        q.add(nex)
      end
    }
  end
  
  if f
    puts "Yes"
  else
    puts "No"
  end
else
  puts "No"
end


