Let's assume that 

  * v(n) is the largest prime number, that does not exceed n;
  * u(n) is the smallest prime number strictly greater than n. 



Find <image>.

Input

The first line contains integer t (1 ≤ t ≤ 500) — the number of testscases. 

Each of the following t lines of the input contains integer n (2 ≤ n ≤ 109).

Output

Print t lines: the i-th of them must contain the answer to the i-th test as an irreducible fraction "p/q", where p, q are integers, q > 0.

Examples

Input

2
2
3


Output

1/6
7/30
#include <bits/stdc++.h>
using namespace std;
long long gcd(long long x, long long y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
struct fs {
  long long zi, mu;
  void hj() {
    long long g = gcd(zi, mu);
    zi /= g;
    mu /= g;
  }
  fs operator+(const fs &a) {
    fs c;
    c.mu = mu * a.mu;
    c.zi = zi * a.mu + a.zi * mu;
    c.hj();
    return c;
  }
  fs operator-(const fs &a) {
    fs c;
    c.mu = mu * a.mu;
    c.zi = zi * a.mu - a.zi * mu;
    c.hj();
    return c;
  }
};
int T, n;
fs ans;
void init() {
  ans.zi = 1;
  ans.mu = 2;
}
bool pr(int x) {
  if (x == 1) return false;
  if (x == 2) return true;
  for (int i = 2; i * i <= x; i++) {
    if (x % i == 0) return false;
  }
  return true;
}
int big(int x) {
  while (1) {
    x++;
    if (pr(x)) return x;
  }
}
int sml(int x) {
  while (1) {
    if (pr(x)) return x;
    x--;
  }
}
int main() {
  scanf("%d", &T);
  for (int tt = 1; tt <= T; tt++) {
    init();
    scanf("%d", &n);
    int l = sml(n), r = big(n);
    ans.zi = (long long)r * (l - 2) + 2 * (n - l + 1);
    ans.mu = 2 * (long long)l * r;
    ans.hj();
    printf("%I64d/%I64d\n", ans.zi, ans.mu);
  }
  return 0;
}
