#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
const double eps = 1e-12;
int n, k, h;
struct lemming {
  int w, v, id;
  bool operator<(const lemming &rhs) const {
    if (w != rhs.w) return w < rhs.w;
    return v < rhs.v;
  }
} a[maxn];
vector<int> ans;
int dcmp(double x) {
  if (fabs(x) < eps) return x;
  return x > 0 ? 1 : -1;
}
bool ok(double t) {
  vector<int> v;
  for (int i = 1, j = 1; i <= n; i++) {
    if (dcmp(t - (double)h * j / a[i].v) < 0) continue;
    v.emplace_back(a[i].id);
    j++;
    if (j > k) break;
  }
  if (v.size() < k) return 0;
  ans = v;
  return 1;
}
int main() {
  scanf("%d %d %d", &n, &k, &h);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i].w), a[i].id = i;
  for (int i = 1; i <= n; i++) scanf("%d", &a[i].v);
  sort(a + 1, a + 1 + n);
  double l = 0, r = 1e9;
  for (int i = 0; i < 150; i++) {
    double mid = (l + r) / 2;
    if (ok(mid))
      r = mid;
    else
      l = mid;
  }
  for (auto i : ans) printf("%d ", i);
}
