#include #include #include #include #include #include #include #include #include #include using namespace std; typedef complex point; #define EPS 0.0001 int count( point p, const vector& pts ) { int n = 0; for( int i=0; i!=pts.size(); ++i ) if( abs(pts[i]-p) <= 1.0+EPS ) ++n; return n; } pair center_of_circle(point a, point b) { pair answer; { point n( imag(a-b), real(b-a) ); double absn = abs(n); answer.first = (a+b)/2 + sqrt(1-absn*absn/4)*n/absn; } { point n( imag(a-b), real(b-a) ); n = -n; double absn = abs(n); answer.second = (a+b)/2 + sqrt(1-absn*absn/4)*n/absn; } return answer; } int solve( const vector& pts ) { int maxInclude = 1; for( int i=0; i!=pts.size(); ++i ) { point p1 = pts[i]; for( int j=i+1; j!=pts.size(); ++j ) { point p2 = pts[j]; if( abs(p1-p2) > 2.0 ) continue; // count the inclusion pair c = center_of_circle( p1, p2 ); //cout << c.first << ',' << c.second << endl; int n1 = count( c.first, pts ); int n2 = count( c.second, pts ); if( maxInclude < n1 ) maxInclude = n1; if( maxInclude < n2 ) maxInclude = n2; } } return maxInclude; } int main() { int N; while( cin>>N, N ) { vector pts; while( N-- ) { double x, y; cin >> x >> y; pts.push_back( point(x,y) ); } cout << solve(pts) << endl; } }