
#include<stdio.h>
#include<string.h>
int main()
{
int chang=0,i,bu=0,m,n,kaishi;
char str1[500001];
gets(str1);
n=strlen(str1);
for(i=0;i<n;i++){
if(str1[i]==str1[i+1]&&str1[i]==' '){
for(m=i;m<n;m++){
str1[m]=str1[m+1];
}
bu++;
i--;
}
}
//遍历查找空格,发现空格向前覆盖
str1[n-bu]='\0';
//去除最后一位因为向前覆盖造成的重复
if(str1[n-bu-1]==' '){
str1[n-bu-1]='\0';
}
//若输入时最后一位带有空格,去除输入字符串时,最后一位带有的空格
n=strlen(str1);
i=strlen(str1);
while(i>=0){
if(str1[i]==' '||i==0){
if(str1[i]==' ')
kaishi=i+1;
else if(i==0)
kaishi=i;
//从后向前查找字符的开头,将开头的下标赋值给kaishi
for(chang=kaishi;chang<n;chang++){
printf("%c",str1[chang]);
}
//开始打印字符
if(i!=0)
printf(" ");
//若未读到第一个字符输出空格
n=i;
//因为打印了部分字符所以应该打印字符遍历的界限改变
}
i--;
}
return 0;
}