C. Разрезание на квадраты
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мебибайт
ввод
стандартный ввод
вывод
стандартный вывод

Разрежьте квадрат на $$$n$$$ квадратов — возможно, разного размера — или определите, что это невозможно.

Входные данные

В первой строке задано целое число $$$n$$$ — количество квадратов в разрезании ($$$1 \le n \le 50$$$).

Выходные данные

Если разрезать квадрат на $$$n$$$ квадратов невозможно, выведите «NO». Иначе в первой строке выведите «YES», а в следующих $$$n$$$ строках — квадраты разрезания в любом порядке.

Чтобы задать разрезание, следует расположить квадраты так, что их стороны параллельны координатным осям, а координаты вершин целые. Каждый квадрат задаётся тройкой целых чисел «$$$x$$$ $$$y$$$ $$$s$$$» — координатами левого нижнего угла и длиной стороны ($$$0 \le x, y, s \le 10^9$$$, $$$s \gt 0$$$). Например, «4 2 5» задаёт квадрат с вершинами в точках $$$(4, 2)$$$, $$$(4, 7)$$$, $$$(9, 2)$$$ и $$$(9, 7)$$$. Можно показать, что, если разрезание квадрата на $$$n \le 50$$$ квадратов вообще существует, то существует и разрезание с такими ограничениями.

Выведенный набор квадратов должен являться разрезанием квадрата: у каждой пары квадратов в наборе не должно быть общих внутренних точек, а объединение всех квадратов набора должно также быть квадратом.

Примеры
Входные данные
2
Выходные данные
NO
Входные данные
4
Выходные данные
YES
0 0 100000000
100000000 100000000 100000000
100000000 0 100000000
0 100000000 100000000