#include<iostream>
#include<vector>
#include<map>
#include<list>
using namespace std;
int main()
{
int n;
cin >> n;
map<int, int>mp;
list<int>lst;
for (int i = 1;i <= n;i++)
{
int a; cin >> a;
mp[i] = a;
lst.push_back(i);
}
vector<vector<int> >p(n+1);
int j = 1;
auto it = lst.begin();
while (mp.size())
{
int position = *(it);
p[position].push_back(j);
if (p[position].size() == mp[position] * 10)
{
if(lst.size()!=1) it = lst.erase(it); //如果只有一个还删除得话就会内存分配错误
if (it == lst.end())
{
it = lst.begin();
}
mp.erase(position);
if (lst.size() == 1)j--; //否则j会多加一次
}
else //如果还不是满足条件了
{
it++;
if (it == lst.end())
{
it = lst.begin();
}
}
j++;
if (mp.size()==1) j++;
}
int k = 1;
for (int i = 1;i < p.size();i++)
{
cout << "#" << k << endl; //我勒个格式问题啊
int m = 0;
for (int j=0;j<p[i].size();j++)
{
m++;
cout << p[i][j] ;
// if(m != 10)
if (m == 10)
{
cout << endl;
m = 0;
}else {
cout << " ";
}
}
k++;
}
}