//土尔逊Torson 在2023/2/5 日 编写
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <string>

using namespace std;

int main() {
    char str[80] = { 0 };
    char pic[80][80] = { 0 };
    while (scanf("%s", &str) != EOF) {
        int size = 0;

        // 计算每条字符串的长度
        for (int i = 0; i < 80; ++i) {
            if (str[i] != 0) {
                size++;
            } else {
                break;
            }
        }
        int n = (size + 2) /
                3; //对字符串长度除以3,取下整数 (就是U型的左垂直在字符中的前N个字符数)
        int m = (size + 2) % 3; //对字符串长度取3的余数
        int bottom = n +
                     m; //是U型的底边数 (从字符串第 N+1 字符起 bottom 个在字符串中的字符数)
        int x = 0, y = 0; //U型图样字符坐标
        //绘制U型图

        //初始化U型图底层(第一层)为空格 ' '字符
        for (int i = 0; i < bottom; ++i) {
            for (int j = 0; j < bottom; ++j) {
                pic[i][j] = ' ';
            }
        }

        //绘制第二层就是U型图形

        //绘制左垂直线
        for (int i = x, j = y, k = 0; i < n - 1; ++i, ++k) {
            pic[i][j] = str[k];
        }

        //绘制底边
        for (int i = x + n - 1, j = y, k = n - 1 ; j < bottom; ++j, ++k) {
            pic[i][j] = str[k];
        }

        //绘制右垂直线
        for (int i = x + n - 2, j = y + bottom - 1, k = n - 1 + bottom; i >= 0;
                --i, ++k) {
            pic[i][j] = str[k];
        }

        //绘制最终图像
        for (int i = 0; i < bottom; ++i) {
            printf("%s\n", pic[i]);
        }
        //printf("str=%s size=%d n=%d m=%d\n", str, size, n, m); // 调试函数

        // 每次处理完一串字符就进行一次初始化为 0
        for (int i = 0; i < 80; ++i) {
            str[i] = 0;
            for (int j = 0; j < 80; ++j) {
                pic[i][j] = 0;
            }
        }

    }
    //system("pause");
    return EXIT_SUCCESS;
}