#!/usr/bin/env python3

# Make c,d given unused a,b
input()
c, d = map(int, input().split())
def gcd(a, b): return a if b==0 else gcd(b, a%b)
g = gcd(c,d)
c //= g
d //= g
T = 1
while T < c+d: T *= 2
r = T-c-d
ss = [r,  c,  d]
ts = [0, -2, -1]
if r > T//2:
    ss = [c, r, d]
    ts = [-2, 0, -1]
if d > T//2:
    ss = [r, d, c]
    ts = [0, -1, -2]

solution = [[1,2], None, None]

def solve(root, size, needed, left, right):
    if needed == 0:
        solution[root] = (right, right)
        return
    if needed == size:
        solution[root] = (left, left)
        return
    assert needed < size
    if needed == size//2:
        solution[root] = (left, right)
        return
    r = len(solution)
    solution.append(None)
    if needed < size//2:
        solution[root] = (r, right)
        solve(r, size//2, needed, left, right)
        return
    if needed > size//2:
        solution[root] = (left, r)
        solve(r, size//2, needed-size//2, left, right)
        return
    assert False

solve(1, T//2, ss[0], ts[0], ts[1])
solve(2, T//2, ss[2], ts[2], ts[1])

print(len(solution))
for x in solution: print(*x)
