布鲁特佛斯
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述


给定一个边长为 n 的正方形方框,以及无数个边长为 2 \sim 50 的正方形拼图, 请求出恰好填满这个正方形方框的任意合法方案;若不存在构造方案,请输出  -1 。

下图是填满边长为112的正方形边框的一种可能构造方式:



请注意,尽管拼图是无限的,但最终构造方案使用的正方形拼图个数应该小于 10^{6}

输入描述:

输入一行一个正整数n,代表给定的正方形边框的边长。(2 \le n \le 1000)

输出描述:

第一行输出一个正整数数 m (1 \le m < 10^{6} ), 表示放置的正方形拼图数量。

接下来 m 行, 每行输出三个数 x, y, k (1 \le x,y \le n, 2 \le k \le 50), 表示以 (x, y) 为左上角填入了一个边长为 k 的正方形拼图。

若存在多种构造方案,请输出任意一种构造方案;

特殊地,如果不存在任意一种构造方案,请输出 -1
示例1

输入

复制
4

输出

复制
4
1 1 2
1 3 2
3 1 2
3 3 2

说明


如图所示,是一个合法方案。

另外一个合法的构造方案是
1
1 1 4