上一版运算过程中会炸
inline int absl(int x){return x>0?x:~x+1;}
inline rea minrea(rea x,rea y){return x<y?x:y;}
inline int min(int x,int y){return x<y?x:y;}
struct rea{int mu,zi;rea jian(){int gcd=__gcd(absl(zi),absl(mu));if(mu<0){mu*=-1;zi*=-1;}if(!zi){mu=1;return *this;}if(!gcd)return *this;zi/=gcd;mu/=gcd;return *this;}rea(int x=0,int y=1){zi=x,mu=y;jian();}rea dao(){return rea(mu,zi);}rea operator+(rea a){return (rea(zi*a.mu+mu*a.zi,mu*a.mu)).jian();}rea operator*(rea a){int gcd1=__gcd(zi,a.mu);int gcd2=__gcd(a.zi,mu);return (rea((zi/gcd1)*(a.zi/gcd2),(mu/gcd2)*(a.mu/gcd1))).jian();}rea operator/(rea a){return (*this*a.dao()).jian();}rea operator-(){return rea(-zi,mu);}rea operator-(rea a){return *this+(-a);}bool operator<(rea a){return zi*a.mu<a.zi*mu;}bool operator>(rea a){return !(*this<a);}bool operator==(rea a){return !((*this<a)||(*this>a));}void out(){jian();print(zi),putchar_unlocked('/');print(mu);putchar_unlocked('\n');}
};