// 内存用的多了点
import java.util.ArrayList;
import java.util.List;import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int N = scanner.nextInt();
int M = scanner.nextInt();
int[][] matrix = new int[N][M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
matrix[i][j] = scanner.nextInt();
}
}
List<Point> pList = new ArrayList<Point>();
Main migong = new Main();
List<Point> list = migong.migong(matrix, 0, 0, N, M, pList);
list.forEach(System.out::println);
}
}
private List<Point> migong(int[][] matrix, int x, int y, int N, int M, List<Point> pListOld) {
List<Point> pList = new ArrayList<>(pListOld);
Point pnew = new Point(x, y);
if (x >= 0 && x <= N - 1 && y >= 0 && y <= M - 1 && matrix[x][y] == 0) {
pList.add(pnew);
} else {
return null;
}
for(Point p : pListOld){
if(pnew.equals(p)){
return null;
}
}
if (x == N - 1 && y == M - 1) {
return pList;
}
if (pList.size() >= M * N) {
return null;
}
List<List<Point>> list = new ArrayList();
list.add(migong(matrix, x + 1, y, N, M, pList));
list.add(migong(matrix, x - 1, y, N, M, pList));
list.add(migong(matrix, x, y + 1, N, M, pList));
list.add(migong(matrix, x, y - 1, N, M, pList));
return getMin(list);
}
private List<Point> getMin(List<List<Point>> list) {
List<Point> min = list.get(0);
for (int i = 1; i < list.size(); i++) {
if (min == null) {
min = list.get(i);
continue;
}
if (list.get(i) == null) {
continue;
}
min = getMinPList(min, list.get(i));
}
return min;
}
private List<Point> getMinPList(List<Point> p1, List<Point> p2) {
int min = Math.min(p1.size(), p2.size());
if (min == p1.size()) {
return p1;
} else {
return p2;
}
}
class Point {
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Point point = (Point) o;
if (x != point.x) return false;
return y == point.y;
}
@Override
public int hashCode() {
int result = x;
result = 31 * result + y;
return result;
}
@Override
public String toString() {
return "(" + x + "," + y +')';
}
}
}