#include <bits/stdc++.h>
using namespace std;
bool isPrime(long long n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (long long i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0) return false;
  return true;
}
vector<long long> primes;
bool prime[10005];
void seive() {
  memset(prime, 1, sizeof(prime));
  prime[0] = 0;
  prime[1] = 0;
  for (long long i = 2; i <= 10000; i++) {
    if (prime[i] == 1) {
      for (long long j = i * i; j <= 10000; j += i) prime[j] = 0;
    }
  }
}
long long power(long long a, long long b) {
  long long ans = 1;
  while (b > 0) {
    if (b % 2 == 1) ans = (ans % 1000000007 * a % 1000000007) % 1000000007;
    a = (a * a) % 1000000007;
    b = b / 2;
  }
  return ans;
}
template <typename T>
std::string NumberToString(T Number) {
  std::ostringstream ss;
  ss << Number;
  return ss.str();
}
string no_to_bits(long long n) {
  string temp = "";
  while (n) {
    temp += (n % 2) + '0';
    n /= 2;
  }
  reverse(temp.begin(), temp.end());
  return temp;
}
long long bits_to_no(string s) {
  long long ans = 0, var = 0;
  for (int i = s.size() - 1; i >= 0; i--) {
    ans += pow(2, var++) * (s[i] - '0');
  }
  return ans;
}
void solve() {
  long double x, y;
  long long n;
  cin >> x >> y >> n;
  long long yy = y;
  long double mini = 1000000000.0;
  long long i, j, ansn, ansd;
  for (i = 1; i <= n; i++) {
    long long num = (x * i);
    if (num % yy == 0) {
      long long ansn = (x * i) / y;
      long long ansd = i;
      cout << ansn << "/" << ansd;
      return;
    } else {
      long long div1 = (x * i) / y;
      long long div2 = div1 + 1;
      long double a1 = (div1 * (long double)1.0) / i,
                  a2 = (div2 * (long double)1.0) / i;
      long double initial = (x / y);
      long double check1 = abs(a1 - initial), check2 = abs(a2 - initial);
      if (check1 < mini) {
        mini = check1;
        ansn = div1;
        ansd = i;
      }
      if (check2 < mini) {
        mini = check2;
        ansn = div2;
        ansd = i;
      }
    }
  }
  cout << ansn << "/" << ansd;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  bool codechef = 0;
  long long t = 1;
  if (codechef) cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}

### Prompt

Please create a solution in Cpp 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;
bool isPrime(long long n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (long long i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0) return false;
  return true;
}
vector<long long> primes;
bool prime[10005];
void seive() {
  memset(prime, 1, sizeof(prime));
  prime[0] = 0;
  prime[1] = 0;
  for (long long i = 2; i <= 10000; i++) {
    if (prime[i] == 1) {
      for (long long j = i * i; j <= 10000; j += i) prime[j] = 0;
    }
  }
}
long long power(long long a, long long b) {
  long long ans = 1;
  while (b > 0) {
    if (b % 2 == 1) ans = (ans % 1000000007 * a % 1000000007) % 1000000007;
    a = (a * a) % 1000000007;
    b = b / 2;
  }
  return ans;
}
template <typename T>
std::string NumberToString(T Number) {
  std::ostringstream ss;
  ss << Number;
  return ss.str();
}
string no_to_bits(long long n) {
  string temp = "";
  while (n) {
    temp += (n % 2) + '0';
    n /= 2;
  }
  reverse(temp.begin(), temp.end());
  return temp;
}
long long bits_to_no(string s) {
  long long ans = 0, var = 0;
  for (int i = s.size() - 1; i >= 0; i--) {
    ans += pow(2, var++) * (s[i] - '0');
  }
  return ans;
}
void solve() {
  long double x, y;
  long long n;
  cin >> x >> y >> n;
  long long yy = y;
  long double mini = 1000000000.0;
  long long i, j, ansn, ansd;
  for (i = 1; i <= n; i++) {
    long long num = (x * i);
    if (num % yy == 0) {
      long long ansn = (x * i) / y;
      long long ansd = i;
      cout << ansn << "/" << ansd;
      return;
    } else {
      long long div1 = (x * i) / y;
      long long div2 = div1 + 1;
      long double a1 = (div1 * (long double)1.0) / i,
                  a2 = (div2 * (long double)1.0) / i;
      long double initial = (x / y);
      long double check1 = abs(a1 - initial), check2 = abs(a2 - initial);
      if (check1 < mini) {
        mini = check1;
        ansn = div1;
        ansd = i;
      }
      if (check2 < mini) {
        mini = check2;
        ansn = div2;
        ansd = i;
      }
    }
  }
  cout << ansn << "/" << ansd;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  bool codechef = 0;
  long long t = 1;
  if (codechef) cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}

```