#include <bits/stdc++.h>
using namespace std;
string str;
struct myst {
  int m, v, p;
  bool operator<(const myst a) const { return m == a.m ? v > a.v : m > a.m; }
};
priority_queue<myst> lq, rq;
int n, k, h;
myst val[100005];
const double gap = 1e-18;
vector<int> v;
int temp[100005];
int fv[100005];
bool check(double d) {
  int bs = k;
  for (int i = 0; i < n; ++i) {
    if (1.0 * bs * h <= val[i].v * (d + gap)) {
      temp[k - bs] = val[i].p;
      bs--;
      if (bs == 0) {
        memcpy(fv, temp, k * sizeof(int));
        return true;
      }
    }
  }
  return false;
}
void output(double d) {
  for (int i = k - 1; i >= 0; i--) cout << fv[i] << " ";
  cout << endl;
}
double ef(double b, double e) {
  if (b + gap >= e) return e;
  double half = (b + e) / 2;
  if (check(half))
    e = half;
  else
    b = half;
  return ef(b, e);
}
int main() {
  cin >> n >> k >> h;
  for (int i = 0; i < n; ++i) {
    cin >> val[i].m;
  }
  for (int i = 0; i < n; ++i) cin >> val[i].v;
  for (int i = 0; i < n; ++i) val[i].p = i + 1;
  sort(val, val + n);
  double b = 0, e = k * h;
  for (int i = 0; i < 300; i++) {
    double half = (b + e) / 2;
    if (check(half))
      e = half;
    else
      b = half;
  }
  output(e);
  return 0;
}
