#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vii; #define x first #define y second #define pb push_back #define eb emplace_back #define rep(i,a,b) for(auto i=(a); i<(b); ++i) #define REP(i,n) rep(i,0,n) #define all(v) (v).begin(), (v).end() #define rs resize #define DBG(x) cerr << __LINE__ << ": " << #x << " = " << (x) << endl const ld PI = acos(-1.0); template using min_queue = priority_queue, greater>; template int sz(const T &x) { return (int) x.size(); // copy the ampersand(&)! } // START OF ACTUAL PROGRAM, START READING HERE ll get_digit(char c) { switch (c) { case 'a': case 'b': case 'c': return 2; case 'd': case 'e': case 'f': return 3; case 'g': case 'h': case 'i': return 4; case 'j': case 'k': case 'l': return 5; case 'm': case 'n': case 'o': return 6; case 'p': case 'q': case 'r': case 's': return 7; case 't': case 'u': case 'v': return 8; case 'w': case 'x': case 'y': case 'z': return 9; } return -1; } ll get_int(string s) { ll r = 0; for (char c : s) { r *= 10; r += get_digit(c); } return r; } void run() { ll n, m; cin >> n >> m; unordered_map> M; for (ll i = 0; i < n; i++) { string s; cin >> s; M[get_int(s)].pb(s); } for (ll i = 0; i < m; i++) { ll j; cin >> j; vector v = M[j]; cout << v.size() << " "; for (string s : v) { cout << s << " "; } cout << endl; } } signed main() { // DON'T MIX "scanf" and "cin"! ios_base::sync_with_stdio(false); cin.tie(NULL); cout << fixed << setprecision(20); run(); return 0; }