#include <bits/stdc++.h>
using namespace std;
const int maxn = 200 + 10;
int n, m, a[maxn][maxn], c[maxn], r[maxn], khar[maxn], gave[maxn], t;
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      cin >> a[i][j];
      r[i] += a[i][j];
      c[j] += a[i][j];
    }
  while (1) {
    int x, y;
    x = y = -1;
    for (int i = 1; i <= n; i++)
      if (r[i] < 0) {
        x = i;
        break;
      }
    if (x == -1) {
      for (int j = 1; j <= m; j++)
        if (c[j] < 0) {
          y = j;
          break;
        }
      if (y == -1) break;
      for (int i = 1; i <= n; i++) {
        r[i] -= a[i][y];
        a[i][y] = -a[i][y];
        r[i] += a[i][y];
      }
      c[y] = -c[y];
      gave[y]++;
    } else {
      for (int i = 1; i <= m; i++) {
        c[i] -= a[x][i];
        a[x][i] = -a[x][i];
        c[i] += a[x][i];
      }
      r[x] = -r[x];
      khar[x]++;
    }
  }
  for (int i = 1; i <= n; i++)
    if (khar[i] % 2) t++;
  cout << t << ' ';
  for (int i = 1; i <= n; i++)
    if (khar[i] % 2) cout << i << ' ';
  cout << endl;
  t = 0;
  for (int i = 1; i <= m; i++)
    if (gave[i] % 2) t++;
  cout << t << ' ';
  for (int i = 1; i <= m; i++)
    if (gave[i] % 2) cout << i << ' ';
  cout << endl;
  return 0;
}
