/*
 * 题目分析: 提取有效字符并倒序
 * 解题思路: 
 *    1. 遍历字符串, 将非法字符替换为空格
 *    2. 以空格作为pattern将字符串分割为字符串数组
 *    2. 倒序输出字符串数组即可
 * 提交失败: 
 *    1. splite()切割时,连续的空格之间会产生空字符串占一个数组元素,导致单词间打印多个空格
 *    2. 忘记删掉调试打印的内容了...
 *    3. 空格空格空格, 不知道哪里多了个空格...重新用ArrayList写了...
 */
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            ArrayList<String> list = new ArrayList<String>();
            // 在字符串后追加1个非法字符, 否则最后一个单词无法被记录
            String str = sc.nextLine() + "0";
            int start = 0;
            // 初始状态为未存储, 有合法字符再置为false, 否则当字符串前置非法字符时会打印额外的空格
            boolean isSaved = true;
            for (int i = 0; i < str.length(); i++) {
                char ch = str.charAt(i);
                if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z') {
                    isSaved = false;
                    continue;
                }

                if (!isSaved) {
                    list.add(str.substring(start, i));
                    isSaved = true;
                    start = i;
                }
                start++;
            }

            for (int i = list.size() - 1; i > 0; i--) {
                System.out.print(list.get(i) + " ");
            }
            System.out.println(list.get(0));
        }
    }

/*
    // 开始的解题方法, 懒得去处理空格了(其实是不会)
    // 改进: 调用splite()使用正则表达式 "[^A-Za-z]+"
    public static void mainFailed(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            StringBuffer sb = new StringBuffer(sc.nextLine());
            for (int i = 0; i < sb.length(); i++) {
                char ch = sb.charAt(i);
                if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z') {
                    continue;
                }

                sb.replace(i, i + 1, " ");
            }

            String[] sts = sb.toString().split(" ");
            for (int i = sts.length - 1; i > 0; i--) {
                if (sts[i].equals("")) {
                    continue;
                }
                System.out.print(sts[i] + " ");
            }
            System.out.println(sts[0]);
        }
    }
*/
}