#include <bits/stdc++.h>
using namespace std;
int n;
int k;
const double eps = 1e-12;
long long h;
int dcmp(double x) { return fabs(x) <= eps ? 0 : (x < 0 ? -1 : 1); }
struct node {
  long long m, v, id;
  bool operator<(const node& w) const {
    if (m != w.m) return m < w.m;
    if (v != w.v) return v < w.v;
    return id < w.id;
  }
} a[100010];
stack<int> ans;
bool chk(double x, int op) {
  int pos = 1;
  for (int i = 0; i < n && pos <= k; ++i) {
    if (dcmp(1.0 * pos * h > x * a[i].v) > 0) continue;
    if (op) printf("%d ", a[i].id);
    pos++;
  }
  return pos == k + 1;
}
int main() {
  scanf("%d%d%lld", &n, &k, &h);
  for (int i = 0; i < n; ++i) scanf("%lld", &a[i].m);
  for (int i = 0; i < n; ++i) scanf("%lld", &a[i].v), a[i].id = i + 1;
  sort(a, a + n);
  double L = 0, R = 1000000000.0, mid, ans;
  for (int i = 0; i < 200; ++i) {
    mid = (L + R) / 2;
    if (chk(mid, 0))
      R = mid;
    else
      L = mid;
  }
  chk(R, 1);
  return 0;
}
