#include <bits/stdc++.h>
using namespace std;
const int maxn = 1009;
int dis[maxn], b[maxn], par[maxn], L;
double best[maxn];
int OK(double K, int N) {
  best[0] = 0.0;
  par[0] = 0;
  for (int i = 1; i <= N; i++) {
    best[i] = sqrt(fabs(dis[i] - L)) - K * b[i];
    par[i] = i;
    for (int j = 1; j < i; j++) {
      double cost = sqrt(fabs(dis[i] - dis[j] - L)) - K * b[i];
      if (best[j] + cost < best[i]) {
        best[i] = best[j] + cost;
        par[i] = j;
      }
    }
  }
  return (best[N] < 0 || fabs(best[N]) < 1e-9);
}
int main() {
  int N, K;
  cin >> N >> L;
  dis[0] = 0;
  b[0] = 0;
  for (int i = 1; i <= N; i++) cin >> dis[i] >> b[i];
  double lo = 0.0, hi = 1000 * 1000 * 1000.0;
  for (int t = 0; t < 70; t++) {
    double mid = (lo + hi) / 2.0;
    if (OK(mid, N)) {
      hi = mid;
    } else
      lo = mid;
  }
  stack<int> stk;
  int cur = N;
  stk.push(cur);
  while (par[cur] != cur) {
    cur = par[cur];
    stk.push(cur);
  }
  while (!stk.empty()) {
    cout << stk.top() << " ";
    stk.pop();
  }
  return 0;
}
