```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)
}
}
```