#include <bits/stdc++.h>
using namespace std;
long n, m, h;
struct note {
  long w, d;
  double v;
} t[200000];
bool vis[200000];
int cmp(const note &a, const note &b) {
  if (a.w != b.w)
    return (a.w < b.w);
  else
    return (a.v < b.v);
}
bool work(double x) {
  long i, k;
  double j, p;
  memset(vis, 1, sizeof(vis));
  k = 0;
  j = 1;
  for (i = 1; i <= n; i++) {
    if (k == m || j == m + 1) break;
    p = (j * h) / t[i].v;
    if (p <= x) {
      k++;
      j = j + 1;
      vis[i] = false;
    }
  }
  if (k == m)
    return (1);
  else
    return (0);
}
int main() {
  long i, j, k;
  double r, l, mid, u;
  bool v;
  while (scanf("%d%d%d", &n, &m, &h) != -1) {
    for (i = 1; i <= n; i++) scanf("%d", &t[i].w);
    for (i = 1; i <= n; i++) {
      scanf("%lf", &t[i].v);
      t[i].d = i;
    }
    sort(t + 1, t + n + 1, cmp);
    l = 0;
    r = m * h;
    u = 0;
    while (1) {
      u++;
      mid = (l + r) / 2;
      v = work(mid);
      if (u >= 100) {
        v = work(r);
        k = m;
        for (i = 1; i <= n; i++)
          if (not vis[i]) {
            if (k != 1)
              printf("%d ", t[i].d);
            else
              printf("%d\n", t[i].d);
            k--;
          }
        break;
      }
      if (v)
        r = mid;
      else
        l = mid;
    }
  }
}
