#include <bits/stdc++.h>
using namespace std;
const long long M = 1000000007;
const long long MM = 998244353;
long long begtime = clock();
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cout << name << " : " << arg1 << "\n";
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cout.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
template <typename T, typename F>
void chmax(T& a, F b) {
  if (b > a) a = b;
}
template <typename T, typename F>
void chmin(T& a, F b) {
  if (b < a) a = b;
}
long long mulmod(long long a, long long b, long long c) {
  long long ans = 0;
  long long y = a % c;
  while (b) {
    if (b & 1) {
      (ans += y) %= c;
    }
    y = y * 2 % c;
    b >>= 1;
  }
  return ans;
}
long long powM(long long a, long long b, long long m) {
  if (a <= 0) return 0;
  a %= m;
  long long ans = 1LL;
  while (b) {
    if (b & 1) ans = ans * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return ans;
}
long long powMbig(long long a, long long b, long long m) {
  if (a <= 0) return 0;
  a %= m;
  long long ans = 1LL;
  while (b) {
    if (b & 1) ans = mulmod(ans, a, m);
    a = mulmod(a, a, m);
    b >>= 1;
  }
  return ans;
}
long long poww(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a;
    a = a * a;
    b >>= 1;
  }
  return ans;
}
string tostring(long long x) {
  stringstream sss;
  sss << x;
  string ans = sss.str();
  return ans;
}
const long long N = 1e6 + 5;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  long double ans = 1e18;
  long long num, den;
  long long x, y, n;
  cin >> x >> y >> n;
  for (long long i = 1; i <= n; i++) {
    long long a1 = (x * i) / y;
    long long a2 = (x * i + y - 1) / y;
    long double temp1 = abs(i * x - a1 * y) / (1.0 * i);
    long double temp2 = abs(i * x - a2 * y) / (1.0 * i);
    if (temp1 < ans) {
      ans = temp1;
      num = a1, den = i;
    }
    if (temp2 < ans) {
      ans = temp2;
      num = a2, den = i;
    }
  }
  cout << num << "/" << den << "\n";
  return 0;
}

### Prompt

Generate a Cpp solution to the following problem:

You are given three positive integers x, y, n. Your task is to find the nearest fraction to fraction <image> whose denominator is no more than n. 

Formally, you should find such pair of integers a, b (1 ≤ b ≤ n; 0 ≤ a) that the value <image> is as minimal as possible.

If there are multiple "nearest" fractions, choose the one with the minimum denominator. If there are multiple "nearest" fractions with the minimum denominator, choose the one with the minimum numerator.

Input

A single line contains three integers x, y, n (1 ≤ x, y, n ≤ 105).

Output

Print the required fraction in the format "a/b" (without quotes).

Examples

Input

3 7 6


Output

2/5


Input

7 2 4


Output

7/2

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
const long long M = 1000000007;
const long long MM = 998244353;
long long begtime = clock();
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cout << name << " : " << arg1 << "\n";
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cout.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
template <typename T, typename F>
void chmax(T& a, F b) {
  if (b > a) a = b;
}
template <typename T, typename F>
void chmin(T& a, F b) {
  if (b < a) a = b;
}
long long mulmod(long long a, long long b, long long c) {
  long long ans = 0;
  long long y = a % c;
  while (b) {
    if (b & 1) {
      (ans += y) %= c;
    }
    y = y * 2 % c;
    b >>= 1;
  }
  return ans;
}
long long powM(long long a, long long b, long long m) {
  if (a <= 0) return 0;
  a %= m;
  long long ans = 1LL;
  while (b) {
    if (b & 1) ans = ans * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return ans;
}
long long powMbig(long long a, long long b, long long m) {
  if (a <= 0) return 0;
  a %= m;
  long long ans = 1LL;
  while (b) {
    if (b & 1) ans = mulmod(ans, a, m);
    a = mulmod(a, a, m);
    b >>= 1;
  }
  return ans;
}
long long poww(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a;
    a = a * a;
    b >>= 1;
  }
  return ans;
}
string tostring(long long x) {
  stringstream sss;
  sss << x;
  string ans = sss.str();
  return ans;
}
const long long N = 1e6 + 5;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  long double ans = 1e18;
  long long num, den;
  long long x, y, n;
  cin >> x >> y >> n;
  for (long long i = 1; i <= n; i++) {
    long long a1 = (x * i) / y;
    long long a2 = (x * i + y - 1) / y;
    long double temp1 = abs(i * x - a1 * y) / (1.0 * i);
    long double temp2 = abs(i * x - a2 * y) / (1.0 * i);
    if (temp1 < ans) {
      ans = temp1;
      num = a1, den = i;
    }
    if (temp2 < ans) {
      ans = temp2;
      num = a2, den = i;
    }
  }
  cout << num << "/" << den << "\n";
  return 0;
}

```