#include <bits/stdc++.h>
const int N = 1e9;
const int mod = (int)1e9 + 7;
const int INF = 0x3f3f3f3f;
const long long LINF = (1LL << 62);
const double PI = acos(-1.0);
const int maxn = 1e5 + 5;
using namespace std;
int n, k, h;
int ans[maxn];
struct node {
  int w, v, num;
  bool operator<(const node &t) const {
    if (w == t.w) return v < t.v;
    return w < t.w;
  }
} gg[maxn];
bool check(double mid) {
  int t = 1;
  for (int i = 1; i <= n; i++) {
    if (1.0 * h * t <= mid * gg[i].v) {
      ans[t++] = gg[i].num;
      if (t > k) return true;
    }
  }
  return false;
}
void solve() {
  double l = 0, r = 1000000000;
  for (int i = 0; i < 120; i++) {
    double mid = (l + r) / 2.0;
    if (check(mid))
      r = mid;
    else
      l = mid;
  }
  check(r);
}
int main() {
  scanf("%d%d%d", &n, &k, &h);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &gg[i].w);
    gg[i].num = i;
  }
  for (int i = 1; i <= n; i++) scanf("%d", &gg[i].v);
  sort(gg + 1, gg + 1 + n);
  solve();
  for (int i = 1; i <= k; i++) {
    if (i != 1) printf(" ");
    printf("%d", ans[i]);
  }
  return 0;
}
