#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct lemm {
  long double m;
  long double v;
  ll ind;
};
double long eps = 1 / 1e18;
bool check(long double t, vector<lemm> &lem, ll k, ll h) {
  ll iter = 0;
  for (ll i = 1; i <= k; ++i) {
    while (true) {
      if (iter >= lem.size()) return false;
      long double tim = (((long double)i * h) / lem[iter].v);
      if (tim > t)
        ++iter;
      else {
        ++iter;
        break;
      }
    }
  }
  return true;
}
bool cmp(lemm &a, lemm &b) {
  if (a.m == b.m) return a.v < b.v;
  return a.m < b.m;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  ll counter = 91;
  ll n, k, h;
  cin >> n >> k >> h;
  vector<lemm> lem(n, {0, 0, 0});
  for (ll i = 0; i < n; ++i) cin >> lem[i].m;
  for (ll i = 0; i < n; ++i) cin >> lem[i].v;
  for (ll i = 0; i < n; ++i) lem[i].ind = i + 1;
  sort(lem.begin(), lem.end(), cmp);
  long double lhs = 0;
  long double rhs = 1e9;
  while (counter--) {
    long double mid = (rhs - lhs) / 2 + lhs;
    if (check(mid, lem, k, h)) {
      rhs = mid;
    } else {
      lhs = mid;
    }
  }
  vector<ll> ans;
  ll iter = 0;
  for (ll i = 1; i <= k; ++i) {
    while (true) {
      long double tim = ((i * h) / lem[iter].v);
      if (tim > rhs)
        ++iter;
      else {
        ans.push_back(lem[iter].ind);
        ++iter;
        break;
      }
    }
  }
  for (ll el : ans) {
    cout << el << ' ';
  }
}
