题解 P4205 【[NOI2005]智慧珠游戏 】
没什么说的,枚举所有情况即可,每种情况在代码中有标出,然后在卡个时间不要超时即可
#include<bits/stdc++.h>
#define pts putchar('\n');
#define ptc putchar(' ');
using namespace std;
typedef long long ll;
const int maxm=2e6+9;
const int maxn=2e5+9;
const int N=50+9;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
const double eps=1e-4;
char G[N][N];
int in[maxn];
int timee=0;
char read(){
char x=getchar();
while(x!='.'&&(x>'Z'||x<'A')) x=getchar();
return x;
}
int gett(){
for(int i=1;i<=10;++i){
for(int j=1;j<=i;++j){
if(G[j][i]=='.') return 100*j+i;
}
}
}
int ok(){
for(int i='A';i<='L';++i) if(in[i]==0) return 0;
return 1;
}
void out(){
for(int i=1;i<=10;++i){
for(int j=1;j<=i;++j){
putchar(G[j][i]);
}pts;
}
}
void dfs(){
timee++;
if(timee>5e6){puts("No solution");exit(0);}
if(ok()) {out();exit(0);}
int now=gett();
int x=now/100,y=now%10;
if(y==0) y=10;
if(!in['A'])//4
{
if(G[x+1][y]=='.'&&G[x][y+1]=='.')// 下右
/*
1 1
1 0
*/
{
G[x][y]=G[x+1][y]=G[x][y+1]='A';in['A']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]='.';in['A']=0;
}
if(G[x+1][y+1]=='.'&&G[x][y+1]=='.')// 下左
/*
1 1
0 1
*/
{
G[x][y]=G[x+1][y+1]=G[x][y+1]='A';in['A']=1;
dfs();
G[x][y]=G[x+1][y+1]=G[x][y+1]='.';in['A']=0;
}
if(G[x+1][y]=='.'&&G[x+1][y+1]=='.')//上右
/*
1 0
1 1
*/
{
G[x][y]=G[x+1][y]=G[x+1][y+1]='A';in['A']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+1][y+1]='.';in['A']=0;
}
if(G[x][y+1]=='.'&&G[x-1][y+1]=='.')// 上左
/*
0 1
1 1
*/
{
G[x][y]=G[x][y+1]=G[x-1][y+1]='A';in['A']=1;
dfs();
G[x][y]=G[x][y+1]=G[x-1][y+1]='.';in['A']=0;
}
}
if(!in['B'])//2
{
if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+3][y]=='.')//垂直
/*
1
1
1
1
*/
{
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+3][y]='B';in['B']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+3][y]='.';in['B']=0;
}
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.')//水平
/*
1 1 1 1
*/
{
G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]='B';in['B']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]='.';in['B']=0;
}
}
if(!in['C'])//8
{
if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x][y+2]=='.')//1
{
/*
1 1 1
1
*/
G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]='C';in['C']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]='.';in['C']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.')//2
{
/*
1 1
1
1
*/
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]='C';in['C']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]='.';in['C']=0;
}
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x-1][y+2]=='.')//3
{
/*
1
1 1 1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]='C';in['C']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]='.';in['C']=0;
}
if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.')//4
{
/*
1
1
1 1
*/
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]='C';in['C']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]='.';in['C']=0;
}
if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.')//5
{
/*
1
1 1 1
*/
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]='C';in['C']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]='.';in['C']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y]=='.'&&G[x+2][y]=='.')//6
{
/*
1 1
1
1
*/
G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]='C';in['C']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]='.';in['C']=0;
}
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.')//7
{
/*
1 1 1
1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]='C';in['C']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]='.';in['C']=0;
}
if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-2][y+1]=='.')//8
{
/*
1
1
1 1
*/
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]='C';in['C']=1;
dfs();
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]='.';in['C']=0;
}
}
if(!in['D'])//1
{
if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x+1][y+1]=='.')
{
/*
1 1
1 1
*/
G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]='D';in['D']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]='.';in['D']=0;
}
}
if(!in['E'])//4
{
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x-1][y+2]=='.'&&G[x-2][y+2]=='.')//1
{
/*
1
1
1 1 1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]=G[x-2][y+2]='E';in['E']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]=G[x-2][y+2]='.';in['E']=0;
}
if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.'&&G[x+2][y+2]=='.')//2
{
/*
1
1
1 1 1
*/
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+2][y+2]='E';in['E']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+2][y+2]='.';in['E']=0;
}
if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x][y+1]=='.'&&G[x][y+2]=='.')//3
{
/*
1 1 1
1
1
*/
G[x][y]=G[x+1][y]=G[x+2][y]=G[x][y+1]=G[x][y+2]='E';in['E']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+2][y]=G[x][y+1]=G[x][y+2]='.';in['E']=0;
}
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.'&&G[x+2][y+2]=='.')//4
{
/*
1 1 1
1
1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x+2][y+2]='E';in['E']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x+2][y+2]='.';in['E']=0;
}
}
if(!in['F'])//8
{
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.'&&G[x+1][y+1]=='.')//1
{
/*
1 1 1 1
1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x+1][y+1]='F';in['F']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x+1][y+1]='.';in['F']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x+2][y+1]=='.')//2
{
/*
1
1 1
1
1
*/
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x+2][y+1]='F';in['F']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x+2][y+1]='.';in['F']=0;
}
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x-1][y+2]=='.'&&G[x][y+3]=='.')//3
{
/*
1
1 1 1 1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x-1][y+2]='F';in['F']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x-1][y+2]='.';in['F']=0;
}
if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.'&&G[x+3][y]=='.')//4
{
/*
1
1
1 1
1
*/
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+3][y]='F';in['F']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+3][y]='.';in['F']=0;
}
if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.')//5
{
/*
1
1 1 1 1
*/
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x][y+2]=G[x][y+3]='F';in['F']=1;
dfs();
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x][y+2]=G[x][y+3]='.';in['F']=0;
}
if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y]=='.'&&G[x+3][y]=='.')//6
{
/*
1
1 1
1
1
*/
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y]=G[x+3][y]='F';in['F']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y]=G[x+3][y]='.';in['F']=0;
}
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.'&&G[x][y+3]=='.')//7
{
/*
1 1 1 1
1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x][y+3]='F';in['F']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x][y+3]='.';in['F']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-2][y+1]=='.')//4
{
/*
1
1
1 1
1
*/
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x-2][y+1]='F';in['F']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x-2][y+1]='.';in['F']=0;
}
}
if(!in['G'])//4
{
if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.')//1
{
/*
1 1 1
1 1
*/
G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]='G';in['G']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]='.';in['G']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.'&&G[x+2][y]=='.')//2
{
/*
1 1
1
1 1
*/
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]=G[x+2][y]='G';in['G']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]=G[x+2][y]='.';in['G']=0;
}
if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.'&&G[x][y+2]=='.')//3
{
/*
1 1
1 1 1
*/
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]=G[x][y+2]='G';in['G']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]=G[x][y+2]='.';in['G']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.')//4
{
/*
1 1
1
1 1
*/
G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]='G';in['G']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]='.';in['G']=0;
}
}
if(!in['H'])//8
{
if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x][y+2]=='.')//1
{
/*
1 1 1
1 1
*/
G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x][y+2]='H';in['H']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x][y+2]='.';in['H']=0;
}
if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.')//2
{
/*
1 1
1 1
1
*/
G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]='H';in['H']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]='.';in['H']=0;
}
if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-1][y+2]=='.'&&G[x][y+2]=='.')//3
{
/*
1 1
1 1 1
*/
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x][y+2]='H';in['H']=1;
dfs();
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x][y+2]='.';in['H']=0;
}
if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.')//4
{
/*
1
1 1
1 1
*/
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y]=G[x+2][y+1]='H';in['H']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y]=G[x+2][y+1]='.';in['H']=0;
}
if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.')//5
{
/*
1 1
1 1 1
*/
G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]='H';in['H']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]='.';in['H']=0;
}
if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y]=='.')//6
{
/*
1 1
1 1
1
*/
G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y]='H';in['H']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y]='.';in['H']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.')//7
{
/*
1 1 1
1 1
*/
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x][y+2]=G[x+1][y+2]='H';in['H']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x][y+2]=G[x+1][y+2]='.';in['H']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y]=='.'&&G[x-1][y+1]=='.')//8
{
/*
1
1 1
1 1
*/
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y]=G[x-1][y+1]='H';in['H']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y]=G[x-1][y+1]='.';in['H']=0;
}
}
if(!in['I'])//8
{
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x+1][y+2]=='.'&&G[x+1][y+3]=='.')//1
{
/*
1 1 1
1 1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x+1][y+3]='I';in['I']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x+1][y+2]=G[x+1][y+3]='.';in['I']=0;
}
if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-2][y+1]=='.')//2
{
/*
1
1
1 1
1
*/
G[x][y]=G[x+1][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]='I';in['I']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]='.';in['I']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.'&&G[x+1][y+3]=='.')//3
{
/*
1 1
1 1 1
*/
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]=G[x+1][y+3]='I';in['I']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]=G[x+1][y+3]='.';in['I']=0;
}
if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x+1][y]=='.'&&G[x+2][y]=='.')//4
{
/*
1
1 1
1
1
*/
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x+1][y]=G[x+2][y]='I';in['I']=1;
dfs();
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x+1][y]=G[x+2][y]='.';in['I']=0;
}
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x-1][y+2]=='.'&&G[x-1][y+3]=='.')//5
{
/*
1 1
1 1 1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]=G[x-1][y+3]='I';in['I']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x-1][y+2]=G[x-1][y+3]='.';in['I']=0;
}
if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+2][y+1]=='.'&&G[x+3][y+1]=='.')//6
{
/*
1
1
1 1
1
*/
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+3][y+1]='I';in['I']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+2][y+1]=G[x+3][y+1]='.';in['I']=0;
}
if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-1][y+2]=='.'&&G[x-1][y+3]=='.')//7
{
/*
1 1 1
1 1
*/
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x-1][y+3]='I';in['I']=1;
dfs();
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x-1][y+3]='.';in['I']=0;
}
if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.'&&G[x+3][y+1]=='.')//8
{
/*
1
1 1
1
1
*/
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y+1]=G[x+3][y+1]='I';in['I']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y+1]=G[x+3][y+1]='.';in['I']=0;
}
}
if(!in['J'])//1
{
if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x][y+2]=='.')//1
{
/*
1
1 1 1
1
*/
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x][y+2]='J';in['J']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x-1][y+1]=G[x][y+2]='.';in['J']=0;
}
}
if(!in['K'])//4
{
if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.'&&G[x+2][y+2]=='.')//1
{
/*
1
1 1
1 1
*/
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y+1]=G[x+2][y+2]='K';in['K']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+2][y+1]=G[x+2][y+2]='.';in['K']=0;
}
if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-1][y+2]=='.')//2
{
/*
1 1
1 1
1
*/
G[x][y]=G[x+1][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]='K';in['K']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]='.';in['K']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.'&&G[x+2][y+2]=='.')//3
{
/*
1 1
1 1
1
*/
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]=G[x+2][y+2]='K';in['K']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+1][y+2]=G[x+2][y+2]='.';in['K']=0;
}
if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-1][y+2]=='.'&&G[x-2][y+2]=='.')//4
{
/*
1
1 1
1 1
*/
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x-2][y+2]='K';in['K']=1;
dfs();
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-1][y+2]=G[x-2][y+2]='.';in['K']=0;
}
}
if(!in['L'])//8
{
if(G[x+1][y]=='.'&&G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.')//1
{
/*
1 1 1 1
1
*/
G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]='L';in['L']=1;
dfs();
G[x][y]=G[x+1][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]='.';in['L']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y+1]=='.'&&G[x+2][y+1]=='.'&&G[x+3][y+1]=='.')//2
{
/*
1 1
1
1
1
*/
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]=G[x+3][y+1]='L';in['L']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y+1]=G[x+2][y+1]=G[x+3][y+1]='.';in['L']=0;
}
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.'&&G[x-1][y+3]=='.')//3
{
/*
1
1 1 1 1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x-1][y+3]='L';in['L']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x-1][y+3]='.';in['L']=0;
}
if(G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+3][y]=='.'&&G[x+3][y+1]=='.')//4
{
/*
1
1
1
1 1
*/
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+3][y]=G[x+3][y+1]='L';in['L']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+2][y]=G[x+3][y]=G[x+3][y+1]='.';in['L']=0;
}
if(G[x+1][y]=='.'&&G[x+1][y+1]=='.'&&G[x+1][y+2]=='.'&&G[x+1][y+3]=='.')//5
{
/*
1
1 1 1 1
*/
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]=G[x+1][y+3]='L';in['L']=1;
dfs();
G[x][y]=G[x+1][y]=G[x+1][y+1]=G[x+1][y+2]=G[x+1][y+3]='.';in['L']=0;
}
if(G[x][y+1]=='.'&&G[x+1][y]=='.'&&G[x+2][y]=='.'&&G[x+3][y]=='.')//6
{
/*
1 1
1
1
1
*/
G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]=G[x+3][y]='L';in['L']=1;
dfs();
G[x][y]=G[x][y+1]=G[x+1][y]=G[x+2][y]=G[x+3][y]='.';in['L']=0;
}
if(G[x][y+1]=='.'&&G[x][y+2]=='.'&&G[x][y+3]=='.'&&G[x+1][y+3]=='.')//7
{
/*
1 1 1 1
1
*/
G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x+1][y+3]='L';in['L']=1;
dfs();
G[x][y]=G[x][y+1]=G[x][y+2]=G[x][y+3]=G[x+1][y+3]='.';in['L']=0;
}
if(G[x][y+1]=='.'&&G[x-1][y+1]=='.'&&G[x-2][y+1]=='.'&&G[x-3][y+1]=='.')//8
{
/*
1
1
1
1 1
*/
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]=G[x-3][y+1]='L';in['L']=1;
dfs();
G[x][y]=G[x][y+1]=G[x-1][y+1]=G[x-2][y+1]=G[x-3][y+1]='.';in['L']=0;
}
}
}
int main(){
// freopen("123.txt","w",stdout);
memset(in,0,sizeof(in));
for(int i=1;i<=10;++i){
for(int j=1;j<=i;++j){
G[j][i]=read();
if(G[j][i]!='.') in[G[j][i]]=1;
}
}
dfs();
puts("No solution");
return 0;
}