#include <iostream>
using namespace std;

class Rational {
    int p; 
    int q; 
public:  
    Rational (int d=0, int n=1) : p{d}, q{n} { } 
    Rational operator*(const Rational& r) const {    // for curent object * r
    	return Rational(p*r.p,q*r.q); 
    }
    int numerator() const {return p; }
    int denominator() const { return q; } 
}; 
Rational operator+(const Rational &a, const Rational &b) {
	return Rational(a.numerator()*b.denominator()+b.numerator()*a.denominator(),
	                                                  a.denominator()*b.denominator());
}
ostream& operator<<(ostream& os, const Rational &r) {
	return os << " ("<<r.numerator()<<"/"<<r.denominator()<<") ";
}


int main() {
	Rational two{2}; 
	Rational quarter{1,4}; 
	cout << two<<endl; 
	cout << quarter<<endl; 
	cout << quarter*2 <<endl; 
	cout << quarter*two <<endl; 
	cout << quarter*two+quarter <<endl; 
	return 0;
}