#include <bits/stdc++.h>
using namespace std;
int n, L, a[1005], b[1005], ans[1005], cc;
double dp[1005], dis[1005][1005];
int pre[1005];
inline bool check(double K) {
  dp[0] = 0;
  for (int i = 1; i <= n; ++i) {
    dp[i] = -1e9;
    for (int j = 0; j < i; ++j) {
      double v = dp[j] + K * b[i] - dis[j][i];
      if (v > dp[i]) dp[i] = v, pre[i] = j;
    }
  }
  return dp[n] >= 0;
}
void output(int x) {
  if (!x) return;
  output(pre[x]);
  printf("%d ", x);
}
int main() {
  scanf("%d%d", &n, &L);
  for (int i = 1; i <= n; ++i) scanf("%d%d", a + i, b + i);
  for (int i = 0; i <= n; ++i)
    for (int j = i + 1; j <= n; ++j) dis[i][j] = sqrt(abs(a[j] - a[i] - L));
  double l = 0, r = 1e9, mid;
  while (l + 1e-8 <= r) {
    mid = (l + r) / 2;
    if (check(mid))
      r = mid;
    else
      l = mid;
  }
  check(r);
  output(n);
  return 0;
}
