#include <bits/stdc++.h>
int mem2[50], mem3[50], memd[50], mem4[50], mem[50], mem5[50], mem6[50], M[50],
    a[50], chk, one[50], T[50], G[50], A[50], B[50], C[50], res[50], T1[50],
    cmax[50];
void cpy(int* a, int* b) {
  int i;
  for (i = 0; i < 50; i++) a[i] = b[i];
}
long long max(long long a, long long b) {
  if (a < b) return b;
  return a;
}
int strlen1(int* a) {
  int i;
  for (i = 50 - 1; i >= 0; i--)
    if (a[i]) break;
  return i + 1;
}
int check_max(int* a, int s, int& e, int* b, int len) {
  while (a[e] == 0) e--;
  int i;
  if (e - s + 1 < len) return 0;
  if (e - s + 1 > len) return 1;
  for (i = len - 1; i >= 0; i--) {
    if (a[i + 1 - len + e] < b[i]) return 0;
    if (a[i + 1 - len + e] > b[i]) return 1;
  }
  return 1;
}
int dmax(int* a, int* b) {
  int i;
  for (i = 50 - 1; i >= 0; i--) {
    if (a[i] < b[i]) return 0;
    if (a[i] > b[i]) return 1;
  }
  return 1;
}
void deci(int* a, long long x) {
  int i = 0;
  while (x) {
    a[i++] = x % 10;
    x /= 10;
  }
}
void plus(int* a, int* b) {
  int len, i;
  len = max(strlen1(a), strlen1(b));
  for (i = 0; i < len; i++) {
    a[i] += b[i];
    if (a[i] >= 10) {
      a[i] -= 10;
      a[i + 1]++;
    }
  }
}
void minus(int* a, int s, int e, int* b) {
  int i;
  for (i = s; i <= e; i++) {
    a[i] -= b[i - s];
    if (a[i] < 0) {
      a[i] += 10;
      a[i + 1]--;
    }
  }
}
void times(int* a, int* b) {
  int lena, lenb, i, j, m;
  lena = strlen1(a);
  memset(mem3, 0, sizeof(mem3));
  memset(mem2, 0, sizeof(mem2));
  for (i = 0; i < lena; i++) mem2[i] = a[i];
  lenb = strlen1(b);
  for (j = 0; j < lenb; j++) {
    m = 0;
    for (i = 0; i < lena; i++) {
      a[i] *= b[j];
      a[i] += m;
      m = a[i] / 10;
      a[i] %= 10;
    }
    a[lena] += m;
    for (i = lena; i >= 0; i--) a[i + j] = a[i];
    for (i = 0; i < j; i++) a[i] = 0;
    plus(mem3, a);
    for (i = 0; i <= lena + j; i++) a[i] = mem2[i];
  }
  int len = strlen1(mem3);
  for (i = 0; i < len; i++) a[i] = mem3[i];
}
void divide(int* a, int* b) {
  memset(memd, 0, sizeof(memd));
  int lena = strlen1(a), lenb = strlen1(b), f = lena - 1, i;
  for (i = lena - 1; i >= 0; i--) {
    if (check_max(a, i, f, b, lenb) == 0) continue;
    while (1) {
      if (check_max(a, i, f, b, lenb) == 0) break;
      minus(a, i, f, b);
      memd[i]++;
    }
  }
  for (i = 0; i < lena; i++) a[i] = memd[i];
}
void mod(int* a, int* b) {
  cpy(mem5, a);
  divide(a, b);
  times(a, b);
  minus(mem5, 0, 50 - 1, a);
  cpy(a, mem5);
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
int big(int* a, int* b) {
  int i;
  if (strlen1(a) > strlen1(b)) return 1;
  if (strlen1(a) < strlen1(b)) return 0;
  for (i = strlen1(a) - 1; i >= 0; i--) {
    if (a[i] > b[i]) return 1;
    if (a[i] < b[i]) return 0;
  }
  return 1;
}
long long min(long long a, long long b) {
  if (a < b) return a;
  return b;
}
long long dc(int* a) {
  long long res = 0, c = 1;
  int i;
  for (i = 0; i < strlen1(a); i++) {
    res += c * a[i];
    c *= 10;
  }
  return res;
}
int main() {
  long long t, a, b, c, g, Res, REs;
  int i;
  scanf("%I64d %I64d %I64d", &t, &a, &b);
  c = min(a, b);
  g = gcd(a, b);
  deci(T, t);
  deci(G, g);
  deci(A, a);
  deci(B, b);
  deci(C, c);
  mem[0] = 1;
  one[0] = 1;
  times(mem, A);
  times(mem, B);
  divide(mem, G);
  divide(T, mem);
  times(T, C);
  plus(res, T);
  deci(T1, t);
  divide(T, C);
  times(T, mem);
  minus(T1, 0, 50 - 1, T);
  minus(C, 0, 50 - 1, one);
  if (dmax(T1, C))
    plus(res, C);
  else
    plus(res, T1);
  Res = dc(res);
  REs = gcd(Res, t);
  Res /= REs;
  t /= REs;
  printf("%I64d/%I64d", Res, t);
  return 0;
}
