#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long LINF = 0x3f3f3f3f3f3f3f3fl;
const long double pi = acos(-1);
const int MOD = 1e9 + 7;
struct doce {
  int id, v, t;
  doce() {}
  bool operator<(const doce &d) const {
    if (v != d.v)
      return v > d.v;
    else
      return t < d.t;
  }
};
int n, k, m, a;
doce v[105];
int testa(int quem) {
  int tenho = m;
  int cont = 0;
  for (int i = 1; i <= n; i++) {
    if (i < quem)
      cont++;
    else if (i > quem) {
      if (tenho >= v[quem].v - v[i].v + 1) {
        tenho -= v[quem].v - v[i].v + 1;
        cont++;
      }
    }
  }
  if (cont < k and v[quem].v > 0) return 1;
  tenho = m;
  cont = 0;
  for (int i = 1; i <= n; i++) {
    if (i == quem) continue;
    if (v[i].v >= v[quem].v + tenho) cont++;
  }
  if (cont < k and v[quem].v + tenho > 0) return 2;
  return 3;
}
int main() {
  ios::sync_with_stdio(false);
  ;
  cin >> n >> k >> m >> a;
  m = m - a;
  for (int i = 1; i <= n; i++) {
    v[i].id = i;
    v[i].v = v[i].t = 0;
  }
  for (int i = 1; i <= a; i++) {
    int x;
    cin >> x;
    v[x].v += 1;
    v[x].t = i;
  }
  sort(v + 1, v + n + 1);
  vector<int> resp(105);
  for (int i = 1; i <= n; i++) {
    resp[v[i].id] = testa(i);
  }
  for (int i = 1; i <= n; i++) {
    if (i - 1) cout << ' ';
    cout << resp[i];
  }
  cout << endl;
  return 0;
}
