struct Fraction {
int b, a; // b/a
bool operator<(const Fraction &rhs) const {
return b * rhs < a * rhs;
}
Fraction operator+(const Fraction &rhs) const {
Fraction ret;
ret.b = b * rhs.a + rhs.b * a;
ret.a = a * rhs.a;
int d = __gcd (ret.a, ret.b);
ret.a /= d, ret.b /= d;
return ret;
}
Fraction operator*(const Fraction &rhs) const {
int d1 = __gcd (b, rhs.a);
int d2 = __gcd (a, rhs.b);
Fraction ret;
ret.b = b / d1 * rhs.b / d2;
ret.a = a / d1 * rhs.a / d2;
return ret;
}
}