#include <bits/stdc++.h>
using namespace std;
int n, k;
struct node {
  int sz;
  int mx[15], mn[15];
  node() {
    memset(mx, 0, sizeof(mx));
    memset(mn, 0x3f, sizeof(mn));
  }
  friend bool operator<(node a, node b) {
    for (int i = 1; i <= k; i++) {
      if (a.mx[i] > b.mn[i]) {
        return false;
      }
    }
    return true;
  }
};
set<node> s;
set<node>::iterator it;
int main() {
  cin >> n >> k;
  node t;
  for (int i = 1; i <= n; i++) {
    t.sz = 1;
    for (int j = 1; j <= k; j++) {
      scanf("%d", &t.mn[j]);
      t.mx[j] = t.mn[j];
    }
    while ((it = s.find(t)) != s.end()) {
      t.sz += it->sz;
      for (int j = 1; j <= k; j++) {
        t.mn[j] = min(t.mn[j], it->mn[j]);
        t.mx[j] = max(t.mx[j], it->mx[j]);
      }
      s.erase(it);
    }
    s.insert(t);
    printf("%d\n", (--s.end())->sz);
  }
  return 0;
}
