#include <bits/stdc++.h>
using namespace std;
const int MAXN = 300500;
struct pt {
  long long x;
  int id;
} A[MAXN];
bool operator<(pt a, pt b) { return a.x < b.x; }
bool porid(pt a, pt b) { return a.id < b.id; }
int n, k;
long long S, P, MIN;
long long PL = 0, PR = 0;
pair<int, int> R;
vector<int> Ans;
void DEB(int l, int r) {
  printf("Vamos a observar el rango [%d, %d]\n", l, r);
  printf("La suma es %lld.\n", S);
  printf("El score izquierdo es : %lld\n", PL);
  printf("El score derecho es : %lld\n", PR);
}
int main() {
  while (cin >> n) {
    S = P = 0;
    Ans.clear();
    for (int i = (0); i < (int)(n); i++) {
      scanf("%lld", &A[i].x);
      A[i].id = i + 1;
    }
    sort(A, A + n);
    cin >> k;
    for (int i = (0); i < (int)(k); i++) P += A[i].x - A[0].x;
    S = P;
    for (int i = (1); i < (int)(k); i++)
      P -= (A[i].x - A[i - 1].x) * (k - i), S += P;
    int l = 0, r = k - 1;
    MIN = S;
    R = make_pair(0, k - 1);
    PL = PR = 0;
    for (int i = (0); i < (int)(k); i++) {
      PL += A[i].x - A[0].x;
      PR += A[k - 1].x - A[i].x;
    }
    while (r < n - 1) {
      l++;
      S -= PL;
      PL -= (A[l].x - A[l - 1].x) * (k - 1);
      PR -= A[r].x - A[l - 1].x;
      r++;
      PR += (A[r].x - A[r - 1].x) * (k - 1);
      S += PR;
      PL += A[r].x - A[l].x;
      if (S < MIN) R = make_pair(l, r), MIN = S;
    }
    for (int i = ((int)(R.first)); i < (int)((int)(R.second) + 1); i++)
      Ans.push_back(A[i].id);
    sort(Ans.begin(), Ans.end());
    for (int i = (0); i < (int)(k); i++) {
      if (i) printf(" ");
      printf("%d", Ans[i]);
    }
    puts("");
  }
  return 0;
}
