#include <cstdio>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <map>
#include <string>
#include <sstream>

using namespace std;

int N;
char A[102];
map<char, string> M;
char dig[102];
int digtot;

string towidth(string aux, int w)
{
	while (int(aux.size()) < w)
		aux = " " + aux;
	return aux;
}
double tofloat(string aux)
{
	istringstream saux(aux);
	
	double val;
	saux >> val;
	return val;
}

int main()
{
	cin.sync_with_stdio(false);
	
	cin >> N;
	
	cin.getline(A, sizeof(A));
	for (int i = 1; i <= N; ++i)
	{
		cin.getline(A, sizeof(A));
		
		string aux;
		for (int j = 2; A[j] != 0; ++j)
			aux += A[j];
		M[A[0]] = aux;
	}
	
	cin.getline(A, sizeof(A));
	
	for (int i = 0; A[i] != 0; ++i)
		if (A[i] == ',')
			dig[++digtot] = A[i + 1];
	
	int dnow = 0;
	for (int i = 0; A[i] != ','; ++i)
	{
		if (A[i] == '%')
		{
			++dnow;
			if (A[i + 1] == 's')
			{
				cout << M[dig[dnow]];
				++i;
			}
			else if (A[i + 1] == '.')
			{
				int prec = 0;
				
				++i;
				++i;
				while (A[i] >= '0' && A[i] <= '9')
				{
					prec = prec * 10 + (A[i] - '0');
					++i;
				}
				
				cout << fixed << setprecision(prec) << tofloat(M[dig[dnow]]);
			}
			else
			{
				int wid = 0;
				
				++i;
				while (A[i] >= '0' && A[i] <= '9')
				{
					wid = wid * 10 + (A[i] - '0');
					++i;
				}
				
				cout << towidth(M[dig[dnow]], wid);
			}
		}
		else
			cout << A[i];
	}
}