#include <bits/stdc++.h>
using namespace std;
const int e = 200010;
struct Node {
  int rank, m;
  double v;
} rec[e];
int N, K, h, fin[e];
double tall[e];
bool cmp(Node a, Node b) { return (a.m == b.m) ? a.v < b.v : a.m < b.m; }
bool check(double pos) {
  int all = 0;
  for (int i = 0; i < N; i++)
    if (rec[i].v * pos > h * (all + 1) - 1e-12) fin[++all] = rec[i].rank;
  return (all >= K);
}
int main() {
  scanf("%d%d%d", &N, &K, &h);
  for (int i = 0; i < N; i++) cin >> rec[i].m;
  for (int i = 0; i < N; i++) cin >> rec[i].v;
  for (int i = 0; i < N; i++) rec[i].rank = i + 1;
  sort(rec, rec + N, cmp);
  double l = 0, r = 1000000005, ans;
  for (int i = 1; i < 201; i++) {
    double mid = (l + r) * 0.5;
    if (check(mid))
      ans = r = mid;
    else
      l = mid;
  }
  check(ans);
  for (int i = 1; i < K; i++) printf("%d ", fin[i]);
  printf("%d\n", fin[K]);
  return 0;
}
