#include <iostream>
#include <cstring>
using namespace std;
const int MAX_SIZE_COL = 1000;
const int MAX_SIZE_LINE = 20;
void readInput(char textLineParam[][MAX_SIZE_COL + 1], int &charsMaxNoParam,
int &lineParam) {
int charsNo;
while (cin.getline(textLineParam[lineParam], MAX_SIZE_COL + 1)) {
charsNo = strlen(textLineParam[lineParam]);
if (charsNo > charsMaxNoParam) {
charsMaxNoParam = charsNo;
}
++lineParam;
}
}
void trimTrailingStars(char textLineParam[], int &charsNoParam) {
int newCharsNo = charsNoParam;
while (textLineParam[newCharsNo - 1] == '*') {
--newCharsNo;
}
if (newCharsNo < charsNoParam) {
char textLineAux[MAX_SIZE_COL + 1];
textLineAux[0] = '\0';
for (int k = 0; k <= newCharsNo - 1; ++k) {
textLineAux[k] = textLineParam[k];
}
textLineAux[newCharsNo] = '\0';
strcpy(textLineParam, textLineAux);
charsNoParam = newCharsNo;
}
}
void alignRight(char textLine[], int charsMaxNo, int charsNo) {
int endPos = charsNo;
for (int j = 0; j < charsMaxNo - charsNo; ++j) {
for (int k = endPos; k >= 0; --k) {
textLine[k + 1] = textLine[k];
}
textLine[0] = '*';
++endPos;
}
}
void processLines(char textLineParam[][MAX_SIZE_COL + 1], int charsMaxNoParam,
int lineParam) {
for (int i = 1; i < lineParam; ++i) {
int charsNo = strlen(textLineParam[i]);
trimTrailingStars(textLineParam[i], charsNo);
alignRight(textLineParam[i], charsMaxNoParam, charsNo);
cout << textLineParam[i] << "\n";
}
}
int main() {
char textLine[MAX_SIZE_LINE + 1][MAX_SIZE_COL + 1];
int charsMaxNo = 0, line = 1;
readInput(textLine, charsMaxNo, line);
processLines(textLine, charsMaxNo, line);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNQVhfU0laRV9DT0wgPSAxMDAwOwpjb25zdCBpbnQgTUFYX1NJWkVfTElORSA9IDIwOwoKdm9pZCByZWFkSW5wdXQoY2hhciB0ZXh0TGluZVBhcmFtW11bTUFYX1NJWkVfQ09MICsgMV0sIGludCAmY2hhcnNNYXhOb1BhcmFtLCAKICAgIGludCAmbGluZVBhcmFtKSB7CiAgICBpbnQgY2hhcnNObzsKICAgIHdoaWxlIChjaW4uZ2V0bGluZSh0ZXh0TGluZVBhcmFtW2xpbmVQYXJhbV0sIE1BWF9TSVpFX0NPTCArIDEpKSB7CiAgICAgICAgY2hhcnNObyA9IHN0cmxlbih0ZXh0TGluZVBhcmFtW2xpbmVQYXJhbV0pOwogICAgICAgIGlmIChjaGFyc05vID4gY2hhcnNNYXhOb1BhcmFtKSB7CiAgICAgICAgICAgIGNoYXJzTWF4Tm9QYXJhbSA9IGNoYXJzTm87CiAgICAgICAgfQogICAgICAgICsrbGluZVBhcmFtOwogICAgfQp9Cgp2b2lkIHRyaW1UcmFpbGluZ1N0YXJzKGNoYXIgdGV4dExpbmVQYXJhbVtdLCBpbnQgJmNoYXJzTm9QYXJhbSkgewogICAgaW50IG5ld0NoYXJzTm8gPSBjaGFyc05vUGFyYW07CiAgICB3aGlsZSAodGV4dExpbmVQYXJhbVtuZXdDaGFyc05vIC0gMV0gPT0gJyonKSB7CiAgICAgICAgLS1uZXdDaGFyc05vOwogICAgfQogICAgaWYgKG5ld0NoYXJzTm8gPCBjaGFyc05vUGFyYW0pIHsKICAgICAgICBjaGFyIHRleHRMaW5lQXV4W01BWF9TSVpFX0NPTCArIDFdOwogICAgICAgIHRleHRMaW5lQXV4WzBdID0gJ1wwJzsKICAgICAgICBmb3IgKGludCBrID0gMDsgayA8PSBuZXdDaGFyc05vIC0gMTsgKytrKSB7CiAgICAgICAgICAgIHRleHRMaW5lQXV4W2tdID0gdGV4dExpbmVQYXJhbVtrXTsKICAgICAgICB9CiAgICAgICAgdGV4dExpbmVBdXhbbmV3Q2hhcnNOb10gPSAnXDAnOwogICAgICAgIHN0cmNweSh0ZXh0TGluZVBhcmFtLCB0ZXh0TGluZUF1eCk7CiAgICAgICAgY2hhcnNOb1BhcmFtID0gbmV3Q2hhcnNObzsKICAgIH0KfQoKdm9pZCBhbGlnblJpZ2h0KGNoYXIgdGV4dExpbmVbXSwgaW50IGNoYXJzTWF4Tm8sIGludCBjaGFyc05vKSB7CiAgICBpbnQgZW5kUG9zID0gY2hhcnNObzsKICAgIGZvciAoaW50IGogPSAwOyBqIDwgY2hhcnNNYXhObyAtIGNoYXJzTm87ICsraikgewogICAgICAgIGZvciAoaW50IGsgPSBlbmRQb3M7IGsgPj0gMDsgLS1rKSB7CiAgICAgICAgICAgIHRleHRMaW5lW2sgKyAxXSA9IHRleHRMaW5lW2tdOwogICAgICAgIH0KICAgICAgICB0ZXh0TGluZVswXSA9ICcqJzsKICAgICAgICArK2VuZFBvczsKICAgIH0KfQoKdm9pZCBwcm9jZXNzTGluZXMoY2hhciB0ZXh0TGluZVBhcmFtW11bTUFYX1NJWkVfQ09MICsgMV0sIGludCBjaGFyc01heE5vUGFyYW0sIAogICAgaW50IGxpbmVQYXJhbSkgewogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBsaW5lUGFyYW07ICsraSkgewogICAgICAgIGludCBjaGFyc05vID0gc3RybGVuKHRleHRMaW5lUGFyYW1baV0pOwogICAgICAgIHRyaW1UcmFpbGluZ1N0YXJzKHRleHRMaW5lUGFyYW1baV0sIGNoYXJzTm8pOwogICAgICAgIGFsaWduUmlnaHQodGV4dExpbmVQYXJhbVtpXSwgY2hhcnNNYXhOb1BhcmFtLCBjaGFyc05vKTsKICAgICAgICBjb3V0IDw8IHRleHRMaW5lUGFyYW1baV0gPDwgIlxuIjsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBjaGFyIHRleHRMaW5lW01BWF9TSVpFX0xJTkUgKyAxXVtNQVhfU0laRV9DT0wgKyAxXTsKICAgIGludCBjaGFyc01heE5vID0gMCwgbGluZSA9IDE7CiAgICByZWFkSW5wdXQodGV4dExpbmUsIGNoYXJzTWF4Tm8sIGxpbmUpOwogICAgcHJvY2Vzc0xpbmVzKHRleHRMaW5lLCBjaGFyc01heE5vLCBsaW5lKTsKICAgIHJldHVybiAwOwp9