#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void checkMin(T& a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void checkMax(T& a, T b) {
  if (b > a) a = b;
}
inline int& RD(int& x) {
  scanf("%d", &x);
  return x;
}
inline int& RD(int& x, int& y) {
  scanf("%d%d", &x, &y);
  return x;
}
inline int& RD(int& x, int& y, int& z) {
  scanf("%d%d%d", &x, &y, &z);
  return x;
}
inline void WT(int x) { printf("%d\n", x); }
inline void WT(int x, int y) { printf("%d %d\n", x, y); }
inline void WT(int x, int y, int z) { printf("%d %d %d\n", x, y, z); }
inline long long& RD(long long& x) {
  scanf("%I64d", &x);
  return x;
}
inline long long& RD(long long& x, long long& y) {
  scanf("%I64d%I64d", &x, &y);
  return x;
}
inline long long& RD(long long& x, long long& y, long long& z) {
  scanf("%I64d%I64d%I64d", &x, &y, &z);
  return x;
}
inline void WT(long long x) { printf("%I64d\n", x); }
inline void WT(long long x, long long y) { printf("%I64d %I64d\n", x, y); }
inline void WT(long long x, long long y, long long z) {
  printf("%I64d %I64d %I64d\n", x, y, z);
}
inline double& RD(double& x) {
  scanf("%lf", &x);
  return x;
}
inline double& RD(double& x, double& y) {
  scanf("%lf%lf", &x, &y);
  return x;
}
inline double& RD(double& x, double& y, double& z) {
  scanf("%lf%lf%lf", &x, &y, &z);
  return x;
}
inline void WT(double x) { printf("%.4f\n", x); }
inline void WT(double x, double y) { printf("%.6f %.6f\n", x, y); }
inline void WT(double x, double y, double z) {
  printf("%.6f %.6f %.6f\n", x, y, z);
}
const int N = 310000;
const long long INF = 1LL << 62;
int n, k, p;
pair<long long, int> b[N];
long long ans, tmp, a[N], down[N], up[N];
int main() {
  RD(n);
  for (int i = (1); i <= (int)(n); i++) {
    RD(a[i]);
    b[i].first = a[i], b[i].second = i;
  }
  sort(b + 1, b + n + 1);
  for (int i = (1); i <= (int)(n); i++) a[i] = b[i].first;
  down[0] = up[0] = 0;
  for (int i = (1); i <= (int)(n); i++) {
    down[i] = down[i - 1] + (a[i] - a[i - 1]) * (n - i + 1);
    up[i] = up[i - 1] + (a[i] - a[i - 1]) * i;
  }
  tmp = 0;
  RD(k);
  for (int i = (2); i <= (int)(k); i++) tmp += up[i] - up[1] - (a[i] - a[1]);
  ans = tmp;
  p = k;
  for (int i = (k + 1); i <= (int)(n); i++) {
    tmp += up[i] - up[i - k] - (a[i] - a[i - k]) * (i - k);
    tmp -= down[i] - down[i - k] - (a[i] - a[i - k]) * (n - i);
    if (tmp < ans) {
      ans = tmp;
      p = i;
    }
  }
  for (int i = (p - k + 1); i <= (int)(p); i++) cout << b[i].second << " ";
  return 0;
}
