#define P B[i][l]
#define m malloc(99)
V
,S
,J
;char**Z
,*L
,*G
,*u
;i
,j
,l
,n
,H
,c
;N
,M
;I
(B
,h
)char**B
;{V
=strlen(*B
);S
=J
=i
=0;Z
=m
;for(j
=h
-1;i
<-~h
/2;i
++,j
--)for(l
=0,n
=V
-1;l
<-~V
/2;l
++,n
--)P
-43&&(B
[i
][l
-1]-43&&!i
||i
&&B
[i
-1][l
]-43&&!l
)?H
=P
,P
=B
[j
][l
]=B
[i
][n
]=B
[j
][n
]=32,N
=i
+l
-1,H
==45?c
=N
-(M
=j
-l
+1)?45:61,M
<0?L
[V
]=!memset(Z
[J
++]=L
=m
,32,V
),L
[l
]=L
[n
]=c
:(B
[N
][l
]=B
[N
][n
]=B
[M
][l
]=B
[M
][n
]=c
):H
=='|'?c
=N
-(M
=n
-i
+1)?'|':34,M
>=0?B
[i
][N
]=B
[j
][N
]=B
[i
][M
]=B
[j
][M
]=c
:sprintf(B
[i
]=B
[j
]=G
=m
,"|%*s%$1*$3s|",i
-n
-2,B
[i
],"")+S
++:0:0;for(H
=-J
;++H
<=h
+J
;N
=S
+1-strlen(u
)/2,printf("%*s\n",N
>0?N
:0,u
))u
=H
<1?Z
[-H
]:h
/H
?B
[H
-1]:Z
[H
+~h
];}
main(){
char b[]="+------+\0| |\0| |\0| |\0| |\0| |\0| |\0| |\0+------+";
char*c[]={b,b+9,b+18,b+27,b+36,b+45,b+54,b+63,b+72};
I(c,9);
char d[]="+------------+\0| |\0| |\0+------------+";
char*e[]={d,d+15,d+30,d+45};
I(e,4);
}
I2RlZmluZSBQIEJbaV1bbF0KI2RlZmluZSBtIG1hbGxvYyg5OSkKVixTLEo7Y2hhcioqWiwqTCwqRywqdTtpLGosbCxuLEgsYztOLE07SShCLGgpY2hhcioqQjt7Vj1zdHJsZW4oKkIpO1M9Sj1pPTA7Wj1tO2ZvcihqPWgtMTtpPC1+aC8yO2krKyxqLS0pZm9yKGw9MCxuPVYtMTtsPC1+Vi8yO2wrKyxuLS0pUC00MyYmKEJbaV1bbC0xXS00MyYmIWl8fGkmJkJbaS0xXVtsXS00MyYmIWwpP0g9UCxQPUJbal1bbF09QltpXVtuXT1CW2pdW25dPTMyLE49aStsLTEsSD09NDU/Yz1OLShNPWotbCsxKT80NTo2MSxNPDA/TFtWXT0hbWVtc2V0KFpbSisrXT1MPW0sMzIsViksTFtsXT1MW25dPWM6KEJbTl1bbF09QltOXVtuXT1CW01dW2xdPUJbTV1bbl09Yyk6SD09J3wnP2M9Ti0oTT1uLWkrMSk/J3wnOjM0LE0+PTA/QltpXVtOXT1CW2pdW05dPUJbaV1bTV09QltqXVtNXT1jOnNwcmludGYoQltpXT1CW2pdPUc9bSwifCUqcyUkMSokM3N8IixpLW4tMixCW2ldLCIiKStTKys6MDowO2ZvcihIPS1KOysrSDw9aCtKO049UysxLXN0cmxlbih1KS8yLHByaW50ZigiJSpzXG4iLE4+MD9OOjAsdSkpdT1IPDE/WlstSF06aC9IP0JbSC0xXTpaW0grfmhdO30KCm1haW4oKXsKICBjaGFyIGJbXT0iKy0tLS0tLStcMHwgICAgICB8XDB8ICAgICAgfFwwfCAgICAgIHxcMHwgICAgICB8XDB8ICAgICAgfFwwfCAgICAgIHxcMHwgICAgICB8XDArLS0tLS0tKyI7CiAgY2hhcipjW109e2IsYis5LGIrMTgsYisyNyxiKzM2LGIrNDUsYis1NCxiKzYzLGIrNzJ9OwogIEkoYyw5KTsKCiAgY2hhciBkW109IistLS0tLS0tLS0tLS0rXDB8ICAgICAgICAgICAgfFwwfCAgICAgICAgICAgIHxcMCstLS0tLS0tLS0tLS0rIjsKICBjaGFyKmVbXT17ZCxkKzE1LGQrMzAsZCs0NX07CiAgSShlLDQpOwp9