#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e3 + 5;
double dp[MAXN];
int pre[MAXN], a[MAXN], b[MAXN], m, n;
bool check(double num) {
  memset(dp, 0, sizeof(dp));
  int i, j;
  for (i = 1; i <= m; i++) {
    dp[i] = 1e18;
    for (j = 0; j < i; j++) {
      double tmp =
          dp[j] + sqrt((double)abs(a[i] - a[j] - n) + 0.00) - num * b[i];
      if (tmp < dp[i]) {
        dp[i] = tmp;
        pre[i] = j;
      }
    }
  }
  return dp[m] <= 0;
}
int main() {
  int i, j, k;
  cin >> m >> n;
  for (i = 1; i <= m; i++) {
    cin >> a[i] >> b[i];
  }
  double l = 0, r = 10000000000, mid, ans = 10000000000, o = 100;
  while (o--) {
    mid = (l + r) / 2;
    if (check(mid))
      ans = min(ans, mid), r = mid;
    else
      l = mid;
  }
  check(ans);
  i = m;
  vector<int> v;
  while (pre[i] != 0) v.push_back(i), i = pre[i];
  v.push_back(i);
  reverse((v).begin(), (v).end());
  for (i = 0; i < v.size(); i++) cout << v[i] << ' ';
  cout << endl;
}
