#include <bits/stdc++.h>
using namespace std;
const int MaxN = 100005;
int N, K, H;
int arrange[MaxN];
int solution[MaxN];
pair<pair<long long, long long>, int> L[MaxN];
bool predicate(double t) {
  long long j = 1;
  for (int i = 0; i < N && j <= K; i++)
    if (j * H - t * L[i].first.second <= 0) {
      arrange[j++] = L[i].second + 1;
    }
  return j > K;
}
int main() {
  cin >> N >> K >> H;
  for (int i = 0; i < N; i++) L[i].second = i;
  for (int i = 0; i < N; i++) cin >> L[i].first.first;
  for (int i = 0; i < N; i++) cin >> L[i].first.second;
  sort(L, L + N);
  double lo = 0;
  double hi = 1e15;
  for (int i = 0; i < 200; i++) {
    double mid = (lo + hi) / 2;
    if (predicate(mid)) {
      hi = mid;
      for (int j = 1; j <= K; j++) solution[j] = arrange[j];
    } else
      lo = mid;
  }
  for (int i = 1; i <= K; i++) cout << solution[i] << (i != K ? " " : "\n");
  return 0;
}
