time limit per test 2 seconds
memory limit per test 256 megabytes
input standard input
output standard output

After observing the results of Spy Syndrome, Yash realised the errors of his ways. He now believes that a super spy such as Siddhant can’t use a cipher as basic and ancient as Caesar cipher. After many weeks of observation of Siddhant’s sentences, Yash determined a new cipher technique.

For a given sentence, the cipher is processed as:

Convert all letters of the sentence to lowercase.

Reverse each of the words of the sentence individually.

Remove all the spaces in the sentence.

For example, when this cipher is applied to the sentence

Kira is childish and he hates losing

the resulting string is

ariksihsidlihcdnaehsetahgnisol

Now Yash is given some ciphered string and a list of words. Help him to find out any original sentence composed using only words from the list. Note, that any of the given words could be used in the sentence multiple times.

Input

The first line of the input contains a single integer n (1 ≤ n ≤ 10 000) — the length of the ciphered text. The second line consists of n lowercase English letters — the ciphered text t.

The third line contains a single integer m (1 ≤ m ≤ 100 000) — the number of words which will be considered while deciphering the text. Each of the next m lines contains a non-empty word wi (|wi| ≤ 1 000) consisting of uppercase and lowercase English letters only. It’s guaranteed that the total length of all words doesn’t exceed 1 000 000.

Output

Print one line — the original sentence. It is guaranteed that at least one solution exists. If there are multiple solutions, you may output any of those.

Examples

input

30

ariksihsidlihcdnaehsetahgnisol

10

Kira

hates

is

he

losing

death

childish

L

and

Note

output

Kira is childish and he hates losing

input

12

iherehtolleh

5

HI

Ho

there

HeLLo

hello

output

HI there HeLLo

Note

In sample case 2 there may be multiple accepted outputs, “HI there HeLLo” and “HI there hello” you may output any of them.

字典树的应用,以单词建树,将密码串反向记忆化搜索

#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <iostream>
#include <algorithm> using namespace std; const int Max = 1e6+10; const int MaxM = 10010; typedef struct node
{
int next[30]; int mark;
}Tree; Tree Tr[Max]; int top; char str[Max]; char s[MaxM*10][1011]; int n,m; int vis[MaxM]; bool flag; int NewNode()
{
for(int i=0;i<=26;i++)
{
Tr[top].next[i] = -1;
} Tr[top].mark = -1; return top++;
}
int ok(char c) //大小写转换
{
if(c>='a'&&c<='z')
{
return c-'a';
}
else
{
return c-'A';
}
} void Build(int Root,int index)
{
int len = strlen(s[index]); for(int i = 0; i < len ;i++)
{
int ans = ok(s[index][i]); if(Tr[Root].next[ans]==-1)
{
Tr[Root].next[ans] = NewNode(); }
Root = Tr[Root].next[ans];
} Tr[Root].mark = index;
} int DFS(int pos)
{ if(pos==-1)
{
return true;
} if(vis[pos]!=-1)//判断是否之前是否遍历到
{
return vis[pos];
}
int Root = 0; for(int i = pos;i>=0;i--)
{
int ans = ok(str[i]); if(Tr[Root].next[ans]==-1)
{
break;
} Root = Tr[Root].next[ans]; if(Tr[Root].mark!=-1&&DFS(i-1))
{
if( flag ) printf(" ");
else flag = true; printf("%s", s[Tr[Root].mark]); return vis[pos] = 1;
} } return vis[pos] = 0;
} int main()
{
scanf("%d",&n); scanf("%s",str); scanf("%d",&m); top = 0;flag = false; int Root = NewNode(); for(int i=0;i<m;i++)
{
scanf("%s",s[i]); Build(Root,i);//建立字典树
} for(int i = 0 ; i<MaxM;i++)
{
vis[i] = -1;
} DFS(n-1);//记忆化搜索 return 0;
}

