#include <bits/stdc++.h>
using namespace std;
const int N = 105;
int a[N][N];
int sum1[N], sum2[N];
int flag1[N], flag2[N];
vector<int> A1, A2, A3, A4;
int n, m;
inline int check1() {
  int now = 0, l = 0;
  for (int i = 1; i <= n; ++i)
    if (sum1[i] < 0 && now > sum1[i]) now = sum1[i], l = i;
  return l;
}
inline int check2() {
  int now = 0, r = 0;
  for (int i = 1; i <= m; ++i)
    if (sum2[i] < 0 && now > sum2[i]) now = sum2[i], r = i;
  return r;
}
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]);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) sum1[i] += a[i][j];
  for (int j = 1; j <= m; ++j)
    for (int i = 1; i <= n; ++i) sum2[j] += a[i][j];
  int l = check1(), r = check2();
  while (l != 0 || r != 0) {
    if (l != 0) {
      A1.push_back(l);
      flag1[l]++;
      for (int i = 1; i <= m; ++i) {
        sum2[i] -= a[l][i];
        sum1[l] -= a[l][i], a[l][i] = -a[l][i], sum1[l] += a[l][i];
        sum2[i] += a[l][i];
      }
    } else if (r != 0) {
      A2.push_back(r);
      flag2[r]++;
      for (int i = 1; i <= n; ++i) {
        sum1[i] -= a[i][r];
        sum2[r] -= a[i][r], a[i][r] = -a[i][r], sum2[r] += a[i][r];
        sum1[i] += a[i][r];
      }
    }
    l = check1(), r = check2();
  }
  for (int i = 0; i < (int)A1.size(); ++i)
    if (flag1[A1[i]] & 1) A3.push_back(A1[i]), flag1[A1[i]]--;
  for (int i = 0; i < (int)A2.size(); ++i)
    if (flag2[A2[i]] & 1) A4.push_back(A2[i]), flag2[A2[i]]--;
  printf("%d ", A3.size());
  for (int i = 0; i < (int)A3.size(); ++i) printf("%d ", A3[i]);
  printf("\n");
  printf("%d ", A4.size());
  for (int i = 0; i < (int)A4.size(); ++i) printf("%d ", A4[i]);
  return 0;
}
