#include using namespace std; struct node{ public: long long int a=0; mutable long long b=0; node( long long aa, long long bb):a(aa),b(bb) { } int operator < (node aa) const{ return a > & pole){ int lo =0, hi=pole.size()-1,mid; while (lo <=hi){ int mid = lo+hi/2; if (slope[pole[mid].first) lo=mid; else return mid; } return -1; }*/ int main () { ios::sync_with_stdio(false); int n; while (cin >> n){ set nw,ne; vector >cords; for (int iii=0;iii> x>>y; long long int nee=x+y; long long int nww=x-y; cords.push_back({nee,nww}); set::iterator i=ne.find(node(nee,0)),j=nw.find(node(nww,0)); if (i==ne.end()) ne.insert(node(nee,1)); else i->b++; if (j==nw.end()) nw.insert(node(nww,1)); else j->b++; } long double sum=0; for (int ii=0;iib + j->b -2)/(n*1.0); } cout << sum/(n*1.0) << endl; } return 0; }