相等距离
题号:NC237022
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

有一个 的网格图,每个点都可以用坐标 (u,v) 表示,其中 (x_1,y_1)(x_2,y_2)的距离为 。请你在网格图上面找到若干个不同点使得对于网格图上的所有点,都存在两个不同的你找到的点到它的距离相同。请你保证找到的点的数量要么理论上最少,要么小于等于 n

输入描述:

一行一个数 n,表示网格图大小。

输出描述:

第一行一个整数m,表示你找到的点的个数。 
接下来m行,每行两个整数,用空格隔开,表示找到的点的坐标。
示例1

输入

复制
2

输出

复制
4
1 1
1 2
2 1
2 2
示例2

输入

复制
13

输出

复制
12
1 1
1 3
1 5
1 9
1 11
1 13
3 1
5 1
9 1
11 1
13 1
13 13