#include<iostream.h>
#include<string.h>
int n,m=1,maxk=0;
char max[1000]={'\0'},a[20][1000];

void f(char *a,int p);

int main()
{
	int i,p,q;
	cin>>n;
	for(i=0;i<n;i++)
		cin>>a[i];
	strcpy(max,a[0]);
	maxk=strlen(a[0]);
	q=strlen(a[1]);
	f(a[1],q);
	cout<<max;
	return 0;
}

void f(char *ai,int p)
{
	m++;
	int i,j,k,mk=0;
	char t[3276]={'\0'},maxt[3276]={'\0'};
	for(i=0;i<p;i++)
	{
		for(j=0;j<maxk;j++)
		{
			k=0;
			while((ai[i+k]==max[j+k])&&(k+i<p)&&(k+j<maxk))
			{
				 t[k++]=ai[i+k];
			}
			if(k>mk)
			{
				mk=k;
				strcpy(maxt,t);
			}
			if(mk>maxk-j)
				break;
		}
		if(mk>p-i)
			break;
	}
	strcpy(max,maxt);
	maxk=mk;
	if(m==n)
	{
	  return;
	}
	k=strlen(a[m]);
	f(a[m],k);
}