Manthan, Codefest 16 -C. Spy Syndrome 2的更多相关文章

  1. Manthan, Codefest 16 C. Spy Syndrome 2 字典树 + dp

    C. Spy Syndrome 2 题目连接: http://www.codeforces.com/contest/633/problem/C Description After observing ...

  2. CF #Manthan, Codefest 16 C. Spy Syndrome 2 Trie

    题目链接:http://codeforces.com/problemset/problem/633/C 大意就是给个字典和一个字符串,求一个用字典中的单词恰好构成字符串的匹配. 比赛的时候是用AC自动 ...

  3. Manthan, Codefest 16

    暴力 A - Ebony and Ivory import java.util.*; import java.io.*; public class Main { public static void ...

  4. Manthan, Codefest 16 D. Fibonacci-ish

    D. Fibonacci-ish time limit per test 3 seconds memory limit per test 512 megabytes input standard in ...

  5. Manthan, Codefest 16(B--A Trivial Problem)

    B. A Trivial Problem time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  6. Manthan, Codefest 16 -A Ebony and Ivory

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  7. CF Manthan, Codefest 16 G. Yash And Trees 线段树+bitset

    题目链接:http://codeforces.com/problemset/problem/633/G 大意是一棵树两种操作,第一种是某一节点子树所有值+v,第二种问子树中节点模m出现了多少种m以内的 ...

  8. CF Manthan, Codefest 16 B. A Trivial Problem

    数学技巧真有趣,看出规律就很简单了 wa 题意:给出数k  输出所有阶乘尾数有k个0的数 这题来来回回看了两三遍, 想的方法总觉得会T 后来想想  阶乘 emmm  1*2*3*4*5*6*7*8*9 ...

  9. Manthan, Codefest 16 H. Fibonacci-ish II 大力出奇迹 莫队 线段树 矩阵

    H. Fibonacci-ish II 题目连接: http://codeforces.com/contest/633/problem/H Description Yash is finally ti ...

随机推荐

  1. rabbitmq之back queue草稿

    申请队列rabbit_reader在收到消息后处理数据帧时,如果channel id不是0(0代表连接),则认为是channel相关方法. handle_frame(Type, Channel, Pa ...

  2. selenium python 安装

    环境为Win64位系统,默认已经安装python2.7到D:\Python27,此次使用的浏览器为chrome 下面是selenium的安装和chromedriver.exe的下载 1.安装selen ...

  3. ios导航器跳转动画

    出栈或压栈简单实现动画   CATransition *animation1=[CATransition animation];//类方法创建一个切换对象     animation1.duratio ...

  4. sys.stdout.write与sys.sterr.write(三)

    目标: 1.使用sys.stdout.write模拟"|"的顺时针变化- \ | / 2.使用sys.stderr.write模拟"|"的顺时针变化- \ | ...

  5. windows下面配置apache+http

    一.apache安装 下载并安装apache_2.2.9-win32-x86-openssl-0.9.8h-r2.msi(见附件),找到apache安装目录(C:\Program Files (x86 ...

  6. Union和Union All到底有什么区别

    以前一直不知道Union和Union All到底有什么区别,今天来好好的研究一下,网上查到的结果是下面这个样子,可是还是不是很理解,下面将自己亲自验证: Union:对两个结果集进行并集操作,不包括重 ...

  7. 更改android AVD模拟器创建路径位置的方法

    打开:计算机-->系统属性-->环境变量—>在“系统变量”那选择“新建”-->变量名为 "ANDROID_SDK_HOME” (注意,必须为这个名字!),然后把变量值 ...

  8. android Dialog&AlertDialog

    Dialog dialog = new Dialog(context,R.style.AppBaseTheme); wifiView = AppData.inflater.inflate(R.layo ...

  9. 浅谈大型web系统架构

    动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通常与数据库系统. ...

  10. 安装hive+mysql

    1.源码安装mysql 以root用户首先安装libaio-0.3.104.tar.gz tar zxvf libaio-0.3.104.tar.gz cd libaio-0.3.104 make p ...