Misha and Forest

题意翻译

定义一个森林为非有向无环图(没有重边与环)给出n(n<=2^16)个节点的两个信息,第一个为该节点有几个与其相邻的节点,第二个为与其相邻的节点的编号的异或值。输出森林有几条边与这些边的具体信息。(可以以任意顺序输出,数据保证有解) tips:节点从0开始编号

题目描述

Let's define a forest as a non-directed acyclic graph (also without loops and parallel edges). One day Misha played with the forest consisting of $ n $ vertices. For each vertex $ v $ from $ 0 $ to $ n-1 $ he wrote down two integers, $ degree_{v} $ and $ s_{v} $ , were the first integer is the number of vertices adjacent to vertex $ v $ , and the second integer is the XOR sum of the numbers of vertices adjacent to $ v $ (if there were no adjacent vertices, he wrote down $ 0 $ ). Next day Misha couldn't remember what graph he initially had. Misha has values $ degree_{v} $ and $ s_{v} $ left, though. Help him find the number of edges and the edges of the initial graph. It is guaranteed that there exists a forest that corresponds to the numbers written by Misha.

输入输出格式

输入格式


The first line contains integer $ n $ ( $ 1<=n<=2^{16} $ ), the number of vertices in the graph. The $ i $ -th of the next lines contains numbers $ degree_{i} $ and $ s_{i} $ ( $ 0<=degree_{i}<=n-1 $ , $ 0<=s_{i}&lt;2^{16} $ ), separated by a space.

输出格式


In the first line print number $ m $ , the number of edges of the graph. Next print $ m $ lines, each containing two distinct numbers, $ a $ and $ b $ ( $ 0<=a<=n-1 $ , $ 0<=b<=n-1 $ ), corresponding to edge $ (a,b) $ . Edges can be printed in any order; vertices of the edge can also be printed in any order.

输入输出样例

输入样例 #1

3
2 3
1 0
1 0

输出样例 #1

2
1 0
2 0

输入样例 #2

2
1 1
1 0

输出样例 #2

1
0 1

说明

The XOR sum of numbers is the result of bitwise adding numbers modulo $ 2 $ . This operation exists in many modern programming languages. For example, in languages C++, Java and Python it is represented as "^", and in Pascal — as "xor".