Use this to learn the idea, then write your own version.
1package main2 3import (4 "bufio"5 . "fmt"6 "io"7)8 910func CF1439A2(_r io.Reader, _w io.Writer) {11 in := bufio.NewReader(_r)12 out := bufio.NewWriter(_w)13 defer out.Flush()14 15 var T, n, m int16 for Fscan(in, &T); T > 0; T-- {17 Fscan(in, &n, &m)18 a := make([][]byte, n)19 for i := range a {20 Fscan(in, &a[i])21 }22 23 ans := [][][]int{}24 add := func(ps [][]int) {25 ans = append(ans, ps)26 for _, p := range ps {27 a[p[0]][p[1]] ^= 128 }29 }30 for i := n - 1; i > 1; i-- {31 for j, b := range a[i] {32 if b == '1' {33 if j+1 < m {34 add([][]int{{i, j}, {i - 1, j}, {i - 1, j + 1}})35 } else {36 add([][]int{{i, j}, {i - 1, j}, {i - 1, j - 1}})37 }38 }39 }40 }41 for j := m - 1; j > 1; j-- {42 for i := 0; i < 2; i++ {43 if a[i][j] == '1' {44 add([][]int{{i, j}, {0, j - 1}, {1, j - 1}})45 }46 }47 }48 49 cell := [][]int{{0, 0}, {0, 1}, {1, 0}, {1, 1}}50 var p0, p1 []int51 for i, p := range cell {52 if a[p[0]][p[1]] == '0' {53 p0 = append(p0, i)54 } else {55 p1 = append(p1, i)56 }57 }58 if len(p1) == 4 {59 ans = append(ans, [][]int{cell[p1[0]], cell[p1[1]], cell[p1[2]]})60 p0, p1 = p1[:3], p1[3:]61 }62 if len(p1) == 1 {63 ans = append(ans, [][]int{cell[p1[0]], cell[p0[0]], cell[p0[1]]})64 p1, p0 = p0[:2], append(p0[2:], p1[0])65 }66 if len(p1) == 2 {67 ans = append(ans, [][]int{cell[p1[0]], cell[p0[0]], cell[p0[1]]})68 p1 = append(p1[1:], p0...)69 }70 if len(p1) == 3 {71 ans = append(ans, [][]int{cell[p1[0]], cell[p1[1]], cell[p1[2]]})72 }73 74 Fprintln(out, len(ans))75 for _, ps := range ans {76 for _, p := range ps {77 Fprint(out, p[0]+1, p[1]+1, " ")78 }79 Fprintln(out)80 }81 }82}83 8485