#include <bits/stdc++.h>
using namespace std;
struct nod {
  int v, zhong, hao;
} num[110000];
int ans[110000], n, k, i;
double h, l, r, mid;
bool cmp(nod a, nod b) {
  if (a.zhong != b.zhong) return a.zhong < b.zhong;
  return a.v < b.v;
}
bool can(double t) {
  int now, r;
  r = n;
  now = k;
  while (now >= 1) {
    while (r >= 1 && h * now / num[r].v > t) r--;
    if (r == 0) return false;
    r--;
    now--;
  }
  return true;
}
void shuchu(double t) {
  int i, now, r;
  r = n;
  now = k;
  while (now >= 1) {
    while (h * now / num[r].v > t) r--;
    ans[now] = num[r].hao;
    r--;
    now--;
  }
  for (i = 1; i <= k; i++) printf("%d ", ans[i]);
}
int main() {
  scanf("%d%d%lf", &n, &k, &h);
  for (i = 1; i <= n; i++) scanf("%d", &num[i].zhong), num[i].hao = i;
  for (i = 1; i <= n; i++) scanf("%d", &num[i].v);
  sort(num + 1, num + n + 1, cmp);
  l = 0;
  r = 1000000000;
  for (i = 1; i <= 200; i++) {
    mid = (l + r) / 2;
    if (can(mid))
      r = mid;
    else
      l = mid;
  }
  shuchu(r);
}
