import std.stdio;
import std.algorithm;
import std.conv;
import std.datetime;
import std.numeric;
import std.math;
import std.string;

string my_readln() { return chomp(readln()); }

void main()
{
	auto tokens = split(my_readln());
	auto N = to!ulong(tokens[0]);

	auto n2 = N * 2;
	ulong d;
	foreach (i; N..n2)
	{
		if (n2 % i == 0 && i < (n2 / i) * 2)
		{
			d = i;
			break;
		}
	}
	if (d == 0)
	{
		writeln("No");
		return;
	}

	writeln("Yes");
	writeln(d);
	auto n2d = n2 / d;
	foreach (i; 0..d)
	{
		write(n2d);
		foreach (j; 0..n2d)
		{
			write(" ", i+j);
		}
		writeln();
	}
	
	stdout.flush();
}