#include <bits/stdc++.h>   using namespace std;   const int inf = 0x3f3f3f3f;   const int MOD = 1e9 + 7;   const int base = 101;   inline void chmax(int& x, int y) {     if (x < y) x = y;   }   inline void chmin(int& x, int y) {     if (x > y) x = y;   }   inline int LSB(int i) { return (i & -i); }   int n, m, dp[10005];   char s[10005], str[10005];   map<long long, string> mp;   vector<string> v;   inline long long Hash(int a, int b) { return (1LL * a * base + b) % MOD; }   int main() {     scanf( %d%s%d , &n, &s, &m);     for (int i = 0; i < m; i++) {       scanf( %s , &str);       long long h = 1;       for (int j = 0; j < strlen(str); j++) {         h = Hash(h, tolower(str[j]));       }       mp[h] = str;     }     fill(dp, dp + n, -1);     dp[0] = 0;     for (int i = 0; i < n; i++) {       long long h = 1;       for (int j = i; j >= 0; j--) {         h = Hash(h, s[j]);         if (dp[j] != -1 && mp.find(h) != mp.end()) {           dp[i + 1] = h;           break;         }       }     }     int p = n;     while (p > 0) {       v.push_back(mp[dp[p]]);       p -= mp[dp[p]].length();     }     reverse(v.begin(), v.end());     for (string& i : v) printf( %s  , &i[0]);     return 0;   }   