#include <bits/stdc++.h>
using namespace std;
struct lemming {
  double v, m;
  int id;
  lemming() {}
  lemming(double _v, double _m) : v(_v), m(_m){};
};
inline bool cmp(lemming a, lemming b) {
  if (abs(a.m - b.m) < 1e-10) {
    return a.v < b.v;
  }
  return a.m < b.m;
}
lemming ls[100010];
int ans[100010], preans[100010];
int n, k;
double h;
bool test(double t) {
  int count = k - 1;
  for (int i = n - 1; i >= 0 && count >= 0; i--) {
    if ((double)(count + 1) * h / ls[i].v < t) {
      preans[count--] = ls[i].id;
    }
  }
  if (count >= 0) {
    return false;
  }
  memcpy(ans, preans, sizeof(preans));
  return true;
}
int main() {
  memset(ans, 255, sizeof(ans));
  memset(preans, 255, sizeof(preans));
  cin >> n >> k >> h;
  for (int(i) = 0; (i) < (n); (i)++) {
    cin >> ls[i].m;
  }
  for (int(i) = 0; (i) < (n); (i)++) {
    cin >> ls[i].v;
    ls[i].id = i + 1;
  }
  sort(ls, ls + n, cmp);
  double lt = 0, rt = 1e12;
  int count = 100;
  while (count--) {
    double m = (lt + rt) / 2.0;
    if (test(m)) {
      rt = m;
    } else {
      lt = m;
    }
    if (count == 10) {
      bool deb = 1;
    }
  }
  for (int(i) = 0; (i) < (k); (i)++) {
    cout << ans[i] << " ";
  }
  cout << endl;
  return 0;
}
