def  nnp1(n)
    a=((n*2)**(0.5)).to_i
    return a*(a+1)==n*2
end

def  nnp(n)
    a=((n*2)**(0.5)).to_i
    return a
end

n=gets.strip.to_i

if nnp1(n) == false 
    puts 'No'
    exit
end
puts 'Yes'
a=nnp(n)
x=Array.new(a+1).map{Array.new(a)}
c=1
puts a+1
(0..a-1).each{|i|
    
    cc=c
    (i..a-1).each{|j|
        x[i][j]=cc
        cc+=1
    }

    cc=c
    (i+1..a).each{|j|
        x[j][i]=cc
        cc+=1
    }
    c=cc
}

x.each do |i|
    print a.to_s + " "
    puts i.join(" ")

end