#include <bits/stdc++.h>
using namespace std;
const double inf = 1e9;
int n, m, x[1111], b[1111];
double d[1111];
int from[1111];
vector<int> v;
bool check(double k) {
  d[0] = 0;
  for (int i = 1; i <= n; i++) {
    d[i] = inf;
    for (int j = 0; j < i; j++) {
      d[i] = min(d[i], sqrt(abs(x[i] - x[j] - m + 0.0)) - k * b[i] + d[j]);
    }
  }
  return (d[n] < 0);
}
void ans(double k) {
  d[0] = 0;
  for (int i = 1; i <= n; i++) {
    d[i] = inf;
    for (int j = 0; j < i; j++) {
      if (d[i] > sqrt(abs(x[i] - x[j] - m + 0.0)) - k * b[i] + d[j]) {
        d[i] = sqrt(abs(x[i] - x[j] - m + 0.0)) - k * b[i] + d[j];
        from[i] = j;
      }
    }
  }
}
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%d %d", &x[i], &b[i]);
  }
  double l = 0, r = 10010;
  for (int i = 1; i < 40; i++) {
    double mid = (l + r) / 2.0;
    if (check(mid))
      r = mid;
    else
      l = mid;
  }
  ans(l);
  while (n > 0) {
    v.push_back(n);
    n = from[n];
  }
  for (int i = v.size() - 1; i > -1; i--) {
    cout << v[i] << " ";
  }
  return 0;
}
