#include <iostream>
#include <string>
#include <vector>
#include <iterator>
class Student
{
public:
void InputData(std::string, const std::vector<std::string>&);
void OutputData(std::ostream&) const;
void ResetClasses();
friend std::ostream& operator<<(std::ostream&, const Student&);
friend std::istream& operator>>(std::istream&, Student&);
private:
std::string name;
std::vector<std::string> classList;
};
std::ostream& operator<<(std::ostream& os, const Student& s)
{
s.OutputData(os);
return os;
}
std::istream& operator>>(std::istream& is, Student& s)
{
s.classList.assign(std::istream_iterator<std::string>{is >> s.name},
std::istream_iterator<std::string>{});
return is;
}
void Student::InputData(std::string nm, const std::vector<std::string>& names)
{
name = nm;
classList = names;
}
void Student::OutputData(std::ostream& os) const
{
os << "Students name: " << name << std::endl;
os << "Classes: ";
std::copy(classList.begin(), classList.end(),
std::ostream_iterator<std::string>(os, "\n"));
}
void Student::ResetClasses()
{
classList.clear();
}
int main()
{
Student s1, s2;
std::cin >> s1;
std::cout << s1;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aXRlcmF0b3I+CgpjbGFzcyBTdHVkZW50CnsKcHVibGljOgogICAgdm9pZCBJbnB1dERhdGEoc3RkOjpzdHJpbmcsIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYpOwogICAgdm9pZCBPdXRwdXREYXRhKHN0ZDo6b3N0cmVhbSYpIGNvbnN0OwogICAgdm9pZCBSZXNldENsYXNzZXMoKTsKICAgIAogICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBTdHVkZW50Jik7CiAgICBmcmllbmQgc3RkOjppc3RyZWFtJiBvcGVyYXRvcj4+KHN0ZDo6aXN0cmVhbSYsICAgICAgIFN0dWRlbnQmKTsKcHJpdmF0ZToKICAgIHN0ZDo6c3RyaW5nIG5hbWU7CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gY2xhc3NMaXN0Owp9OwoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0dWRlbnQmIHMpCnsKICAgIHMuT3V0cHV0RGF0YShvcyk7CiAgICByZXR1cm4gb3M7Cn0KCnN0ZDo6aXN0cmVhbSYgb3BlcmF0b3I+PihzdGQ6OmlzdHJlYW0mIGlzLCBTdHVkZW50JiBzKQp7CiAgICBzLmNsYXNzTGlzdC5hc3NpZ24oc3RkOjppc3RyZWFtX2l0ZXJhdG9yPHN0ZDo6c3RyaW5nPntpcyA+PiBzLm5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXN0cmVhbV9pdGVyYXRvcjxzdGQ6OnN0cmluZz57fSk7CiAgICAgICAgICAgICAgICAgICAgICAgCiAgICByZXR1cm4gaXM7Cn0KCnZvaWQgU3R1ZGVudDo6SW5wdXREYXRhKHN0ZDo6c3RyaW5nIG5tLCBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIG5hbWVzKQp7CiAgICBuYW1lID0gbm07CiAgICBjbGFzc0xpc3QgPSBuYW1lczsKfQoKdm9pZCBTdHVkZW50OjpPdXRwdXREYXRhKHN0ZDo6b3N0cmVhbSYgb3MpIGNvbnN0CnsKICAgIG9zIDw8ICJTdHVkZW50cyBuYW1lOiAiIDw8IG5hbWUgPDwgc3RkOjplbmRsOwogICAgb3MgPDwgIkNsYXNzZXM6ICI7CiAgICAKICAgIHN0ZDo6Y29weShjbGFzc0xpc3QuYmVnaW4oKSwgY2xhc3NMaXN0LmVuZCgpLAogICAgICAgICAgICBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8c3RkOjpzdHJpbmc+KG9zLCAiXG4iKSk7Cn0KCnZvaWQgU3R1ZGVudDo6UmVzZXRDbGFzc2VzKCkKewogICAgY2xhc3NMaXN0LmNsZWFyKCk7Cn0KCmludCBtYWluKCkKewogICAgU3R1ZGVudCBzMSwgczI7CiAgICAKICAgIHN0ZDo6Y2luID4+IHMxOwogICAgc3RkOjpjb3V0IDw8IHMxOwp9