#include <bits/stdc++.h>
using namespace std;
struct Node {
  int i, m, v;
  bool operator<(const Node& b) const {
    if (m != b.m) return m < b.m;
    return v < b.v;
  }
};
int n, k, h;
Node a[100005];
int b[100005], c[100005];
int main() {
  scanf("%d %d %d", &n, &k, &h);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &a[i].m);
    a[i].i = i + 1;
  }
  for (int i = 0; i < n; ++i) scanf("%d", &a[i].v);
  sort(a, a + n);
  double l = 0, r = 1e9;
  for (int ci = 0; ci < 100; ++ci) {
    double mid = (l + r) * 0.5;
    int j = 0;
    bool ok = true;
    for (int i = 1; i <= k && ok; ++i) {
      while (j < n && i * h * 1.0 / a[j].v > mid) ++j;
      if (j == n)
        ok = false;
      else {
        c[i] = j++;
      }
    }
    if (ok) {
      r = mid;
      for (int i = 1; i <= k; ++i) b[i] = c[i];
    } else
      l = mid;
  }
  for (int i = 1; i < k; ++i) printf("%d ", a[b[i]].i);
  printf("%d\n", a[b[k]].i);
  return 0;
}
