#include <string>
#include <algorithm>
#include <iterator>
#include <vector>
#include <iostream>
// #include "item_iterator.h"
// Warning: only minimally tested.
// item_iterator.h
// Lifted from Jerry Coffin's 's prefix_ostream_iterator
#if !defined(ITEM_ITERATOR_H_)
#define ITEM_ITERATOR_H_
#include <ostream>
#include <iterator>
template <class T,
class charT=char,
class traits=std::char_traits<charT> >
class item_iterator :
public std::iterator<std::output_iterator_tag,void,void,void,void>
{
std::basic_ostream<charT,traits> *os;
charT const* delimiter;
bool first_elem;
const unsigned per_line;
unsigned current_item;
public:
typedef charT char_type;
typedef traits traits_type;
typedef std::basic_ostream<charT,traits> ostream_type;
item_iterator(ostream_type& s, unsigned i=8)
: os(&s),delimiter(0), first_elem(true), per_line(i), current_item(0)
{}
item_iterator(ostream_type& s, charT const *d, unsigned i=8)
: os(&s),delimiter(d), first_elem(true), per_line(i), current_item(0)
{}
item_iterator<T,charT,traits>& operator=(T const &item)
{
if (!first_elem && delimiter != 0)
*os << delimiter;
*os << item;
first_elem = false;
if (++current_item == per_line) {
*os << "\n";
current_item = 0;
first_elem = true;
}
return *this;
}
item_iterator<T,charT,traits> &operator*() {
return *this;
}
item_iterator<T,charT,traits> &operator++() {
return *this;
}
item_iterator<T,charT,traits> &operator++(int) {
return *this;
}
};
#endif
struct upper_string {
std::string operator()(std::string s) const {
for (int i=0; i<s.size(); i++)
s[i] = toupper((unsigned char)s[i]);
return s;
}
};
int main() {
std::vector<std::string> words((std::istream_iterator<std::string>(std::cin)),
std::istream_iterator<std::string>());
std::transform(words.begin(), words.end(), item_iterator<std::string>(std::cout, " ", 8),
upper_string());
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+CgovLyAjaW5jbHVkZSAiaXRlbV9pdGVyYXRvci5oIgovLyBXYXJuaW5nOiBvbmx5IG1pbmltYWxseSB0ZXN0ZWQuCi8vIGl0ZW1faXRlcmF0b3IuaAovLyBMaWZ0ZWQgZnJvbSBKZXJyeSBDb2ZmaW4ncyAncyBwcmVmaXhfb3N0cmVhbV9pdGVyYXRvcgojaWYgIWRlZmluZWQoSVRFTV9JVEVSQVRPUl9IXykKI2RlZmluZSAgSVRFTV9JVEVSQVRPUl9IXwojaW5jbHVkZSA8b3N0cmVhbT4KI2luY2x1ZGUgPGl0ZXJhdG9yPgoKdGVtcGxhdGUgPGNsYXNzIFQsCmNsYXNzIGNoYXJUPWNoYXIsCmNsYXNzIHRyYWl0cz1zdGQ6OmNoYXJfdHJhaXRzPGNoYXJUPiA+CgpjbGFzcyBpdGVtX2l0ZXJhdG9yIDoKCXB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyx2b2lkLHZvaWQsdm9pZCx2b2lkPgp7CglzdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsdHJhaXRzPiAqb3M7CgljaGFyVCBjb25zdCogZGVsaW1pdGVyOwoJYm9vbCBmaXJzdF9lbGVtOwoJY29uc3QgdW5zaWduZWQgcGVyX2xpbmU7Cgl1bnNpZ25lZCBjdXJyZW50X2l0ZW07CnB1YmxpYzoKCXR5cGVkZWYgY2hhclQgY2hhcl90eXBlOwoJdHlwZWRlZiB0cmFpdHMgdHJhaXRzX3R5cGU7Cgl0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCx0cmFpdHM+IG9zdHJlYW1fdHlwZTsKCglpdGVtX2l0ZXJhdG9yKG9zdHJlYW1fdHlwZSYgcywgdW5zaWduZWQgaT04KQoJCTogb3MoJnMpLGRlbGltaXRlcigwKSwgZmlyc3RfZWxlbSh0cnVlKSwgcGVyX2xpbmUoaSksIGN1cnJlbnRfaXRlbSgwKQoJe30KCWl0ZW1faXRlcmF0b3Iob3N0cmVhbV90eXBlJiBzLCBjaGFyVCBjb25zdCAqZCwgdW5zaWduZWQgaT04KQoJCTogb3MoJnMpLGRlbGltaXRlcihkKSwgZmlyc3RfZWxlbSh0cnVlKSwgcGVyX2xpbmUoaSksIGN1cnJlbnRfaXRlbSgwKQoJe30KCglpdGVtX2l0ZXJhdG9yPFQsY2hhclQsdHJhaXRzPiYgb3BlcmF0b3I9KFQgY29uc3QgJml0ZW0pCgl7CgkJaWYgKCFmaXJzdF9lbGVtICYmIGRlbGltaXRlciAhPSAwKQoJCQkqb3MgPDwgZGVsaW1pdGVyOwoJCSpvcyA8PCBpdGVtOwkKCQlmaXJzdF9lbGVtID0gZmFsc2U7CgkJaWYgKCsrY3VycmVudF9pdGVtID09IHBlcl9saW5lKSB7CgkJCSpvcyA8PCAiXG4iOwoJCQljdXJyZW50X2l0ZW0gPSAwOwoJCQlmaXJzdF9lbGVtID0gdHJ1ZTsKCQl9CgkJcmV0dXJuICp0aGlzOwoJfQoKCWl0ZW1faXRlcmF0b3I8VCxjaGFyVCx0cmFpdHM+ICZvcGVyYXRvciooKSB7CgkJcmV0dXJuICp0aGlzOwoJfQoJaXRlbV9pdGVyYXRvcjxULGNoYXJULHRyYWl0cz4gJm9wZXJhdG9yKysoKSB7CgkJcmV0dXJuICp0aGlzOwoJfQoJaXRlbV9pdGVyYXRvcjxULGNoYXJULHRyYWl0cz4gJm9wZXJhdG9yKysoaW50KSB7CgkJcmV0dXJuICp0aGlzOwoJfQoKfTsKCiNlbmRpZiAKCnN0cnVjdCB1cHBlcl9zdHJpbmcgewoJc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShzdGQ6OnN0cmluZyBzKSBjb25zdCB7CgkJZm9yIChpbnQgaT0wOyBpPHMuc2l6ZSgpOyBpKyspCgkJCXNbaV0gPSB0b3VwcGVyKCh1bnNpZ25lZCBjaGFyKXNbaV0pOwoJCXJldHVybiBzOwoJfQp9OwoKaW50IG1haW4oKSB7CglzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gd29yZHMoKHN0ZDo6aXN0cmVhbV9pdGVyYXRvcjxzdGQ6OnN0cmluZz4oc3RkOjpjaW4pKSwKCQkJCQlzdGQ6OmlzdHJlYW1faXRlcmF0b3I8c3RkOjpzdHJpbmc+KCkpOwoKCXN0ZDo6dHJhbnNmb3JtKHdvcmRzLmJlZ2luKCksIHdvcmRzLmVuZCgpLCBpdGVtX2l0ZXJhdG9yPHN0ZDo6c3RyaW5nPihzdGQ6OmNvdXQsICIgIiwgOCksCgkJCXVwcGVyX3N0cmluZygpKTsKCXJldHVybiAwOwp9Cg==
dGhpcyBpcyBzb21lIGlucHV0IHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgcHJvZ3JhbSwgd2hpY2ggd2lsbCBjb252ZXJ0IHRoZSBpbnB1dCB0byB1cHBlciBjYXNlIGFuZCBwcmludCBpdCBvdXQgYXQgZWlnaHQgd29yZHMgcGVyIGxpbmUu
this is some input to be processed by the program, which will convert the input to upper case and print it out at eight words per line.