def distance(p1, p2)
  return Math.sqrt((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2)
end

n = gets.to_i
pt = []
n.times{|i|
  pt[i] = gets.split.map(&:to_f)
}

is = 0
js = 0
n.times{|i|
  is = i if pt[i][1] > pt[is][1]
  js = i if pt[i][1] < pt[js][1]
}

d_max = distance(pt[is], pt[js])

i = is
j = js

loop do
  vi = [pt[(i+1)%n][0] - pt[i][0], pt[(i+1)%n][1] - pt[i][1]]
  vj = [pt[(j+1)%n][0] - pt[j][0], pt[(j+1)%n][1] - pt[j][1]]
  if vi[0]*vj[1]-vi[1]*vj[0] >= 0
    j = (j+1) % n
  else
    i = (i+1) % n
  end
  d = distance(pt[i], pt[j])
  d_max = d if d > d_max
  break if i == is && j == js
end

puts d_max