#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:16777216")
using namespace std;
struct lemme {
  int v, m, idx;
};
const int sz = 100100;
lemme A[sz];
int ans[sz], n, k, h;
int f(lemme a, lemme b) {
  if (a.m != b.m)
    return a.m < b.m;
  else
    return a.v < b.v;
}
int main() {
  scanf("%d%d%d", &n, &k, &h);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &A[i].m);
    A[i].idx = i;
  }
  for (int i = 1; i <= n; i++) scanf("%d", &A[i].v);
  double l, r, t;
  l = 0;
  r = 1000000000;
  sort(A + 1, A + (n + 1), f);
  int cur;
  for (int it = 1; it <= 100; it++) {
    t = (l + r) / 2.0;
    cur = 1;
    for (int i = 1; i <= n && cur <= k; i++)
      if ((1.0 * cur * h / A[i].v) <= t) cur++;
    if (cur == k + 1)
      r = t;
    else
      l = t;
  }
  cur = 1;
  t = r;
  for (int i = 1; i <= n && cur <= k; i++)
    if ((1.0 * cur * h / A[i].v) <= t) {
      ans[cur] = A[i].idx;
      cur++;
    }
  printf("%d", ans[1]);
  for (int i = 2; i <= k; i++) printf(" %d", ans[i]);
  printf("\n");
  return 0;
}
