#include<bits/stdc++.h>
//和单词倒排一样
using namespace std;
char a[10010];
int b[10010];//用于记录每一个单词开头的位置
int main(){
      scanf("%[^\n]",a);//使用%[^\n]输入带空格的一行
      int r,l,num=0;
      int len=strlen(a);
 
 int p=0;//用于判定i前一个字符是否为字母

 for(int i=0;i<len;i++){
 if(p==1&&((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')))continue;
//如果该点为字母且前一个字符也是字母,跳过
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')){
b[num++]=i;p=1;//前一个字符为非字母,且该点为字母,意味该点为单词开头,记录该点,并且把p置为1
}
else p=0;//如果是非字母,p置为0
 }
 
for(int i=num-1;i>=0;i--){
    for(int j=b[i];(a[j]>='a'&&a[j]<='z')||(a[j]>='A'&&a[j]<='Z');j++){
        printf("%c",a[j]);
    }
    printf(" ");
}
return 0;
}