K = gets.to_i
X, Y = gets.split(' ').map(&:to_i)
step = []
s, t = 0, 0

def round(x, y, k)
	r = []
	(k * (-1)).upto(k) do |i|
		r.push([x + i, y + k - i])
		r.push([x + i, y + i - k])
	end
	return r
end

if K % 2 == 0 && (X + Y) % 2 == 1
	puts -1
else
	while [s, t] != [X, Y]
		dis = (X - s).abs + (Y - t).abs
		if dis == K
			s, t = X, Y
		elsif dis >= K * 2
			K.times do
				if X > s
					s += 1
				elsif X < s
					s -= 1
				elsif Y > t
					t += 1
				else
					t -= 1
				end
			end
		else
			cand = round(X, Y, K) & round(s, t, K)
			if !cand.empty?
				s, t = cand[0]
			else
				if X > s
					s += K
				elsif X < s
					s -= K
				elsif Y > t
					t += K
				else
					t -= K
				end
			end
		end
		step.push([s, t])
	end
	puts step.size
	puts step.collect{|s| s.join(' ')}
end