#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
//英语 看博友分析 抄博友程序 POJac 百练wa bfs
struct nod{
int x;
int y;
int zhi;
};
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int da[30][30];
int main()
{
int T;
cin>>T;
int tag=0;
while(T--)
{
tag++;
cout<<"Scenario #"<<tag<<":"<<endl;
int n;
cin>>n;
int a=n;
int flag=1;
for(int o=1;o<=(2*n+1);o++)
{
memset(da,-1,sizeof(da));
cout<<"slice #"<<o<<":"<<endl;
//cout<<a<<endl;
queue<nod> que;
que.push((nod){n+1,n+1,a});
while(que.empty()!=1)
{
int x=que.front().x;
int y=que.front().y;
int z=que.front().zhi;
que.pop();
da[x][y]=z;
for(int i=0;i<4;i++)
{
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>=1 && tx<=(2*n+1) && ty>=1 && ty<=(2*n+1) && (z+1)<=n && da[tx][ty]==-1)
{
que.push((nod){tx,ty,z+1});
}
}
}
for(int i=1;i<=(2*n+1);i++)
{
for(int j=1;j<=(2*n+1);j++)
{
if(da[i][j]==-1)
{
cout<<".";
}else
{
cout<<da[i][j];
}
}
cout<<endl;
}
if(flag==1)
{
a=a-1;
}else if(flag==0)
{
a=a+1;
}
if(a==0)
{
flag=0;
}
}
cout<<endl;
}
return 0;
}