#include <iostream>
#include <algorithm>
using namespace std;

class Seconds;

class Hours {
        unsigned long long _hours;
    public:
        Hours(unsigned long long hours) : _hours(hours) { }
        
        unsigned long long getHours() const {
            return this->_hours;
        }
};

class Seconds {
        unsigned long long _seconds;
    public:
        Seconds(unsigned long long seconds) : _seconds(seconds) { }
        
        unsigned long long getSeconds() const {
            return this->_seconds;
        }
        
        Seconds& operator= (const unsigned long long& ull);
};

unsigned long long operator+(const Hours& hours, const Seconds& seconds)
{
    return hours.getHours() + seconds.getSeconds();
}

Hours operator "" _h(unsigned long long hours) {
    return Hours(hours);
}

Seconds operator "" _s(unsigned long long seconds) {
    return Seconds(seconds);
}

Seconds& Seconds::operator= (const unsigned long long& ull)
{
    // do the copy
    *this = Seconds(ull);
 
    // return the existing object
    return *this;
}

int main() {
    Seconds s(1_h + 10_s);
    cout <<s.getSeconds()<<endl;
    s = 2_h + 60_s;
    cout <<s.getSeconds()<<endl;
    return 0;
}