#include <bits/stdc++.h>
using namespace std;
int n;
double l;
int x[1005], b[1005];
const double eps = 1e-8;
double dp[1005];
double check(double mid) {
  for (int i = 1; i <= n; i++) dp[i] = -1e10;
  dp[0] = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < i; j++) {
      dp[i] = max(dp[i],
                  dp[j] - mid * (sqrt(abs(l - (x[i] - x[j])))) + (double)b[i]);
    }
  }
  return dp[n];
}
void dfs(int step, double mid) {
  if (step == 0) return;
  for (int i = 0; i < step; i++) {
    if (abs(dp[step] - (dp[i] - mid * sqrt(abs(x[step] - x[i] - l)) +
                        (double)b[step])) < eps)
      dfs(i, mid);
  }
  printf("%d ", step);
}
int main() {
  scanf("%d%lf", &n, &l);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &x[i], &b[i]);
  }
  double l = 0, r = 100000000000;
  while (l + eps < r) {
    double mid = (l + r) / 2;
    double qwq = check(mid);
    if (qwq > -eps)
      l = mid;
    else
      r = mid;
  }
  check(l);
  dfs(n, l);
  return 0;
}
