#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;

/*int pre[200006];

int fin(int x)
{
    int r=x;
    while(pre[r]!=r)
        r=pre[r];
    int i=x,j;
    while(i!=r)
    {
        j=pre[i];
        pre[i]=r;
        i=j;
    }
    return r;
}

void unite(int x,int y)
{
    int fx=fin(x);
    int fy=fin(y);
    if(fx!=fy)
        pre[fx]=fy;
}

bool same(int x,int y)
{
    int fx=fin(x);
    int fy=fin(y);
    if(fx!=fy)
        return false;
    return true;
}*/

struct S
{
    char a[105];
};

bool cmp(S a,S b)
{
    return strcmp(a.a,b.a)<0;
}

int main()
{
    int i,k,x,y,j,n,m;
    S p[105];
    scanf("%d %d",&n,&m);
    for(i=0;i<n;i++)
        scanf(" %s",p[i].a);
    sort(p,p+n,cmp);
    for(i=0;i<n;i++)
        printf("%s",p[i].a);
    printf("\n");
    return 0;
}
