#include<bits/stdc++.h>
#define endl '\n';
#define int long long
using namespace std;
const int N = 50;
string s[10];
int len[10], n, m;
char ans[N][N];
void Solve(){
int n = 6;
for(int i = 1; i <= n; i++){
cin >> s[i];
len[i] = s[i].size();
s[i] = " " + s[i];
}
for(int a1 = 1; a1 <= n; a1++){
for(int a2 = 1; a2 <= n; a2++){
if(a2 != a1){
for(int a3 = 1; a3 <= n; a3++){
if(a3 != a2 && a3 != a1){
for(int a4 = 1; a4 <= n; a4++){
if(a4 != a3 && a4 != a2 && a4 != a1){
for(int a5 = 1; a5 <= n; a5++){
if(a5 != a4 && a5 != a3 && a5 != a2 && a5 != a1){
for(int a6 = 1; a6 <= n; a6++){
if(a6 != a5 && a6 != a4 && a6 != a3 && a6 != a2 && a6 != a1){
if(len[a2] + len[a6] == len[a4] && len[a1] + len[a5] == len[a3]){
if(s[a1][1] == s[a2][1] && s[a1][len[a1]] == s[a4][1] && s[a2][len[a2]] == s[a3][1] && s[a4][len[a2]] == s[a3][len[a1]] && s[a3][len[a3]] == s[a6][1] && s[a4][len[a4]] == s[a5][1] && s[a6][len[a6]] == s[a5][len[a5]]){
int n = len[a4], m = len[a3];
for(int i = 1; i <= len[a1]; i++){
ans[1][i] = s[a1][i];
}
for(int i = 1; i <= len[a2]; i++){
ans[i][1] = s[a2][i];
}
for(int i = 1; i <= len[a4]; i++){
ans[i][len[a1]] = s[a4][i];
}
for(int i = 1; i <= len[a3]; i++){
ans[len[a2]][i] = s[a3][i];
}
for(int i = len[a2] + 1; i <= len[a4]; i++){
ans[i][m] = s[a6][i - len[a2]];
}
for(int i = len[a1] + 1; i <= len[a3]; i++){
ans[n][i] = s[a5][i - len[a1]];
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(ans[i][j] == ' '){
ans[i][j] = '.';
}
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cout << ans[i][j];
}
cout << endl;
}
return ;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
signed main(){
Solve();
return 0;
}
这题代码比线段树都恶心,太恶臭了。