#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int a[10][10];
struct pos{
int x, y;
int remain;
pos(int px, int py, int premain) : x(px), y(py), remain(premain) {};
int getx() {return x;}
int gety() {return y;}
int getcur()
{
return remain;
}
};
void dfs(int x, int y, int n, int m, int pcur, vector<vector<pos> > &path, vector<pos> &temp)
{
if(pcur < 0) {
return ;
}
if(x == 0 && y == m - 1 && pcur >= 0) {
path.push_back(temp);
return ;
}
a[x][y] = 2;
temp.push_back(pos(x, y, pcur));
if(x + 1 < n && a[x + 1][y] == 1) {
dfs(x + 1, y, n, m, pcur, path, temp);
}
if(y > 0 && a[x][y-1] == 1) {
dfs(x, y - 1, n, m, pcur - 1, path, temp);
}
if(y + 1 < m && a[x][y+1] == 1) {
dfs(x, y + 1, n, m, pcur - 1, path, temp);
}
if(x > 0 && a[x-1][y] == 1) {
dfs(x - 1, y, n, m, pcur - 3, path, temp);
}
temp.pop_back();
a[x][y] = 1;
}
bool cmp(vector<pos> a, vector<pos> b)
{
return a.back().getcur() < b.back().getcur();
}
void judge(vector<vector<pos> > &res)
{
if(res.empty()) {
cout << "Can not escape!" << endl;
return ;
}
int n = res.size();
sort(res.begin(), res.end(), cmp);
vector<pos> pmin= res.front();
for(int i = 0; i < pmin.size(); i++) {
if(i == 0) {
cout << "[" << pmin[i].getx() << "," << pmin[i].gety() << "]" ;
}
else {
cout << "," << "[" << pmin[i].getx() << "," << pmin[i].gety() << "]" ;
}
}
cout << endl;
}
int main()
{
int n, m, P;
cin >> n >> m >> P;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
scanf("%d", &a[i][j]);
}
}
vector<vector<pos> > res;
vector<pos> tmp;
dfs(0, 0, n, m, P, res, tmp);
judge(res);
return 0;
}