#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ri register int
const int N = 1e5+10;
int n,m;
int w[N];
int len;
struct E{
int l,r,id;
}q[N];
pair<int,int> ans[N];
map<int,int>S;
int res;
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
int get(int x){
return x/len;
}
bool cmp(E& a,E& b){
int i=get(a.l),j=get(b.l);
if(i!=j)return i<j;
return a.r<b.r;
}
void add(int x){
res+=S[x];
S[x]++;
}
void del(int x){
S[x]--;
res-=S[x];
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m;
for(ri i=1;i<=n;i++)cin>>w[i];
len=sqrt(n);
for(ri i=1;i<=m;i++){
cin>>q[i].l>>q[i].r;
q[i].id=i;
}
sort(q+1,q+1+m,cmp);
for(ri k=1,i=0,j=1;k<=m;k++){//j是左端点
ri id=q[k].id,l=q[k].l,r=q[k].r;
while(i<r)add(w[++i]);
while(i>r)del(w[i--]);
while(j<l)del(w[j++]);
while(j>l)add(w[--j]);
int div=(r-l+1)*(r-l)/2,fac=1;
if(res)fac=gcd(res,div);
else div=1;
ans[id].first=res/fac,ans[id].second=div/fac;
}
for(ri i=1;i<=m;i++)cout<<ans[i].first<<'/'<<ans[i].second<<endl;
return 0;
}