#include <bits/stdc++.h>
using namespace std;
int n, k, h;
struct Lem {
  int w, v, i;
  bool operator<(const Lem &a) const {
    return w < a.w || (w == a.w && v < a.v);
  }
};
Lem lem[int(1e5 + 1)];
int solution[int(1e5 + 1)];
bool check(double t) {
  int added = 0;
  for (int i = 0; i < n; i++) {
    if (double((added + 1) * h) / double(lem[i].v) <= t) {
      solution[added++] = lem[i].i;
      if (added == k) return true;
    }
  }
  return false;
}
int main(int narg, char **arg) {
  cin >> n >> k >> h;
  for (int i = 0; i < n; i++) cin >> lem[i].w;
  for (int i = 0; i < n; i++) cin >> lem[i].v;
  for (int i = 0; i < n; i++) lem[i].i = i + 1;
  sort(lem, lem + n);
  double ini = 0, end = numeric_limits<unsigned>::max() >> 1;
  for (int count = 0; count < 200; count++) {
    double mid = (ini + end) * 0.5;
    if (check(mid))
      end = mid;
    else
      ini = mid;
  }
  check(end);
  printf("%d", solution[0]);
  for (int i = 1; i < k; i++) printf(" %d", solution[i]);
  printf("\n");
  return 0;
}
