#include <bits/stdc++.h>
using namespace std;
using ll = long long;
// حساب GCD
ll gcdll(ll a, ll b) {
return b==0 ? a : gcdll(b, a%b);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin >> N;
vector<int> V(N);
for(int &x: V) cin >> x;
// 1) ضغط القيم إلى [0..N-1]
{
auto W = V;
sort(W.begin(), W.end());
W.erase(unique(W.begin(), W.end()), W.end());
for(int &x: V) x = int(lower_bound(W.begin(), W.end(), x) - W.begin());
}
// 2) بناء الـ Suffix Array
vector<int> sa(N), rnk(N), tmp(N);
for(int i=0;i<N;i++){
sa[i]=i;
rnk[i]=V[i];
}
for(int k=1;;k<<=1){
auto cmp = [&](int a,int b){
if(rnk[a]!=rnk[b]) return rnk[a]<rnk[b];
int ra = a+k<N ? rnk[a+k] : -1;
int rb = b+k<N ? rnk[b+k] : -1;
return ra<rb;
};
sort(sa.begin(), sa.end(), cmp);
tmp[sa[0]] = 0;
for(int i=1;i<N;i++){
tmp[sa[i]] = tmp[sa[i-1]] + cmp(sa[i-1], sa[i]);
}
rnk = tmp;
if(rnk[sa[N-1]]==N-1) break;
}
// 3) حساب LCP (Kasai)
vector<int> inv(N), lcp(N);
for(int i=0;i<N;i++) inv[sa[i]] = i;
int h = 0;
for(int i=0;i<N;i++){
if(inv[i]>0){
int j = sa[inv[i]-1];
while(i+h<N && j+h<N && V[i+h]==V[j+h]) h++;
lcp[inv[i]] = h;
if(h>0) h--;
}
}
// 4) مجموع LCP(i,j) لجميع i<j عبر subarray-minimums
int M = N-1;
vector<ll> A(M+1);
for(int k=1;k<=M;k++){
A[k] = lcp[k];
}
vector<ll> ple(M+1), nle(M+1);
stack<int> st;
// PLE
for(int i=1;i<=M;i++){
while(!st.empty() && A[st.top()] >= A[i]) st.pop();
ple[i] = st.empty() ? 0 : st.top();
st.push(i);
}
while(!st.empty()) st.pop();
// NLE
for(int i=M;i>=1;i--){
while(!st.empty() && A[st.top()] > A[i]) st.pop();
nle[i] = st.empty() ? (M+1) : st.top();
st.push(i);
}
ll sumPairs = 0;
for(int k=1;k<=M;k++){
ll leftCnt = k - ple[k];
ll rightCnt = nle[k] - k;
sumPairs += A[k] * leftCnt * rightCnt;
}
// 5) أضف مطابقات النفس
ll sumSelf = (ll)N*(N+1)/2;
ll total = sumSelf + 2*sumPairs;
ll denom = (ll)N * N;
ll g = gcdll(total, denom);
cout << (total/g) << "/" << (denom/g) << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKLy8g2K3Ys9in2KggR0NECmxsIGdjZGxsKGxsIGEsIGxsIGIpIHsKICAgIHJldHVybiBiPT0wID8gYSA6IGdjZGxsKGIsIGElYik7Cn0KCmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGludCBOOyAKICAgIGNpbiA+PiBOOwogICAgdmVjdG9yPGludD4gVihOKTsKICAgIGZvcihpbnQgJng6IFYpIGNpbiA+PiB4OwoKICAgIC8vIDEpINi22LrYtyDYp9mE2YLZitmFINil2YTZiSBbMC4uTi0xXQogICAgewogICAgICAgIGF1dG8gVyA9IFY7CiAgICAgICAgc29ydChXLmJlZ2luKCksIFcuZW5kKCkpOwogICAgICAgIFcuZXJhc2UodW5pcXVlKFcuYmVnaW4oKSwgVy5lbmQoKSksIFcuZW5kKCkpOwogICAgICAgIGZvcihpbnQgJng6IFYpIHggPSBpbnQobG93ZXJfYm91bmQoVy5iZWdpbigpLCBXLmVuZCgpLCB4KSAtIFcuYmVnaW4oKSk7CiAgICB9CgogICAgLy8gMikg2KjZhtin2KEg2KfZhNmAIFN1ZmZpeCBBcnJheQogICAgdmVjdG9yPGludD4gc2EoTiksIHJuayhOKSwgdG1wKE4pOwogICAgZm9yKGludCBpPTA7aTxOO2krKyl7CiAgICAgICAgc2FbaV09aTsKICAgICAgICBybmtbaV09VltpXTsKICAgIH0KICAgIGZvcihpbnQgaz0xOztrPDw9MSl7CiAgICAgICAgYXV0byBjbXAgPSBbJl0oaW50IGEsaW50IGIpewogICAgICAgICAgICBpZihybmtbYV0hPXJua1tiXSkgcmV0dXJuIHJua1thXTxybmtbYl07CiAgICAgICAgICAgIGludCByYSA9IGErazxOID8gcm5rW2Era10gOiAtMTsKICAgICAgICAgICAgaW50IHJiID0gYitrPE4gPyBybmtbYitrXSA6IC0xOwogICAgICAgICAgICByZXR1cm4gcmE8cmI7CiAgICAgICAgfTsKICAgICAgICBzb3J0KHNhLmJlZ2luKCksIHNhLmVuZCgpLCBjbXApOwogICAgICAgIHRtcFtzYVswXV0gPSAwOwogICAgICAgIGZvcihpbnQgaT0xO2k8TjtpKyspewogICAgICAgICAgICB0bXBbc2FbaV1dID0gdG1wW3NhW2ktMV1dICsgY21wKHNhW2ktMV0sIHNhW2ldKTsKICAgICAgICB9CiAgICAgICAgcm5rID0gdG1wOwogICAgICAgIGlmKHJua1tzYVtOLTFdXT09Ti0xKSBicmVhazsKICAgIH0KCiAgICAvLyAzKSDYrdiz2KfYqCBMQ1AgKEthc2FpKQogICAgdmVjdG9yPGludD4gaW52KE4pLCBsY3AoTik7CiAgICBmb3IoaW50IGk9MDtpPE47aSsrKSBpbnZbc2FbaV1dID0gaTsKICAgIGludCBoID0gMDsKICAgIGZvcihpbnQgaT0wO2k8TjtpKyspewogICAgICAgIGlmKGludltpXT4wKXsKICAgICAgICAgICAgaW50IGogPSBzYVtpbnZbaV0tMV07CiAgICAgICAgICAgIHdoaWxlKGkraDxOICYmIGoraDxOICYmIFZbaStoXT09VltqK2hdKSBoKys7CiAgICAgICAgICAgIGxjcFtpbnZbaV1dID0gaDsKICAgICAgICAgICAgaWYoaD4wKSBoLS07CiAgICAgICAgfQogICAgfQoKICAgIC8vIDQpINmF2KzZhdmI2LkgTENQKGksaikg2YTYrNmF2YrYuSBpPGog2LnYqNixIHN1YmFycmF5LW1pbmltdW1zCiAgICBpbnQgTSA9IE4tMTsKICAgIHZlY3RvcjxsbD4gQShNKzEpOwogICAgZm9yKGludCBrPTE7azw9TTtrKyspewogICAgICAgIEFba10gPSBsY3Bba107CiAgICB9CgogICAgdmVjdG9yPGxsPiBwbGUoTSsxKSwgbmxlKE0rMSk7CiAgICBzdGFjazxpbnQ+IHN0OwogICAgLy8gUExFCiAgICBmb3IoaW50IGk9MTtpPD1NO2krKyl7CiAgICAgICAgd2hpbGUoIXN0LmVtcHR5KCkgJiYgQVtzdC50b3AoKV0gPj0gQVtpXSkgc3QucG9wKCk7CiAgICAgICAgcGxlW2ldID0gc3QuZW1wdHkoKSA/IDAgOiBzdC50b3AoKTsKICAgICAgICBzdC5wdXNoKGkpOwogICAgfQogICAgd2hpbGUoIXN0LmVtcHR5KCkpIHN0LnBvcCgpOwogICAgLy8gTkxFCiAgICBmb3IoaW50IGk9TTtpPj0xO2ktLSl7CiAgICAgICAgd2hpbGUoIXN0LmVtcHR5KCkgJiYgQVtzdC50b3AoKV0gPiBBW2ldKSBzdC5wb3AoKTsKICAgICAgICBubGVbaV0gPSBzdC5lbXB0eSgpID8gKE0rMSkgOiBzdC50b3AoKTsKICAgICAgICBzdC5wdXNoKGkpOwogICAgfQoKICAgIGxsIHN1bVBhaXJzID0gMDsKICAgIGZvcihpbnQgaz0xO2s8PU07aysrKXsKICAgICAgICBsbCBsZWZ0Q250ICA9IGsgLSBwbGVba107CiAgICAgICAgbGwgcmlnaHRDbnQgPSBubGVba10gLSBrOwogICAgICAgIHN1bVBhaXJzICs9IEFba10gKiBsZWZ0Q250ICogcmlnaHRDbnQ7CiAgICB9CgogICAgLy8gNSkg2KPYttmBINmF2LfYp9io2YLYp9iqINin2YTZhtmB2LMKICAgIGxsIHN1bVNlbGYgPSAobGwpTiooTisxKS8yOwogICAgbGwgdG90YWwgICA9IHN1bVNlbGYgKyAyKnN1bVBhaXJzOwogICAgbGwgZGVub20gICA9IChsbClOICogTjsKICAgIGxsIGcgICAgICAgPSBnY2RsbCh0b3RhbCwgZGVub20pOwoKICAgIGNvdXQgPDwgKHRvdGFsL2cpIDw8ICIvIiA8PCAoZGVub20vZykgPDwgIlxuIjsKICAgIHJldHVybiAwOwp9