CF501C Misha and Forest
Description
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.
Input Format
The first line contains integer $ n $ ( $ 1
Output Format
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
Explanation/Hint
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".