#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
const int MAXM = 1000005;
int n, d, m;
vector<int> a[MAXN];
int bd[MAXM];
bool kt(int cnt)
{
queue<int> q;
for (int i = 1; i <= n; i++)
{
for (int id : a[i]) q.push(bd[id]);
int sl = 0;
while (!q.empty() && sl < cnt)
{
if (i > q.front() + d) return 0;
q.pop();
sl++;
}
if (!q.empty() && i > q.front() + d) return 0;
}
return q.empty();
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>d>>m;
for (int i = 1; i <= m; i++)
{
int x;
cin >> x;
a[x].push_back(i);
bd[i] = x;
}
int l = 1, r = m, ans = m;
while (l <= r)
{
int mid = l + (r - l) / 2;
if (kt(mid))
{
r = mid - 1;
ans = mid;
}
else l = mid + 1;
}
cout << ans << '\n';
queue<int> q;
for (int i = 1; i <= n; i++)
{
for (int id : a[i]) q.push(id);
int sl = 0;
while (!q.empty() && sl < ans)
{
cout << q.front() << " ";
q.pop();
sl++;
}
cout << 0<<'\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTUFYTiA9IDEwMDAwNTsKY29uc3QgaW50IE1BWE0gPSAxMDAwMDA1OwoKaW50IG4sIGQsIG07CnZlY3RvcjxpbnQ+IGFbTUFYTl07CmludCBiZFtNQVhNXTsKCmJvb2wga3QoaW50IGNudCkKewogICAgcXVldWU8aW50PiBxOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBmb3IgKGludCBpZCA6IGFbaV0pICBxLnB1c2goYmRbaWRdKTsKCiAgICAgICAgaW50IHNsID0gMDsKICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSAmJiBzbCA8IGNudCkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChpID4gcS5mcm9udCgpICsgZCkgcmV0dXJuIDA7CiAgICAgICAgICAgIHEucG9wKCk7CiAgICAgICAgICAgIHNsKys7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXEuZW1wdHkoKSAmJiBpID4gcS5mcm9udCgpICsgZCkgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gcS5lbXB0eSgpOwp9CgppbnQgbWFpbigpCnsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgY2luPj5uPj5kPj5tOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKQogICAgewogICAgICAgIGludCB4OwogICAgICAgIGNpbiA+PiB4OwogICAgICAgIGFbeF0ucHVzaF9iYWNrKGkpOwogICAgICAgIGJkW2ldID0geDsKICAgIH0KCiAgICBpbnQgbCA9IDEsIHIgPSBtLCBhbnMgPSBtOwogICAgd2hpbGUgKGwgPD0gcikKICAgIHsKICAgICAgICBpbnQgbWlkID0gbCArIChyIC0gbCkgLyAyOwogICAgICAgIGlmIChrdChtaWQpKQogICAgICAgIHsKICAgICAgICAgICAgciA9IG1pZCAtIDE7CiAgICAgICAgICAgICBhbnMgPSBtaWQ7CiAgICAgICAgfQogICAgICAgIGVsc2UgbCA9IG1pZCArIDE7CgogICAgfQoKICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CgogICAgcXVldWU8aW50PiBxOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgewoKICAgICAgICBmb3IgKGludCBpZCA6IGFbaV0pIHEucHVzaChpZCk7CiAgICAgICAgaW50IHNsID0gMDsKICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSAmJiBzbCA8IGFucykKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgcS5mcm9udCgpIDw8ICIgIjsKICAgICAgICAgICAgcS5wb3AoKTsKICAgICAgICAgICAgc2wrKzsKICAgICAgICB9CiAgICAgICAgY291dCA8PCAwPDwnXG4nOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==