#include <bits/stdc++.h>
using namespace std;
double dp[1010];
int nxt[1010];
int N;
int X[1010];
int B[1010];
int L;
int check(double r) {
  int i, j;
  dp[N - 1] = 0;
  nxt[N - 1] = N;
  double tmp;
  for (i = N - 2; i >= 0; --i) {
    dp[i] = (1e9);
    nxt[i] = -1;
    for (j = i + 1; j < N; ++j) {
      tmp = dp[j] - B[j] * r + sqrt(abs(L - X[j] + X[i]));
      if (tmp < dp[i]) dp[i] = tmp, nxt[i] = j;
    }
  }
  return dp[0] <= (1e-7);
}
double search() {
  double low, high, mid;
  low = 0;
  high = 1e9;
  while ((high - low) > (1e-9)) {
    mid = low + (high - low) / 2.0;
    if (check(mid)) {
      high = mid;
    } else {
      low = mid;
    }
  }
  return low;
}
int main() {
  int i;
  scanf("%d%d", &N, &L);
  ++N;
  for (i = 1; i < N; ++i) scanf("%d%d", &X[i], &B[i]);
  double sol = search();
  check(sol);
  i = 0;
  while (i < N - 1) {
    i = nxt[i];
    printf("%d ", i);
  }
  printf("\n");
  return 0;
}
