#include <bits/stdc++.h>
using namespace std;
const int N = 100 + 7;
int n, m;
struct node {
  int a[N];
  int id;
};
vector<node> v;
vector<int> p;
int tot[N], s[N];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    node tmp;
    for (int j = 1; j <= n; j++) {
      scanf("%d", &tmp.a[j]);
      s[j] += tmp.a[j];
    }
    tmp.id = i;
    v.push_back(tmp);
  }
  for (int i = 1; i < n; i++) {
    if (s[i] >= s[n]) {
      puts("0");
      exit(0);
    }
  }
  int ans = 1000;
  int pos;
  for (int i = 1; i < n; i++) {
    for (int j = 0; j < m; j++) {
      for (int k = 0; k < m - 1; k++) {
        if (v[k].a[n] - v[k].a[i] < v[k + 1].a[n] - v[k + 1].a[i]) {
          swap(v[k], v[k + 1]);
        }
      }
    }
    for (int j = 1; j <= n; j++) {
      tot[j] = s[j];
    }
    for (int j = 0; j < m; j++) {
      tot[n] -= v[j].a[n];
      tot[i] -= v[j].a[i];
      if (tot[i] >= tot[n]) {
        if (j + 1 < ans) {
          ans = min(ans, j + 1);
          pos = i;
        }
        break;
      }
    }
  }
  for (int j = 0; j < m; j++) {
    for (int k = 0; k < m - 1; k++) {
      if (v[k].a[n] - v[k].a[pos] < v[k + 1].a[n] - v[k + 1].a[pos]) {
        swap(v[k], v[k + 1]);
      }
    }
  }
  for (int j = 1; j <= n; j++) {
    tot[j] = s[j];
  }
  for (int j = 0; j < m; j++) {
    tot[n] -= v[j].a[n];
    tot[pos] -= v[j].a[pos];
    p.push_back((v[j].id));
    if (tot[pos] >= tot[n]) {
      break;
    }
  }
  printf("%d\n", ans);
  for (int i = 0; i < p.size(); i++) printf("%d ", p[i]);
  printf("\n");
}
