char a[1d3][1d3]; char by[1d3],bx[1d3]; { ll@n; rep(y,n){ ll b=0; rep(x,n){ char@s; b^=s&1; ll c=b; if(y) c^=a[y-1][x]; a[y][x]=c; by[y]^=c; bx[x]^=c; } if(b){ wt(-1); exit(0); } } rep(x,n){ if(a[n-1][x]){ wt(-1); exit(0); } } if(!(n&1)){ rep(y,n-1){ if(by[y]!=by[0]){ wt(-1); exit(0); } } rep(x,n-1){ if(bx[x]!=by[0]){ wt(-1); exit(0); } } } ll z=0; rep(y,n-1){ rep(x,n-1){ z+=a[y][x]^=by[y]^bx[x]; } } wt(z); rep(y,n-1){ rep(x,n-1){ if(a[y][x]){ wt(y+1,x+1); } } } }