#include <bits/stdc++.h>
using namespace std;
const int MAXN = 110;
int v[MAXN][MAXN];
int n, m;
int row_sum[MAXN], col_sum[MAXN];
int row_opr[MAXN], col_opr[MAXN];
int main() {
  cin >> n >> m;
  for (int i = 0; i < (int)n; i++)
    for (int j = 0; j < (int)m; j++) cin >> v[i][j];
  memset(row_sum, 0, sizeof(row_sum));
  memset(col_sum, 0, sizeof(col_sum));
  for (int i = 0; i < (int)n; i++)
    for (int j = 0; j < (int)m; j++) {
      row_sum[i] += v[i][j];
      col_sum[j] += v[i][j];
    }
  memset(row_opr, 0, sizeof(row_opr));
  memset(col_opr, 0, sizeof(col_opr));
  while (true) {
    int min_sum = 0;
    int pos = -1, index = -1;
    for (int i = 0; i < (int)n; i++)
      if (row_sum[i] < min_sum) {
        min_sum = row_sum[i];
        pos = 0;
        index = i;
      }
    for (int i = 0; i < (int)m; i++)
      if (col_sum[i] < min_sum) {
        min_sum = col_sum[i];
        pos = 1;
        index = i;
      }
    if (min_sum == 0) break;
    if (pos == 0) {
      row_opr[index] ^= 1;
      row_sum[index] = -row_sum[index];
      for (int j = 0; j < (int)m; j++) {
        col_sum[j] -= 2 * v[index][j];
        v[index][j] = -v[index][j];
      }
    } else if (pos == 1) {
      col_opr[index] ^= 1;
      col_sum[index] = -col_sum[index];
      for (int i = 0; i < (int)n; i++) {
        row_sum[i] -= 2 * v[i][index];
        v[i][index] = -v[i][index];
      }
    }
  }
  int cnt;
  cnt = 0;
  for (int i = 0; i < (int)n; i++)
    if (row_opr[i]) cnt++;
  cout << cnt;
  for (int i = 0; i < (int)n; i++)
    if (row_opr[i]) cout << " " << (i + 1);
  cout << endl;
  cnt = 0;
  for (int i = 0; i < (int)m; i++)
    if (col_opr[i]) cnt++;
  cout << cnt;
  for (int i = 0; i < (int)m; i++)
    if (col_opr[i]) cout << " " << (i + 1);
  cout << endl;
  return 0;
}
