#include using namespace std; typedef long long ll; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define trav(a, x) for(auto& a : x) #define all(x) x.begin(), x.end() #define sz(x) (int)(x).size() typedef long long ll; typedef pair pii; typedef pair pll; typedef vector vi; typedef vector vl; vi A, ind; int n,m,k; vi L, R; bool comp(int i, int j){ return A[i] < A[j]; } int main() { cin >> n >> m >> k; rep(c1,0,n){ int a; cin >> a; A.push_back(a); ind.push_back(c1); } sort(all(ind),comp); if(k%m != 0){ cout << "impossible\n"; return 0; } k /= m; rep(c1,0,n){ if(n-c1 <= k){ R.push_back(ind[c1]); } else{ L.push_back(ind[c1]); } } reverse(all(L)); int l = 0; int r = 0; int scores = 0; bool fail = 0; vi ANS; rep(c1,0,n){ if(r < sz(R) && scores * m <= c1 * A[R[r]]){ scores++; ANS.push_back(R[r]); r++; } else{ if(l == sz(L) || scores * m <= c1 * A[L[l]]){ fail = 1; break; } ANS.push_back(L[l]); l++; } } if(fail){ cout << "impossible\n"; } else{ trav(i, ANS){ cout << i+1 << " "; }cout << "\n"; } return 0; }