import std.stdio; import std.range; import std.array; import std.string; import std.conv; import std.typecons; import std.algorithm; ulong f(ulong n) { return (n + 1) * n / 2; } void main() { ulong n = readln.chomp.to!ulong; ulong left = 0; ulong right = 2e9.to!ulong; while (right - left > 1) { ulong mid = (left + right) / 2; ulong val = mid.f; if (val > n) { right = mid; } else { left = mid; } } ulong val = left.f; if (val == n) { "YES".writeln; left.writeln; } else { "NO".writeln; } }