#include <bits/stdc++.h>
using namespace std;
int n, k, h;
vector<int> m, v;
vector<int> o;
bool cmp(int i, int j) { return m[i] < m[j] || (m[i] == m[j] && v[i] < v[j]); }
vector<int> res;
vector<int> good_res;
bool good(double t) {
  int todo = 0;
  int i = 0;
  while (todo < k) {
    if (i == n) return false;
    int j = o[i];
    if (v[j] * t >= h * (todo + 1)) {
      res[todo] = j;
      todo++;
      i++;
    } else {
      i++;
    }
  }
  good_res = res;
  return true;
}
int main() {
  cin >> n >> k >> h;
  m.assign(n, 0);
  v.assign(n, 0);
  o.assign(n, 0);
  res.assign(k, 0);
  good_res.assign(k, 0);
  for (int i = 0; i < n; i++) cin >> m[i];
  for (int i = 0; i < n; i++) cin >> v[i];
  for (int i = 0; i < n; i++) o[i] = i;
  sort(o.begin(), o.end(), cmp);
  double L = 0, R = 1e10;
  for (int iter = 0; iter < 100; iter++) {
    double t = (L + R) / 2;
    if (good(t))
      R = t;
    else
      L = t;
  }
  for (int i = 0; i < k; i++) {
    if (i) printf(" ");
    printf("%d", good_res[i] + 1);
  }
  puts("");
  return 0;
}
