#include <iostream>
#include <cstring>
using namespace std;
const long long MAX_SIZE = 2000 ;
int main( ) {
char array[ MAX_SIZE + 1 ] ;
long long lg, j;
char letters = 0 , words = 0 ;
while ( ! cin .eof ( ) ) {
cin .getline ( array, MAX_SIZE + 1 ) ;
lg = strlen ( array) ;
for ( int i = 0 ; i < lg; ++ i) {
if ( ( array[ i] >= 'A' && array[ i] <= 'Z' ) || ( array[ i] >= 'a' && array[ i] <= 'z' ) ) {
++ letters;
words = 1 ;
} else if ( words == 1 ) {
long long inverse_word = i - letters;
for ( int j = inverse_word; j < inverse_word + letters / 2 ; ++ j) {
char aux = array[ j] ;
array[ j] = array[ ( letters + 1 ) / 2 + j] ;
array[ ( letters + 1 ) / 2 + j] = aux;
}
letters = 0 ;
words = 0 ;
}
cout << array[ j] ;
}
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNQVhfU0laRSA9IDIwMDA7CgppbnQgbWFpbigpIHsKCWNoYXIgYXJyYXlbTUFYX1NJWkUgKyAxXTsKCWxvbmcgbG9uZyBsZywgajsKCWNoYXIgbGV0dGVycyA9IDAsIHdvcmRzID0gMDsKCXdoaWxlICghY2luLmVvZigpKSB7CgkJY2luLmdldGxpbmUoYXJyYXksIE1BWF9TSVpFICsgMSk7CgkJbGcgPSBzdHJsZW4oYXJyYXkpOwoJCWZvcihpbnQgaSA9IDA7IGkgPCBsZzsgKytpKSB7CgkJCWlmICgoYXJyYXlbaV0gPj0gJ0EnICYmIGFycmF5W2ldIDw9ICdaJykgfHwgKGFycmF5W2ldID49ICdhJyAmJiBhcnJheVtpXSA8PSAneicpKSB7CgkJCQkrK2xldHRlcnM7CgkJCQl3b3JkcyA9IDE7CgkJCX0gZWxzZSBpZiAod29yZHMgPT0gMSkgewoJCQkJbG9uZyBsb25nIGludmVyc2Vfd29yZCA9IGkgLSBsZXR0ZXJzOwoJCQkJZm9yIChpbnQgaiA9IGludmVyc2Vfd29yZDsgaiA8IGludmVyc2Vfd29yZCArIGxldHRlcnMgLyAyOyArK2opIHsKCQkJCQljaGFyIGF1eCA9IGFycmF5W2pdOwoJCQkJCWFycmF5W2pdID0gYXJyYXlbKGxldHRlcnMgKyAxKSAvIDIgKyBqXTsKCQkJCQlhcnJheVsobGV0dGVycyArIDEpIC8gMiArIGpdID0gYXV4OwoJCQkJfQoJCQkJbGV0dGVycyA9IDA7CgkJCQl3b3JkcyA9IDA7CgkJCX0KCQkJY291dCA8PCBhcnJheVtqXTsKCQl9CgkJCgl9CglyZXR1cm4gMDsKfQ==
stdin
U2UgZMSDIHVuIHRleHQgZm9ybWF0IApkaW4gbWFpIG11bHRlIGN1dmludGUsIApzZW1uZSBkZSBwdW5jdHVhyJtpZSDImWkgY2FyYWN0ZXJlIHNwZWNpYWxlIGNhcmUgcG90IGZpIHN0b2NhdGUgZm9sb3NpbmQgY2hhci4gU8SDIHNlIGludGVyc2NoaW1iZSBwZW50cnUgZmllY2FyZSBjdXYmYWNpcmM7bnQgcHJpbWEgcGFydGUgYSBzYSBjdSB1bHRpbWEgcGFydGUgYSBzYS4gJkljaXJjO24gY2F6dWwgJmljaXJjO24gY2FyZSBjdXYmYWNpcmM7bnR1bCBhcmUgbHVuZ2ltZSBpbXBhcsSDLCBsaXRlcmEgZGluIG1pamxvYyByxINtJmFjaXJjO25lIHBlIHBvemnIm2lhIHNhLgpVbiBjdXYmYWNpcmM7bnQgZXN0ZSBvIHN1Y2Nlc2l1bmUgZGUgbGl0ZXJlIG1hcmkgyJlpIG1pY2kgYWxlIGFsZmFiZXR1bHVpIGVuZ2xlei4KRGF0ZSBkZSBpbnRyYXJlClNlIHZhIGNpdGkgdGV4dHVsLCBjYXJlIHNlIHBvYXRlIGFmbGEgcGUgbWFpIG11bHRlIGxpbmlpLgpEYXRlIGRlIGllyJlpcmUKUHJvZ3JhbXVsIHZhIGFmaciZYSB0ZXh0dWwgZHVwxIMgYXBsaWNhcmVhIHRyYW5zZm9ybcSDcmlsb3IgY2VydXRlLgpSZXN0cmljyJtpaSDImWkgcHJlY2l6xINyaQpMdW5naW1lYSB0b3RhbMSDIGEgdGV4dHVsdWkgZXN0ZSBtYWkgbWljxIMgc2F1IGVnYWzEgyBjdSAyIDAwMC4KRXhlbXBsZQpEYXRlIGRlIGludHJhcmUK
Se dă un text format
din mai multe cuvinte,
semne de punctuație și caractere speciale care pot fi stocate folosind char. Să se interschimbe pentru fiecare cuvânt prima parte a sa cu ultima parte a sa. În cazul în care cuvântul are lungime impară, litera din mijloc rămâne pe poziția sa.
Un cuvânt este o succesiune de litere mari și mici ale alfabetului englez.
Date de intrare
Se va citi textul, care se poate afla pe mai multe linii.
Date de ieșire
Programul va afișa textul după aplicarea transformărilor cerute.
Restricții și precizări
Lungimea totală a textului este mai mică sau egală cu 2 000.
Exemple
Date de intrare