#include <bits/stdc++.h>
using namespace std;
int P = 1000000007;
int INF = 1 << 30;
int N, L;
int dist[2000];
int pict[2000];
double frust(int dist) { return sqrt(abs(abs(dist) - L)); }
double arr[2000];
int bestNext[2000];
bool reachable(double rval) {
  arr[N] = 0.0;
  for (int i = N - 1; i >= 0; i--) {
    arr[i] = -INF;
    for (int j = i + 1; j <= N; j++) {
      double byJ = arr[j] + rval * pict[j] - frust(dist[j] - dist[i]);
      if (byJ > arr[i]) {
        arr[i] = byJ;
        bestNext[i] = j;
      }
    }
  }
  return (arr[0] >= 0);
}
double eps = 0.000000000001;
int main() {
  ios::sync_with_stdio(false);
  cin >> N >> L;
  double sf = 0, sp = 0;
  dist[0] = 0;
  pict[0] = 0;
  for (int i = 1; i <= N; i++) {
    cin >> dist[i] >> pict[i];
    sf += frust(dist[i] - dist[i - 1]);
    sp += pict[i];
  }
  double lr = 0;
  double hr = sf / sp;
  while (hr > lr + eps) {
    double midr = (lr + hr) / 2;
    bool midrPoss = reachable(midr);
    if (midrPoss) {
      hr = midr;
    } else {
      lr = midr;
    }
  }
  reachable(hr);
  int curr = 0;
  while (curr != N) {
    curr = bestNext[curr];
    cout << curr << " ";
  }
  cout << endl;
  return 0;
}
