#include<iostream>
#include<vector>
#include<math.h>
using namespace std;
#define maxn 100000
int n;
double price,rate;
struct node{
vector<int>children;
}t[maxn];
int minLev=maxn;
int num=0;
void dfs(int root,int depth){
if(t[root].children.size()==0){
if(depth==minLev){
num+=1;
}
else if(depth<minLev){
minLev=depth;
num=1;
}
return;
}
for(int i=0;i<t[root].children.size();i++){
dfs(t[root].children[i],depth+1);
}
}
int main(){
cin>>n>>price>>rate;
rate/=100.0;
for(int i=0;i<n;i++){
int size;
cin>>size;
if(size==0)continue;
for(int j=0;j<size;j++){
int child;
cin>>child;
t[i].children.push_back(child);
}
}
dfs(0,0);
printf("%.4f %d\n",price*pow(1+rate,minLev),num);
return 0;
}