メインルーチン

our @names;
#配列番号→配列名 頻繁に使うのでourかなあ?

our $bit_length;
#配列数より大きい数であればなんでもいい。ビット数を数えるときに使う。

our %bit;
#要素 => 要素を含む配列を1, 含まない配列を0としてビット列にして1つにまとめたもの
#$bit{'3'} = 101なら、最初の配列と3つめの配列だけ'3'を要素としてもっている。
#これが処理の核となるデータ。
{
	my %h;
	%h = &data_hush(@data);
#生データからいきなり%bitを生成するのはしんどいので、ハッシュを経る

	%bit = &hash_bit(%h);
#一番重要な%bitを得る

#核となる再帰ルーチンに渡す初期状態を作り上げる
	my @key = sort {$a cmp $b} keys %bit;
#いちいちkeysを使ってると日が暮れるので作ってしまう

	my $all_1 = $bit{$key[0]} | ~$bit{$key[0]};
#どの要素も列挙する可能性があるところからスタート

	$bit_length = 8 * length $all_1;
#フラグの個数を下回らない、かつバイトの整数倍となるビットの個数

	&recursive_exist($all_1, [], \@key);
#全てのデータと初期条件はそろったのであとは再起ルーチンに任せるだけ
}