#include using namespace std; typedef signed long long ll; #define _P(...) (void)printf(__VA_ARGS__) #define FOR(x,to) for(x=0;x<(to);x++) #define FORR(x,arr) for(auto& x:arr) #define FORR2(x,y,arr) for(auto& [x,y]:arr) #define ALL(a) (a.begin()),(a.end()) #define ZERO(a) memset(a,0,sizeof(a)) #define MINUS(a) memset(a,0xff,sizeof(a)) template bool chmax(T &a, const T &b) { if(a bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;} //------------------------------------------------------- int H,W,Q; ll A[20][20]; const int MAT=400; ll ma[MAT][MAT],pat[MAT][MAT]; ll V[404]; vector cand[20]; // bitsetであるAを独立bit vectorにする際、結果をBに示す template int gf2_rank(C A[MAT][MAT],C B[MAT][MAT],int H,int W) { /* input */ int i,j,k; FOR(i,H) FOR(j,H) B[i][j]=(i==j); FOR(i,H) { int be=i,mi=W+1; for(j=i;j=W) break; FOR(j,W) swap(A[i][j],A[be][j]); FOR(j,H) swap(B[i][j],B[be][j]); FOR(j,H) if(i!=j&&A[j][mi]) { FOR(k,W) A[j][k] ^= A[i][k]; FOR(k,H) B[j][k] ^= B[i][k]; } } return i; } void solve() { int i,j,k,l,r,x,y; string s; cin>>H>>W; FOR(y,H) { FOR(x,W) { cin>>A[y][x]; FOR(i,60) if(A[y][x]&(1LL<>Q; while(Q--) { ll X; cin>>X; if(X==0) { cout<<3<> ret; FOR(y,H) { cand[y].clear(); FOR(x,W) if(B[y*W+x]) cand[y].push_back(x); if(cand[y].empty()) continue; if(pre!=-1) { if(count(ALL(cand[y]),pre)) { cand[y].erase(remove(ALL(cand[y]), pre), cand[y].end()); cand[y].insert(cand[y].begin(),pre); } else { cand[y].insert(cand[y].begin(),pre); cand[y].push_back(pre); } } pre=cand[y].back(); FORR(a,cand[y]) ret.push_back({y,a}); } cout<