#include <bits/stdc++.h>
using namespace std;
long long a[505][505];
long long sum_r[505], sum_c[505];
int r[505], c[505];
vector<int> ans_r, ans_c;
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      scanf("%lld", &a[i][j]);
      sum_r[i] += a[i][j];
      sum_c[j] += a[i][j];
    }
  }
  int flag = 0;
  while (1) {
    for (int i = 1; i <= n; i++) {
      if (sum_r[i] < 0) {
        sum_r[i] = 0;
        for (int j = 1; j <= m; j++) {
          a[i][j] = -a[i][j];
          sum_r[i] += a[i][j];
          sum_c[j] = sum_c[j] - (-a[i][j]) + a[i][j];
        }
        r[i] += 1;
      }
    }
    for (int j = 1; j <= m; j++) {
      if (sum_c[j] < 0) {
        sum_c[j] = 0;
        for (int i = 1; i <= n; i++) {
          a[i][j] = -a[i][j];
          sum_c[j] += a[i][j];
          sum_r[i] = sum_r[i] - (-a[i][j]) + a[i][j];
        }
        c[j] += 1;
      }
    }
    flag = 0;
    for (int i = 1; i <= n; i++) {
      if (sum_r[i] < 0) {
        flag = 1;
      }
    }
    for (int i = 1; i <= m; i++) {
      if (sum_c[i] < 0) {
        flag = 1;
      }
    }
    if (flag == 0) break;
  }
  int num1 = 0, num2 = 0;
  for (int i = 1; i <= n; i++) {
    if (r[i] % 2 == 1) {
      ans_r.push_back(i);
      num1++;
    }
  }
  for (int i = 1; i <= m; i++) {
    if (c[i] % 2 == 1) {
      ans_c.push_back(i);
      num2++;
    }
  }
  printf("%d ", num1);
  for (int i = 0; i < num1; i++) {
    printf("%d ", ans_r[i]);
  }
  cout << endl;
  printf("%d ", num2);
  for (int i = 0; i < num2; i++) {
    printf("%d ", ans_c[i]);
  }
  cout << endl;
  return 0;
}
