#include <bits/stdc++.h>
using namespace std;
double graph[1024][1024];
pair<int, int> pts[1024];
double dp[1024];
int nxt[1024];
int N, L;
bool check(double factor) {
  dp[N] = factor * pts[N].second;
  for (int i = N - 1; i >= 0; i--) {
    dp[i] = -1e18;
    for (int j = i + 1; j <= N; j++) {
      if (dp[i] < dp[j] - graph[i][j]) {
        nxt[i] = j;
        dp[i] = dp[j] - graph[i][j];
      }
    }
    dp[i] += pts[i].second * factor;
  }
  if (dp[0] >= 0)
    return true;
  else
    return false;
}
int main() {
  cin.tie(NULL);
  cin >> N >> L;
  pts[0].first = pts[0].second = 0;
  for (int i = 1; i <= N; i++) cin >> pts[i].first >> pts[i].second;
  for (int i = 0; i <= N; i++)
    for (int j = i + 1; j <= N; j++)
      graph[i][j] = sqrt(abs(pts[j].first - pts[i].first - L));
  double lo = 0, hi = 1e4;
  while (hi - lo > 1e-9) {
    double mid = (lo + hi) / 2;
    if (check(mid))
      hi = mid;
    else
      lo = mid;
  }
  int idx = 0;
  while (idx != N) {
    idx = nxt[idx];
    cout << idx << " ";
  }
  cout << endl;
  return 0;
}
