#include <iostream>
#include <string>

using namespace std;

class Person {
protected:
    string name;
    int age;

public:
    Person(string n, int a) : name(n), age(a) {}

    virtual void printInfo() {
        cout << "Имя: " << name << ", Возраст: " << age << endl;
    }

    virtual ~Person() {}
};

class Student : virtual public Person {
protected:
    string university;

public:
    Student(string n, int a, string uni) : Person(n, a), university(uni) {}

    void printInfo() override {
        cout << "Студент - Имя: " << name << ", Возраст: " << age << ", Университет: " << university << endl;
    }
};

class Worker : virtual public Person {
protected:
    string company;

public:
    Worker(string n, int a, string comp) : Person(n, a), company(comp) {}

    void printInfo() override {
        cout << "Работник - Имя: " << name << ", Возраст: " << age << ", Компания: " << company << endl;
    }
};

class Intern : public Student, public Worker {
public:
    Intern(string n, int a, string uni, string comp) 
        : Person(n, a), Student(n, a, uni), Worker(n, a, comp) {}

    void printInfo() override {
        cout << "Стажёр - Имя: " << name << ", Возраст: " << age 
             << ", Университет: " << university << ", Компания: " << company << endl;
    }
};

int main() {
    Intern intern("Боб", 21, "Технический университет", "Техническая корпорация");
    intern.printInfo();

    return 0;
}
