#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:200000000")
using namespace std;
const int INF = (int)1e9;
const long long INF64 = (long long)1e18;
const long double eps = 1e-9;
const long double pi = 3.14159265358979323846;
int n, m;
int t[200][200];
int sr[200];
int sc[200];
bool ansr[200];
bool ansc[200];
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < int(n); ++i)
    for (int j = 0; j < int(m); ++j) cin >> t[i][j];
  for (int i = 0; i < int(n); ++i)
    for (int j = 0; j < int(m); ++j) sr[i] += t[i][j], sc[j] += t[i][j];
  while (true) {
    int idx = -1;
    for (int i = 0; i < int(n); ++i)
      if (sr[i] < 0) {
        idx = i;
        break;
      }
    if (idx != -1) {
      ansr[idx] ^= 1;
      sr[idx] *= -1;
      for (int j = 0; j < int(m); ++j) {
        sc[j] -= t[idx][j];
        t[idx][j] *= -1;
        sc[j] += t[idx][j];
      }
      continue;
    }
    idx = -1;
    for (int j = 0; j < int(m); ++j)
      if (sc[j] < 0) {
        idx = j;
        break;
      }
    if (idx != -1) {
      ansc[idx] ^= 1;
      sc[idx] *= -1;
      for (int i = 0; i < int(n); ++i) {
        sr[i] -= t[i][idx];
        t[i][idx] *= -1;
        sr[i] += t[i][idx];
      }
      continue;
    }
    break;
  }
  vector<int> ans;
  for (int i = 0; i < int(n); ++i)
    if (ansr[i]) ans.push_back(i + 1);
  cout << ans.size() << " ";
  for (int i = 0; i < int(ans.size()); ++i) cout << ans[i] << " ";
  cout << endl;
  ans.clear();
  for (int j = 0; j < int(m); ++j)
    if (ansc[j]) ans.push_back(j + 1);
  cout << ans.size() << " ";
  for (int i = 0; i < int(ans.size()); ++i) cout << ans[i] << " ";
  cout << endl;
}
