#include <bits/stdc++.h>
using namespace std;
struct ticket{
int surplus=5;//剩余座位
int start=0;//座号
};
int main(){
int n;
cin>>n;
ticket t[22];
while(n--){
int k;
cin>>k;
int num;
int flag=0;//是否有连续位置
for(int i=1;i<=20;i++){
if(t[i].surplus>=k){
for(int j=t[i].start+1;j<=t[i].start+k;j++){
cout<<5*(i-1)+j<<' ';
}
t[i].start+=k;
t[i].surplus-=k;
flag=1;//找到了连续座位
break;
}
}
if(flag==0){//没连续的了 往最小的塞
for(int i=1;i<=20;i++){
if(k>t[i].surplus&&t[i].surplus>0){//没法把全部都塞完 先塞几个
for(int j=t[i].start+1;j<=5;j++){
cout<<5*(i-1)+j<<' ';
}
k-=t[i].surplus;
t[i].surplus=0;
t[i].start=5;
}
else if(k<=t[i].surplus){//可以塞完全部
for(int j=t[i].start+1;j<=t[i].start+k;j++){
cout<<5*(i-1)+j<<' ';
}
t[i].surplus-=k;
t[i].start+=k;
k=0;
}
}
}
cout<<endl;
}
}
备注:90分题解可能是没考虑“如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。否则应该安排在编号最小的几个空座位中(不考虑是否相邻)。”的情况