#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
void reverse(char *p,char *k)
{
swap(*(p++),*(--k));
if(p<k) reverse(p,k);
}
void wreverse(char *p,char *k)
{
if(*p==' ') wreverse(p+1,p+1);
else if((*k)&&(*k!=' ')) wreverse(p,k+1);
else
{
if(p<k) reverse(p,k);
if(*k) wreverse(k,k);
}
}
int main()
{
const char tb[]="Ala ma czarnego kota";
char str[sizeof(tb)];
memcpy(str,tb,sizeof(tb));
reverse(str,str+strlen(str));
wreverse(str,str);
cout<<str<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgcmV2ZXJzZShjaGFyICpwLGNoYXIgKmspCiAgewogICBzd2FwKCoocCsrKSwqKC0taykpOwogICBpZihwPGspIHJldmVyc2UocCxrKTsKICB9Cgp2b2lkIHdyZXZlcnNlKGNoYXIgKnAsY2hhciAqaykKICB7CiAgIGlmKCpwPT0nICcpIHdyZXZlcnNlKHArMSxwKzEpOwogICBlbHNlIGlmKCgqaykmJigqayE9JyAnKSkgd3JldmVyc2UocCxrKzEpOwogICBlbHNlCiAgICAgewogICAgICBpZihwPGspIHJldmVyc2UocCxrKTsKICAgICAgaWYoKmspIHdyZXZlcnNlKGssayk7CiAgICAgfQogIH0KCmludCBtYWluKCkKICB7CiAgIGNvbnN0IGNoYXIgdGJbXT0iQWxhIG1hIGN6YXJuZWdvIGtvdGEiOwogICBjaGFyIHN0cltzaXplb2YodGIpXTsKICAgbWVtY3B5KHN0cix0YixzaXplb2YodGIpKTsKICAgcmV2ZXJzZShzdHIsc3RyK3N0cmxlbihzdHIpKTsKICAgd3JldmVyc2Uoc3RyLHN0cik7CiAgIGNvdXQ8PHN0cjw8ZW5kbDsKICAgcmV0dXJuIDA7CiAgfQ==