#include <bits/stdc++.h>
using namespace std;
int a[100005];
struct O {
  int v, m, id;
} p[100005];
double L, R, mid, ans;
int h, k, i, j, n, M1, M2;
bool cmp(O a, O b) { return (a.m < b.m || a.m == b.m && a.v < b.v); }
bool checker() {
  int T = 0;
  for (int i = 1; i <= n; ++i) {
    if ((T + 1) * h * 1.0 / p[i].v <= mid) a[++T] = p[i].id;
    if (T >= k) return true;
  }
  return false;
}
int main() {
  cin >> n >> k >> h;
  M1 = -999999999;
  M2 = 999999999;
  for (int i = 1; i <= n; ++i) scanf("%d", &p[i].m);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &p[i].v);
    p[i].id = i;
    M1 = max(M1, p[i].v);
    M2 = min(M2, p[i].v);
  }
  sort(p + 1, p + n + 1, cmp);
  L = h * 1.0 / M1;
  R = k * 1.0 * h / M2;
  for (int i = 1; i <= 100; ++i) {
    mid = (L + R) / 2;
    if (checker()) {
      ans = mid;
      R = mid;
    } else
      L = mid;
  }
  mid = ans;
  checker();
  for (int i = 1; i <= k; ++i) printf("%d ", a[i]);
  return 0;
}
