/**
 * Author: Sergey Kopeliovich (Burunduk30@gmail.com)
 * Date: 2012.11.14
 *
 * Solution to acm.timus.ru:1620
 */

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cassert>

#include <algorithm>
#include <iostream>

using namespace std;

#define forn(i, n) for (int i = 0; i < (int)(n); i++)

typedef long long ll;

const int L = 1001;
const int base = 1 << 30;
const int blen = 30;
const int base2 = (int)1e9;
const int blen2 = 9;

ll tmp[L];

struct num
{
  int n, a[L];

  void init( int x )
  {
    n = 0;
    while (x)
      a[n++] = x % base, x /= base;
    reverse(a, a + n);
  }

  num() { n = 0; }
  
  num( int x )
  {
    init(x);
  }

  const int& operator [] ( int i ) const
  {
    return a[i];
  }

  int& operator [] ( int i )
  {
    return a[i];
  }

  num& operator = ( const num &x )
  {
    n = x.n;
    forn(i, n)
      a[i] = x[i];
    return *this;
  }

  num& operator += ( const num &x )
  {
    while (n < x.n)
      a[n++] = 0;
    int m = min(n, x.n);
    forn(i, m)
      a[i] += x[i];
    forn(i, n - 1)
      if (a[i] >= base)
        a[i + 1]++, a[i] -= base;
    if (n && a[n - 1] >= base)
      a[n - 1] -= base, a[n++] = 1;
    return *this;
  }

  num& operator *= ( ll x )
  {  
    if (!n || x <= 0)
    {
      n = 0;
      return *this;
    }
    forn(i, n)
      tmp[i] = a[i] * x;
    forn(i, n - 1)
      tmp[i + 1] += tmp[i] >> blen, a[i] = tmp[i] & (base - 1);
    while (tmp[n - 1] >= base)
      a[n - 1] = tmp[n - 1] & (base - 1), tmp[n] = tmp[n - 1] >> blen, n++;
    a[n - 1] = tmp[n - 1];
    return *this;
  }

  bool even( int x )
  {
    ll rest = 0;
    for (int i = n - 1; i >= 0; i--)
      rest = (rest * base + a[i]) % x;
    return rest == 0;
  }

  void cor()
  {
    while (n > 0 && !a[n - 1])
      n--;
  }

  ll div( int x )
  {
    ll rest = 0;
    for (int i = n - 1; i >= 0; i--)
    {
      rest = rest * base + a[i];
      a[i] = rest / x;
      rest %= x;
    }
    cor();
    return rest;
  }

  void out()
  {
    cor();
    if (!n)
    {
      putchar('0');
      return;
    }

    int tn = 0;
    while (n > 0)
      tmp[tn++] = div(base2);
    assert(tn > 0);
    printf("%d", (int)tmp[--tn]);
    while (tn)
      printf("%0*d", blen2, (int)tmp[--tn]);
  }
};

const int K = 1000;

int n, m, k;
num T, down, res, r[2 * K + 1];

int main()
{
  scanf("%d%d%d", &n, &m, &k);
  if (m * 2 == n)
  {
    printf("%d/%d\n", m, 1);
    return 0;
  }

  r[k].init(1);
  for (int i = 1; i <= k; i++)
    for (int j = k - i; j <= k + i; j += 2)
    {
      r[j].n = 0;
      if (j != k - i)
        T = r[j - 1], r[j] += (T *= n - (m + j - 1 - k));
      if (j != k + i)
        T = r[j + 1], r[j] += (T *= m + j + 1 - k);
    }
  
  for (int i = 0; i <= 2 * k; i += 2)
    res += (r[i] *= m + i - k);

  down.init(1);
  forn(i, k)
    down *= n;

  int p[] = {2, 3, 5, 7, 11, 13, 17};
  forn(t, 7)
    while (res.even(p[t]) && down.even(p[t]))
      res.div(p[t]), down.div(p[t]);

  res.out();
  putchar('/');
  down.out();
  return 0;
}