#include <bits/stdc++.h>
using namespace std;
struct ntype {
  int n, m, v;
};
bool funcsort(ntype a, ntype b) {
  if (a.m > b.m || (a.m == b.m && a.v > b.v))
    return true;
  else
    return false;
}
int n, k, i, j, h, it;
ntype A[200000];
int answer[200000];
double L, R, C;
bool can(double C) {
  int i, now = k;
  double t;
  for (i = 0; i < n; ++i) {
    t = now * h;
    t = t / (double)(A[i].v);
    if (t <= C + 1e-9) {
      answer[now - 1] = A[i].n;
      now--;
      if (now == 0) break;
    }
  }
  return (now == 0);
}
int main() {
  scanf("%d%d%d", &n, &k, &h);
  for (i = 0; i < n; ++i) scanf("%d", &A[i].m);
  for (i = 0; i < n; ++i) A[i].n = i + 1;
  for (i = 0; i < n; ++i) scanf("%d", &A[i].v);
  sort(A, A + n, funcsort);
  L = 0;
  R = 1000000001;
  for (it = 0; it < 100; ++it) {
    C = (L + R) / 2;
    if (can(C))
      R = C;
    else
      L = C;
  }
  can(R);
  for (i = 0; i < k - 1; ++i) printf("%d ", answer[i]);
  printf("%d\n", answer[k - 1]);
}
