← Home
```go
package main

import "fmt"

type pos struct {
    x, y int
}

func main() {
    var n, m int
    fmt.Scan(&n, &m)
    var groups [][]pos
    for k := 1; k <= n/2; k++ {
        r1 := k
        r2 := n + 1 - k
        var group []pos
        for i := 1; i <= m; i++ {
            group = append(group, pos{r1, i})
            group = append(group, pos{r2, m + 1 - i})
        }
        groups = append(groups, group)
    }
    if n%2 == 1 {
        mid := (n + 1) / 2
        var group []pos
        l := 1
        h := m
        for l <= h {
            group = append(group, pos{mid, l})
            l++
            if l <= h {
                group = append(group, pos{mid, h})
                h--
            }
        }
        groups = append(groups, group)
    }
    var path []pos
    for _, g := range groups {
        path = append(path, g...)
    }
    for _, p := range path {
        fmt.Println(p.x, p.y)
    }
}
```