#include using namespace std; using ll = long long; ll extgcd(ll a, ll b, ll &x, ll &y) { if(b == 0) { x = 1, y = 0; return a; } ll d = extgcd(b, a % b, y, x); y -= a / b * x; return d; } ll modinv(ll a, ll mod) { a = (a % mod + mod) % mod; ll x = 0, y = 0; extgcd(a, mod, x, y); return (x % mod + mod) % mod; } ll modpow(ll a, ll b, ll mod) { a = (a % mod + mod) % mod; ll r = 1; while(b) { if(b & 1) r = r * a % mod; a = a * a % mod; b >>= 1; } return r; } template struct ModInt { ll val; ModInt(): val(0) {} ModInt(ll v): val((v % mod + mod) % mod) {} ModInt operator+(ModInt rhs) { return ModInt(val + rhs.val); } ModInt operator*(ModInt rhs) { return ModInt(val * rhs.val); } ModInt operator/(ModInt rhs) { return ModInt(val * rhs.inv().val); } ModInt operator+=(ModInt rhs) { val = (val + rhs.val) % mod; return *this; } ModInt operator*=(ModInt rhs) { val = (val * rhs.val) % mod; return *this; } ModInt operator/=(ModInt rhs) { val = (val * rhs.inv().val) % mod; return *this; } ModInt inv() { return ModInt(modinv(val, mod)); } }; template struct NTT { const int Mod = mod; using Int = ModInt; vector fft(vector a, bool inv = 0) { int n = a.size(), n2 = n / 2; if(n == 1) return a; vector a0(n2), a1(n2); for(int i = 0; i < n2; i++) a0[i] = a[i * 2], a1[i] = a[i * 2 + 1]; a0 = fft(a0); a1 = fft(a1); Int zeta(modpow(primitive, (mod - 1) / n, mod)); if(inv) zeta = zeta.inv(); Int tmp(1); for(int i = 0; i < n; i++) { int ii = i; if(inv) ii = n - i; a[i] = a0[ii % n2] + tmp * a1[ii % n2]; if(inv) a[i] /= Int(n); tmp *= zeta; } return a; } template vector conv(vector at, vector bt) { int deg = at.size() + bt.size(); int n = 1; while(n < deg) n <<= 1; vector a(n), b(n); for(int i = 0; i < (int) at.size(); i++) a[i] = Int(at[i]); for(int i = 0; i < (int) bt.size(); i++) b[i] = Int(bt[i]); a = fft(a); b = fft(b); vector c(n); for(int i = 0; i < n; i++) c[i] = a[i] * b[i]; return fft(c, 1); } }; NTT<(1 << 25) * 5 + 1, 3> ntt; int main() { ios::sync_with_stdio(false), cin.tie(0); int l, m , n; cin >> l >> m >> n; vector a(n + 1), b(n + 1); for(int i = 0; i < l; i++) { int x; cin >> x; a[x] = 1; } for(int i = 0; i < m; i++) { int x; cin >> x; b[n - x] = 1; } auto c = ntt.conv(a, b); int q; cin >> q; for(int i = n; i < n + q; i++) { cout << c[i].val << endl; } }