#include <bits/stdc++.h>

#define X first
#define Y second

using namespace std;

typedef pair<int, int> ipair;

const int MAXN = 200200;
const int MAXM = MAXN;

int n, m, k;
ipair arr[MAXN];
ipair* fre[MAXM << 1];
bool used[MAXN];

void build() {
    sort(arr, arr + n);
    reverse(arr, arr + n);
}

int solve() {
    for (int j = 0; j < m; ++j) {
        if (fre[j]) fre[j]->X++;
        auto it = find_if(arr, arr + n, [](const ipair& p) { return p.X > 0; });
        if (it == arr + n) return -1;
        it->X--;
        fre[j + k] = it;
        used[it->Y] = true;
    }
    return n - count(used, used + n, true);
}

int main() {
    cin >> n >> m >> k;
    for (int i = 0; i < n; ++i) {
        cin >> arr[i].X;
        arr[i].Y = i;
    }
    build();
    int ans = solve();
    cout << ans << endl;
    if (ans == -1) return 0;
    for (int i = 0; i < n; ++i)
        if (!used[i]) cout << i + 1 << ' ';
    cout << endl;
    for (int j = 0; j < m; ++j)
        cout << fre[j + k]->Y + 1 << ' ';
    cout << endl;
}