#include <bits/stdc++.h>
using namespace std;

#define For(i, a, b) for(int i = (a); i < (b); i++)
#define rep(i, n) For(i, 0, n)
#define rFor(i, a, b) for(int i = (a); i >= (b); i--)
#define ALL(v) (v).begin(), (v).end()
#define rALL(v) (v).rbegin(), (v).rend()

using lint = long long;
using ld = long double;

int INF = 2000000000;
lint LINF = 1000000000000000000;

struct SetupIo {
    SetupIo() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        cout << fixed << setprecision(15);
    }
} setupio;

vector<int> merge(vector<int> &a, vector<int> &b) {
    int n = a.size(), m = b.size();
    vector<int> c;
    int i = 0, j = 0;
    while (i < n || j < m) {
        if (i == n) {
            c.emplace_back(b[j++]);
        } else if (j == m) {
            c.emplace_back(a[i++]);
        } else {
            if (a[i] <= b[j]) {
                c.emplace_back(a[i++]);
            } else {
                c.emplace_back(b[j++]);
            }
        }
    }
    return c;
}

int main() {
    int n, f;
    cin >> n >> f;
    vector<int> a(n), b(n), c(n);
    rep(i, n) { cin >> a[i]; }
    rep(i, n) { cin >> b[i]; }
    rep(i, n) { cin >> c[i]; }
    vector<int> vec;
    vec = {0};
    rep(i, n) {
        vector<int> va, vb, vc;
        for (int x : vec) {
            va.emplace_back(x + a[i]);
            vb.emplace_back(x + b[i]);
            vc.emplace_back(x + c[i]);
        }
        vec = merge(vec, va);
        vec.erase(unique(ALL(vec)), vec.end());
        vec = merge(vec, vb);
        vec.erase(unique(ALL(vec)), vec.end());
        vec = merge(vec, vc);
        vec.erase(unique(ALL(vec)), vec.end());
        
        cout << vec.size() << "\n";
    }
}