#abc349d. D - Divide Interval

D - Divide Interval

Score: 450450 points

问题陈述

对于非负整数 llrr (l<r)(l < r),让 S(l,r)S(l, r) 表示由整数 llr1r-1 按顺序排列形成的序列 (l,l+1,,r2,r1)(l, l+1, \ldots, r-2, r-1)。此外,如果一个序列可以表示为 S(2ij,2i(j+1))S(2^i j, 2^i (j+1)),其中 iijj 是非负整数,则称该序列为好序列。

给定非负整数 LLRR (L<R)(L < R)。将序列 S(L,R)S(L, R) 分成最少数量的好序列,并打印出序列的数量和划分。更正式地说,找到最小的正整数 MM,存在一系列非负整数对 (l1,r1),(l2,r2),,(lM,rM)(l_1, r_1), (l_2, r_2), \ldots, (l_M, r_M) 满足以下条件,并打印出这样的 (l1,r1),(l2,r2),,(lM,rM)(l_1, r_1), (l_2, r_2), \ldots, (l_M, r_M)

  • L=l1<r1=l2<r2==lM<rM=RL = l_1 < r_1 = l_2 < r_2 = \cdots = l_M < r_M = R
  • S(l1,r1),S(l2,r2),,S(lM,rM)S(l_1, r_1), S(l_2, r_2), \ldots, S(l_M, r_M) 是好序列。

可以证明,只有一个划分可以最小化 MM

以上为大语言模型 kimi 翻译,仅供参考。

Problem Statement

For non-negative integers ll and rr (l<r)(l < r), let S(l,r)S(l, r) denote the sequence (l,l+1,,r2,r1)(l, l+1, \ldots, r-2, r-1) formed by arranging integers from ll through r1r-1 in order. Furthermore, a sequence is called a good sequence if and only if it can be represented as S(2ij,2i(j+1))S(2^i j, 2^i (j+1)) using non-negative integers ii and jj.

You are given non-negative integers LL and RR (L<R)(L < R). Divide the sequence S(L,R)S(L, R) into the fewest number of good sequences, and print that number of sequences and the division. More formally, find the minimum positive integer MM for which there is a sequence of pairs of non-negative integers (l1,r1),(l2,r2),,(lM,rM)(l_1, r_1), (l_2, r_2), \ldots, (l_M, r_M) that satisfies the following, and print such (l1,r1),(l2,r2),,(lM,rM)(l_1, r_1), (l_2, r_2), \ldots, (l_M, r_M).

  • L=l1<r1=l2<r2==lM<rM=RL = l_1 < r_1 = l_2 < r_2 = \cdots = l_M < r_M = R
  • S(l1,r1),S(l2,r2),,S(lM,rM)S(l_1, r_1), S(l_2, r_2), \ldots, S(l_M, r_M) are good sequences.

It can be shown that there is only one division that minimizes MM.

Constraints

  • 0L<R2600 \leq L < R \leq 2^{60}
  • All input values are integers.

Input

The input is given from Standard Input in the following format:

LL RR

Output

Print the answer in the following format:

MM

l1l_1 r1r_1

\vdots

lMl_M rMr_M

Note that the pairs (l1,r1),,(lM,rM)(l_1, r_1), \dots, (l_M, r_M) should be printed in ascending order.

Sample Input 1

3 19

Sample Output 1

5
3 4
4 8
8 16
16 18
18 19

S(3,19)=(3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)S(3,19)=(3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18) can be divided into the following five good sequences, which is the minimum possible number:

  • S(3,4)=S(203,204)=(3)S(3,4)=S(2^0\cdot 3,2^0\cdot4)=(3)
  • S(4,8)=S(221,222)=(4,5,6,7)S(4,8)=S(2^2\cdot 1,2^2\cdot 2)=(4,5,6,7)
  • $S(8,16)=S(2^3\cdot 1,2^3\cdot 2)=(8,9,10,11,12,13,14,15)$
  • S(16,18)=S(218,219)=(16,17)S(16,18)=S(2^1\cdot 8,2^1\cdot 9)=(16,17)
  • S(18,19)=S(2018,2019)=(18)S(18,19)=S(2^0\cdot 18,2^0\cdot 19)=(18)

Sample Input 2

0 1024

Sample Output 2

1
0 1024

Sample Input 3

3940649673945088 11549545024454656

Sample Output 3

8
3940649673945088 3940649673949184
3940649673949184 4503599627370496
4503599627370496 9007199254740992
9007199254740992 11258999068426240
11258999068426240 11540474045136896
11540474045136896 11549270138159104
11549270138159104 11549545016066048
11549545016066048 11549545024454656