```go
package main
import (
"bufio"
"fmt"
"math"
"os"
"strconv"
)
type Point struct {
x int
y int
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
n, _ := strconv.Atoi(scanner.Text())
points := make([]Point, 0, n)
for i := 0; i < n; i++ {
scanner.Scan()
x, _ := strconv.Atoi(scanner.Text())
scanner.Scan()
y, _ := strconv.Atoi(scanner.Text())
points = append(points, Point{x, y})
}
maxDist := 0.0
for i := 0; i < n; i++ {
for j := i + 1; j < n; j++ {
dx := points[i].x - points[j].x
dy := points[i].y - points[j].y
dist := math.Sqrt(float64(dx*dx + dy*dy))
if dist > maxDist {
maxDist = dist
}
}
}
fmt.Printf("%.10f\n", maxDist)
}
```