#include #include #include #include using namespace std; struct Point { double x, y; }; double distance(Point p1, Point p2) { return sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y)); } bool intersect(Point p1, Point p2, double radius) { return distance(p1, p2) <= 2 * radius; } int main() { int N, R; cin >> N >> R; vector points(N); for (int i = 0; i < N; ++i) { cin >> points[i].x >> points[i].y; } vector covered(N, false); vector centers; for (int i = 0; i < N; ++i) { if (!covered[i]) { centers.push_back(i); for (int j = i + 1; j < N; ++j) { if (!covered[j] && intersect(points[i], points[j], R)) { covered[j] = true; } } } } cout <<"\n" << centers.size() << endl; for (const auto& center : centers) { cout << center + 1 << " "; } cout << endl; return 0; }