#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 5e4 + 5;
ll n, m, sl, sr, a[N], num[N], len, ans;
struct node{
ll l, r, ans, id;
}q[N];
bool cmp(node a, node b){
if(a.l / len == b.l / len) return a.r / len < b.r / len;
return a.l / len < b.l / len;
}
bool cmp2(node a, node b){
return a.id < b.id;
}
int main(){
cin >> n >> m;
len = sqrt(n);
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= m; i++) cin >> q[i].l >> q[i].r, q[i].id = i;
sort(q + 1, q + m + 1, cmp);
for(int i = 1; i <= m; i++){
while(sl < q[i].l) {
if(sl){
num[a[sl]]--;
ans -= num[a[sl]];
q[i].ans = ans;
}
sl++;
}
while(sl > q[i].l){
sl--;
ans += num[a[sl]];
num[a[sl]]++;
q[i].ans = ans;
}
while(sr < q[i].r){
sr++;
ans += num[a[sr]];
num[a[sr]]++;
q[i].ans = ans;
}
while(sr > q[i].r){
num[a[sr]]--;
ans -= num[a[sr]];
q[i].ans = ans;
sr--;
}
}
sort(q + 1, q + m + 1, cmp2);
for(int i = 1; i <= m; i++) {
if(!(q[i].r - q[i].l)) cout << "0/1\n";
else cout << q[i].ans / __gcd(q[i].ans, ((q[i].r - q[i].l + 1) * (q[i].r - q[i].l) >> 1)) << "/" << ((q[i].r - q[i].l + 1) * (q[i].r - q[i].l) >> 1) / __gcd(q[i].ans, ((q[i].r - q[i].l + 1) * (q[i].r - q[i].l) >> 1)) << "\n";
}
return 0;
}