#include <bits/stdc++.h>
using namespace std;
const int maxn = 200001;
struct tinfo {
  int w, v, no;
} g[maxn];
int n, m, h;
int f[maxn], fn;
int resn, res[maxn];
bool check(double t) {
  fn = 0;
  double now = 1;
  for (int i = 1; i <= n && now <= m; ++i)
    if (now * h / g[i].v <= t) {
      f[++fn] = g[i].no;
      now += 1;
    }
  if (fn == m) {
    for (int i = 1; i <= fn; ++i) res[i] = f[i];
    resn = fn;
    return 1;
  }
  return 0;
}
bool cmp(const tinfo a, const tinfo b) {
  if (a.w == b.w) return a.v < b.v;
  return a.w < b.w;
}
int main() {
  scanf("%d%d%d", &n, &m, &h);
  for (int i = 1; i <= n; ++i) scanf("%d", &g[i].w);
  for (int i = 1; i <= n; ++i) scanf("%d", &g[i].v), g[i].no = i;
  sort(g + 1, g + n + 1, cmp);
  double low = 0, high = 1e10, mid;
  for (int i = 1; i <= 100; ++i) {
    mid = (low + high) / 2.0;
    if (check(mid))
      high = mid;
    else
      low = mid;
  }
  for (int i = 1; i <= resn; ++i) printf("%d ", res[i]);
  printf("\n");
  return 0;
}
