#include <iostream>
#include <algorithm>
#include <string>
#include <locale>
int main() {
using namespace std;
using namespace std::placeholders;
typedef std::string String;
typedef String::value_type char_type;
String input = "how are you";
locale default_locale;
auto is_graph = bind( isgraph<char_type>, _1, cref(default_locale) );
auto is_digit = bind( isspace<char_type>, _1, cref(default_locale) );
for( String::iterator rev_begin = input.begin(), rev_end;
rev_begin != input.end(); rev_begin = rev_end ) {
rev_begin = find_if( rev_begin, input.end(), is_graph );
rev_end = find_if( rev_begin, input.end(), is_digit );
if( rev_begin == input.end() )
break;
reverse( rev_begin, rev_end );
}
cout << input << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bG9jYWxlPgogCmludCBtYWluKCkgewogICAgCiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6cGxhY2Vob2xkZXJzOwogICAgCiAgICB0eXBlZGVmIHN0ZDo6c3RyaW5nIFN0cmluZzsKICAgIHR5cGVkZWYgU3RyaW5nOjp2YWx1ZV90eXBlIGNoYXJfdHlwZTsKICAgIAogICAgU3RyaW5nIGlucHV0ID0gImhvdyBhcmUgeW91IjsKICAgIGxvY2FsZSBkZWZhdWx0X2xvY2FsZTsKICAgIAogICAgYXV0byBpc19ncmFwaCA9IGJpbmQoIGlzZ3JhcGg8Y2hhcl90eXBlPiwgXzEsIGNyZWYoZGVmYXVsdF9sb2NhbGUpICk7CiAgICBhdXRvIGlzX2RpZ2l0ID0gYmluZCggaXNzcGFjZTxjaGFyX3R5cGU+LCBfMSwgY3JlZihkZWZhdWx0X2xvY2FsZSkgKTsKICAgIAogICAgZm9yKCBTdHJpbmc6Oml0ZXJhdG9yIHJldl9iZWdpbiA9IGlucHV0LmJlZ2luKCksIHJldl9lbmQ7CiAgICAgICAgIHJldl9iZWdpbiAhPSBpbnB1dC5lbmQoKTsgcmV2X2JlZ2luID0gcmV2X2VuZCApIHsKICAgICAgICAKICAgICAgICByZXZfYmVnaW4gPSBmaW5kX2lmKCByZXZfYmVnaW4sIGlucHV0LmVuZCgpLCBpc19ncmFwaCApOwogICAgICAgIHJldl9lbmQgPSBmaW5kX2lmKCByZXZfYmVnaW4sIGlucHV0LmVuZCgpLCBpc19kaWdpdCApOwogICAgICAgIAogICAgICAgIGlmKCByZXZfYmVnaW4gPT0gaW5wdXQuZW5kKCkgKQogICAgICAgICAgICBicmVhazsKICAgICAgICAKICAgICAgICByZXZlcnNlKCByZXZfYmVnaW4sIHJldl9lbmQgKTsKICAgIH0KICAgIAogICAgY291dCA8PCBpbnB1dCA8PCBlbmRsOwp9