#include <iostream>
#include <cstring>
using namespace std;
const int MAX_SIZE = 100;
bool isLetter(char a) {
if ((a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z')) {
return true;
}
return false;
}
void changeWord(char a[]) {
int n = strlen(a);
char b[n];
if (n % 2 == 0) {
int index = n / 2;
for (int i = 0; i < n; ++i) {
b[i] = a[index];
++index;
if (index == n) {
index = 0;
}
}
} else if (n % 2 != 0) {
int index = n / 2 + 1;
for (int i = 0; i < n; ++i) {
b[i] = a[index];
++index;
if (index == n) {
index = 0;
++i;
b[i] = a[n / 2];
}
}
}
b[n] = '\0';
strcpy(a, b);
}
void makeInversRow(char a[]) {
int n = strlen(a), j = 0, firstSign = 0;
char word[MAX_SIZE];
for (int i = 0; i < n; ++i) {
if (isLetter(a[i])) {
word[j++] = a[i];//make the word
firstSign = 0;
} else {
if (firstSign == 0) {
changeWord(word);//when is not letter, cout the new word
cout << word;
}
firstSign = 1;
cout << a[i];
j = 0;
}
if (i == n - 1 && isLetter(a[i])) {
changeWord(word);
cout << word;
}
}
}
int main() {
char row[MAX_SIZE];
while (!cin.eof()) {
cin.getline(row, MAX_SIZE);
}
makeInversRow(row);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNQVhfU0laRSA9IDEwMDsKCmJvb2wgaXNMZXR0ZXIoY2hhciBhKSB7CiAgICBpZiAoKGEgPj0gJ2EnICYmIGEgPD0gJ3onKSB8fCAoYSA+PSAnQScgJiYgYSA8PSAnWicpKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgcmV0dXJuIGZhbHNlOwp9Cgp2b2lkIGNoYW5nZVdvcmQoY2hhciBhW10pIHsKICAgIGludCBuID0gc3RybGVuKGEpOwogICAgY2hhciBiW25dOwogICAgaWYgKG4gJSAyID09IDApIHsKICAgICAgICBpbnQgaW5kZXggPSBuIC8gMjsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICBiW2ldID0gYVtpbmRleF07CiAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAgICAgIGlmIChpbmRleCA9PSBuKSB7CiAgICAgICAgICAgICAgICBpbmRleCA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgaWYgKG4gJSAyICE9IDApIHsKICAgICAgICBpbnQgaW5kZXggPSBuIC8gMiArIDE7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICAgICAgYltpXSA9IGFbaW5kZXhdOwogICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICBpZiAoaW5kZXggPT0gbikgewogICAgICAgICAgICAgICAgaW5kZXggPSAwOwogICAgICAgICAgICAgICAgKytpOwogICAgICAgICAgICAgICAgYltpXSA9IGFbbiAvIDJdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgYltuXSA9ICdcMCc7CiAgICBzdHJjcHkoYSwgYik7Cn0KCnZvaWQgbWFrZUludmVyc1JvdyhjaGFyIGFbXSkgewoJaW50IG4gPSBzdHJsZW4oYSksIGogPSAwLCBmaXJzdFNpZ24gPSAwOwoJY2hhciB3b3JkW01BWF9TSVpFXTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJaWYgKGlzTGV0dGVyKGFbaV0pKSB7CgkJCXdvcmRbaisrXSA9ICBhW2ldOy8vbWFrZSB0aGUgd29yZAoJCQlmaXJzdFNpZ24gPSAwOwoJCX0gZWxzZSB7CgkJCWlmIChmaXJzdFNpZ24gPT0gMCkgewoJCQkJY2hhbmdlV29yZCh3b3JkKTsvL3doZW4gaXMgbm90IGxldHRlciwgY291dCB0aGUgbmV3IHdvcmQKCQkJCWNvdXQgPDwgd29yZDsKCQkJfQoJCQlmaXJzdFNpZ24gPSAxOwoJCQljb3V0IDw8IGFbaV07CgkJCWogPSAwOwoJCX0KCQlpZiAoaSA9PSBuIC0gMSAmJiBpc0xldHRlcihhW2ldKSkgewoJCQljaGFuZ2VXb3JkKHdvcmQpOwoJCQljb3V0IDw8IHdvcmQ7CgkJfQoJfQp9CmludCBtYWluKCkgewoJY2hhciByb3dbTUFYX1NJWkVdOwoJd2hpbGUgKCFjaW4uZW9mKCkpIHsKCQljaW4uZ2V0bGluZShyb3csIE1BWF9TSVpFKTsKCX0KCW1ha2VJbnZlcnNSb3cocm93KTsKCXJldHVybiAwOwp9