ps = gets.to_i.times.map { Complex(*gets.split.map(&:to_i)) }
p0 = ps.min_by {|z| [z.imag, z.real] }
p, u, rs = p0, 1, [p0]
loop do
  q = ps.reject {|q| p == q }.min_by {|q|
    v = q - p
    a = (v / u).arg
    [(a < 0 ? a + 2 * Math::PI : a).round(8), v.abs]
  }
  p, u = q, q - p
  break if p == p0
  rs << p
end
p rs.size
rs.each {|z| puts z.rect.join ' ' }