#include<bits/stdc++.h> #define MAXN 300005 #define LOG 25 usingnamespace std; inlineintread(){ int x=0,f=1; char ch=getchar(); while (ch<'0'||ch>'9'){ if (ch=='-') f=-1; ch=getchar(); } while (ch>='0'&&ch<='9'){ x=(x<<1)+(x<<3)+(ch^'0'); ch=getchar(); } return x*f; } int a[MAXN],m[MAXN]; int to[MAXN][LOG],sum[MAXN][LOG]; inlineintCalc(int l,int r){//sigma_{i=l}^r-1 dist(i,r) if (a[r]<=l) return (r-1)-l+1; int s=r-1,p=a[r],cnt=0; for (registerint i=LOG-1;i>=0;--i){ if (to[p][i]>l){//可以跳 cnt|=(1<<i); s+=sum[p][i]; p=to[p][i]; } } s+=(p-1),cnt+=2; return s-cnt*(l-1);//去掉前面部分 } intmain(){ int n=read(); for (registerint i=2;i<=n;++i) a[i]=read(); m[n]=a[n]; for (registerint i=n-1;i>=1;--i){ m[i]=min(m[i+1],a[i]); } for (registerint i=1;i<=n;++i) to[i][0]=m[i],sum[i][0]=i-1; for (registerint j=1;j<LOG;++j){ for (registerint i=1;i<=n;++i){ to[i][j]=to[to[i][j-1]][j-1]; sum[i][j]=sum[i][j-1]+sum[to[i][j-1]][j-1]; } } int q=read(); while (q--){ int l=read(),r=read(),x=read(); int ans=Calc(l,x)-Calc(r+1,x); int down=r-l+1; int g=__gcd(ans,down); printf("%d/%d\n",ans/g,down/g); } }