#include <bits/stdc++.h>
using namespace std;
struct Lemming {
  int m, v, ind;
  Lemming(int m, int v, int ind) : m(m), v(v), ind(ind) {}
  Lemming() {}
  bool operator<(const Lemming& lem) const {
    if (m != lem.m) {
      return m > lem.m;
    } else {
      return v > lem.v;
    }
  }
};
const int MAX = 100000 + 10;
const double EPS = 1e-9;
Lemming a[MAX];
int mass[MAX];
int vel[MAX];
int res[MAX];
int main() {
  int k, n, H;
  scanf("%d %d %d", &n, &k, &H);
  double h = H;
  for (int(i) = 0; (i) < (n); (i)++) scanf("%d", &mass[i]);
  for (int(i) = 0; (i) < (n); (i)++) scanf("%d", &vel[i]);
  for (int(i) = 0; (i) < (n); (i)++) a[i] = Lemming(mass[i], vel[i], i + 1);
  sort(a, a + n);
  double L = 0, R = 1e10, M, T;
  for (int(it) = 0; (it) < (200); (it)++) {
    M = (L + R) / 2;
    int j = k;
    for (int i = 0; i < n && j > 0; i++) {
      T = j * h / a[i].v;
      if (T < M + EPS) {
        j--;
      }
    }
    if (j == 0) {
      R = M;
    } else {
      L = M;
    }
  }
  for (int i = 0, j = k; i < n && j > 0; i++) {
    T = j * h / a[i].v;
    if (T < R + EPS) {
      res[--j] = a[i].ind;
    }
  }
  for (int(i) = 0; (i) < (k); (i)++) printf("%d ", res[i]);
  return 0;
}
