#include<stdio.h>
#include<string.h>
#include<assert.h>
void nb2(char* arr)
{
	int right = strlen(arr) - 1;
	char left = *arr;
	*arr = *(arr + right);
	*(arr + right) = '\0';
	if (strlen(arr + 1) >= 2)
		nb2(arr + 1);
	*(arr + right) = left;
}
void nb3(char* arr)
{
	int left = 0;
	int right = 0;
	int i = 0;
	while (i <= strlen(arr) - 1)
	{
		while ( arr[i] != 32 && i <= strlen(arr) - 1) //这里的空格判断【32】,不要写成arr[i] != '32'【这样是不等于3和2的ASCII码】
		{                                             //而写成arr[i] != 32才是正确的。
			i++;
		}
		right = i - 1;
		while (left < right)
		{
			char temp = *(arr + left);
			*(arr + left) = *(arr + right);
			*(arr + right) = temp;
			left++;
			right--;
		}
		left = i + 1;
		i++;
	}
}
void nb(char* arr)  //abc. _nb?  "cnm" == "mnc"  ?bn_ .cba == "cnm" _nb? abc.
{
	assert(arr != NULL);
	nb2(arr); //整体逆置
	nb3(arr); //部分逆置
}
int main()
{
	char arr[101] = { 0 }; //abc. _nb? "cnm" == "mnc" ?bn_ .cba == "cnm" _nb? abc.
	char ch;
	int i = 0;
	for (i = 0; (ch = getchar()) != '\n' && ch != EOF; i++)
	{
		arr[i] = ch;
	}
	nb(arr);
	printf("%s\n", arr);
	return 0;
}