#include #include #include #include #include #include #include #include #include #define ll long long #define mod 1000000007 #define N 500005 using namespace std; int n,ans,f[N],g[N],a[N]; int read(){ int x=0,fu=1; char ch=getchar(); while (ch<'0' || ch>'9'){ if (ch=='-') fu=-1; ch=getchar(); } while (ch>='0' && ch<='9'){ x=x*10+ch-'0'; ch=getchar(); } return x*fu; } int main(){ int cas=read(); while (cas--){ n=read(); int i,ans=0; for (i=2; i<=n; i++) a[i]=read(); for (i=1; i<=n; i++) f[i]=g[i]=1; for (i=n; i; i--){ ans+=g[i]; if (ans>=mod) ans-=mod; g[a[i]]=((ll)g[a[i]]*f[i]%mod+(ll)g[i]*f[a[i]]%mod+g[a[i]])%mod; f[a[i]]=(ll)f[a[i]]*(f[i]+1)%mod; } printf("%d\n",ans); } return 0; }