#include #include #include #include #include using namespace std; int data[17][17]; const int LIMIT=16; long long int dp[70000][16]; vector seed[17]; vector perm[70000]; int isV(int p1,int p2){ if(p1>p2){ std::swap(p1,p2); } if(data[p1][p2]==1)return p1; return p2; } int main(){ memset(dp,0,sizeof(dp)); for(int i=0;i vec[17]; for(int i=1;i<=65535;i++){ bitset<16> b1(i); int t=b1.count(); if(t==2||t==4||t==8){ if((t<8)||((t==8)&&((i&1)==1))){ seed[b1.count()].push_back(i); } for(int j=0;j<16;j++){ if((i&(1< ss4[17]; vector vs4[17]; for(int i=0;i0){ ss4[v].insert(p1); } } } } } } for(int i=0;i<16;i++){ for(set::iterator it=ss4[i].begin();it!=ss4[i].end();it++){ vs4[i].push_back((*it)); } } for(int a=0;a<16;a++){ for(int i=0;i