#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int a[N][N], r[N], c[N], cr[N], cc[N], n, m;
pair<int, int> q[N * 100];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) scanf("%d", &a[i][j]);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) r[i] += a[i][j], c[j] += a[i][j];
  int head = 0, tail = -1;
  for (int i = 1; i <= n; i++)
    if (r[i] < 0) q[++tail] = make_pair(0, i);
  for (int j = 1; j <= m; j++)
    if (c[j] < 0) q[++tail] = make_pair(1, j);
  while (head <= tail) {
    pair<int, int> p = q[head++];
    if (p.first == 0) {
      int t = p.second;
      if (r[t] < 0) {
        r[t] *= -1;
        cr[t]++;
        for (int j = 1; j <= m; j++) {
          a[t][j] *= -1;
          c[j] += 2 * a[t][j];
          if (c[j] < 0) q[++tail] = make_pair(1, j);
        }
      }
    } else {
      int t = p.second;
      if (c[t] < 0) {
        c[t] *= -1;
        cc[t]++;
        for (int i = 1; i <= n; i++) {
          a[i][t] *= -1;
          r[i] += 2 * a[i][t];
          if (r[i] < 0) q[++tail] = make_pair(0, i);
        }
      }
    }
  }
  int t = 0;
  for (int i = 1; i <= n; i++)
    if (cr[i] & 1) t++;
  printf("%d ", t);
  for (int i = 1; i <= n; i++)
    if (cr[i] & 1) printf("%d ", i);
  printf("\n");
  t = 0;
  for (int i = 1; i <= m; i++)
    if (cc[i] & 1) t++;
  printf("%d ", t);
  for (int i = 1; i <= m; i++)
    if (cc[i] & 1) printf("%d ", i);
  printf("\n");
  return 0;
}
