#include #include #include #include using namespace std; int px[2222], py[2222]; double const eps = 1e-9; int main() { while (42) { int n, r; scanf("%d %d", &n, &r); if (n == 0) break; for (int i = 0; i < n; i++) { scanf("%d %d", &px[i], &py[i]); } int res = 1; if (r > 0) { for (int i = 0; i < n; i++) { vector > v; for (int j = 0; j < n; j++) { if (i == j) continue; double dist = hypot(px[i]-px[j], py[i] - py[j]); if (dist > 2*r+eps) continue; if (dist > 2*r) dist = 2*r; double alfa = acos(dist / (2*r)); double beta = atan2(py[j]-py[i], px[j]-px[i]); v.push_back(make_pair(beta-alfa, 1)); v.push_back(make_pair(beta+alfa, -1)); } sort(v.begin(), v.end()); int m = v.size(); int j = 0; int cur = 1; while (j < m) { int k = j; int plus = 0, minus = 0; while (k < m && fabs(v[k].first - v[j].first) < eps) { if (v[k].second > 0) plus++; else minus++; k++; } cur += plus; res = max(res, cur); cur -= minus; j = k; } } } printf("It is possible to cover %d points.\n", res); } }