#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1010;
int N, L;
int X[MAXN], B[MAXN];
double dp[MAXN];
int state[MAXN];
double lo = 0, hi = 1e6 + 1, mid;
bool moo() {
  for (int i = 1; i <= N; i++) {
    double &ref = dp[i];
    ref = 1e99;
    for (int j = i - 1; j >= 0; j--) {
      double ndp = dp[j] + (sqrt(abs(L - (X[i] - X[j]))) - mid * B[i]);
      if (ref > ndp) {
        ref = ndp;
        state[i] = j;
      }
    }
  }
  return dp[N] <= 0;
}
int main() {
  scanf("%d %d", &N, &L);
  for (int i = 1; i <= N; i++) {
    scanf("%d %d", &X[i], &B[i]);
  }
  while (clock() / float(CLOCKS_PER_SEC) < 0.9) {
    mid = (lo + hi) / 2;
    if (moo()) {
      hi = mid;
    } else {
      lo = mid;
    }
  }
  mid = lo;
  moo();
  vector<int> ans;
  for (int i = N; i; i = state[i]) {
    ans.push_back(i);
  }
  for (vector<int>::reverse_iterator it = ans.rbegin(); it != ans.rend();
       it++) {
    printf("%d ", *it);
  }
}
