#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); vector>> lines; // (type, sequence) string s; while (true) { string line; if (!getline(cin, line)) break; if (line.empty()) continue; stringstream ss(line); int t; if (!(ss >> t)) continue; vector seq; int x; while (ss >> x) seq.push_back(x); lines.emplace_back(t, move(seq)); } // Find last guess line (type 1), assume that's the hidden permutation int idx_last_guess = -1; for (int i = (int)lines.size() - 1; i >= 0; --i) { if (lines[i].first == 1) { idx_last_guess = i; break; } } if (idx_last_guess == -1) { // No hidden permutation provided; nothing to output return 0; } const vector& perm = lines[idx_last_guess].second; int n = (int)perm.size(); // For each query (type 0), output the count of matches with the permutation for (int i = 0; i < (int)lines.size(); ++i) { if (lines[i].first != 0) continue; const vector& q = lines[i].second; int cnt = 0; if ((int)q.size() == n) { for (int j = 0; j < n; ++j) { if (q[j] == perm[j]) ++cnt; } } cout << cnt << "\n"; } return 0; }