#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
const long long MAX = 1e5 + 7;
const long long dx[8] = {-1, -1, -1, 0, 1, 1, 1, 0};
const long long dy[8] = {-1, 0, 1, 1, 1, 0, -1, -1};
long long i, j, k, t, n, q, l, r, mid;
bool flag;
long long m;
bool a[51][51];
set<pair<long long, long long> > v;
void solve() {
  cin >> n >> m;
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) cin >> a[i][j];
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      flag = 0;
      if (a[i][j]) {
        if (i + 1 < n && j + 1 < m && a[i][j + 1] && a[i + 1][j] &&
            a[i + 1][j + 1]) {
          flag = 1;
          v.insert(make_pair(i, j));
        }
        if (i - 1 >= 0 && j + 1 < m && a[i - 1][j] && a[i - 1][j + 1] &&
            a[i][j + 1]) {
          flag = 1;
          v.insert(make_pair(i - 1, j));
        }
        if (i + 1 < n && j - 1 >= 0 && a[i + 1][j - 1] && a[i + 1][j] &&
            a[i][j - 1]) {
          flag = 1;
          v.insert(make_pair(i, j - 1));
        }
        if (i - 1 >= 0 && j - 1 >= 0 && a[i - 1][j] && a[i - 1][j - 1] &&
            a[i][j - 1]) {
          flag = 1;
          v.insert(make_pair(i - 1, j - 1));
        }
        if (flag == 0) {
          cout << "-1" << endl;
          return;
        }
      }
    }
  }
  cout << v.size() << endl;
  for (auto x : v) {
    cout << x.first + 1 << " " << x.second + 1 << endl;
  }
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  solve();
  return 0;
}
