#include <bits/stdc++.h>
using namespace std;
int H, W;
int MAP[101][101];
int sign_w[101], sign_h[101];
int sum_w[101], sum_h[101];
int main() {
  cin >> H >> W;
  fill(sign_h, sign_h + 101, 1);
  fill(sign_w, sign_w + 101, 1);
  for (int i = 0; i < (int)H; i++) {
    for (int j = 0; j < (int)W; j++) {
      cin >> MAP[j][i];
      sum_w[j] += MAP[j][i];
      sum_h[i] += MAP[j][i];
    }
  }
  bool update;
  do {
    fill(sum_w, sum_w + W, 0);
    fill(sum_h, sum_h + H, 0);
    for (int i = 0; i < (int)H; i++) {
      for (int j = 0; j < (int)W; j++) {
        sum_w[j] += MAP[j][i] * sign_w[j] * sign_h[i];
        sum_h[i] += MAP[j][i] * sign_w[j] * sign_h[i];
      }
    }
    update = false;
    for (int i = 0; i < (int)H; i++) {
      if (sum_h[i] < 0) {
        for (int j = 0; j < (int)W; j++) {
          sum_w[j] += -2 * sign_h[i] * sign_w[j] * MAP[j][i];
        }
        sign_h[i] *= -1;
        sum_h[i] *= -1;
        update = true;
      }
    }
    for (int i = 0; i < (int)W; i++) {
      if (sum_w[i] < 0) {
        for (int j = 0; j < (int)H; j++) {
          sum_h[j] += -2 * sign_h[i] * sign_h[j] * MAP[i][j];
        }
        sign_w[i] *= -1;
        sum_w[i] *= -1;
        update = true;
      }
    }
  } while (update);
  vector<int> hs, ws;
  for (int i = 0; i < (int)H; i++)
    if (sign_h[i] < 0) hs.push_back(i + 1);
  for (int i = 0; i < (int)W; i++)
    if (sign_w[i] < 0) ws.push_back(i + 1);
  cout << hs.size() << endl;
  for (int i = 0; i < (int)hs.size(); i++) {
    cout << hs[i] << endl;
  }
  cout << ws.size() << endl;
  for (int i = 0; i < (int)ws.size(); i++) {
    cout << ws[i] << endl;
  }
  return 0;
}
