#include<stdio.h>
int tr[][6]={{0,0,1,1,2,2}, /* 空空空 時の サイコロの目から、部屋番号への 変換table */
{1,2,1,1,2,2}, /* 満空空 以下同様 */
{0,0,0,2,2,2}, /* 空満空 */
{2,2,2,2,2,2}, /* 満満空 */
{0,0,1,1,0,1}, /* 空空満 */
{1,1,1,1,1,1}, /* 満空満 */
{0,0,0,0,0,0}}; /* 空満満 */
int l[7],data[6][6];
void f(int depth){
int i,j,k;
if(depth<6){
j = (l[1]!=-1) + 2*(l[3]!=-1) + 4*(l[5]!=-1); /* 部屋の空満状況を判断 */
for(i=0;i<6;i++){
k=2*tr[j][i];
if(l[k]!=-1)k++;
l[k]=depth;
f(depth+1);
l[k]=-1;
}
}else{
data[l[0]][l[1]]++; data[l[2]][l[3]]++; data[l[4]][l[5]]++;
}
}
int main(){
for(int i=0;i<7;i++)l[i]=-1;
f(0);
for(int i=0;i<6;i++){for(int j=0;j<6;j++)printf("%d ",data[i][j]);printf("\n");}printf("\n");
for(int i=0;i<6;i++){for(int j=0;j<6;j++)printf("%12.10f ",(double)data[i][j]/216.0/216.0);printf("\n");}
return 0;
}