#include <bits/stdc++.h>
using namespace std;
char buf[1 << 20], *p1 = buf, *p2 = buf;
void Read(int &x) {
  char c;
  bool f = false;
  while (!isdigit(
      c = (p1 == p2 &&
                   (p2 = (p1 = buf) + fread(buf, 1, 1 << 20, stdin), p1 == p2)
               ? EOF
               : *(p1++))))
    if (c == '-') f = true;
  x = (c & 15);
  while (
      isdigit(c = (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 20, stdin),
                                p1 == p2)
                       ? EOF
                       : *(p1++))))
    x = x * 10 + (c & 15);
  if (f) x = -x;
}
const int N(105);
int n, m, a[N][N], sr[N], sc[N];
bool br[N], bc[N];
int get() {
  for (int i = 1; i <= n; ++i)
    if (sr[i] < 0) return i;
  for (int i = 1; i <= m; ++i)
    if (sc[i] < 0) return -i;
  return 0;
}
int main() {
  Read(n), Read(m);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      Read(a[i][j]), sr[i] += a[i][j], sc[j] += a[i][j];
  int t;
  while ((t = get())) {
    if (t > 0) {
      sr[t] = -sr[t];
      br[t] ^= 1;
      for (int i = 1; i <= m; ++i) {
        sc[i] -= a[t][i] * 2;
        a[t][i] = -a[t][i];
      }
    } else {
      t = -t;
      sc[t] = -sc[t];
      bc[t] ^= 1;
      for (int i = 1; i <= n; ++i) {
        sr[i] -= a[i][t] * 2;
        a[i][t] = -a[i][t];
      }
    }
  }
  int c = 0;
  for (int i = 1; i <= n; ++i)
    if (br[i]) ++c;
  printf("%d", c);
  for (int i = 1; i <= n; ++i)
    if (br[i]) printf(" %d", i);
  putchar(10);
  c = 0;
  for (int i = 1; i <= m; ++i)
    if (bc[i]) ++c;
  printf("%d", c);
  for (int i = 1; i <= m; ++i)
    if (bc[i]) printf(" %d", i);
  putchar(10);
  return 0;
}
