#include <bits/stdc++.h>
using namespace std;
using DO = long double;
using VI = vector<int>;
using pdi = pair<DO, int>;
int first[1010], b[1010];
int pre[1010], n, L;
DO dp[1010], eps = 1e-9;
DO dist[1010][1010];
bool smin(DO &a, DO b) {
  if (b > a + eps) return false;
  a = b;
  return true;
}
bool can(DO t) {
  for (int i = 1; i <= n; i++) {
    dp[i] = dist[0][i] - b[i] * t, pre[i] = 0;
    for (int j = 1; j < i; j++) {
      if (smin(dp[i], dp[j] + dist[j][i] - b[i] * t)) {
        pre[i] = j;
      }
    }
  }
  return dp[n] < -eps;
}
int main() {
  scanf("%d %d", &n, &L);
  for (int i = 1; i <= n; i++) {
    scanf("%d %d", first + i, b + i);
  }
  for (int j = 1; j <= n; j++) {
    for (int i = 0; i < j; i++) {
      dist[i][j] = sqrtl(fabsl(first[j] - first[i] - L));
    }
  }
  DO st = 0, ed = dist[0][n] / b[n];
  for (int i = 77; i--;) {
    DO md = (st + ed) / 2;
    if (can(md))
      ed = md;
    else
      st = md;
  }
  can(ed);
  VI ans;
  for (int u = n; u; u = pre[u]) ans.push_back(u);
  for (int i = ans.size(); i--;) {
    printf("%d ", ans[i]);
  }
}
