k = gets.to_i
x,y = gets.split.map(&:to_i)

sx = x < 0 ? -1 : 1
sy = y < 0 ? -1 : 1
x,y = x.abs,y.abs

isSwap = false
if x > y
  x,y = y,x
  isSwap = true
end

if k.even? && (x+y).odd?
  p -1
  exit
end

ans = []
if (x+y) < k && (x+y) % 2 == 1
  d = (k*3-(x+y))/2
  ans << [-(d/2),k-(d/2)]
  ans << [k-d,k-d]
  ans << [x,y]
else
  n = ((x+y)/k.to_f).ceil
  if (x+y) < k
    n = 2
  elsif n*k % 2 != (x+y) % 2
    n += 1
  end
  a = (x+y-n*k)/2
  b = a+k
  ans << [a,b]
  while [a,b] != [x,y]
    if x-a < k
      b += k-(x-a)
      a = x
    elsif x != a
      a += k
    else
      b += k
    end
    ans << [a,b]
  end
end

p ans.length
ans.each do |x,y|
  x,y = y,x if isSwap
  puts "#{sx*x} #{sy*y}"
end
