#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
double x[maxn], b[maxn];
double dp[maxn], dx[maxn], dy[maxn];
int n, l, que[maxn], pre[maxn];
int sig(double x) { return (x > 1e-8) - (x < -1e-8); }
int main() {
  scanf("%d%d", &n, &l);
  for (int i = 1; i <= n; i++) scanf("%lf%lf", &x[i], &b[i]);
  x[0] = b[0] = 0.0;
  double r = 0.0;
  int k = 10;
  while (k--) {
    for (int i = 1; i <= n; i++) {
      dp[i] = 1e100;
      dx[i] = dy[i] = 0.0;
    }
    dp[0] = dx[0] = dy[0] = 0.0;
    for (int i = 1; i <= n; i++)
      for (int j = 0; j < i; j++) {
        double df = sqrt(fabs(x[i] - x[j] - l)) - r * b[i];
        if (dp[j] + df < dp[i]) {
          dp[i] = dp[j] + df;
          pre[i] = j;
          dy[i] = dy[j] + sqrt(fabs(x[i] - x[j] - l));
          dx[i] = dx[j] + b[i];
        }
      }
    if (sig(dp[n]) == 0) break;
    r = dy[n] / dx[n];
  }
  int tot = 0;
  while (n) {
    que[tot++] = n;
    n = pre[n];
  }
  for (int i = tot - 1; i > 0; i--) printf("%d ", que[i]);
  printf("%d\n", que[0]);
  return 0;
}
