#pragma once
template<intm>vector<int>max_independent_set(constvector<vector<int>>&g){constexprintM=(m+63)/64*64;intN=g.size();vector<bitset<M>>bs(N);for(inti=0;i<N;i++)for(auto&j:g[i])bs[i][j]=bs[j][i]=1;bitset<M>res,cur,ignore;autodfs=[&](autorec,inti)->void{if(i==N){if(cur.count()>res.count())res=cur;return;}if((bs[i]&cur).any()||(bs[i]&~ignore).count()>=2){ignore[i]=1;rec(rec,i+1);ignore[i]=0;}if((bs[i]&cur).none()){cur[i]=1;rec(rec,i+1);cur[i]=0;}};dfs(dfs,0);vector<int>res2;for(inti=0;i<N;i++)if(res[i])res2.push_back(i);returnres2;}