#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int a[N][N];
int sum1[N], sum2[N], op1[N], op2[N];
bool vis1[N], vis2[N];
int n, m, ans1, ans2;
int judge() {
  for (int i = 1; i <= n; i++)
    if (sum1[i] < 0) return i;
  for (int j = 1; j <= m; j++)
    if (sum2[j] < 0) return -1 * j;
  return 0;
}
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]), sum1[i] += a[i][j], sum2[j] += a[i][j];
  int f = judge();
  while (f) {
    if (f > 0) {
      sum1[f] *= -1, vis1[f] ^= 1;
      for (int j = 1; j <= m; j++) sum2[j] -= a[f][j] << 1, a[f][j] *= -1;
    } else {
      f *= -1, sum2[f] *= -1, vis2[f] ^= 1;
      for (int i = 1; i <= n; i++) sum1[i] -= a[i][f] << 1, a[i][f] *= -1;
    }
    f = judge();
  }
  for (int i = 1; i <= n; i++)
    if (vis1[i]) op1[++ans1] = i;
  for (int i = 1; i <= m; i++)
    if (vis2[i]) op2[++ans2] = i;
  printf("%d ", ans1);
  for (int i = 1; i <= ans1; i++) printf("%d ", op1[i]);
  printf("\n%d ", ans2);
  for (int j = 1; j <= ans2; j++) printf("%d ", op2[j]);
  return 0;
}
