#include using namespace std; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() typedef long long ll; typedef pair pii; typedef vector vi; #define pb push_back #define mp make_pair #define MAXN 200'010 int n, m; ll l; ll pos[MAXN]; ll s[MAXN][12]; int nc[12]; bool dead[MAXN]; int main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); cin >> n >> m >> l; rep(i, 0, n) rep(j, 1, 12) cin >> s[i][j]; rep(i, 0, m) { int x; cin >> x; if (x == 12) { rep(i, 0, n) { if (dead[i]) continue; pos[i] = 0; rep(j, 1, 12) { pos[i] += j * nc[j] * s[i][j]; } //cout << pos[i] << endl; } int ind = -1; rep(i, 0, n) { if (dead[i]) continue; if (pos[i] >= l) continue; int d = min(pos[i], l-pos[i]); //cout << d << endl; if (l >= 4*d) continue; if (ind == -1) ind = i; if (pos[i] >= l/2 && pos[ind] < l/2) ind = i; } bool reachedside = false; rep(i, 0, n) { if (dead[i]) continue; if (ind == i) continue; if (pos[i] < l/2) continue; dead[i] = true; reachedside = true; cout << i+1 << ' '; } if (!reachedside) cout << "None"; cout << '\n'; if (ind == -1) cout << "None\n"; else { dead[ind] = true; cout << ind+1 << '\n'; } rep(i, 0, 12) nc[i] = 0; } else { nc[x]++; } } }