#include <bits/stdc++.h>
const long double PI = acos(-1);
const long double eps = 0.0000000001;
const long long INF = 0x3fffffffffffffff;
long double dis[1005][1005], l, r, dp[1005];
long long x[1005], b[1005], from[1005], n, len;
void work(long double now) {
  std::fill(dp + 1, dp + 1 + n, INF);
  for (long long i = 1; i <= n; ++i) {
    for (long long j = 0; j < i; ++j)
      if (dp[i] > dp[j] + dis[j][i]) dp[i] = dp[j] + dis[j][i], from[i] = j;
    dp[i] -= now * b[i];
  }
}
void print(long long now) {
  if (from[now]) print(from[now]);
  std::cout << now << " \n"[now == n];
}
signed main() {
  std::ios::sync_with_stdio(false);
  std::cin >> n >> len;
  for (long long i = 1; i <= n; ++i) {
    std::cin >> x[i] >> b[i];
    for (long long j = 0; j < i; ++j)
      dis[j][i] = sqrt(llabs(x[i] - x[j] - len));
  }
  l = 0, r = 1e9;
  while (l + eps < r) {
    long double mid = (l + r) / 2;
    work(mid);
    if (dp[n] <= 0)
      r = mid;
    else
      l = mid;
  }
  print(n);
  return 0;
}
