#include<cstdio>
#include<cstring>
#define MAXN 26
using namespace std;
int dx[]={-,,-,,-,,-,};
int dy[]={-,-,-,-,,,,};
int vis[MAXN][MAXN];
int lu[MAXN][MAXN];
int p,q;
bool flag;
void dfs(int i,int j,int step)
{
int x,y;
vis[i][j]=step;
if(step==p*q)
{
flag=true;
return ;
}
for(int m=; m<; m++)
{
x=i+dx[m];
y=j+dy[m];
if((x>=&&x<p&&y>=&&y<q)&&!vis[x][y])
{
lu[step][]=x;
lu[step][]=y;
dfs(x,y,step+);
if(flag)return;
vis[x][y]=;
}
}
}
int main()
{
int t,tt=;
scanf("%d",&t);
while(t--)
{
tt++;
scanf("%d%d",&p,&q);
printf("Scenario #%d:\n",tt);
for(int i=; i<p; i++)
{
for(int j=; j<q; j++)
{
int step=;
flag=false;
memset(vis,,sizeof(vis));
memset(lu,,sizeof(lu));
lu[][]=i;
lu[][]=j;
dfs(i,j,step);
if(flag)
{
for(int k=; k<p*q; k++)
printf("%c%d",lu[k][]+'A',lu[k][]+);
printf("\n\n");
break;
}
}
if(flag) break;
}
if(!flag) printf("impossible\n\n");
}
return ;
}