#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<string.h>
#include<cmath>
#include<string>
using namespace std;
//
/*************************
题意:
从底部向上查询到根部,求最长路径和该相同路径有多少个
*************************/
/************************
求解要点:
这个很简单,从非叶节点出发到根节点,同时修改过程中每个点的信息即可。
不要从根开始,因为一个点只有1个入度,但可能有2个出度,
************************/
/***********************
笔记:
*********************/
#define M 100005
#define INF 0xfffff
int father[M];
int noleaf[M];
int len[M];
int getlen(int node)
{
if(node==-1)
return -1;
if(len[node]!=-1)
return len[node];
int p =father[node];
len[node]=getlen(p)+1;
return len[node];
}
int main()
{
int n;
double p,r;
int f;
int i;
int root;
scanf("%d%lf%lf",&n,&p,&r);
memset(noleaf,0,sizeof(noleaf));
for(i=0;i<n;i++)
{
len[i]=-1;
scanf("%d",&f);
father[i]=f;
noleaf[f]=1;
}
int maxlen=-1,maxn=1;
int len;
for(i=0;i<n;i++)
if(!noleaf[i])
{
len=getlen(i);
if(len > maxlen)
{
maxlen=len;
maxn=1;
}
else if(len==maxlen)
maxn++;
}
while(maxlen--)
p=p*(1+r/100);
printf("%.2lf %d\n",p,maxn);
return 0;