#include <bits/stdc++.h>
using namespace std;
void scanint(int &x) {
  int c = getchar_unlocked();
  x = 0;
  while (((c < 48 || c > 57))) c = getchar_unlocked();
  for (; c > 47 && c < 58; c = getchar_unlocked()) {
    x = (x << 1) + (x << 3) + c - 48;
  }
}
int n, k;
struct obiekt {
  int maxek[11];
  int minek[11];
  int rozmiar;
  bool operator<(const obiekt &rhs) const {
    for (int j = 1; j <= k; j++)
      if (maxek[j] > rhs.minek[j]) return false;
    return true;
  }
};
obiekt A;
set<obiekt> zbior;
int main() {
  scanf("%d%d", &n, &k);
  while (n--) {
    for (int j = 1; j <= k; j++) {
      int x;
      scanf("%d", &x);
      A.minek[j] = x;
      A.maxek[j] = x;
      A.rozmiar = 1;
    }
    set<obiekt>::iterator x = zbior.lower_bound(A);
    set<obiekt>::iterator y = zbior.upper_bound(A);
    while (x != y) {
      A.rozmiar += x->rozmiar;
      for (int j = 1; j <= k; j++) {
        A.minek[j] = min(A.minek[j], x->minek[j]);
        A.maxek[j] = max(A.maxek[j], x->maxek[j]);
      }
      zbior.erase(x++);
    }
    zbior.insert(A);
    printf("%d\n", zbior.rbegin()->rozmiar);
  }
  getchar();
  getchar();
  return 0;
}
