#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
const int Mod = 1000000007;
const int MaxN = 100010;
struct lem {
  int m, v, c;
  bool operator<(const lem &l) const {
    if (m == l.m) return v < l.v;
    return m < l.m;
  }
};
lem Lem[MaxN];
int F[MaxN];
int n, k, h;
int makeF(double p, bool f) {
  int ck = 0;
  for (int i = 0; i < n && ck < k; i++) {
    double cd = (ck + 1) * 1.0 * h / Lem[i].v;
    if (cd < p + eps) {
      ++ck;
      if (f) {
        if (ck > 1) putchar(' ');
        printf("%d", Lem[i].c);
      }
    }
  }
  if (f) putchar('\n');
  if (f && ck < k)
    while (1)
      ;
  return ck;
}
int main() {
  while (scanf("%d%d%d", &n, &k, &h) != EOF) {
    for (int i = 0; i < n; i++) scanf("%d", &Lem[i].m);
    for (int i = 0; i < n; i++) scanf("%d", &Lem[i].v);
    for (int i = 0; i < n; i++) Lem[i].c = i + 1;
    sort(Lem, Lem + n);
    double s = 0.0, t = 1e9 + 1e-6;
    for (int rd = 0; rd < 100; rd++) {
      double d = (s + t) * 0.5;
      if (makeF(d, 0) < k)
        s = d;
      else
        t = d;
    }
    makeF(t, 1);
  }
  return 0;
}
