#include<bits/stdc++.h>
#define N 50004
#define int long long
using namespace std;
int n,m,a[N],bl[N],cnt[N];
struct pnt{
int l,r,bh,ans;
}q[N];
bool cmp(pnt a,pnt b){
if(bl[a.l]==bl[b.l])
return a.r<b.r;
return bl[a.l]<=bl[b.l];
}
bool cmp_bh(pnt a,pnt b){
return a.bh<b.bh;
}
void add(int,int&),del(int,int&);
int gcd(int,int);
void pre();
signed main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;++i)
scanf("%lld",&a[i]);
pre();
for(int i=1;i<=m;++i){
scanf("%lld%lld",&q[i].l,&q[i].r);
q[i].bh=i;
}
sort(q+1,q+1+m,cmp);
int l=q[1].l,r=l;
for(;r<=q[1].r;++r)
add(a[r],q[1].ans);
--r;
for(int i=2;i<=m;++i){
q[i].ans=q[i-1].ans;
while(l>q[i].l)
add(a[--l],q[i].ans);
while(l<q[i].l)
del(a[l++],q[i].ans);
while(r<q[i].r)
add(a[++r],q[i].ans);
while(r>q[i].r)
del(a[r--],q[i].ans);
}
sort(q+1,q+1+m,cmp_bh);
for(int i=1;i<=m;++i){
int p=(q[i].r-q[i].l)*(q[i].r-q[i].l+1),k=gcd(p,q[i].ans);
if(q[i].ans&&q[i].r!=q[i].l)
printf("%lld/%lld\n",q[i].ans/k,p/k);
else
printf("0/1\n");
}
return 0;
}
void add(int k,int &ans){
++cnt[k];
if(cnt[k]>1)
ans+=(cnt[k]<<1)-2;
else
ans+=cnt[k]*cnt[k]-cnt[k];
}
void del(int k,int &ans){
--cnt[k];
ans-=(cnt[k]<<1);
}
void pre(){
int B=(int)sqrt(m);
for(int i=1;i<=n;++i){
bl[i]=i/B;
if(i%B)
++bl[i];
}
}
int gcd(int a,int b){
return !b?a:gcd(b,a%b);
}