#include <bits/stdc++.h>
using namespace std;
int ok, n, i, j, mat[110][110], x, lin[10010], col[10010], m, k, s, fr1[110],
    fr2[110], nrrr;
void program() {
  do {
    ok = 1;
    for (i = 1; i <= n; i++)
      for (j = 1; j <= m; j++) {
        s = 0;
        for (k = 1; k <= m; k++) s = s + mat[i][k];
        if (s < 0) {
          ok = 0;
          lin[++lin[0]] = i;
          for (k = 1; k <= m; k++) mat[i][k] = -mat[i][k];
        } else {
          s = 0;
          for (k = 1; k <= n; k++) s = s + mat[k][j];
          if (s < 0) {
            ok = 0;
            col[++col[0]] = j;
            for (k = 1; k <= n; k++) mat[k][j] = -mat[k][j];
          }
        }
      }
  } while (ok == 0);
}
int main() {
  cin >> n >> m;
  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++) cin >> mat[i][j];
  for (int ro = 1; ro <= 1000; ro++) program();
  sort(lin + 1, lin + lin[0] + 1);
  sort(col + 1, col + col[0] + 1);
  for (i = 1; i <= lin[0]; i++) {
    if (lin[i] == lin[i + 1]) {
      j = i;
      while (lin[i] == lin[j]) j++;
      if ((j - i) % 2 == 1) nrrr++;
      i = j - 1;
    } else
      nrrr++;
  }
  cout << nrrr << " ";
  for (i = 1; i <= lin[0]; i++) {
    if (lin[i] == lin[i + 1]) {
      j = i;
      while (lin[i] == lin[j]) j++;
      if ((j - i) % 2 == 1) cout << lin[i] << " ";
      i = j - 1;
    } else
      cout << lin[i] << " ";
  }
  cout << '\n';
  nrrr = 0;
  for (i = 1; i <= col[0]; i++) {
    if (col[i] == col[i + 1]) {
      j = i;
      while (col[i] == col[j]) j++;
      if ((j - i) % 2 == 1) nrrr++;
      i = j - 1;
    } else
      nrrr++;
  }
  cout << nrrr << " ";
  for (i = 1; i <= col[0]; i++) {
    if (col[i] == col[i + 1]) {
      j = i;
      while (col[i] == col[j]) j++;
      if ((j - i) % 2 == 1) cout << col[i] << " ";
      i = j - 1;
    } else
      cout << col[i] << " ";
  }
  return 0;
}
