#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int n, l, x[N], b[N], ans[N], cnt, from[N];
double dp[N];
inline bool check(double val) {
  memset(from, 0, sizeof from);
  for (int i = 1; i <= n; i++) dp[i] = 1.0 * 1e10 + 10;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < i; j++) {
      double res = dp[j] + sqrt(abs(l - (x[i] - x[j]))) - val * b[i];
      if (res < dp[i]) dp[i] = res, from[i] = j;
    }
  return dp[n] > 0;
}
int main() {
  cin >> n >> l;
  for (int i = 1; i <= n; i++) scanf("%d%d", &x[i], &b[i]);
  double l = 0.0, r = 1e10 + 10;
  while (r - l > 1e-8) {
    double mid = (l + r) / 2;
    if (check(mid))
      l = mid;
    else
      r = mid;
  }
  check(l);
  for (int i = n; i; i = from[i]) ans[++cnt] = i;
  for (int i = cnt; i; i--) printf("%d ", ans[i]);
  return 0;
}
