#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
using ll = long long;
int main () {
	int N, F;
	cin >> N >> F;
	std::vector<int> A(N), B(N), C(N);
	for (int& a : A) cin >> a;
	for (int& b : B) cin >> b;
	for (int& c : C) cin >> c;
	std::queue<vector<ll>> que;
	for (int i = 0; i < N; i ++) {
		vector<ll> X(F + 1, 0);
		X[A[i]] = X[B[i]] = X[C[i]] = 1;
		que.push(X);
	}
	vector<ll> ans(1, 1);
	for (int i = 0; i < N; i ++) {
		if (!que.empty()) {
			ans = convolution(ans, que.front());
			que.pop();
		}
		for (auto& a : ans) a = min(a, 1ll);
		cout << accumulate(ans.begin(), ans.end(), 0ll) << endl;
	}
}