#include <bits/stdc++.h>
using namespace std;
const int INF = 1 << 28;
const double EPS = 1e-8;
const int MOD = 1000000007;
int n, m;
int tbl[101][101];
int ansr[101], ansc[101];
bool checkrow(int r) {
  int sum = 0;
  for (int i = 0; i < (int)(m); i++) {
    sum += tbl[r][i];
  }
  if (sum >= 0) return 0;
  ansr[r] ^= 1;
  for (int i = 0; i < (int)(m); i++) {
    tbl[r][i] = -tbl[r][i];
  }
  return 1;
}
bool checkcol(int c) {
  int sum = 0;
  for (int i = 0; i < (int)(n); i++) {
    sum += tbl[i][c];
  }
  if (sum >= 0) return 0;
  ansc[c] ^= 1;
  for (int i = 0; i < (int)(n); i++) {
    tbl[i][c] = -tbl[i][c];
  }
  return 1;
}
void putans(int *d, int n) {
  int sum = 0;
  for (int i = 0; i < (int)(n); i++) sum += d[i];
  printf("%d", sum);
  for (int i = 0; i < (int)(n); i++)
    if (d[i]) printf(" %d", i + 1);
  puts("");
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < (int)(n); i++)
    for (int j = 0; j < (int)(m); j++) scanf("%d", &tbl[i][j]);
  int f;
  do {
    f = 0;
    for (int i = 0; i < (int)(n); i++) f |= checkrow(i);
    for (int i = 0; i < (int)(m); i++) f |= checkcol(i);
  } while (f);
  putans(ansr, n);
  putans(ansc, m);
  return 0;
}
