#include <bits/stdc++.h>
using namespace std;
const int Maxn = 100050;
int b[Maxn], vis[Maxn], v[Maxn];
long long f[Maxn];
int main() {
  int k, n, maxb, t;
  scanf("%d%d%d%d", &k, &n, &maxb, &t);
  while (k--) {
    long long ans = 0, tot = 0, tmp = 0;
    memset(vis, 0, sizeof vis);
    memset(v, 0, sizeof v);
    for (int i = 1; i <= n; ++i) {
      scanf("%d", &b[i]);
      if (!vis[b[i]]) tot++;
    }
    t = min(t, maxb);
    memset(f, 0, sizeof f);
    for (int i = 1, j = 1; j <= t;) {
      int x = b[i];
      if (f[x] == f[x - 1] + 1)
        tmp++, v[f[x]] = 1;
      else if (v[f[x]])
        tmp--, v[f[x]] = 0;
      f[x] = f[x - 1] + 1;
      for (int num = x + 1; num <= maxb; ++num)
        if (f[num] < f[x])
          f[num] = f[x];
        else
          break;
      ++i;
      if (i > n) i -= n, j++;
    }
    printf("%lld\n", f[maxb]);
  }
  return 0;
}
