
#include<iostream>
#include<cstring>
#include<list>
#include<string>
using namespace std;
int main()
{
list<char> list1 ;
char str[50000] ;
while(cin.getline(str,50000))
{
int n = strlen(str) ;
for(int i=n-1;i>=0;i--)
{
char c = str[i] ;
char c1 = str[i-1] ;
if(c==' ')
printf(" ") ;
else
list1.push_back(c) ;
if(c!=' '&&c1==' ')
{
list<char>::iterator it=list1.begin();
list1.reverse() ;
for(it=list1.begin();it!=list1.end();it++)
printf("%c",*it) ;
list1.clear() ;
}
}
list1.reverse() ;
list<char>::iterator it=list1.begin();
for(it=list1.begin();it!=list1.end();it++)
printf("%c",*it) ;
printf("\n") ;
list1.clear() ;
}
return 0 ;
}
void reverse(char *s, int n)
{
char *p = s + n - 1, c;
while (s <= p)
{
c = *s;
*s++ = *p;
*p-- = c;
}
}
int main()
{
char list[100];
char str[50000];
char ch;
int n = 0, k = 0;
while ((ch = getchar()) != '\n')
{
str[n++] = ch;
}
str[n] = '\0';
for (int i = n - 1; i >= 0; i--)
{
char c = str[i];
char c1 = str[i - 1];
if (c == ' ')
printf(" ");
else
list[k++] = c;
if (c != ' ' && c1 == ' ')
{
list[k] = '\0';
reverse(list, k);
printf("%s", list);
k = 0;
}
}
list[k] = '\0';
reverse(list, k);
printf("%s", list);
printf("\n");
return 0;
}