#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class user {
string name_, surname_, fullname_;
auto calc_fullname() const {
return name_ + " " + surname_;
}
public:
user(string const &name, string const &surname):
name_(name),
surname_(surname),
fullname_(calc_fullname())
{}
auto &name() const {
return name_;
}
auto &surname() const {
return surname_;
}
auto fullname() const {
return fullname_;
}
};
namespace validate {
bool non_empty(user const &usr) {
return usr.fullname().find_first_not_of(" ") != std::string::npos;
}
}
namespace console_io {
user ask_for_user(istream &in, ostream &messages) {
string name, surname;
//to możesz mieć u siebie
//messages << "name: ";
in >> name;
//to możesz mieć u siebie
//messages << "surname: ";
in >> surname;
return user(name, surname);
}
auto &print(user const &usr) {
return cout << "User: " << usr.fullname() << endl;
}
}
int main() {
vector<user> users;
while(cin) {
auto usr = console_io::ask_for_user(cin, cout);
if(validate::non_empty(usr)) {
users.push_back(usr);
}
}
for(auto const &usr: users) {
console_io::print(usr);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgdXNlciB7CglzdHJpbmcgbmFtZV8sIHN1cm5hbWVfLCBmdWxsbmFtZV87CgkKCWF1dG8gY2FsY19mdWxsbmFtZSgpIGNvbnN0IHsKCQlyZXR1cm4gbmFtZV8gKyAiICIgKyBzdXJuYW1lXzsKCX0KcHVibGljOgoJdXNlcihzdHJpbmcgY29uc3QgJm5hbWUsIHN0cmluZyBjb25zdCAmc3VybmFtZSk6CgkJbmFtZV8obmFtZSksCgkJc3VybmFtZV8oc3VybmFtZSksCgkJZnVsbG5hbWVfKGNhbGNfZnVsbG5hbWUoKSkKCXt9CgkKCWF1dG8gJm5hbWUoKSBjb25zdCB7CgkJcmV0dXJuIG5hbWVfOwoJfQoJCglhdXRvICZzdXJuYW1lKCkgY29uc3QgewoJCXJldHVybiBzdXJuYW1lXzsKCX0KCQoJYXV0byBmdWxsbmFtZSgpIGNvbnN0IHsKCQlyZXR1cm4gZnVsbG5hbWVfOwoJfQp9OwoKbmFtZXNwYWNlIHZhbGlkYXRlIHsKCWJvb2wgbm9uX2VtcHR5KHVzZXIgY29uc3QgJnVzcikgewoJCXJldHVybiB1c3IuZnVsbG5hbWUoKS5maW5kX2ZpcnN0X25vdF9vZigiICIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOwoJfQp9CgpuYW1lc3BhY2UgY29uc29sZV9pbyB7Cgl1c2VyIGFza19mb3JfdXNlcihpc3RyZWFtICZpbiwgb3N0cmVhbSAmbWVzc2FnZXMpIHsKCQlzdHJpbmcgbmFtZSwgc3VybmFtZTsKCQkvL3RvIG1vxbxlc3ogbWllxIcgdSBzaWViaWUKCQkvL21lc3NhZ2VzIDw8ICJuYW1lOiAiOwoJCWluID4+IG5hbWU7CgkJLy90byBtb8W8ZXN6IG1pZcSHIHUgc2llYmllCgkJLy9tZXNzYWdlcyA8PCAic3VybmFtZTogIjsKCQlpbiA+PiBzdXJuYW1lOwoJCXJldHVybiB1c2VyKG5hbWUsIHN1cm5hbWUpOwoJfQoJCglhdXRvICZwcmludCh1c2VyIGNvbnN0ICZ1c3IpIHsKCQlyZXR1cm4gY291dCA8PCAiVXNlcjogIiA8PCB1c3IuZnVsbG5hbWUoKSA8PCBlbmRsOwoJfQp9CgppbnQgbWFpbigpIHsKCXZlY3Rvcjx1c2VyPiB1c2VyczsKCXdoaWxlKGNpbikgewoJCWF1dG8gdXNyID0gY29uc29sZV9pbzo6YXNrX2Zvcl91c2VyKGNpbiwgY291dCk7CgkJaWYodmFsaWRhdGU6Om5vbl9lbXB0eSh1c3IpKSB7CgkJCXVzZXJzLnB1c2hfYmFjayh1c3IpOwoJCX0KCX0KCQoJZm9yKGF1dG8gY29uc3QgJnVzcjogdXNlcnMpIHsKCQljb25zb2xlX2lvOjpwcmludCh1c3IpOwoJfQoJcmV0dXJuIDA7Cn0=