#include using namespace std; struct Point { int x, y; }; bool pres(Point p1, Point p2, double ra) { double dist = sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2)); int points = 0;//point of intersection if(dist <= 0)points = 2; else if(dist > 2 * ra)points = 0; else if(dist == 2 * ra)points = 1; else points = 2; return points; } int main() { #ifdef ONLINE_JUDGE freopen("mars.in", "r", stdin); freopen("mars.out", "w", stdout); #endif int n, r; cin >> n >> r; vector pt(n); for (int i = 0; i < n; ++i) { cin >> pt[i].x >> pt[i].y; } vector res; int br = 0; for (int i = 0; i < n; ++i) { bool ok = true; int first = 0; for (int j = 0; j < br; ++j) { int points = pres(pt[i], pt[res[j]], r); if(points == 2 || points == 1) { ok = false; } else if(points == 0)continue; else { for(int k = j+1; k < br; k++) { int points = pres(pt[i] , pt[res[k]] , r); if(points == 2) { ok = false; break; } } } if(ok == false)break; } if (ok) { res.push_back(i); br++; } } cout << br << endl; for (int i = 0; i < br; ++i) { cout << res[i]+1 << " "; } cout << endl; return 0; }