n=gets.to_i

m=Math::sqrt(2*n).floor

if 2*n==m*(m+1)
  puts "Yes"
  puts m+1
  nums=*1..n
  ans=[]
  ans<<nums.shift(m)
  m.times{|i|
    ans << ans.map{|ln|ln[i]} + nums.shift(m-ans.size)
  }
  ans.map{|ln|puts [ln.size,*ln].join" "}
else
  puts "No"
end
