#include <iostream>
#include <vector>
#include <cstdint>
#include <tuple>
#include <string>
#include <sstream>
#include <algorithm>
typedef std:: tuple < std:: uint64_t , std:: uint64_t > Data;
typedef std:: vector < Data> DType;
typedef std:: vector < std:: string > SType;
bool CheckInput( std:: string & S) {
char Ch[ ] = "01234567890 /" ;
bool F = false ;
for ( std:: size_t i = 0 ; i < S.size ( ) ; i++ ) {
F = false ;
for ( auto & o : Ch) {
if ( S[ i] == o) {
F = true ;
break ;
}
}
if ( F == false ) return false ;
}
return true ;
}
std:: uint64_t gcd( std:: uint64_t a, std:: uint64_t b) {
return b == 0 ? a : gcd( b, a % b) ;
}
SType GetInput( ) {
std:: string S;
SType ST;
while ( std:: cin >> S) {
if ( CheckInput( S) == true ) {
ST.push_back ( S) ;
}
else {
std:: cout << S << " is BAD INPUT!" << std:: endl ;
}
}
return ST;
}
Data MakeData( std:: string & S) {
std:: stringstream SS;
std:: uint64_t A = 0 ;
std:: uint64_t B = 0 ;
std:: uint64_t C = 0 ;
char Ch = '\0 ' ;
SS << S;
if ( S.find_first_of ( ' ' ) ! = - 1 ) SS >> A;
SS >> B;
SS >> Ch;
SS >> C;
B + = A* C;
return std:: make_tuple ( B, C) ;
}
DType MakeHoge( SType & S) {
DType D;
for ( auto & o : S) {
D.push_back ( MakeData( o) ) ;
}
std:: sort ( D.begin ( ) , D.end ( ) , [ ] ( Data& A, Data & B) { return ( std:: get < 0 > ( A) / static_cast < double > ( std:: get < 1 > ( A) ) ) < ( std:: get < 0 > ( B) / static_cast < double > ( std:: get < 1 > ( B) ) ) ; } ) ;
return D;
}
bool Show( DType& D) {
std:: uint64_t A = 0 ;
std:: uint64_t B = 0 ;
std:: uint64_t C = 0 ;
for ( auto & o : D) {
A = std:: get < 0 > ( o) / std:: get < 1 > ( o) ;
B = std:: get < 0 > ( o) % std:: get < 1 > ( o) ;
C = gcd( std:: get < 0 > ( o) , std:: get < 1 > ( o) ) ;
C = std:: max < std:: uint64_t > ( 1 , C) ;
if ( A ! = 0 ) std:: cout << A << ' ' ;
if ( B ! = 0 ) std:: cout << ( std:: get < 0 > ( o) - A* std:: get < 1 > ( o) ) / C << '/' << std:: get < 1 > ( o) / C;
if ( A == 0 && B == 0 ) std:: cout << 0 ;
std:: cout << std:: endl ;
}
return true ;
}
int main( ) {
SType S{ "1/2" , "1/3" , "2/3" , "1 1/3" , "2/2" , "3/2" , "4/2" , "2/8" ,"9/6" } ;
DType D;
//S = GetInput();
D = MakeHoge( S) ;
Show( D) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y3N0ZGludD4KI2luY2x1ZGUgPHR1cGxlPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnR5cGVkZWYgc3RkOjp0dXBsZTxzdGQ6OnVpbnQ2NF90LCBzdGQ6OnVpbnQ2NF90PiBEYXRhOwp0eXBlZGVmIHN0ZDo6dmVjdG9yPERhdGE+IERUeXBlOwp0eXBlZGVmIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBTVHlwZTsKCmJvb2wgQ2hlY2tJbnB1dChzdGQ6OnN0cmluZyAmIFMpewoJY2hhciBDaFtdID0gIjAxMjM0NTY3ODkwIC8iOwoJYm9vbCBGID0gZmFsc2U7CgoJZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IFMuc2l6ZSgpOyBpKyspewoJCUYgPSBmYWxzZTsKCQlmb3IgKGF1dG8mIG8gOiBDaCl7CgkJCWlmIChTW2ldID09IG8pewoJCQkJRiA9IHRydWU7CgkJCQlicmVhazsKCQkJfQoJCX0KCQlpZiAoRiA9PSBmYWxzZSkgcmV0dXJuIGZhbHNlOwoJfQoJcmV0dXJuIHRydWU7Cn0Kc3RkOjp1aW50NjRfdCBnY2Qoc3RkOjp1aW50NjRfdCBhLCBzdGQ6OnVpbnQ2NF90IGIpewoJcmV0dXJuIGIgPT0gMCA/IGEgOiBnY2QoYiwgYSAlIGIpOwp9CgoKU1R5cGUgR2V0SW5wdXQoKXsKCXN0ZDo6c3RyaW5nIFM7CglTVHlwZSBTVDsKCgl3aGlsZSAoc3RkOjpjaW4gPj4gUyl7CgkJaWYgKENoZWNrSW5wdXQoUykgPT0gdHJ1ZSl7CgkJCVNULnB1c2hfYmFjayhTKTsKCQl9CgkJZWxzZXsKCQkJc3RkOjpjb3V0IDw8IFMgPDwgIiBpcyBCQUQgSU5QVVQhIiA8PCBzdGQ6OmVuZGw7CgkJfQoJfQoKCXJldHVybiBTVDsKfQoKRGF0YSBNYWtlRGF0YShzdGQ6OnN0cmluZyYgUyl7CglzdGQ6OnN0cmluZ3N0cmVhbSBTUzsKCXN0ZDo6dWludDY0X3QgQSA9IDA7CglzdGQ6OnVpbnQ2NF90IEIgPSAwOwoJc3RkOjp1aW50NjRfdCBDID0gMDsKCWNoYXIgQ2ggPSAnXDAnOwoKCVNTIDw8IFM7CgoJaWYgKFMuZmluZF9maXJzdF9vZignICcpICE9IC0xKVNTID4+IEE7CglTUyA+PiBCOwoJU1MgPj4gQ2g7CglTUyA+PiBDOwoKCUIgKz0gQSpDOwoKCXJldHVybiBzdGQ6Om1ha2VfdHVwbGUoQiwgQyk7Cgp9CgpEVHlwZSBNYWtlSG9nZShTVHlwZSAmUyl7CglEVHlwZSBEOwoJZm9yIChhdXRvJiBvIDogUyl7CgkJRC5wdXNoX2JhY2soTWFrZURhdGEobykpOwoJfQoKCXN0ZDo6c29ydChELmJlZ2luKCksIEQuZW5kKCksIFtdKERhdGEmIEEsIERhdGEgJkIpeyByZXR1cm4gKHN0ZDo6Z2V0PDA+KEEpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6OmdldDwxPihBKSkpIDwgKHN0ZDo6Z2V0PDA+KEIpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6OmdldDwxPihCKSkpOyB9KTsKCglyZXR1cm4gRDsKfQoKYm9vbCBTaG93KERUeXBlJiBEKXsKCglzdGQ6OnVpbnQ2NF90IEEgPSAwOwoJc3RkOjp1aW50NjRfdCBCID0gMDsKCXN0ZDo6dWludDY0X3QgQyA9IDA7Cglmb3IgKGF1dG8mIG8gOiBEKXsKCQlBID0gc3RkOjpnZXQ8MD4obykgLyBzdGQ6OmdldDwxPihvKTsKCQlCID0gc3RkOjpnZXQ8MD4obykgJSBzdGQ6OmdldDwxPihvKTsKCQlDID0gZ2NkKHN0ZDo6Z2V0PDA+KG8pLCBzdGQ6OmdldDwxPihvKSk7CgkJQyA9IHN0ZDo6bWF4PHN0ZDo6dWludDY0X3Q+KDEsIEMpOwoJCWlmIChBICE9IDApCXN0ZDo6Y291dCA8PCBBIDw8ICcgJzsKCQlpZiAoQiAhPSAwKQlzdGQ6OmNvdXQgPDwgKHN0ZDo6Z2V0PDA+KG8pLUEqc3RkOjpnZXQ8MT4obykpL0MgPDwnLyc8PHN0ZDo6Z2V0PDE+KG8pL0M7CgkJaWYgKEEgPT0gMCAmJiBCID09IDApIHN0ZDo6Y291dCA8PCAwOwoJCXN0ZDo6Y291dDw8c3RkOjplbmRsOwoJfQoKCXJldHVybiB0cnVlOwp9CgppbnQgbWFpbigpewoJU1R5cGUgU3sgIjEvMiIsICIxLzMiLCAiMi8zIiwgIjEgMS8zIiwgIjIvMiIsICIzLzIiLCAiNC8yIiwgIjIvOCIgLCI5LzYifTsKCURUeXBlIEQ7CgoJLy9TID0gR2V0SW5wdXQoKTsKCUQgPSBNYWtlSG9nZShTKTsKCVNob3coRCk7CgoJcmV0dXJuIDA7Cn0KCg==