#include <bits/stdc++.h>
using namespace std;
const int maxN = 100000 + 10, maxM = 10000 + 10;
long long N, K, H;
int m[maxN], num[maxN], ans[maxN];
long long v[maxN];
bool cmp(int a, int b) {
  return (m[a] > m[b] || (m[a] == m[b] && v[a] > v[b]));
}
bool check(double T) {
  long long now = 0;
  for (int k = K - 1; k >= 0; --k) {
    ans[k] = -1;
    while (now < N) {
      int j = num[now];
      if ((double)v[j] * T >= (double)(k + 1) * H) {
        ans[k] = j;
        break;
      }
      ++now;
    }
    if (ans[k] == -1) return false;
    ++now;
  }
  return true;
}
int main() {
  scanf("%I64d %I64d %I64d", &N, &K, &H);
  for (int i = 0; i < N; ++i) scanf("%d", &m[i]);
  for (int i = 0; i < N; ++i) scanf("%d", &v[i]);
  for (int i = 0; i < N; ++i) num[i] = i;
  sort(num, num + N, cmp);
  double l = 0, r = 1000000007;
  for (int i = 0; i < 2000; ++i) {
    double mid = (l + r) * 0.5;
    if (check(mid))
      r = mid;
    else
      l = mid;
  }
  check(r);
  for (int i = 0; i < K; ++i) {
    printf("%d", ans[i] + 1);
    (i == K - 1) ? printf("\n") : printf(" ");
  }
  return 0;
}
