#include <string>
#include <iostream>
#include <iomanip>
#include <type_traits>
template<typename T, typename = std::enable_if_t<std::is_integral<T>::value>>
T gcd(T m, T n)
{
while(m && n) if (m < n) n %= m; else m %= n;
return m + n;
}
template<typename T, typename = std::enable_if_t<std::is_integral<T>::value>>
T lcm(T m, T n)
{
return (m/gcd(m,n))*n;
}
class frac
{
public:
frac(long long d, unsigned long long q = 1ull);
frac(const frac&) = default;
frac& operator=(const frac&) = default;
operator std::string() const;
private:
unsigned long long d, q;
int sign;
void norm();
friend frac operator +(const frac&a, const frac&b);
friend frac operator -(const frac&a, const frac&b);
friend frac operator *(const frac&a, const frac&b);
friend frac operator /(const frac&a, const frac&b);
friend bool operator ==(const frac&a, const frac&b);
friend bool operator !=(const frac&a, const frac&b);
};
frac::frac(long long dd, unsigned long long qq)
{
sign = (dd < 0) ? -1 : +1;
d = dd*sign;
q = qq;
norm();
};
void frac::norm()
{
unsigned long long g = gcd(d,q);
if (g != 1) { d /= g; q /= g; }
}
frac operator +(const frac&a, const frac&b)
{
long long dd;
unsigned long long qq;
if (a.q == b.q)
{
dd = a.d*a.sign + b.d*b.sign;
qq = a.q;
}
else
{
qq = lcm(a.q,b.q);
dd = a.d*a.sign*(qq/a.q) + b.d*b.sign*(qq/b.q);
}
return frac(dd,qq);
}
frac operator -(const frac&a, const frac&b)
{
long long dd;
unsigned long long qq;
if (a.q == b.q)
{
dd = a.d*a.sign - b.d*b.sign;
qq = a.q;
}
else
{
qq = lcm(a.q,b.q);
dd = a.d*a.sign*(qq/a.q) - b.d*b.sign*(qq/b.q);
}
return frac(dd,qq);
}
frac operator *(const frac&a, const frac&b)
{
return frac(a.d*a.sign*b.d*b.sign,a.q*b.q);
}
frac operator /(const frac&a, const frac&b)
{
return frac(a.sign*b.sign*a.d*b.q,a.q*b.d);
}
bool operator ==(const frac&a, const frac&b)
{
return a.d==b.d && a.q == b.q && a.sign == b.sign;
}
bool operator !=(const frac&a, const frac&b)
{
return !(a==b);
}
frac::operator std::string() const
{
std::string s = (sign > 0) ? "" : "-";
s = s + std::to_string(d) + "/" + std::to_string(q);
return s;
}
using namespace std;
int main(int argc, const char * argv[])
{
int n;
cin >> n;
frac f(0);
for(int i = 1; i <= n; ++i)
{
frac t(i-1,i*(i+1));
f = f + t;
}
cout << string(f) << endl;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPj4KICAgIFQgZ2NkKFQgbSwgVCBuKQp7CiAgICB3aGlsZShtICYmIG4pIGlmIChtIDwgbikgbiAlPSBtOyBlbHNlIG0gJT0gbjsKICAgIHJldHVybiBtICsgbjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlPj4KVCBsY20oVCBtLCBUIG4pCnsKICAgIHJldHVybiAobS9nY2QobSxuKSkqbjsKfQoKY2xhc3MgZnJhYwp7CnB1YmxpYzoKICAgIGZyYWMobG9uZyBsb25nIGQsIHVuc2lnbmVkIGxvbmcgbG9uZyBxID0gMXVsbCk7CiAgICBmcmFjKGNvbnN0IGZyYWMmKSAgICAgICAgICAgID0gZGVmYXVsdDsKICAgIGZyYWMmIG9wZXJhdG9yPShjb25zdCBmcmFjJikgPSBkZWZhdWx0OwoKICAgIG9wZXJhdG9yIHN0ZDo6c3RyaW5nKCkgY29uc3Q7CgoKcHJpdmF0ZToKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkLCBxOwogICAgaW50IHNpZ247CiAgICB2b2lkIG5vcm0oKTsKCiAgICBmcmllbmQgZnJhYyBvcGVyYXRvciArKGNvbnN0IGZyYWMmYSwgY29uc3QgZnJhYyZiKTsKICAgIGZyaWVuZCBmcmFjIG9wZXJhdG9yIC0oY29uc3QgZnJhYyZhLCBjb25zdCBmcmFjJmIpOwogICAgZnJpZW5kIGZyYWMgb3BlcmF0b3IgKihjb25zdCBmcmFjJmEsIGNvbnN0IGZyYWMmYik7CiAgICBmcmllbmQgZnJhYyBvcGVyYXRvciAvKGNvbnN0IGZyYWMmYSwgY29uc3QgZnJhYyZiKTsKCiAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA9PShjb25zdCBmcmFjJmEsIGNvbnN0IGZyYWMmYik7CiAgICBmcmllbmQgYm9vbCBvcGVyYXRvciAhPShjb25zdCBmcmFjJmEsIGNvbnN0IGZyYWMmYik7Cgp9OwoKZnJhYzo6ZnJhYyhsb25nIGxvbmcgZGQsIHVuc2lnbmVkIGxvbmcgbG9uZyBxcSkKewogICAgc2lnbiA9IChkZCA8IDApID8gLTEgOiArMTsKICAgIGQgPSBkZCpzaWduOwogICAgcSA9IHFxOwogICAgbm9ybSgpOwp9OwoKdm9pZCBmcmFjOjpub3JtKCkKewogICAgdW5zaWduZWQgbG9uZyBsb25nIGcgPSBnY2QoZCxxKTsKICAgIGlmIChnICE9IDEpIHsgZCAvPSBnOyBxIC89IGc7IH0KfQoKCmZyYWMgb3BlcmF0b3IgKyhjb25zdCBmcmFjJmEsIGNvbnN0IGZyYWMmYikKewogICAgbG9uZyBsb25nIGRkOwogICAgdW5zaWduZWQgbG9uZyBsb25nIHFxOwogICAgaWYgKGEucSA9PSBiLnEpCiAgICB7CiAgICAgICAgZGQgPSBhLmQqYS5zaWduICsgYi5kKmIuc2lnbjsKICAgICAgICBxcSA9IGEucTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBxcSA9IGxjbShhLnEsYi5xKTsKICAgICAgICBkZCA9IGEuZCphLnNpZ24qKHFxL2EucSkgKyBiLmQqYi5zaWduKihxcS9iLnEpOwogICAgfQogICAgcmV0dXJuIGZyYWMoZGQscXEpOwp9CgpmcmFjIG9wZXJhdG9yIC0oY29uc3QgZnJhYyZhLCBjb25zdCBmcmFjJmIpCnsKICAgIGxvbmcgbG9uZyBkZDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBxcTsKICAgIGlmIChhLnEgPT0gYi5xKQogICAgewogICAgICAgIGRkID0gYS5kKmEuc2lnbiAtIGIuZCpiLnNpZ247CiAgICAgICAgcXEgPSBhLnE7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcXEgPSBsY20oYS5xLGIucSk7CiAgICAgICAgZGQgPSBhLmQqYS5zaWduKihxcS9hLnEpIC0gYi5kKmIuc2lnbioocXEvYi5xKTsKICAgIH0KICAgIHJldHVybiBmcmFjKGRkLHFxKTsKfQoKZnJhYyBvcGVyYXRvciAqKGNvbnN0IGZyYWMmYSwgY29uc3QgZnJhYyZiKQp7CiAgICByZXR1cm4gZnJhYyhhLmQqYS5zaWduKmIuZCpiLnNpZ24sYS5xKmIucSk7Cn0KCmZyYWMgb3BlcmF0b3IgLyhjb25zdCBmcmFjJmEsIGNvbnN0IGZyYWMmYikKewogICAgcmV0dXJuIGZyYWMoYS5zaWduKmIuc2lnbiphLmQqYi5xLGEucSpiLmQpOwp9Cgpib29sIG9wZXJhdG9yID09KGNvbnN0IGZyYWMmYSwgY29uc3QgZnJhYyZiKQp7CiAgICByZXR1cm4gYS5kPT1iLmQgJiYgYS5xID09IGIucSAmJiBhLnNpZ24gPT0gYi5zaWduOwp9Cgpib29sIG9wZXJhdG9yICE9KGNvbnN0IGZyYWMmYSwgY29uc3QgZnJhYyZiKQp7CiAgICByZXR1cm4gIShhPT1iKTsKfQoKZnJhYzo6b3BlcmF0b3Igc3RkOjpzdHJpbmcoKSBjb25zdAp7CiAgICBzdGQ6OnN0cmluZyBzID0gKHNpZ24gPiAwKSA/ICIiIDogIi0iOwogICAgcyA9IHMgKyBzdGQ6OnRvX3N0cmluZyhkKSArICIvIiArIHN0ZDo6dG9fc3RyaW5nKHEpOwogICAgcmV0dXJuIHM7Cn0KCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQp7CiAgICBpbnQgbjsKICAgIGNpbiA+PiBuOwogICAgZnJhYyBmKDApOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiAgICB7CiAgICAgICAgZnJhYyB0KGktMSxpKihpKzEpKTsKICAgICAgICBmID0gZiArIHQ7CiAgICB9CiAgICBjb3V0IDw8IHN0cmluZyhmKSA8PCBlbmRsOwp9Cgo=