CF1408F.Two Different

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given an integer nn .

You should find a list of pairs (x1,y1)(x_1, y_1) , (x2,y2)(x_2, y_2) , ..., (xq,yq)(x_q, y_q) ( 1xi,yin1 \leq x_i, y_i \leq n ) satisfying the following condition.

Let's consider some function f:N×NNf: \mathbb{N} \times \mathbb{N} \to \mathbb{N} (we define N\mathbb{N} as the set of positive integers). In other words, ff is a function that returns a positive integer for a pair of positive integers.

Let's make an array a1,a2,,ana_1, a_2, \ldots, a_n , where ai=ia_i = i initially.

You will perform qq operations, in ii -th of them you will:

  1. assign t=f(axi,ayi)t = f(a_{x_i}, a_{y_i}) ( tt is a temporary variable, it is used only for the next two assignments);
  2. assign axi=ta_{x_i} = t ;
  3. assign ayi=ta_{y_i} = t .

In other words, you need to simultaneously change axia_{x_i} and ayia_{y_i} to f(axi,ayi)f(a_{x_i}, a_{y_i}) . Note that during this process f(p,q)f(p, q) is always the same for a fixed pair of pp and qq .

In the end, there should be at most two different numbers in the array aa .

It should be true for any function ff .

Find any possible list of pairs. The number of pairs should not exceed 51055 \cdot 10^5 .

输入格式

The single line contains a single integer nn ( 1n150001 \leq n \leq 15\,000 ).

输出格式

In the first line print qq ( 0q51050 \leq q \leq 5 \cdot 10^5 ) — the number of pairs.

In each of the next qq lines print two integers. In the ii -th line print xix_i , yiy_i ( 1xi,yin1 \leq x_i, y_i \leq 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 aa will be [f(a1,a2),f(a1,a2),a3][f(a_1, a_2), f(a_1, a_2), a_3] . It will always have at most two different numbers.

In the second example, after performing two operations the array aa will be [f(a1,a2),f(a1,a2),f(a3,a4),f(a3,a4)][f(a_1, a_2), f(a_1, a_2), f(a_3, a_4), f(a_3, a_4)] . It will always have at most two different numbers.

首页