#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <map>
#include <list>
#include <bits/stdc++.h>
using namespace std;

//迷宫数据,给迷宫四周填充一圈为1,避免边界判断,数据越界
int a[105][105];
//访问数据
int vis[105][105] = {0};
//记录路径顺序
vector<pair<int, int> > ans;
//最终答案
vector<pair<int, int> > ans_final;

int h, w;

void dfs(int x, int y) {
    // cout << "(" << x << "," << y << ")" << endl;
  //访问过标记1,入队
    vis[x][y] = 1;
    ans.push_back({x, y});
  //递归终止条件
    if (x == h && y == w) {
        // cout<<x<<' '<<y<<endl;
        if (ans_final.empty()) ans_final = ans;
        return ;
    }
 //dfs搜索
    if (a[x + 1][y] == 0 && !vis[x + 1][y]) {
        dfs(x + 1, y);
    }

    if (a[x - 1][y] == 0 && !vis[x - 1][y]) {
        dfs(x - 1, y);
    }

    if (a[x][y + 1] == 0 && !vis[x][y + 1]) {
        dfs(x, y + 1);
    }

    if (a[x][y - 1] == 0 && !vis[x][y - 1]) {
        dfs(x, y - 1);
    }
   //回溯
    vis[x][y] = 0;
    ans.pop_back();
    return ;
}

int main() {
    // a = vector<vector<int>>(105,vector<int>(105,1));
  //填充
    for (int i = 0; i < 105; i++)
        for (int j = 0; j < 105; j++)
            a[i][j] = 1;

    cin >> h >> w;
    for (int i = 1; i <= h; i++)
        for (int j = 1; j <= w; j++)
            cin >> a[i][j];

    dfs(1, 1);

    for (auto itor : ans_final) {
        cout << "(" << itor.first-1 << "," << itor.second-1 << ")" << endl;
    }

    return 0;
}
// 64 位输出请用 printf("%lld")