CF1408F.Two Different
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an integer n .
You should find a list of pairs (x1,y1) , (x2,y2) , ..., (xq,yq) ( 1≤xi,yi≤n ) satisfying the following condition.
Let's consider some function f:N×N→N (we define N as the set of positive integers). In other words, f is a function that returns a positive integer for a pair of positive integers.
Let's make an array a1,a2,…,an , where ai=i initially.
You will perform q operations, in i -th of them you will:
- assign t=f(axi,ayi) ( t is a temporary variable, it is used only for the next two assignments);
- assign axi=t ;
- assign ayi=t .
In other words, you need to simultaneously change axi and ayi to f(axi,ayi) . Note that during this process f(p,q) is always the same for a fixed pair of p and q .
In the end, there should be at most two different numbers in the array a .
It should be true for any function f .
Find any possible list of pairs. The number of pairs should not exceed 5⋅105 .
输入格式
The single line contains a single integer n ( 1≤n≤15000 ).
输出格式
In the first line print q ( 0≤q≤5⋅105 ) — the number of pairs.
In each of the next q lines print two integers. In the i -th line print xi , yi ( 1≤xi,yi≤n ).
The condition described in the statement should be satisfied.
If there exists multiple answers you can print any of them.
输入输出样例
输入#1
3
输出#1
1 1 2
输入#2
4
输出#2
2 1 2 3 4
说明/提示
In the first example, after performing the only operation the array a will be [f(a1,a2),f(a1,a2),a3] . It will always have at most two different numbers.
In the second example, after performing two operations the array a will be [f(a1,a2),f(a1,a2),f(a3,a4),f(a3,a4)] . It will always have at most two different numbers.