import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {


    public static class Point{
        private int x;
        private int y;

        public Point(int x, int y) {
            this.x = x;
            this.y = y;
        }

        public int getX() {
            return x;
        }

        public void setX(int x) {
            this.x = x;
        }

        public int getY() {
            return y;
        }

        public void setY(int y) {
            this.y = y;
        }

        @Override
        public String toString() {
            return "Point{" +
                    "x=" + x +
                    ", y=" + y +
                    '}';
        }
    }


    public static boolean isUhlopriecka(Point p1, Point p2)
    {
        return Math.abs(p1.getX() - p2.getX()) == Math.abs(p1.getY() - p2.getY());
    }


    public static void main(String[] args) throws IOException {


        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));


        while (true) {
            String tmp = in.readLine();
            if (tmp == null) break;

            int numCities = Integer.parseInt(tmp);




            ArrayList<Point> cities = new ArrayList<>();
            for (int i = 0; i < numCities; i++){
                StringTokenizer stringTokenizer = new StringTokenizer(in.readLine());
                cities.add(new Point(Integer.parseInt(stringTokenizer.nextToken()), Integer.parseInt(stringTokenizer.nextToken())));
            }

            int possibleWins = 0;
            for(Point currentCity : cities)
            {
                for(int i = 0; i < cities.size(); i++)
                {
                    Point nextCity = cities.get(i);
                    if(currentCity.equals(nextCity)) continue;
                    if(isUhlopriecka(currentCity, nextCity))
                    {
                        possibleWins++;
                    }
                }
            }


            System.out.println((float)possibleWins / (float)(numCities * numCities));

        }




    }
}
