#include <iostream>

using namespace std;

int bitcount(int x) {
	int c = 0;
	while (x) {
		c += x & 1;
		x>>=1;
	}
	return c;
}

int bit(int v, int x, int y) {
	return ((v>>(y*5+x))&1)!=0;
}

bool isBingo(int v) {
	return (bit(v, 0, 0)&&bit(v, 0, 1)&&bit(v, 0, 2)&&bit(v, 0, 3)&&bit(v, 0, 4))
		|| (bit(v, 1, 0)&&bit(v, 1, 1)&&bit(v, 1, 2)&&bit(v, 1, 3)&&bit(v, 1, 4))
		|| (bit(v, 2, 0)&&bit(v, 2, 1)&&bit(v, 2, 2)&&bit(v, 2, 3)&&bit(v, 2, 4))
		|| (bit(v, 3, 0)&&bit(v, 3, 1)&&bit(v, 3, 2)&&bit(v, 3, 3)&&bit(v, 3, 4))
		|| (bit(v, 4, 0)&&bit(v, 4, 1)&&bit(v, 4, 2)&&bit(v, 4, 3)&&bit(v, 4, 4))
		|| (bit(v, 0, 0)&&bit(v, 1, 0)&&bit(v, 2, 0)&&bit(v, 3, 0)&&bit(v, 4, 0))
		|| (bit(v, 0, 1)&&bit(v, 1, 1)&&bit(v, 2, 1)&&bit(v, 3, 1)&&bit(v, 4, 1))
		|| (bit(v, 0, 2)&&bit(v, 1, 2)&&bit(v, 2, 2)&&bit(v, 3, 2)&&bit(v, 4, 2))
		|| (bit(v, 0, 3)&&bit(v, 1, 3)&&bit(v, 2, 3)&&bit(v, 3, 3)&&bit(v, 4, 3))
		|| (bit(v, 0, 4)&&bit(v, 1, 4)&&bit(v, 2, 4)&&bit(v, 3, 4)&&bit(v, 4, 4))
		|| (bit(v, 0, 0)&&bit(v, 1, 1)&&bit(v, 2, 2)&&bit(v, 3, 3)&&bit(v, 4, 4))
		|| (bit(v, 0, 4)&&bit(v, 1, 3)&&bit(v, 2, 2)&&bit(v, 3, 1)&&bit(v, 4, 0))
		;
}

bool isReach(int v) {
	return (4==bit(v, 0, 0)+bit(v, 0, 1)+bit(v, 0, 2)+bit(v, 0, 3)+bit(v, 0, 4))
		|| (4==bit(v, 1, 0)+bit(v, 1, 1)+bit(v, 1, 2)+bit(v, 1, 3)+bit(v, 1, 4))
		|| (4==bit(v, 2, 0)+bit(v, 2, 1)+bit(v, 2, 2)+bit(v, 2, 3)+bit(v, 2, 4))
		|| (4==bit(v, 3, 0)+bit(v, 3, 1)+bit(v, 3, 2)+bit(v, 3, 3)+bit(v, 3, 4))
		|| (4==bit(v, 4, 0)+bit(v, 4, 1)+bit(v, 4, 2)+bit(v, 4, 3)+bit(v, 4, 4))
		|| (4==bit(v, 0, 0)+bit(v, 1, 0)+bit(v, 2, 0)+bit(v, 3, 0)+bit(v, 4, 0))
		|| (4==bit(v, 0, 1)+bit(v, 1, 1)+bit(v, 2, 1)+bit(v, 3, 1)+bit(v, 4, 1))
		|| (4==bit(v, 0, 2)+bit(v, 1, 2)+bit(v, 2, 2)+bit(v, 3, 2)+bit(v, 4, 2))
		|| (4==bit(v, 0, 3)+bit(v, 1, 3)+bit(v, 2, 3)+bit(v, 3, 3)+bit(v, 4, 3))
		|| (4==bit(v, 0, 4)+bit(v, 1, 4)+bit(v, 2, 4)+bit(v, 3, 4)+bit(v, 4, 4))
		|| (4==bit(v, 0, 0)+bit(v, 1, 1)+bit(v, 2, 2)+bit(v, 3, 3)+bit(v, 4, 4))
		|| (4==bit(v, 0, 4)+bit(v, 1, 3)+bit(v, 2, 2)+bit(v, 3, 1)+bit(v, 4, 0))
		;
}


int main() {
	
	int total[26] = {0};
	int bingo[26] = {0};
	int reach[26] = {0};
	
	const int end = 1 << 25;
	for (int i = 0; i < end; i++) {
		int c = bitcount(i);
		total[c]++;
		if (isBingo(i)) bingo[c]++;
		else if (isReach(i)) reach[c]++;
	}
	
	puts("      total   bingo   reach   bingoRate  reachRate  bothRate");
	for (int i = 0; i < 26; i++) {
		double br = double(bingo[i]) / double(total[i]);
		double rr = double(reach[i]) / double(total[i]);
		double tr = double(bingo[i]+reach[i]) / double(total[i]);
		printf("N=%2d: %7d %7d %7d %0.8lf %0.8lf %0.8lf\n",
			i, total[i], bingo[i], reach[i],
			br,rr,tr);
	}
	
	return 0;
}