#include #include #include using u32 = unsigned int; using u64 = unsigned long long int; template class Hash { std::array >, 1<<(n+2)> v; u32 h(u64 a) const { static constexpr u64 r = 11995408973635179863ULL; return a * r >> (64 - (n+2)); } public: T &operator[](u64 a){ u32 i = h(a); for(auto &w: v[i]){ if(w.first == a) return w.second; } v[i].emplace_back(a, T()); return v[i].back().second; } }; int n, m; int main(){ scanf("%d%d", &n, &m); Hash h; for(int i = 0; i < n; i++){ u64 a; scanf("%llu", &a); ++h[a]; } for(int i = 0; i < m; i++){ u64 a; scanf("%llu", &a); printf("%llu%c", h[a], " \n"[i == m-1]); } return 0; }