#include <bits/stdc++.h>
const double pi = 3.1415926535897932384626433832795;
int gcd(int a, int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
using namespace std;
void ifd() {}
void tme() {}
int n, k, h;
vector<pair<int, pair<int, int> > > l;
vector<int> answer;
bool can(double time) {
  int cnt = 0;
  int pos = 0;
  while (pos < n && cnt < k) {
    if (((double)l[pos].second.first * time) >= ((double)(cnt + 1) * h)) {
      pos++;
      cnt++;
    } else {
      pos++;
    }
  }
  return cnt == k;
}
double bs() {
  double low = 0, high = 1e10, mid;
  for (int i = (0); i < (200); ++i) {
    mid = (low + high) / 2;
    if (can(mid))
      high = mid;
    else
      low = mid;
  }
  return high;
}
int main() {
  ifd();
  cin >> n >> k >> h;
  l.resize(n);
  for (int i = (0); i < (n); ++i) {
    cin >> l[i].first;
  }
  for (int i = (0); i < (n); ++i) {
    cin >> l[i].second.first;
    l[i].second.second = i + 1;
  }
  sort(l.begin(), l.end());
  double time = bs();
  int cnt = 0;
  int pos = 0;
  while (pos < n && cnt < k) {
    if (((double)l[pos].second.first * time) >= ((double)(cnt + 1) * h)) {
      answer.push_back(l[pos].second.second);
      pos++;
      cnt++;
    } else {
      pos++;
    }
  }
  for (int i = (0); i < (k - 1); ++i) cout << answer[i] << " ";
  cout << answer[k - 1] << endl;
  tme();
  return 0;
}
