#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;
}