#include #include int cmpfunc(const void * a, const void * b) { return (*(int *) a - *(int *) b); } int main() { int *k_p, *k_m, n, x, y, i, count; double ans; while (1) { if (scanf("%d", &n) != 1) break; k_p = malloc(sizeof(int)*n); k_m = malloc(sizeof(int)*n); for (i = 0; i < n; i++) { scanf("%d %d", &x, &y); k_p[i] = y - x; k_m[i] = y + x; } qsort(k_p, n, sizeof(int), cmpfunc); qsort(k_m, n, sizeof(int), cmpfunc); ans = 0; count = 1; for (i = 1; i < n; i++) { if (k_p[i] == k_p[i - 1]) count++; else { ans += (double) count/n*(count - 1)/n; count = 1; } } ans += (double) count/n*(count - 1)/n; count = 1; for (i = 1; i < n; i++) { if (k_m[i] == k_m[i - 1]) count++; else { ans += (double) count/n*(count - 1)/n; count = 1; } } ans += (double) count/n*(count - 1)/n; printf("%f\n", ans); } return 0; }