data class Point(val x:Double, val y:Double)
fun Point.distanceFrom(origin:Point):Double = sqrt((this.x - origin.x) * (this.x - origin.x) + (this.y - origin.y) * (this.y - origin.y))
fun main(args:Array<String>):Unit {
    val n = readLine()!!.toInt()
    val points = Array(n){readLine()!!.split(' ').map(String::toDouble).let{Point(it.first(), it.last())}}
    var posB = 0
    var maxLength:Double = .0
    for (posA in 0 until n){
        while (points[posA].distanceFrom(points[posB]) <= points[posA].distanceFrom(points[(posB + 1) % n])) {
            posB = (posB + 1) % n
        }
        if (maxLength < points[posA].distanceFrom(points[posB])) maxLength = points[posA].distanceFrom(points[posB])
    }
    println(maxLength)
}
