#include <bits/stdc++.h>
using namespace std;
using INT = long long;
using VI = vector<int>;
using pii = pair<int, int>;
double dp[1100], dst[1100][1100];
int b[1100], first[1100], n;
int ok(double md) {
  for (int i = 1; i <= n; i++) dp[i] = -0x3f3f3f3f;
  dp[0] = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < i; j++) {
      dp[i] = max(dp[i], dp[j] + md * b[i] - dst[j][i]);
    }
  }
  if (dp[n] > -1e-10) return 1;
  return 0;
}
int main() {
  int l;
  cin >> n >> l;
  for (int i = 1; i <= n; i++) cin >> first[i] >> b[i];
  for (int i = 0; i <= n; i++)
    for (int j = i + 1; j <= n; j++)
      dst[i][j] = sqrt(abs(first[j] - first[i] - l));
  for (int i = 0; i <= n; i++)
    for (int j = i + 1; j <= n; j++) dst[j][i] = dst[i][j];
  double st = 0, ed = 1e8;
  int step = 50;
  while (step--) {
    double md = (st + ed) / 2;
    if (ok(md))
      ed = md;
    else
      st = md;
  }
  double ans = ed;
  dp[0] = 0;
  ok(ans);
  vector<int> vec;
  vec.push_back(n);
  double tmp = dp[n];
  int pre = n;
  for (int i = pre - 1; i >= 0; i--) {
    if (fabs(dp[i] - tmp + ans * b[pre] - dst[i][pre]) < 1e-10) {
      vec.push_back(i);
      pre = i, tmp = dp[i];
    }
  }
  for (int i = vec.size() - 1; i >= 0; i--)
    if (vec[i]) printf("%d ", vec[i]);
  return 0;
}
