#include <iostream>
#include <string>
#include <cstring>

using namespace std;

class Vraboten
{
protected:
    string ime;
    int plataChas;
    int chasovi;
public:
    Vraboten(string i=" ", int pc=0, int c=0)
    {
        ime=i;
        pc=plataChas;
        chasovi=c;
    }
    Vraboten(const Vraboten &v)
    {
        ime=v.ime;
        plataChas=v.plataChas;
        chasovi=v.chasovi;
    }
    int isplati()
    {
        cout<<plataChas*chasovi<<endl;
        return (plataChas*chasovi);
    }
    Vraboten &operator++()
    {
        plataChas++;
        return *this;
    }
    friend ostream &operator<<(ostream &out, Vraboten &v)
    {
        out<<v.ime<<" "<<v.plataChas<<" "<<v.chasovi<<endl;
        return out;
    }
    friend bool operator==(Vraboten &v1, Vraboten &v2)
    {
        return (v1.isplati()==v2.isplati());
    }
};

class Menadzer:public Vraboten
{
protected:
    Vraboten vraboteni[1000];
    int br_vraboteni;
public:
    Menadzer(string i=" ", int pc=0, int c=0, int brv=0, Vraboten *v=NULL):Vraboten(i, pc, c)
    {
        br_vraboteni=brv;
        for(int i=0;i<br_vraboteni;i++)
        {
            vraboteni[i]=v[i];
        }
    }
    int isplati()
    {
        cout<<Vraboten::isplati()+br_vraboteni*5*plataChas<<endl;
        return Vraboten::isplati()+br_vraboteni*5*plataChas;
    }
     Menadzer &operator+=(Vraboten &v)
    {
        if(br_vraboteni<1000)
        {
            vraboteni[br_vraboteni++]=v;
            return *this;
        }
    }
};

class Inzener:public Vraboten
{
    protected:
        string proekti[100];
        int br_proekti;
    public:
        Inzener(string i=" ", int pc=0, int c=0, int brp=0, string *p=NULL):Vraboten(i, pc, c)
        {
            br_proekti=brp;
            for(int i=0;i<br_proekti;i++)
            {
                proekti[i]=p[i];
            }
        }
        int isplati()
        {
            cout<<Vraboten::isplati()+0.1*Vraboten::isplati()*br_proekti<<endl;
            return (Vraboten::isplati()+0.1*Vraboten::isplati()*br_proekti);
        }
        Inzener &operator+=(string p)
    {
        if(br_proekti<100)
        {
            proekti[br_proekti++]=p;
            return *this;
        }
    }
};

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}