#include <bits/stdc++.h>
using namespace std;
const int N = 100 * 1000 + 10;
const int INF = 1000 * 1000 * 1000 + 10;
struct lem {
  int m = INF;
  int v = INF;
  int num;
};
bool comp(lem a, lem b) { return a.m < b.m || a.m == b.m && a.v < b.v; }
vector<lem> a(N);
int n, k, h;
vector<int> ans;
bool can(double t) {
  int cur = 1;
  for (int i = 0; i < n; ++i) {
    if (1.0 * cur * h / a[i].v <= t) {
      cur++;
    }
  }
  return cur > k;
}
double binsearch() {
  double l = 0;
  double r = INF;
  for (int i = 0; i < 100; ++i) {
    double mid = (r + l) / 2.0;
    if (can(mid))
      r = mid;
    else
      l = mid;
  }
  int cur = 1;
  for (int i = 0; i < n; ++i) {
    if (1.0 * cur * h / a[i].v <= r) {
      cur++;
      ans.push_back(a[i].num);
    }
  }
  return l;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> k >> h;
  for (int i = 0; i < n; ++i) {
    cin >> a[i].m;
    a[i].num = i + 1;
  }
  for (int i = 0; i < n; ++i) cin >> a[i].v;
  sort(a.begin(), a.end(), comp);
  binsearch();
  for (int i = 0; i < k; ++i) cout << ans[i] << " ";
}
